Отлов смены бодигруппы при поднятии бомбы или набора сапёра

Сообщения
24
Реакции
25
Помог
1 раз(а)
Доброго времени суток. Мне нужно менять бодигруппу игроку для смены скина, что я и делаю при спавне. Но при поднятии бомбы или набора сапёра бодигруппа автоматом меняется на 1(при поднятии) или же на 0(при выбрасывании). Каким образом можно отловить эти моменты смены бодигруппы и опять подставить свою?
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
Хукаешь это всё:


// AttachToPlayer
RegisterHam(Ham_Item_AttachToPlayer, "weapon_c4", "fw_c4_AttachToPlayer_Post", 1);

// Message hooks
register_message(get_user_msgid("ItemStatus"), "Message_ItemStatus");
register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon");

// Event
register_event("HudTextArgs", "Event_HudTextArgs", "be", "1=#Hint_you_have_the_bomb");

и смотришь, что и когда вызывается. Это полностью покроет все ситуации смены бодей.

Можно поколхозить в рехолдс и реапи, если есть.
 
Сообщения
24
Реакции
25
Помог
1 раз(а)
SISA, благодарю за помощь. Вот реализация если кому-нибдь понадобится:
C++:
public ham_c4_AttachToPlayer_Post(Entity, id) {
    if(pl_CurrentBody[id])
        set_entvar(id, var_body, pl_CurrentBody[id] - 1);

    return HAM_HANDLED;
}

public Event_HudTextArgs(id) {
    if(pl_CurrentBody[id])
        set_entvar(id, var_body, pl_CurrentBody[id] - 1);
   
    return PLUGIN_CONTINUE;
}

public Message_ItemStatus(msg_id, msg_dest, id) {
    if(pl_CurrentBody[id] && get_msg_arg_int(1) == (1<<1))
        set_entvar(id, var_body, pl_CurrentBody[id] - 1);
   
    return PLUGIN_CONTINUE;
}

public Message_StatusIcon(msg_id, msg_dest, id) {
    if(!pl_CurrentBody[id])
        return PLUGIN_CONTINUE;
   
    new Sprite[8];
    get_msg_arg_string(2, Sprite, 7);
    if(!strcmp(Sprite, "c4") || !strcmp(Sprite, "defuser"))
        set_entvar(id, var_body, pl_CurrentBody[id] - 1);
   
    return PLUGIN_CONTINUE;
}
В моём случае pl_CurrentBody[id] это номер нужной бодигруппы + 1.
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
register_event("HudTextArgs", "Event_HudTextArgs", "be", "1=#Hint_you_have_the_bomb");
Специально поискал в регейме и нашел. RG_CBasePlayer_MakeBomber хук. А что лучше использовать пусть каждый решает сам.

P.S. Заметил, что также при RG_CBasePlayer_MakeVIP меняется боди
25 Июл 2019
r1ghty, не забывайте также, что при спавне если есть щипци, то боди также изменяется. А еще при смерте есть сообщение трупа (ClCorpse) в которой также указывается боди
 

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

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