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

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

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

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

2 страниц V   1 2

Player_TakeDamage (fix error_log)

[РЕШЕНО]
Статус пользователя Slavik
сообщение 23.6.2017, 2:42
Сообщение #1


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

Написал не большой код кое-как, не могли бы помочь исправить error, появляется ошибка если становлюсь на место trigger_hurt и получаю урон от него. Так же если есть желания сделать доброе дело, помогите оптимизировать, как бы вы правильно написали=)) спасибо:)

L 06/23/2017 - 03:34:33: [ZP] Invalid Player (84)
L 06/23/2017 - 03:34:33: [AMXX] Displaying debug trace (plugin "zombie_bers.amxx")
L 06/23/2017 - 03:34:33: [AMXX] Run time error 10: native error (native "zp_get_user_zombie")
L 06/23/2017 - 03:34:33: [AMXX] [0] zombie_bers.sma::Player_TakeDamage (line 28)

Код
public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)
{
if(!(zp_get_user_zombie(attacker)) || !is_user_alive(attacker) || !is_user_alive(victim) || get_user_weapon(attacker) != CSW_KNIFE)
    return;

    if(zp_get_user_zombie(attacker) && zp_get_user_zombie_class(attacker) == g_zclassidqex)
    {
        if(pev(attacker, pev_button) & IN_ATTACK || pev(attacker, pev_button) & IN_ATTACK2)
        {
            user_slap(victim, 0, 0)
        }
    }
}


Отредактировал: Slavik, - 23.6.2017, 2:43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 3:25
Сообщение #2


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Код:

public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)
{
if(!is_user_alive(attacker) || !is_user_alive(victim)) // сначала лучше проверить на alive атакующего и жертвы. Alive проверит на валидность игроков, поэтому проверку на коннект можно пропустить
return;

if( (zp_get_user_zombie(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclassidqex) && (bitsDamage & DMG_SLASH ))
{
if(pev(attacker, pev_button) & IN_ATTACK || pev(attacker, pev_button) & IN_ATTACK2)
{
user_slap(victim, 0, 0)
}
}
}


Отредактировал: DeMNiX, - 23.6.2017, 3:34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 3:45
Сообщение #3


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

DeMNiX, данная функция не работает(
user_slap(victim, 0, 0)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 3:47
Сообщение #4


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

хорошо, логи есть какие-либо?

Код:

user_slap(victim, 1, 0)


Отредактировал: DeMNiX, - 23.6.2017, 3:50
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 4:00
Сообщение #5


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

Нету, попробовал разными способами ударять на всякий случай.. логи не появились(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 4:33
Сообщение #6


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Код:

public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)
{
if(!is_user_alive(attacker) || !is_user_alive(victim))
return HAM_IGNORED;

if( (zp_get_user_zombie(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclassidqex) && (bitsDamage & (DMG_SLASH | DMG_CLUB) ))
{
user_slap(victim, 0, 0)
}

return HAM_IGNORED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя neverminde
сообщение 23.6.2017, 4:34
Сообщение #7


Стаж: 13 лет

Сообщений: 1133
Благодарностей: 595
Полезность: 576

Цитата(Slavik @ 23.6.2017, 5:00) *
Нету, попробовал разными способами ударять на всякий случай.. логи не появились(

А сам по себе slap работает? Пример:
pawn
Код:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "[amxmodx.inc] user_slap"
#define VERSION "1.0"
#define AUTHOR "Admin"


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /slap_r","f_slap_r")
register_clcmd("say /slap","f_slap")
}
public f_slap_r(id){

//Слапнет на 10 hp и пнет в случайную сторону.
user_slap(id,10,1)

}
public f_slap(id){

//Слапнет на 15hp и пнет прямо по направлению куда смотрит игрок
user_slap(id,15,0)

}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 4:35
Сообщение #8


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

@nevermind
я думаю дело в dmgbits
в принципе я могу убрать его вовсе, но если сторонние плагины будут атаковать - жертва будет пинаться, что не есть хорошо
потому что у зм основное оружие это нож. Если появится какая-нибудь базука ( как на немезисе ), т.е. это уже совсем другая история

Отредактировал: DeMNiX, - 23.6.2017, 4:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 4:44
Сообщение #9


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

Не работает, нечего не изменилось(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 4:45
Сообщение #10


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Код:
public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)

регистрацию покажи
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 4:52
Сообщение #11


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

neverminde, Способ, который я в 1 посту писал работает.

Цитата
А сам по себе slap работает? Пример:

Да работает.

DeMNiX, RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage")

Регистер в public plugin_precache()
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 4:58
Сообщение #12


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Код:

public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)
{
if(!is_user_alive(attacker) || !is_user_alive(victim))
return HAM_IGNORED;

if( (zp_get_user_zombie(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclassidqex) )
{
user_slap(victim, 0, 0)
return HAM_HANDLED;
}

return HAM_IGNORED;
}


попробуй так, потом скажешь работает или нет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 5:07
Сообщение #13


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

DeMNiX, да, так работает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 5:14
Сообщение #14


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Код:
 
public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)
{
if(!is_user_alive(attacker) || !is_user_alive(victim))
return HAM_IGNORED;

if( (zp_get_user_zombie(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclassidqex) && (bitsDamage & (DMG_NEVERGIB | DMG_BULLET) ) )
{
user_slap(victim, 0, 0)
return HAM_HANDLED;
}

return HAM_IGNORED;
}


должно работать, спасибо D34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 5:20
Сообщение #15


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

DeMNiX, а так не работает((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 5:28
Сообщение #16


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Код:

#define DMG_KNIFE (DMG_NEVERGIB | DMG_BULLET)

public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)
{
if(!is_user_alive(attacker) || !is_user_alive(victim))
return HAM_IGNORED;

if( (zp_get_user_zombie(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclassidqex) && (bitsDamage & DMG_KNIFE ) )
{
user_slap(victim, 0, 0)
return HAM_HANDLED;
}

return HAM_IGNORED;
}


а по факту должна

Отредактировал: DeMNiX, - 23.6.2017, 5:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 5:43
Сообщение #17


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

DeMNiX, то же не работает..

Такой вопрос, скажи пожалуйста, лучше будет если поставить проверку, чтобы на немезиду это не распространялось или не ставить? ( в плане нагрузки на сервер, так то пофиг мне стукает немезида при убийстве или нет :))

В принципе данный вариант нормальный) Чем он плох?
Код:
public Player_TakeDamage(victim, inflicator, attacker, Float:damage, damage_type, bitsDamage)
{
if(!is_user_alive(attacker) || !is_user_alive(victim))
return HAM_IGNORED;

if( (zp_get_user_zombie(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclassidqex) )
{
user_slap(victim, 0, 0)
return HAM_HANDLED;
}

return HAM_IGNORED;
}


Отредактировал: Slavik, - 23.6.2017, 5:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 5:49
Сообщение #18


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Цитата
Такой вопрос, скажи пожалуйста, лучше будет если поставить проверку, чтобы на немезиду это не распространялось или не ставить? ( в плане нагрузки на сервер, так то пофиг мне стукает немезида при убийстве или нет

если у немца атака больше чем хп у хумана, то не вижу смысла ставить условие. А так особо разницы не заметишь, т.к. вызывается функция не так уж и часто
кстати, проверь: если атакуешь зм-союзника = отскок тоже должен быть, потому как проверку не поставили на это
Цитата
В принципе данный вариант нормальный) Чем он плох?

тем что нет проверки на атаку с ножа. Ударишь каким-либо другим способом - жертва получит пинок

Отредактировал: DeMNiX, - 23.6.2017, 5:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slavik
сообщение 23.6.2017, 5:59
Сообщение #19


Стаж: 10 лет

Сообщений: 185
Благодарностей: 13
Полезность: < 0

DeMNiX, По поводу проверки, а вот лучше поставить проверку или нет? Просто у меня такое бывает и я думаю сижу, ставить или не ставить))
Так у зомби кроме инфекционной гранаты нечего не может быть)) Ну по крайне у меня так и будет всегда)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DeMNiX
сообщение 23.6.2017, 6:05
Сообщение #20


Стаж: 11 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Цитата(Slavik @ 23.6.2017, 11:59) *
DeMNiX, По поводу проверки, а вот лучше поставить проверку или нет? Просто у меня такое бывает и я думаю сижу, ставить или не ставить))
Так у зомби кроме инфекционной гранаты нечего не может быть)) Ну по крайне у меня так и будет всегда)

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