Ищу плагины для cs go

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем AMD, 8 июн 2014.

  1. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Здравствуйте люди, ишу плагины:
    1. Видел на одном сервере регинерацию хп, также в чате было написано что у играка с определённым флагом регинерация повышена.
    2. Также видел, плагин позволяет закупать все гранаты.
    3. Не знаю есть или нет, но нужно при спавне игрока выдавать ему больше хп, также игроку с определённым флагом выдавать ещё больше хп.

    Спасибо.

    P.S Сори если не там создал топик.
     
  2. ALЬTAIR

    ALЬTAIR

    Сообщения:
    273
    Симпатии:
    118
    Ну про гранаты это в конфиге настраивается,а конкретно эти строки:
     
    AMD нравится это.
  3. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    А как выдавать игрокам гранаты при спавне и пополнять запасы гранат если игрок их тратит.
    Примерно так:
    Игрок бросил гранату через 30 сек ему её автоматический выдало, тоже самое для игроков с определёным флагом только лимит другой допустим 15 сек.
     
  4. AlmazON

    AlmazON Не путать с самим yand3xmail

    Сообщения:
    5.170
    Симпатии:
    2.426
    Плагин автовыдачи гранат - может и на CS:GO пойдёт, а таймер сам пристрой)
     
    AMD нравится это.
  5. TolikCorp

    TolikCorp

    Сообщения:
    859
    Симпатии:
    279
    Оффтоп
     
    AMD нравится это.
  6. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Ну так то ты прав, единственное что я знаю что это можно как то реализовать через set task, но что то поковырялся в доках, там такого нету.

    Но суть я понимаю, нужно отлавливать момент когда игрок бросил гранату, потом проверять игрок с каким флагом, и в зависимости от полученного результата, делать delay на установленное для этого юзера время после чего give_weapons_grenade...

    Но это в теории, и это всего лишь алгоритм из моей не посвящённой головы, как его реализовывать понятия не имею(((
     
  7. AlmazON

    AlmazON Не путать с самим yand3xmail

    Сообщения:
    5.170
    Симпатии:
    2.426
    На CS:S и CS:GO так:
    PHP:
    public OnPluginStart()
    {
        
    HookEvent("player_spawn"PlayerSpawn)
    }

    public 
    PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    SetEntProp(GetClientOfUserId(GetEventInt(event"userid")), Prop_Send"m_iHealth"125);
    }
    Где 125 - количество хп при спавне (кваром, по желанию).
     
    AMD нравится это.
  8. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Всё работает, а как сделать отдельную выдачу для игроков с определённым флагом, тоже самое хочу провернуть с бронёй) kevlar)))

    Дружище я с первого раза до твоего редактирования поста понял что ты имеешь ввиду :):good:
     
  9. AlmazON

    AlmazON Не путать с самим yand3xmail

    Сообщения:
    5.170
    Симпатии:
    2.426
    То же самое, но вместо "m_iHealth" - "m_ArmorValue".
    Применяй if (GetUserFlagBits(client) & ADMFLAG_ROOT) return; иногда применяется и CheckCommandAccess.
    Шаблон:
    PHP:
    public OnPluginStart()
    {
        
    HookEvent("player_spawn"PlayerSpawn)
    }

    public 
    PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid")), value_hpvalue_armor;
        if (
    GetUserFlagBits(client) & ADMFLAG_ROOT)
        {
            
    value_hp 150;
            
    value_armor 150;
        }
        else
        {
            
    value_hp 110;
            
    value_armor 120;
        }
        
    SetEntProp(clientProp_Send"m_iHealth"value_hp);
        
    SetEntProp(clientProp_Send"m_ArmorValue"value_armor);
    }
    Админу добавляется из первого массива, а всем остальным - из второго.
    P.S. С бронёй может быть проблема, либо у меня блокировка от плагинов (надо чистый сервер для проверок).
     
    Последнее редактирование: 8 июн 2014
    AMD нравится это.
  10. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Собственно ситуация получается следующая, я всё это делаю в тот плагин с гранатами что ты мне дал, так вот:
    Тут всё отлично пашет, также вижу что идёт проверка на клиент больше 0 и если игрок жив то выполняем.
    PHP:
    public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        if(
    client || IsPlayerAlive(client))
        {
            
    GivePlayerItem(client"weapon_hegrenade");
            
    GivePlayerItem(client"weapon_flashbang");
            
    GivePlayerItem(client"weapon_smokegrenade");
            
    SetEntProp(clientProp_Send"m_iHealth"200);
            
    SetEntProp(clientProp_Send"m_ArmorValue"101);
            if(
    GetConVarBool(g_Msg)) PrintToChat(client"\x01\x05[SM] \x03Получены гранаты");
        }
    }

    А это что я сейчас пытаюсь отладить:
    PHP:
    public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid")), value_hpvalue_armor;
        if (
    client || IsPlayerAlive(client) & (GetUserFlagBits(client) & ADMFLAG_ROOT))
        { 
            
    value_hp 150
            
    value_armor 150
        } 
        else 
        { 
            
    value_hp 110
            
    value_armor 120
        }
            
    GivePlayerItem(client"weapon_hegrenade");
            
    GivePlayerItem(client"weapon_flashbang");
            
    GivePlayerItem(client"weapon_smokegrenade");
            
    SetEntProp(clientProp_Send"m_iHealth"value_hp);
            
    SetEntProp(clientProp_Send"m_ArmorValue"value_armor);
            if(
    GetConVarBool(g_Msg)) PrintToChat(client"\x01\x05[SM] \x03Получены гранаты");
    }
    Идёт проверка, прошу обратить внимание что я попытался объединить проверку из плагина с гранатами что ты мне дал, и проверку на администратора, вот чувствую я что я что то делаю не так, ну во первых не понимаю для чего здесь client > 0, типо если на сервере больше одного игрока то выполнять? Как то не разумно учитывая Event_OnPlayerSpawn, понятное дело что всё будет работать как только заспавниться игрок, а если он заспавнился то уже client > 0, аналогично с IsPlayerAlive(client) зачем проверять что игрок жив если выполнение будет только при Event_OnPlayerSpawn, но хотя я из 1.6 как то слыхал что когда игрок заходит на сервер он как бы спавниться в наблюдателях, может и тут так, я не знаю.

    Так вот о чём это я, проверка вызывает предупреждения:
    //SourceMod Batch Compiler
    // by the SourceMod Dev Team


    //// autogrenade.sp
    // D:\cs_go\csgo\addons\sourcemod\scripting\autogrenade.sp(19) : warning 213: ta
    g mismatch
    // D:\cs_go\csgo\addons\sourcemod\scripting\autogrenade.sp(24) : warning 217: lo
    ose indentation
    // D:\cs_go\csgo\addons\sourcemod\scripting\autogrenade.sp(29) : warning 217: lo
    ose indentation
    // Header size: 2220 bytes
    // Code size: 3340 bytes
    // Data size: 1652 bytes
    // Stack/heap size: 16384 bytes; Total requirements: 23596 bytes
    //
    // 3 Warnings.
    //
    // Compilation Time: 0,48 sec
    // ----------------------------------------

    Press enter to exit ...

    В первом варианте броня выдаётся правильно, а вот во втором как ты и сказал кривовато, хотя мне кажется что это из за не корректной проверки.
     
  11. AlmazON

    AlmazON Не путать с самим yand3xmail

    Сообщения:
    5.170
    Симпатии:
    2.426
    Это обычная проверка индекса игрока, здесь он не должен быть равен 0 (0 - это консоль!).
    Фактически так и есть, такое же гемморство наблюдал у себя в плагине, если не сделать защиты.
    Ещё один & ты забыл, в GetUserFlagBits это - правильно и можно без скобок.
    Остальное - нет табуляции.
    И client > 0 || IsPlayerAlive(client) лучше сделать общим. К тому же, по идее, вместо || должно быть &&, нет?
    PHP:
    public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid")), value_hpvalue_armor;
        if (
    client || IsPlayerAlive(client))
        {
            if (
    GetUserFlagBits(client) & ADMFLAG_ROOT)
            { 
                
    value_hp 150
                
    value_armor 150
            } 
            else 
            { 
                
    value_hp 110
                
    value_armor 120
            }
            
    GivePlayerItem(client"weapon_hegrenade");
            
    GivePlayerItem(client"weapon_flashbang");
            
    GivePlayerItem(client"weapon_smokegrenade");
            
    SetEntProp(clientProp_Send"m_iHealth"value_hp);
            
    SetEntProp(clientProp_Send"m_ArmorValue"value_armor);
            if(
    GetConVarBool(g_Msg)) PrintToChat(client"\x01\x05[SM]\x03 Получены гранаты");
        }
    }
    || не менял, надеюсь на благоразумие автора того плагина.
     
    AMD нравится это.
  12. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    С бронёй реально проблема, даже понять не могу толи рисуется неправильно толи выдаётся неправильно, || заменил на && работало, потом ради интереса заменил на & при компиляции ошибка, в итоге вернул обратно ||.

    Броня вообще не понятно выдаётся то за админа 22 то за игрока 116, то ещё там числа всякие не округлённые.

    P.S скорее всего выдаётся не правильно
     
  13. R1KO

    R1KO Source Dealer Супер-модератор

    Сообщения:
    6.702
    Симпатии:
    3.727
    AMD, последний код самый нормальный только там &&
    Только советую делать это всё через таймер 0.2 примерно.
     
  14. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Проверку делать через таймер? :blink: Или же всё таки выдачу гранат?

    P.S Дело в том что я хочу сделать выдачу гранат через таймер да ещё и админам свой игрокам свой, но не знаю как, вот такой я нуб.

    Но я пытался посмотреть в другом плагине:
    PHP:
    #if TIMEBOMB
                    
    if (GetConVarBool(g_Cvar_TimeBomb))
                    {
                        
    Format(MenuItemsizeof(MenuItem),"%T""Menu_TimeBomb"victimGetConVarInt(g_Cvar_TimeBombTicks));
                        
    AddMenuItem(menu,iStr,MenuItem);
                    }
    Вот ещё в доках со 150 попытки нашёл додумался timer в поиске забить
    PHP:
    native Handle:CreateTimer(Float:intervalTimer:funcany:data=INVALID_HANDLEflags=0);
    Float - число с плавающей запятой
    Timer - для какой функции будет применен
    И то в этом не уверен не говоря уже о том как это всё в код засунуть чтоб работало.

    Не ну я пробую, у меня даже проходит компиляция с предупреждениями но работать не хочет(
     
  15. AlmazON

    AlmazON Не путать с самим yand3xmail

    Сообщения:
    5.170
    Симпатии:
    2.426
    Для брони - придётся. Жизнь прекрасно и правильно прибавляется.
    Это для создание меню, а не таймера.
    Ладно, так и быть:
    PHP:
    #include <sdktools_functions>

    new Handle:g_Msg;

    public 
    OnPluginStart() 
    {
        
    g_Msg CreateConVar("sm_grenade_msg""0""Message On/Off"FCVAR_NOTIFYtrue0.0true1.0);
        
    HookEvent("player_spawn"Event_OnPlayerSpawnEventHookMode_PostNoCopy);
        
    HookEvent("hegrenade_detonate"Event_HeGrenadeDetonate);
        
    HookEvent("flashbang_detonate"Event_FlashBangDetonate);
        
    HookEvent("smokegrenade_detonate"Event_SmokeGrenadeDetonate);
    }

    public 
    Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        if(
    client && IsPlayerAlive(client))
            
    CreateTimer(0.2GiveSpawnclient);
    }

    public 
    Action:GiveSpawn(Handle:timerany:client)
    {
        new 
    value_hpvalue_armor;
        if (
    GetUserFlagBits(client) & ADMFLAG_ROOT
        {  
            
    value_hp 150;  
            
    value_armor 125;  
        }  
        else  
        {  
            
    value_hp 110;  
            
    value_armor 120;  
        }
        
    GivePlayerItem(client"weapon_hegrenade");
        
    GivePlayerItem(client"weapon_flashbang");
        
    GivePlayerItem(client"weapon_smokegrenade");
        if(
    GetConVarBool(g_Msg)) PrintToChat(client"\x01\x05[SM] \x03Получены гранаты.");
        
    SetEntProp(clientProp_Send"m_iHealth"value_hp);
        
    SetEntProp(clientProp_Send"m_ArmorValue"value_armor);
    }

    public 
    Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        if(
    client || IsPlayerAlive(client))
        
    CreateTimer(30.0GiveHEclient);
    }

    public 
    Action:GiveHE(Handle:timerany:client)
    {
        
    GivePlayerItem(client"weapon_hegrenade");
        if(
    GetConVarBool(g_Msg)) PrintToChat(client"\x01\x05[SM] \x03Получена HE граната!");
    }

    public 
    Event_FlashBangDetonate(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        if(
    client || IsPlayerAlive(client))
        {
            
    GivePlayerItem(client"weapon_flashbang");
            if(
    GetConVarBool(g_Msg)) PrintToChat(client"\x01\x05[SM] \x03Получена FLASHBANG граната");
        }
    }

    public 
    Event_SmokeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        if(
    client || IsPlayerAlive(client))
        {
            
    GivePlayerItem(client"weapon_smokegrenade");
            if(
    GetConVarBool(g_Msg)) PrintToChat(client"\x01\x05[SM] \x03Получена SMOKE граната");
        }
    }
    Максимально отображаемая броня - 125! Больше - работает, но показывает "аванс" от 125 (например, 22).
    if(client > 0 && IsPlayerAlive(client)) - так правильно! Иначе гранаты выдаются мёртвым и время идёт ещё от спектаторов.
     
    Последнее редактирование: 9 июн 2014
    AMD нравится это.
  16. R1KO

    R1KO Source Dealer Супер-модератор

    Сообщения:
    6.702
    Симпатии:
    3.727
    Да кстати забыл сказать, что значение хп и брони, которые отображаются и есть действительно могут отличаться. Это из-за ограничения в отображении. Так что не пугайся и не греши на плагины.

    AlmazON, почему у тебя в последнем коде || ???
     
    Последнее редактирование: 9 июн 2014
  17. SenatoR

    SenatoR Модератор

    Сообщения:
    729
    Симпатии:
    281
    Так в конце же подписал он, что так не стоит делать, а сделать надо &&

    AMD, чтобы точно знать сколько все-таки у игрока брони, можно сделать таймер с получение брони и выводом его в HUD
     
  18. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Да, да, в кс 1.6 например максимальный худ отоброжения 255 хп и брони, там это решали выводом худа средствами амхмодх.
     
  19. SenatoR

    SenatoR Модератор

    Сообщения:
    729
    Симпатии:
    281
    Не думаю, что в ксго это можно решить посредством сурсмода.
    В ксс например вальве только спустя несколько лет исправила этот косяк
     
  20. AMD

    AMD

    Сообщения:
    180
    Симпатии:
    16
    Если делать одну и то получаю предупреждение, делаю ии всё хорошо.
    Вообще всё отлично работает, я в один момен решил что игроки будут получать 50, игроки с флагом 100, так что с бронёй норм.

    Добавлено через 1 минуту
    Ну нет, я имею ввиду в 1.6 делали как ты написал:
    AMD, чтобы точно знать сколько все-таки у игрока брони, можно сделать таймер с получение брони и выводом его в HUD
     
    Последнее редактирование: 9 июн 2014