Запретить/разрешить выброс оружия
|
|
_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 |
|
Сообщений: 21
Репутация: 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 |
|
Сообщений: 21
Репутация: 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 такого не наблюдал.
|
|
| |