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