Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

TakeDamage Изменение Урон Ножа

, TakeDamage изменение урона
Статус пользователя gavrilyuc
сообщение 9.8.2014, 15:34
Сообщение #1
Стаж: 12 лет

Сообщений: 36
Благодарностей: 6
Полезность: 129

Здравствуйте, начну я сразу с кода.
Код:

/* plugin init */
RegisterHam(Ham_TakeDamage, "player", "KnifeDamage");

public KnifeDamage(victim, inflictor, attacker, Float:damage) {
if(!attacker || victim == attacker || !is_user_connected(attacker)) return HAM_IGNORED;
if(get_user_weapon(attacker) == CSW_KNIFE) {
SetHamParamFloat(4, damage + 100.0);
client_print(attacker, print_chat, "Knife --> + Damage : 100.0 !");
}
return HAM_IGNORED;
}

в общем как видно в коде урон прибавляется в случаи если я с ножом нанесу урон.
Представьте себе такой случай :
Вы бежите по карте, у вас в руках граната и нож(больше ничего что могло занимать слот в инвентаре).
Вы кидаете гранату по противнику(рядом возле него или как то так)
в общем нанесли урон гранатой, но по каким-то причинам урон увеличился(и вывелся текст), Хотя проверка стоит с ножом.
Я как бы понимаю как оно вызвало, то есть бросил гранату, у игрока автоматом сменилось на нож, проверку проходит и +100 урона...

Начал копаться по решение проблемы, я пока что не нашел здесь темы, да и вообще в интернете, возможно я что то упустил.

знаю, есть forward grenade_throw, пытался как то накрыть проверкой... но у меня вылезла ещё одна проблема как я могу определить что я ударил именно Ножом.
думал про дистанцию игрока, Я на этом всё бросил и нерво пошол курить.


Не знаю как решить проблему с этой багой. Просто было бы не заметно если бы там урон прибавлялся 1 - 10 но 100 сразу заметно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
serfreeman1337
сообщение 9.8.2014, 15:37
Сообщение #2
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Сделай проверку инфликтора.
Код:
if(!attacker || inflictor != attacker || victim == attacker || !is_user_connected(attacker)) return HAM_IGNORED;

Тогда ты точно будешь знать, что урон был нанесен оружием в руках, а не гранатой.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя gavrilyuc
сообщение 9.8.2014, 15:39
Сообщение #3
Стаж: 12 лет

Сообщений: 36
Благодарностей: 6
Полезность: 129

Цитата(serfreeman1337 @ 9.8.2014, 15:37) *
Сделай проверку инфликтора.
Код:
if(!attacker || inflictor != attacker || victim == attacker || !is_user_connected(attacker)) return HAM_IGNORED;

Тогда ты точно будешь знать, что урон был нанесен оружием в руках, а не гранатой.

*** реал вот это я жостка тупанул... спасибо.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: