Задержка функции

x330122

Участник
Сообщения
357
Реакции
152
Всем привет. Как я смогу сделать задержку выполнения функции в команде с запоминанием ID игрока на которого должна выполниться нужная функция. Например:
PHP:
public Action:Command_Plague(client,args)
{
if(IsPlayerAlive(client) == true)
{
//Запись ID игрока на котором выполнится функция ниже
//задержка(5 секунд)
{
TF2_AddCondition(записанный ID игрока, TFCond_Plague, TFCondDuration_Infinite);
}
}
Буду очень благодарен !!!
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
сделать задержку выполнения
Таймером.
задержка(5 секунд)
PHP:
CreateTimer(5.0, WaitFunction, client, TIMER_FLAG_NO_MAPCHANGE);
PHP:
public Action:Command_Plague(client,args)
{
	if (client && IsPlayerAlive(client)) CreateTimer(5.0, WaitFunction, client, TIMER_FLAG_NO_MAPCHANGE);
	return Plugin_Handled;
}

public Action:WaitFunction(Handle:timer, any:client)
{
	if (IsClientInGame(client)) TF2_AddCondition(client, TFCond_Plague, TFCondDuration_Infinite);
	return Plugin_Stop;
}
 

x330122

Участник
Сообщения
357
Реакции
152
Таймером.
PHP:
CreateTimer(5.0, WaitFunction, client, TIMER_FLAG_NO_MAPCHANGE);
PHP:
public Action:Command_Plague(client,args)
{
    if (client && IsPlayerAlive(client)) CreateTimer(5.0, WaitFunction, client, TIMER_FLAG_NO_MAPCHANGE);
    return Plugin_Handled;
}

public Action:WaitFunction(Handle:timer, any:client)
{
    if (IsClientInGame(client)) TF2_AddCondition(client, TFCond_Plague, TFCondDuration_Infinite);
    return Plugin_Stop;
}
С таргетингом будет работать ? Например CreateTimer(5.0, Wait, target_list, TIMER_FLAG_NO_MAPCHANGE);
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Не важно, как называется переменная, отсылаемая в таймер. Оффтоп Получаемая после таймера переменная может быть названа иначе.
То же самое, но название вызова функции должно быть одинаковым.
Тут уже не мудрим, только выбираем из API SM.
Кстати, лучше преобразовать в userid, а после - снова в индекс игрока. Всё-таки, 5 секунд - это многовато: игрок может ввести команду и выйти/вылететь, на его место (индекс/слот) зайдёт другой - команда выполнится на нём.
 

x330122

Участник
Сообщения
357
Реакции
152
Не важно, как называется переменная, отсылаемая в таймер. Оффтоп Получаемая после таймера переменная может быть названа иначе.То же самое, но название вызова функции должно быть одинаковым.Тут уже не мудрим, только выбираем из API SM.Кстати, лучше преобразовать в userid, а после - снова в индекс игрока. Всё-таки, 5 секунд - это многовато: игрок может ввести команду и выйти/вылететь, на его место (индекс/слот) зайдёт другой - команда выполнится на нём.
Окей, спасибо большое :)
 
Сверху Снизу