Контакты Поиск $ Пожертвовать $

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Уроки SourceMod (SourcePawn) Скриптинга » Запретить/разрешить выброс оружия
Запретить/разрешить выброс оружия
_wS_ Дата: Суббота, 11.02.2012, 14:13:13 | Сообщение # 1
Когда игрок выбрасывает оружие, вызывается такая функция:

Код
public Action:CS_OnCSWeaponDrop(client, weapon_index)
{
     return Plugin_Continue;
}


return Plugin_Continue; - разрешить выброс оружия. return Plugin_Handled; - запретить.

Это событие вызывается не только тогда, когда игрок сам выбрасывает оружие на G, но и когда умирает, покупает новое оружие и старое падает на землю, или когда покидает сервер.

client - индекс игрока, который хочет выбросить оружие. weapon_index - индекс оружия. Например, если хотите узнать название оружия (classname), можно сделать так:

Код
public Action:CS_OnCSWeaponDrop(i, index)
{
     decl String:weapon[25];
     GetEntityClassname(index, weapon, sizeof(weapon));
     // или GetEdictClassname(index, weapon, sizeof(weapon));
     if (StrEqual(weapon, "weapon_awp"))
     {
         if (IsClientInGame(i) && IsPlayerAlive(i)) PrintToChat(i, "Выбрасывать awp запрещено");
         return Plugin_Handled;
     }
     return Plugin_Continue;
}


Если хотите выполнить какие-то операции с игроком, то нужно убедиться, что он на сервере.
 
MrGreen Дата: Понедельник, 23.08.2021, 14:23:28 | Сообщение # 2
Сообщений: 16
Репутация: 0 [ +/- ]
Цитата _wS_ ()
public Action:CS_OnCSWeaponDrop(i, index)
{
     decl String:weapon[25];
     GetEntityClassname(index, weapon, sizeof(weapon));
     // или GetEdictClassname(index, weapon, sizeof(weapon));
     if (StrEqual(weapon, "weapon_awp"))
     {
         if (IsClientInGame(i) && IsPlayerAlive(i)) PrintToChat(i, "Выбрасывать awp запрещено");
         return Plugin_Handled;
     }
     return Plugin_Continue;
}


Здравствуйте! Подскажите, пожалуйста, в чем может быть причина: Я вставил данный код в плагин и после того, как я нажимаю G, сервер перезагружается, в логах ничего не фиксируется. Может ли это быть связано с тем, что сервер домашний на Windows?
Прочитал про AddCommandListener(DropWeapon, "drop"), но на официальном API пишут, что это не является хорошей практикой.
 
_wS_ Дата: Понедельник, 23.08.2021, 17:47:16 | Сообщение # 3
На вид всё нормально.
Можно добавить проверку IsValidEntity(index) перед GetEntityClassname.
Возможно другой плг тоже делает что-то с оружием (временно отключить всё лишнее).
Возможно SM + MM не ласт версии.
 
MrGreen Дата: Понедельник, 23.08.2021, 18:17:06 | Сообщение # 4
Сообщений: 16
Репутация: 0 [ +/- ]
Цитата _wS_ ()
На вид всё нормально.
Можно добавить проверку IsValidEntity(index) перед GetEntityClassname.
Возможно другой плг тоже делает что-то с оружием (временно отключить всё лишнее).
Возможно SM + MM не ласт версии.


Это не помогает, все равно краш. AddCommandListener(DropWeapon, "drop") работает, но его не рекомендуют использовать. SM с MM пробовал всякие разные комбинации, бесполезно. Еще такая проблема появилась: Weapon Restrict перестал нормально работать, то запрещает оружие то нет, а Weapon Restrict Forked вообще ничего не делает, как-будто его и нет, а если я его ставлю себе на сервер Windows, он вообще при спавне крашит сервер, если не в первом раунде, так в втором. Там есть автоматическое ограничение оружия от количества игроков, но оно не работает, сколько лет я его использовал, все нормально всегда было, началась с SM 1.10 это проблема, в итоге стоит weapon restrict, а для автоматического ограничения используют Weapon Limit и Player Count Cfg, но и они так же криво работают, к тебе нет претензий, я тестировал твои плагины на старых версиях SM, от 1.6 до 1.8, все работает хорошо, но с 1.10 говорят при работе Weapon Limit может летать оружие, как при конфликте с NoBlock, все начинает прыгать, на ранних версиях SM такого не наблюдал.
 
Форум » SourceMod >> CS:Source >> CSGO » Уроки SourceMod (SourcePawn) Скриптинга » Запретить/разрешить выброс оружия
  • Страница 1 из 1
  • 1
Поиск: