mp_hostages_rescuetime new CVar

Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Minni, чувствую прилив бодрости с твоей стороны. Не поддержишь ли кодом плагин?
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
wopox1337, ща.
28 Янв 2020
Держи))0)
Код:
--register_logevent("Hostage_Rescued", 3, "2=Rescued_A_Hostage");
++register_logevent("Hostage_Rescued", 3, "2=Touched_A_Hostage");
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Ну как один из вариантов хука
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

enum {
    TEAM_UNASSIGNED,
    TEAM_TERRORIST,
    TEAM_CT,
    TEAM_SPECTATOR
};

new HamHook:HamHostageUse;

public plugin_init() {
    RegisterHam(Ham_Use, "hostage_entity", "HamHostageUse_Pre", false);
    HamHostageUse = RegisterHam(Ham_Use, "hostage_entity", "HamHostageUse_Post", true);
    DisableHamForward(HamHostageUse);
}

public HamHostageUse_Pre(const hostage, const caller, const activator) {
    if (!is_user_connected(activator) || pev(activator, pev_deadflag) != DEAD_NO || pev(activator, pev_health) <= 0.0) {
        return HAM_IGNORED;
    }
  
    if (get_ent_data(activator, "CBasePlayer", "m_iTeam") != TEAM_CT) {
        return HAM_IGNORED;
    }
  
    if (get_gametime() >= get_ent_data_float(hostage, "CHostage", "m_flNextChange") && !get_ent_data(activator, "CHostage", "m_bTouched")) {
        EnableHamForward(HamHostageUse);
    }
  
    return HAM_IGNORED;
}

public HamHostageUse_Post(const hostage, const caller, const activator) {
    DisableHamForward(HamHostageUse);

    // Do some stuff
}
28 Янв 2020
А в идеале wopox1337 ты бы смог вынести апи залогов в реапи. Как пример можно взять мой ПР с добавлением CBasePlayerItem. И мемберы добавить и хукы сделать. Например хук взятия залога, хук освобождения залока
 
Последнее редактирование:
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
А еще было бы круто вывести мемберы заложников в ReAPI. Ну, это так, для удобства, чтобы лишний раз FM не дергать.
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
fantom,
Код:
pev(activator, pev_health) > 0.0
уверен?
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Ayk, нет. Код я не проверял, а перенес логику с регейма. А там как раз такая проверка и есть. При этом проверить все же стоит. Ну и данный способ это окостыль всем костылям
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
fantom, я про то, что активатор должен быть живым КТ, а тут ретурн если у него ХП больше нуля.
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Немножко видоизменил
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

new HamHook:HamHostageUse;

public plugin_init() {
    RegisterHam(Ham_Use, "hostage_entity", "HamHostageUse_Pre", false);
    DisableHamForward(HamHostageUse = RegisterHam(Ham_Use, "hostage_entity", "HamHostageUse_Post", true));
}

public HamHostageUse_Pre(const hostage, const caller, const activator) {
    if (
        is_user_connected(activator) &&
        pev(activator, pev_deadflag) == DEAD_NO &&
        pev(activator, pev_health) > 0.0 &&
        get_ent_data(activator, "CBasePlayer", "m_iTeam") == 2 /* TEAM_CT */ &&
        get_gametime() >= get_ent_data_float(hostage, "CHostage", "m_flNextChange") &&
        !get_ent_data(activator, "CHostage", "m_bTouched")
    ) {
        EnableHamForward(HamHostageUse);
    }
}

public HamHostageUse_Post(const hostage, const caller, const activator) {
    DisableHamForward(HamHostageUse);
    
    // Do some stuff
}
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
fantom,
Код:
!get_ent_data(activator, "CHostage", "m_bTouched")
это мембер заложника.
 

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

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