1. Скачайте по ЭТОЙ ссылке weapon_limit.hueco_mundo и переместите в addons/sourcemod/plugins/ws_vip/ или plugins/ws_knife_arena и т.п. (требуется один любой купленный плагин из ЭТИХ).
2. Распакуйте ЭТОТ архив с конфигами. 3. Включите/перезагрузите сервер.
Это улучшенная (с 0 переписанная) версия вот этой бесплатной. Работает по принципу SDKHook_WeaponCanUse, когда ограниченное оружие лежит на земле и ничего с ним не сделать. Но есть отличие от plugin'ов, что я видел на форумах, а именно: слабая нагрузка. Например, в SDKHook_WeaponCanUse callback'е (а он вызывается 66/100 раз в секунду) не используется ни один native. Поэтому, даже если 64 игрока будут стоять на ограниченном оружии, то вряд ли это как-то грузанёт сервер.
Теперь поддерживается всё актуальное CSGO оружие. Раньше можно было ограничить только сразу m4a1 + m4a1_silencer, а теперь можно и отдельные на выбор. Теперь можно ограничить оружие 'x' для команды T и 'y' (другое число) для команды CT, или ограничить только T или CT.
cfg/weapon_limit/weapon_limit.cfg - настройки. cfg/weapon_limit/weapon_limit.txt - ограничить оружие на нужных картах. addons/sourcemod/scripting/include/weapon_limit.inc - api.
// 1 = ограничение оружия работает.
// 0 = ограничение оружия приостановлено. Перед сменой карты изменится на 1, но раз здесь 0, то будет снова 0.
wl_enabled "1"
// awp ограничено 1 на команду.
// Игрок с иммунитетом поднял awp.
// Товарищ по команде без иммунитета пытается поднять второе awp.
// 0 = сможет поднять.
// 1 = не сможет.
wl_count_immune_players "0"
// Если оружие ограничено 0 на команду, сможет ли игрок с иммунитетом его покупать/использовать? (1 = да, 0 = нет).
wl_immunity_when_zero "0"
// Если начался новый раунд и у команды в руках больше оружия, чем положено:
// 0 = ничего не делать.Оружие станет недоступным для игрока, только когда он сам его выбросит, и только если у него нет иммунитета.
// 1 = выбросить лишнее оружие.
// 2 = удалить лишнее оружие.
// Чьё из игроков оружие будет выброшено/удалено: игроки выбираются случайно из тех, у кого нет иммунитета.
// Команда может оказаться с лишним оружием, например, из-за смены команды игроков в конце раунда, когда перемещаются живые игроки .
wl_drop_limited_at_round_start "1"
// Звук предупреждения, когда игрок не может купить оружие, т.к. оно ограничено ("" = откл).
wl_sound "resource/warning.wav"
010203040506070809101112131415161718192021222324
В примере ниже ограничение для awp работает:
- на карте cs_office. - на всех de картах, кроме de_dust2. - на всех awp_ картах. - у T по одному awp на каждые 5 товарищей по команде. - игрокам CT покупать/поднимать awp запрещено.
"awp"
{
// Количество на команду.
//
// Если wl_count_immune_players "0" (игроков с иммунитетом не считать), и иммунитет для оружия работает, то игроки с иммунитетом не считаются.
// Может быть указано только одно значение для "tt_limit" и одно для "ct_limit".
// "tt_limit" и "ct_limit" никак не связаны, т.к. ограничение настраивается для конкретной команды (неважно что там в другой).
//
// Способ 1: Постоянное значение.
//-1 = разрешено всем (или можно указать "", или удалить параметр).
// 0 = запрещено всем.
// 1 = одно оружие на команду.
// 2 = два оружия на команду и т.д.
//
// Способ 2: Соотношение "1:x" (по одному оружию на каждые 'x' товарищей по команде).
// "1:" указывать обязательно, а "x" может быть от 2 и выше.
// Например, при "tt_limit" "1:3" ограничение работает так:
// 1-3 t игрока = 1 оружие на t команду.
// 4-6 t игрока = 2 оружия на t команду.
// 7-9 t игрока = 3 оружия на t команду.
// 10-12 t игрока = 4 оружия на t команду.
// И т.д. (всегда добавляется +3, т.к. указано "1:3").
//
"tt_limit""1:5"
"ct_limit""0"
// На каких картах работает ограничение. "ALL" = на всех картах.
"map"
{
"cs_office"""
}
// На каких картах работает ограничение (любые префиксы).
"map prefixes"
{
"de"""
"awp_"""
}
// На каких картах ограничение НЕ работает.
"map ignore"
{
"de_dust2"""
}
// На каких картах ограничение НЕ работает (любые префиксы).
native WL_SetImmunity (и WL_SetWeaponImmunity) сделан так, чтобы плагины друг с другом не конфликтовали. Когда plugin выдаёт иммунитет игроку, то счётчик увеличивается и иммунитет работает, пока число > 0. А когда plugin отбирает иммунитет или отключается, то он отбирает конкретно тот, который выдал (отобрать чужие не получится).
После смены карты весь иммунитет очищается и вступают в силу настройки из weapon_limit.txt.
Я перекомпилил по твоему варианту, где подсчет ведется когда 5Т 5CT, и с иммункой. Далее у меня проблема в том, что "игнор" не работает. На авп карте не игнорируется запрет. Играется только 1 авп 5х5
Конфиг:
"awp" { "tt_limit" "1:5" "ct_limit" "1:5"
"map" { "de_alexandra2" "" "de_infernew_fix" ""
}
// На каких картах работает ограничение (любые префиксы). "map prefixes" { "de" "ALL" }
// На каких картах ограничение НЕ работает. "map ignore" { "awp_lego_2s" "" }
// На каких картах ограничение НЕ работает (любые префиксы). "map prefixes ignore" { "awp_" "" } }
Дата: Суббота, 23.07.2022, 21:44:43 | Сообщение # 17
Цитатаaromatnyписал(а):
"awp" { "tt_limit" "1:5" "ct_limit" "1:5"
"map" { "de_alexandra2" "" "de_infernew_fix" ""
}
// На каких картах работает ограничение (любые префиксы). "map prefixes" { "de" "ALL" }
// На каких картах ограничение НЕ работает. "map ignore" { "awp_lego_2s" "" }
// На каких картах ограничение НЕ работает (любые префиксы). "map prefixes ignore" { "awp_" "" } }
Не вижу смысла в таких настройках. Зачем указывать de_alexandra2 и de_infernew_fix в "map", если ограничение работает на всех "de" картах ("map prefixes")? И "de" "ALL" прописано неправильно, во-первых писать "ALL" можно только в "map", и второе: писать нужно "ALL" "" (вместо имени карты), но "de" префикс подхватит все равно (т.е. даже так сработает). И зачем в "ignore" разделах прописаны "awp_" карты непонятно, т.к. какой смысл их игнорировать, если на них и так ограничение работать не будет, т.к. в "map" и "map prefixes" нет ничего про "awp". "ignore" используется, если, например, в "map prefixes" прописано "de_", но не хочется, чтобы учитывало "de_dust". Всё, что дают такие настройки, это "Ограничение оружия работает на всех de картах, а на других не работает.".
Не вижу смысла в таких настройках. Зачем указывать de_alexandra2 и de_infernew_fix в "map", если ограничение работает на всех "de" картах ("map prefixes")? И "de" "ALL" прописано неправильно, во-первых писать "ALL" можно только в "map", и второе: писать нужно "ALL" "" (вместо имени карты), но "de" префикс подхватит все равно (т.е. даже так сработает). И зачем в "ignore" разделах прописаны "awp_" карты непонятно, т.к. какой смысл их игнорировать, если на них и так ограничение работать не будет, т.к. в "map" и "map prefixes" нет ничего про "awp". "ignore" используется, если, например, в "map prefixes" прописано "de_", но не хочется, чтобы учитывало "de_dust". Всё, что дают такие настройки, это "Ограничение оружия работает на всех de картах, а на других не работает.".