где и как использовать m_iThrowDirection ?

Сообщения
30
Реакции
5
Я пытаюсь сделать так, чтобы труп игрока летел назад, когда вы получаете хедшот с дигла, под любым углом от атакующего, но, похоже, в этот момент он просто выбирает случайный выбор.

Я пробовал с Ham_Killed, reapi RG_CBasePlayer_Killed, простыми форвардами типа client_damage и client_death, изменение m_iThrowDirection ни на что не влияет, или может я делаю это неправильно, или может это потому что я тестирую с podbots/potti?

Вот что я уже пробовал:

Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>

public plugin_init()
{
   
}
public client_connected(id)
{
    RegisterHookChain(RG_CBasePlayer_Killed, "CSGameRules_PlayerKilled", .post = true)
    // this hook is useless with potti and podbot won't work with regamedll(or perhaps rehlds idk) and the bots from the rehlds launch options don't trigger the hook either so... using client_damage seems to detect it, and client_death does as well
    /* RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage"); */
}
/* public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits) {
    server_print("bohoo1")
    if ( victim == attacker )
        return PLUGIN_HANDLED
   
    server_print("bohoo2")
   
    if (get_user_weapon(attacker) != CSW_DEAGLE)
        return PLUGIN_HANDLED
    server_print("bohoo3")
    if (get_pdata_int(victim, 75) != 1)
        return PLUGIN_HANDLED
   
    set_pdata_int(victim, 472, 1)
    server_print("bohoo")
    return PLUGIN_CONTINUE
}
*/
/* // TEST simple amxx
public client_death(killer, victim, wpnindex, hitplace, TK)
{
    server_print("death occured... unlucky")
    set_member(victim, m_iThrowDirection, 1)
}

public client_damage(attacker,victim,damage,wpnindex,hitplace,TA)
{
    if ( victim == attacker )
        return PLUGIN_HANDLED
    
    if (wpnindex != 26) // deagle
        return PLUGIN_HANDLED
    if (hitplace != 1) // headshot
        return PLUGIN_HANDLED
   
    if (damage < get_user_health(victim)) // making sure it's gonna kill him before setting the throw direction
        return PLUGIN_HANDLED
   
    //set_pdata_int(victim, 472, 6)
    //set_member(victim, m_iThrowDirection, 1)
    server_print("yesss %i", get_member(victim, m_iThrowDirection))
    return PLUGIN_CONTINUE
}
*/
public CSGameRules_PlayerKilled(pVictim, pKiller, iGib)
{
    if(!is_user_connected(pKiller) || !get_member(pVictim, m_bHeadshotKilled) /* || !get_user_weapon(pKiller) != CSW_DEAGLE */)
        return;
    set_member(pVictim, m_iThrowDirection, 2)
    server_print("m_iThrowDirection %i", get_member(pVictim, m_iThrowDirection))
}
Я хочу, чтобы труп игрока летел назад вот так.
]

enum CsThrowDirection

извините за жесткий код(hardcoding), это было сделано для тестирования
 

Albertio

скриптизёр
Сообщения
336
Реакции
392
Предупреждения
5
Помог
7 раз(а)
Попробуй в пре хуке set_member(pVictim, m_iThrowDirection, CS_THROW_BACKWARD)
 
Сообщения
30
Реакции
5
Попробуй в пре хуке set_member(pVictim, m_iThrowDirection, CS_THROW_BACKWARD)
Я пробовал оба варианта, и в конце концов я также напечатал в хуке (pre + post) забыл упомянуть об этом, боты не вызывают его (RG_CBasePlayer_Killed), так что, возможно именно боти проблема :c
 

Albertio

скриптизёр
Сообщения
336
Реакции
392
Предупреждения
5
Помог
7 раз(а)
kappabiawbi, так у ботов не вызывается этот хук
 
Сообщения
30
Реакции
5
kappabiawbi, так у ботов не вызывается этот хук
с client_death forward он у ботов вызывается, но он все еще не работает так, как я думаю, что он должен быть задуман, в видео я использую client_death для обнаружения смерти бота, вот почему я в замешательстве, я неправильно понимаю, как m_iThrowDirection влияет на анимацию трупа или он просто не работает вообще, вот и весь консенсус темы
 
Сообщения
645
Реакции
222
Помог
11 раз(а)
Код:
#include <amxmodx>

#include <reapi>

public plugin_init()
{
   RegisterHookChain(RG_CBasePlayer_SetAnimation, "CSGameRules_SetAnimation", .post = true)
}

public CSGameRules_SetAnimation(const this, PLAYER_ANIM:playerAnim)
{
    if(playerAnim == PLAYER_DIE)
    {
        set_member(this, m_iThrowDirection, 3)
    }
}
 
Сообщения
30
Реакции
5
Код:
#include <amxmodx>

#include <reapi>

public plugin_init()
{
   RegisterHookChain(RG_CBasePlayer_SetAnimation, "CSGameRules_SetAnimation", .post = true)
}

public CSGameRules_SetAnimation(const this, PLAYER_ANIM:playerAnim)
{
    if(playerAnim == PLAYER_DIE)
    {
        set_member(this, m_iThrowDirection, 3)
    }
}
спасибо большое, я даже не знал об этом крючке :D
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу