Секундомер

Сообщения
34
Реакции
-1
Доброго времени суток!
Как сделать так, чтобы когда игрок умирает и наблюдает за другим игроком, то видел его секундомер?

Знаю, что надо использовать:
Код:
static target; target = get_entvar(id, var_iuser1) == 4 ? get_entvar(id, var_iuser2) : id;

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

#pragma semicolon 1

#define TASK_OFFSET 800
#define StopTask(%1) if(task_exists(%1 + TASK_OFFSET)) remove_task(%1 + TASK_OFFSET)

native PlayerFinished(id);

new Float:gStartTime[MAX_PLAYERS+1];
new bool:gOffTimer[MAX_PLAYERS+1] = false;

public plugin_init()
{
    register_plugin("Stopwatch", "1.0", "Admin");
   
    RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", .post = true);
   
    register_clcmd("say /stop", "OffTimer");
}

public CBasePlayer_Spawn(id)
{
    StopTask(id);
   
    if(!gOffTimer[id])
    {
        set_task(1.0, "StartStopwatch", id + TASK_OFFSET, .flags = "b");
        gStartTime[id] = get_gametime();
    }
}

public StartStopwatch(id)
{
    id -= TASK_OFFSET;
   
    if(PlayerFinished(id) || gOffTimer[id] || !is_user_alive(id)) StopTask(id);
   
    new Float:fDiff = get_gametime() - gStartTime[id];
   
    new iMinutes = floatround(fDiff / 60.0, floatround_floor);
    new iSeconds = floatround(fDiff - iMinutes * 60, floatround_floor);
   
    set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.65, 0, 0.0, 0.9, 0.0, 0.0);
    show_hudmessage(id, "%02i:%02i", iMinutes, iSeconds);
}

public OffTimer(id) gOffTimer[id] = !gOffTimer[id];

Не могу додуматься как реализовать.
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
433
Реакции
293
Помог
5 раз(а)
C++:
for(new i = 1; i <= MAX_PLAYERS; i++)
    if(is_user_connected(i) && get_entvar(i, var_iuser1) == 4 && get_entvar(i, var_iuser2) == id)
        show_hudmessage(i, "%n:^n%02i:%02i", id, iMinutes, iSeconds);
 
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
C++:
for(new i = 1; i <= MAX_PLAYERS; i++)
    if(is_user_connected(i) && get_entvar(i, var_iuser1) == 4 && get_entvar(i, var_iuser2) == id)
        show_hudmessage(i, "%n:^n%02i:%02i", id, iMinutes, iSeconds);
Зачем гонять цикл?
Проще же ID присвоить ID наблюдателя
и через if/else вывести нужный худ
 
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
Damir,
Код:
if(!is_user_alive(id)){
    IdSpec = присваиваем id наблюдателя
    
    if(!is_user_alive(IdSPec)){
        return; // вдруг наш наблюдатель мертв
    }
}

if(IdSpec != id){
    Наблюдаешь за кем-то
} else {
    если играешь сам
}
 

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

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