Weapon Limit 1.3.6

Ограничение оружия (x на команду)

  1. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Weapon Limit (csgo, css, css v34)

    [​IMG]

    Позволяет полностью запрещать оружие или ограничивать его по количеству на команду.
    Я думаю нагрузка от Weapon Limit меньше, чем от тех, которые даже не позволяют поднять оружие с земли, т.к. этот евент вызывается слишком часто.

    addons/sourcemod/translations/weapon_limit.phrases.txt - перевод
    addons/sourcemod/include/weapon_limit.inc - скриптинг
    cfg/weapon_limit/weapon_limit.cfg - настройки

    Код:
    // Immunity to restrict weapons ("" = off)
    // Если у игрока есть флаг, то на него не действуют ограничения ("" = откл)
    // Default: "z"
    wl_immunity_flag "z"
    
    // 1 = счетчик учитывает всех игроков
    // 0 = всех, кроме тех, у кого есть иммунитет
    // Пример:
    // awp ограничено 1 на команду
    // Игрок с иммунитетом поднял awp
    // Теперь игрок без иммунитета пытается поднять второе awp (0 = сможет, 1 = не сможет)
    wl_immunity_counter "1"
    
    // Unrestrict all weapons if map ended (1 = on, 0 = off)
    // Если 1, то в конце карты все запрещенное оружие будет разрешено (0 = останется запрещенным).
    // Default: "1"
    wl_map_end_unrestrcit "1"
    
    // Chat notifications (1 = on, 0 = off)
    // Уведомления в чате (1 = вкл, 0 = откл)
    // Default: "1"
    wl_notify "1"
    
    // 1 = Temporarily allows the use of all weapons (настройки ограничения в силе, но игроки могут использовать всё оружие)
    // 0 = Restrict again works (ограничение работает как и должно)
    // -
    // Default: "0"
    wl_pause "0"
    
    // If player has picked up restricted weapon: 1 = remove, 0 = drop
    // Игрок поднял запрещенное оружие: 1 = удалить, 0 = выкинуть
    // Default: "0"
    wl_remove "0"
    
    // Sound when trying to use restricted weapon ("" = off)
    // Звук запрета ("" = откл)
    // Default: "resource/warning.wav"
    wl_sound "resource/warning.wav"

    Код:
    #if defined _weapon_limit_included
        #endinput
    #endif
    #define _weapon_limit_included
    
    // БЕЗ weapon_ (deagle, awp, и тд)
    
    enum WL_Event
    {
        WL_OnBuyRestrictedWeapon = 0,    // public bool:CallBack(client, const String:weapon[]); - return true = разрешить покупку запрещённого оружия, false = запретить.
        WL_OnPickupRestrictedWeapon,    // public bool:CallBack(client, const String:weapon[]); - return true = разрешить подбор  запрещённого оружия, false = запретить.
        WL_OnWeaponLimited,                // public CallBack(const String:weapon[], limit); - оружие ограничено x на команду (если "all", то всё оружие)
        WL_OnWeaponAllowed                // public CallBack(const String:weapon[]); - оружие разрешено (если "all", то всё оружие)
    };
    
    // В csgo WL_OnWeaponLimited и WL_OnWeaponAllowed не покажет "m4a1_silencer", покажет "m4a1" (см. wS_GetMainWeaponName в functions.sp)
    // В csgo если const String:weapon[] равен "m4a1", то это значит что оба оружия были ограничены: "m4a1" и "m4a1_silencer".
     
    native WL_HookEvent  (WL_Event:event, Function:CallBack);
    native WL_UnHookEvent(WL_Event:event, Function:CallBack);
    
    // Если оружие ограничено, вернёт число 0 или выше (x на команду), иначе -1 (не ограничено).
    native WL_GetWeaponLimit(const String:weapon[]);
    
    // Cvar wl_pause
    // true  = временно позволено использовать всё оружие, при этом все настройки ограничения остаются в силе (в конце карты wl_pause меняется на 0).
    // false = ограничение оружия работает как и должно
    native bool:WL_Paused();
    
    // Возвращает слот оружия или -1 если ошибка.
    // 0 - автомат, дробовик, и тд
    // 1 - пистолет
    // 2 - нож / taser
    // 3 - граната
    // 4 - c4
    native WL_GetWeaponSlot(const String:weapon[]);
    
    public SharedPlugin:__pl_weapon_limit =
    {
        name = "weapon_limit",
        file = "weapon_limit.smx",
    #if defined REQUIRE_PLUGIN
        required = 1,
    #else
        required = 0,
    #endif
    };
    
    #if !defined REQUIRE_PLUGIN
    public __pl_weapon_limit_SetNTVOptional()
    {
        MarkNativeAsOptional("WL_HookEvent");
        MarkNativeAsOptional("WL_UnHookEvent");
        MarkNativeAsOptional("WL_GetWeaponLimit");
        MarkNativeAsOptional("WL_Paused");
        MarkNativeAsOptional("WL_GetWeaponSlot");
    }
    #endif

    Команды по флагу d (бан).
    Флаг или меняйте в vars.sp (#define WL_FLAG ADMFLAG_BAN) или в addons/sourcemod/configs/admin_overrides.cfg

    Код:
    Overrides
    {
        "wl_admin" "z"
        "wl_restrict" "z"
    }
    Код:
    wl_admin - админ меню
    wl_help - список доступных команд
    wl_restrict <оружие> <кол-во на команду> - установить лимит
    wl_unrestrict <оружие> - снять лимит/запрет с оружия
    wl_status - список ограниченного оружия
    wl_weapons - названия оружия
    wl_restrict_all - запретить всё оружие
    wl_unrestrict_all - разрешить всё оружие
    wl_set_weapon <оружие> - установить оружие живым игрокам
    Если в стандартной админке есть категория "Управление сервером", то туда добавлена опция для ограничения оружия.
    Если такой категории нет, но есть "Управление игроками", то добавлена туда.
    Иначе не добавлена, не судьба.

    Ограничить на нужных картах: Map Config.
    В зависимости от количества игроков: Players Count CFG.

    Если квар wl_pause меняется на 0 или админский флаг меняется и есть запрещенное оружие, то игроки, у которых нет иммунитета,
    принудительно выкинут на землю всё оружие, затем подберут лишь то, что будет позволено.

    Учтите что может происходить такое:

    2 awp на земле
    Админ запрещает awp 1 на команду
    1 игрок взял awp (у него нет иммунитета)
    2 игрок (из той же команды) взял awp (смог, т.к. у него есть иммунитет)
    Ограничение в этом случае не работает, игрок 1 будет бегать с этим awp, пока не выкинет его или пока не умрёт.

    Для слишком благодарных:

    WebMoney R328433349428
    Qiwi +380686695046

    Узнать больше об этом ресурсе...
     
    Последнее редактирование: 5 дек 2018
    Wightjeck, REDWOOD и Unique. нравится это.
  2. Молодой Человек

    Молодой Человек

    Сообщения:
    72
    Симпатии:
    2
    прекрасный плагин ))
     
  3. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Я сглупил немного, есть логическая ошибка, подождите пока, не ставьте, исправляю.
     
  4. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Пользователь _wS_ обновил ресурс Weapon Limit новой записью:

    Было несколько ошибок

    Узнать больше об этом обновлении...
     
  5. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.003
    Симпатии:
    5.459
    Это вполне логичное и правильное решение. Лично я бы бомбонул когда например, в ответственный момент у тебя из рук вываливается оружие.
    С точки зрения реализации и с точки зрения удобства - так лучше. Короче и проще и удобнее. Можно еще в SDKHook_WeaponCanSwitchTo/SDKHook_WeaponCanUse проверять чтобы наверняка.
     
    REDWOOD нравится это.
  6. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Это не логично =)
    Раз был запрет, то его нужно сразу и применить, тем более если этого не сделать, то у него оружие останется на следующий раунд
    и pickup/buy хуки не вызовутся при рождении и толку от запрета не будет.

    Который вызывается 1 млн раз в сек =)
    item_pickup и buy хук рулят, даём дышать серверу посвободнее.

    Думаю я понял как легко этот недочет (описанный выше) исправить - сначала надо проверять тех, у кого есть иммунитет, а в конце уже обычных игроков.
     
  7. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.003
    Симпатии:
    5.459
    я имел ввиду что не нужно ничего делать пока оружие в руках, но как только он сменит на другое - то взять обратно запрещенное (даже из инвентаря) - не должно давать.
    лечится проверками времени, а в вот SDKHook_WeaponCanSwitchTo вроде норм.
     
  8. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Пользователь _wS_ обновил ресурс Weapon Limit новой записью:

    Исправлен недочет + в админ меню добавлена опция

    Узнать больше об этом обновлении...
     
  9. RAIN182

    RAIN182

    Сообщения:
    107
    Симпатии:
    7
    Плагин зачетный !
    А как сохранить список ограниченного оружия ?
    После перезагрузки карты или сервера список ограниченного оружия пропадает .
     
    Последнее редактирование: 27 окт 2018
    _wS_ нравится это.
  10. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    1.JPG

    Сейчас обновляю Players Count CFG чтобы он поудобнее был.
     
  11. RAIN182

    RAIN182

    Сообщения:
    107
    Симпатии:
    7
    Объясни на пальцах нубу , если не тяжко . Заранее благодарен .
     
  12. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Сначала пишешь wl_weapons - покажет названия доступного оружия
    Теперь просто используешь wl_restrict и wl_unrestrict команды в нужных .cfg (в каких - об этом в Map Config и Players Count CFG темах).

    Код:
    Запрещаешь так:
    wl_restrict awp 0 // Полностью запрещает awp тем, у кого нет иммунитета.
    // Или если не полностью запретить нужно, то вместо 0 какое-то число (кол-во на команду).
    // Запретить всё оружие: wl_restrict_all
    
    Снимаешь запрет так:
    wl_unrestrict awp // Снять запрет лишь с awp (если со всего, то wl_unrestrict_all)
    Список команд же я дал, используй их в нужных .cfg, разберись как работают Map Config и Players Count CFG.
     
  13. pentaxist

    pentaxist

    Сообщения:
    333
    Симпатии:
    59
    @_wS_, можете добавить? что бы подружить плагины)
    2018-10-27_16-45-17.png
     
  14. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Я так понял хук нужен на "разрешить/запретить" подбор оружия, только не понял зачем.
    Что хотите сделать?
     
  15. pentaxist

    pentaxist

    Сообщения:
    333
    Симпатии:
    59
    @_wS_, есть плагин дуэли, и во время дуэли запрещенное оружие должно даваться игрокам.
     
  16. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Пользователь _wS_ обновил ресурс Weapon Limit новой записью:

    weapon_limit.inc + квары + ..

    Узнать больше об этом обновлении...
     
    pentaxist нравится это.
  17. Unique.

    Unique.

    Сообщения:
    114
    Симпатии:
    11
    Можете сделать чтобы игрок вообще не мог подобрать запрещенное оружие? А то не очень когда оно подбирается и сразу выкидывается)
     
  18. _wS_

    _wS_

    Сообщения:
    285
    Симпатии:
    566
    Я так подумал о SDKHook_WeaponCanUse.
    Сделано всё так, чтобы нагрузка была меньше.
    Может квар позже добавлю для тех, кто так хочет помучать свой сервер.
    Я с этой функцией связываться не хочу.
    Может на вид оно и лучше, что не поднимается оружие, но ты наверно не понимаешь какой ценой.
     
  19. R1KO

    R1KO всё тлен Супермодератор

    Сообщения:
    8.003
    Симпатии:
    5.459
    почитай это chanz/infinite-jumping и расслабься
     
  20. Unique.

    Unique.

    Сообщения:
    114
    Симпатии:
    11
    Скорее всего не понимаю..
    Но в Weapon Restrict 3.1.6 присутствует это, и при установке его, особой нагрузки не заметил на процессор.
    Может не о той нагрузке идет речь, если что извиняйте)