Закончить task

Статус
В этой теме нельзя размещать новые ответы.

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304
Всем привет.
В плагине сделал запуск бесконечного task-a при подключении игрока.
В итоге, если игрок будет перезаходить, то будет запущено большое количество тасков.

Можно ли вырубить как-нибудь таск при дисконнекте игрока?


Код:
public client_putinserver(id)
{
    set_task(10.0, "lalala", id, .flags = "b");
}
 

StockX

Скриптер
Регистрация
8 Июн 2017
Сообщения
168
Симпатии
132
Пол
Мужской
Сделать проверку в самом таске на коннект игрока. Если отсутствует, то использовать remove_task.
Или же делать его при дисконнекте игрока
 

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304
StockX, а как в моем варианте присвоить ID(ник) таску? Что-то не получается не удаляя 'id'
Код:
set_task(10.0, "lalala", id, .flags = "b");
 

StockX

Скриптер
Регистрация
8 Июн 2017
Сообщения
168
Симпатии
132
Пол
Мужской
To be or not to be, не понял)
Ник игрока нужен или что?
Если да, то в таске и получать, у тебя всё равно таск айди равен айди игрока
 

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304
StockX, если я в таске не напишу id, то таск будет как бы 'глобальный' что ли?
Играют например 3 человека на сервере, 1 вышел, и у Всех таск оффнется ? если его при дисконнекте ремувать remove_task(id).
Или лично у того чела, который вышел?[DOUBLEPOST=1509823269][/DOUBLEPOST]StockX, я просто каждому игроку таск выдаю при подключении.
 

StockX

Скриптер
Регистрация
8 Июн 2017
Сообщения
168
Симпатии
132
Пол
Мужской
To be or not to be, тогда taskid будет равен 0, можно сказать да, глобальный)
 

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304
StockX, а если мне нужно для каждого юзера зарегать несколько тасков, как быть?)[DOUBLEPOST=1509824939][/DOUBLEPOST]StockX, то есть
Код:
set_task(10.0, "lalala", id, .flags = "b"); - типо первый паблик, и нужно Ник таску выдать, и сохранить id, чтобы не глобальный был
set_task(10.0, "lalala2", id, .flags = "b");- типо второй паблик
set_task(10.0, "lalala3", id, .flags = "b");- типо третий паблик
set_task(10.0, "lalala4", id, .flags = "b");- типо четвертый паблик
 
Последнее редактирование:

StockX

Скриптер
Регистрация
8 Июн 2017
Сообщения
168
Симпатии
132
Пол
Мужской
To be or not to be, ну типо так и делать, копи-пастнуть, но изменить название функции
 

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304
StockX, id1, id2, id3 ...... ?
 

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304

paffgame

D0L64E6
Разработчик
Регистрация
9 Июн 2017
Сообщения
154
Симпатии
84
Пол
Мужской
Telegram
@paffgame
To be or not to be, дак можно использовать ид игрока, а он у каждого свой. (по-моему макарон это и имел ввиду)
 

BalbuR

Пользователь
Регистрация
26 Июл 2017
Сообщения
131
Симпатии
25
Пол
Мужской
вроде ясно разжевал

PHP:
#define TASKID 100 // индекс задачи + индекс игрока для каждого отдельного игрока
#define TASKID2 200

public client_disconnected(id)
{
     remove_task(id + TASKID) // удаление задачи для конкретного игрока
     remove_task(id + TASKID2) // удаление второй задачи для конкретного игрока
}

public client_putinserver(id)
{
    set_task(0.5, "task_function", id+TASKID, _, _, "b"); // Установка задачи №1 для игрока с индексом id
    set_task(0.5, "task_function2", id+TASKID2, _,_,"b"); // Установка задачи №2 для игрока с индексом id
}

public task_function(taskid) // taskid передает номер задачи для конкретного игрока
{
      new iPlayer = taskid - TASKID; // вычисляем индекс игрока вычитая индекс задачи
      if(!is_user_alive(iPlayer)) return;
      set_entvar(iPlayer, var_armorvalue, get_entvar(iPlayer, var_armorvalue) + 1.0);
}

public task_fuction2(taskid)
{
    new iPlayer = taskid - TASKID2;
    client_print(iPlayer, print_chat, "Hello %.2f", get_gametime() );
}
если айди таска совпадут каким-либо образом, процесс выполнения задачи он не затронет, но вот при удалении могут возникнуть проблемы
 

sonyx

Заблокированные
Регистрация
8 Июн 2017
Сообщения
488
Симпатии
242
если таск бесконечен, то нафига на каждого игрока его вешать? при конект/дисконект добавлять ид в массив и в таске уже сверять есть/нет. сам таск создать в инит/кфг
 

russkii

Пользователь
Регистрация
12 Июн 2017
Сообщения
52
Симпатии
4
Пол
Мужской
если таск бесконечен, то нафига на каждого игрока его вешать? при конект/дисконект добавлять ид в массив и в таске уже сверять есть/нет. сам таск создать в инит/кфг
Зачем усложнять?
 

To be or not to be

Пользователь
Регистрация
9 Июн 2017
Сообщения
1.217
Симпатии
304
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу