Уведомление о том, что игрок получил VIP

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
42
Реакции
0
Привет.

Я хочу уведомить игрока после входа на сервер в HUD, что он получил бесплатный VIP. Как это сделать ?

Пожалуйста помоги :(

Код:
#include <amxmodx>

new const szStartTime[] = "22:00";    // Начало выдачи флагов
new const szEndTime[] = "10:00";    // Окончание выдачи флагов
new const szAddFlags[] = "t";        //Флаги для выдачи

public plugin_cfg()
{
    new iTime = get_systime();
    if(parse_time(szStartTime, "%H:%M") <= iTime || iTime <= parse_time(szEndTime, "%H:%M"))
        set_cvar_string("amx_default_access", szAddFlags);
}
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
При первом спавне с задержкой (task) вывести
 
Сообщения
673
Реакции
242
Помог
11 раз(а)
Такая реализация не пойдет, plugin_cfg запуститься один раз при смене карт, а это может не прозойти в указанных проежутках времени (szStartTime и szEndTime)

как вариант, чекать каждую минуту время если время истина то выдавать флаги

Код:
#include <amxmodx>

new const szStartTime[] = "22:00";    // Начало выдачи флагов
new const szEndTime[] = "10:00";    // Окончание выдачи флагов
new const szAddFlags[] = "t";        //Флаги для выдачи

new bool:g_iTimeFreeStart;

plugin_init()
{
    set_task(60.0, "Task_Task", _ , _, _ ,b)
}

public Task_Task()
{
    static g_iSysTime = get_systime();
    static StartTime = parse_time(szStartTime, "%H:%M");
    static EndTime = parse_time(szEndTime, "%H:%M")
    if(StartTime <= g_iSysTime && g_iSysTime <= EndTime)
    {
        if(!g_iTimeFreeStart)
        {
            set_cvar_string("amx_default_access", szAddFlags);
        }
        g_iTimeFreeStart = true;
    }
    else
    {
        if(g_iTimeFreeStart )
        {
            set_cvar_string("amx_default_access", "z");
        }
   
        g_iTimeFreeStart = false;
    }
}

public client_putinserver(pId)
{
    if(g_iTimeFreeStart )
    {
        //Функция HUD уведомление
    
    }
}
 
Последнее редактирование:
Сообщения
75
Реакции
36
Помог
4 раз(а)
А зачем ежеминутный таск, задачку можно реализовать и дергая unix-время. Если дорабатывать до идеала, можно еще получить timelimit + возможные минуты по продлению карты и в лишних случаях таск вовсе не запускать.
 
Сообщения
66
Реакции
43
самое выгодное решение как по мне
вы можете поставить hook_pcvar_change на отлов этого квар а и когда он не дефолтный то всем можно отослать смс (но это если в процессе игры а не при старте сервера)
а также в форварде от вашего админ лоадера когда после путина уже произошла выдача деф-флага и там можно отослать смс (если он не успеет его прочесть то уже при первом спавне)
 
Сообщения
334
Реакции
93
Помог
2 раз(а)
Limbooc, при
C++:
new const szStartTime[] = "22:00";    // Начало выдачи флагов
new const szEndTime[] = "10:00";    // Окончание выдачи флагов
...
new StartTime = parse_time(szStartTime, "%H:%M");
new EndTime = parse_time(szEndTime, "%H:%M");
вы получите unix время szEndTime текущего дня, а не следующего.
 
Сообщения
66
Реакции
43
Noob_with_cheats, поэтому надо так

Код:
if (!(parse_time(szEndTime, "%H:%M:%Y") <= iTime <= parse_time(szStartTime, "%H:%M:%Y"))
 
Последнее редактирование:
Сообщения
334
Реакции
93
Помог
2 раз(а)
Impossible, вру. Всё нормально. Почему-то сервер на условие всегда отвечал "Yep". А вот год уже лишний)
 
Сообщения
673
Реакции
242
Помог
11 раз(а)
@Impossible,легче вообще просто добавить сутку)

Код:
if(StartTime <= g_iSysTime && (g_iSysTime + 86400) <= (EndTime + 86400))
{


}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

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

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