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

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

  1. AMD

    AMD

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

    Спасибо.

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

    ALЬTAIR

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

    AMD

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

    AlmazON деревянный © yand3xmail

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

    TolikCorp

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

    AMD

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

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

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

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.517
    Симпатии:
    1.969
    На 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

    Сообщения:
    4.517
    Симпатии:
    1.969
    То же самое, но вместо "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

    Сообщения:
    4.517
    Симпатии:
    1.969
    Это обычная проверка индекса игрока, здесь он не должен быть равен 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 Супер-модератор

    Сообщения:
    5.980
    Симпатии:
    2.983
    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

    Сообщения:
    4.517
    Симпатии:
    1.969
    Для брони - придётся. Жизнь прекрасно и правильно прибавляется.
    Это для создание меню, а не таймера.
    Ладно, так и быть:
    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 Супер-модератор

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

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

    SenatoR Модератор

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

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

    AMD

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

    SenatoR Модератор

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

    AMD

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

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