HUD Timeleft

HUD Timeleft 2.0.1

Нет прав для скачивания
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
Сообщения
494
Реакции
341
Помог
11 раз(а)
Ужас. Ловить смерть игрока через ивент, а не хук в 2к22 году это смело.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
1. Учитывать, что игрок живой лучше в хуке спавна и что он свалил с сервера в форварде дисконнекта.
2. Время показа сообщение - 2 секунды, таск засылается каждую секунду. Так сообщение перебиваться будет.
3. Закэшировать функцию get_timeleft().

Хотя бы hamsandwich стоит заюзать, если с reapi плохая дружба.
Код:
#include <amxmodx>
#include <hamsandwich>

#define TASK_ID 16528

public plugin_init()
{
    register_plugin("HUD Timeleft", "1.0", "BiZaJe")

    RegisterHam(Ham_Spawn, "player", "HamHook_Player_Spawn_Post", true);
    RegisterHam(Ham_Killed, "player", "HamHook_Player_Killed_Post", true);
}

public client_disconnected(id){
    remove_task(id + TASK_ID);
}

public HamHook_Player_Spawn_Post(id){
    remove_task(id + TASK_ID);
}

public HamHook_Player_Killed_Post(id){
    set_task(1.0, "Hud_Timeleft", id + TASK_ID, .flags="b");
}

public Hud_Timeleft(taskID) {
    new id = taskID - TASK_ID;
    new iTimeLeft = get_timeleft();

    set_hudmessage(0, 170, 255, -1.0, 0.8, .holdtime = 1.0);
    show_hudmessage(id, "До конца карты: %d:%02d", (iTimeLeft / 60), (iTimeLeft % 60));
}
 
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
bizon, Исправил, использовал ReApi
 
Сообщения
31
Реакции
0
Доброго времени суток уважаемые юзеры.
Подскажите пожалуйста, можно ли исправить один нюанс?!
Проблема в том, что секунды накладываются друг на друга и в связи с этим не корректно отображается.
 
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
BorJomu, set_hudmessage(0, 170, 255, -1.0, 0.8, 0, 6.0, 5.0, 0.08, 5.0);
То, что выделил на 1.0 поменяй
 
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
BorJomu, Можешь увеличить время запуска таск задачи
Вместо 1 секунду, 2 или 3 сделать

set_task(1.0, "Hud_Timeleft", this + TASK_ID, .flags="b");
11 Дек 2022
BorJomu,
Код:
/*
    Благодароность bizon за remove_task
*/

#include <amxmodx>
#include <reapi>

#define TASK_ID 16528

enum CVARS{
    Float:UPDATE_HUD,
    HUD_COLOR_R,
    HUD_COLOR_G,
    HUD_COLOR_B,
    Float:HUD_POS_X,
    Float:HUD_POS_Y
}

new g_eCvars[CVARS];

public plugin_init()
{
    register_plugin("HUD Timeleft", "1.0.2", "BiZaJe")
    
    RegisterHookChain(RG_CBasePlayer_Spawn, "HC_CBasePlayer_Spawn", .post = true);
    RegisterHookChain(RG_CBasePlayer_Killed, "HC_CBasePlayer_Killed_Post", .post = true)

    RegisterCvars();
}

public client_disconnected(iPlayer){
    remove_task(iPlayer + TASK_ID);
}

public HC_CBasePlayer_Spawn(const this){
    remove_task(this + TASK_ID);
}

public HC_CBasePlayer_Killed_Post(const this, pevAttacker, iGib){
    set_task(g_eCvars[UPDATE_HUD], "Hud_Timeleft", this + TASK_ID, .flags="b");
}

public Hud_Timeleft(taskID) {
    new id = taskID - TASK_ID;
    new iTimeLeft = get_timeleft();

    set_hudmessage(.red = g_eCvars[HUD_COLOR_R], .green = g_eCvars[HUD_COLOR_G], .blue = g_eCvars[HUD_COLOR_B], .x = g_eCvars[HUD_POS_X], .y = g_eCvars[HUD_POS_Y], .holdtime = g_eCvars[UPDATE_HUD]);
    show_hudmessage(id, "До конца карты: %d:%02d", (iTimeLeft / 60), (iTimeLeft % 60));
}

public RegisterCvars(){
    bind_pcvar_float(create_cvar(
        "hud_update_time",
        "1.0",
        FCVAR_NONE,
        "Время обновления HUD"),
        g_eCvars[UPDATE_HUD]
    );
    bind_pcvar_num(create_cvar(
        "hud_color_r",
        "0",
        FCVAR_NONE,
        "Цвет HUD`а (Красный)"),
        g_eCvars[HUD_COLOR_R]
    );
    bind_pcvar_num(create_cvar(
        "hud_color_g",
        "170",
        FCVAR_NONE,
        "Цвет HUD`а (Зеленый)"),
        g_eCvars[HUD_COLOR_G]
    );
    bind_pcvar_num(create_cvar(
        "hud_color_b",
        "255",
        FCVAR_NONE,
        "Цвет HUD`а (Синий)"),
        g_eCvars[HUD_COLOR_B]
    );
    bind_pcvar_float(create_cvar(
        "hud_position_x",
        "-1.0",
        FCVAR_NONE,
        "Позиция HUD (X)"),
        g_eCvars[HUD_POS_X]
    );
    bind_pcvar_float(create_cvar(
        "hud_position_y",
        "0.8",
        FCVAR_NONE,
        "Позиция HUD (Y)"),
        g_eCvars[HUD_POS_Y]
    );
    AutoExecConfig(true, "hud_timeleft");
}
Пробуй этот вариант
 
Последнее редактирование:
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
bizon, т.е hud будет работать синхронизировано?
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
BiZaJe, не даст накладываться сообщению на сообщение, очищая предыдущий худ этого канала. При этом в set_hudmessage канал указывать не нужно.
 
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
bizon, Ладно, сейчас попробую
11 Дек 2022
bizon, А нужно ли использовать ClearSyncHud если использую ShowSyncHudMsg
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
BiZaJe, нет, не нужно. Перед отправкой функция сама чистит.
Только инициализация CreateHudSyncObj() и непосредственно использование ShowSyncHudMsg.
 
Сообщения
31
Реакции
0
BiZaJe, подскажи пожалуйста как вывести hud в определённом цвете, НЕ рандом.
 

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

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