Прерывание таска

Здравствуйте, это снова я и мой кликер. У меня тут проблема…

$this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "CT"], [$player]), 6000); //Не тот код скинул

Если плагин заметит что игрок пользуется авто-кликером то ему выдаётся КТ и он не может продолжать кликать (запускается таск), но если он введёт специальную команду то КТ тут же должен сняться, и вот вопрос… А как прервать работу таска?

$this->getServer()->getScheduler()->cancelTask($task->getTaskId());

Что за айди?

И вот ещё вопрос, он прервет весь таск? (То есть КТ снимяться у всех игроков сразу?)

отмена задачи лишь убирает её из очереди планировщика, нигде ни у кого ничего не снимется

если задача вызывала какой-нибудь sendTip(), естественно он пропадет на клиенте по таймауту

Допустим у Игрока1 КД на 5000 тиков
А у Игрока2 КД на 2000 тиков
А Игроку3 таск только запустили (6000 тиков)

И у каждого должен быть отдельный таск, а как это реализовать? Просто перед созданием темы я чуток неправильно объяснил

$task->getHandler()->remove();

public function cancel(){

И

public function remove(){

Какой использовать?

И то и то подходит, только cancel() вызовит дополнительную функцию onCancel(), remove() сразу удалит хандлер

Ты то понял как использовать?

Честно говоря… Не очень

На примере из кода выше

// Создаем
$task = new CallbackTask([$this, "CT"], [$player]);
$this->getServer()->getScheduler()->scheduleDelayedTask($task, 6000);
$this->tasks[$player->getName()] = $task;

// Удаляем
if(isset($this->tasks[$player->getName()])){
  $this->tasks[$player->getName()]->getHandler()->remove();
  unset($this->tasks[$player->getName()]);
}

Не советую использовать таски для установки таймацта на что-либо, потому что тпс сервера всегда скачет и значения могут быть не точными

2 лайка

Конфиги или что?

Какие нах конфиги… В массив записываешь имя игрока => текущее время unix + cooldown в секундах. Потом проверяешь при каком-либо действии и все

Тупейшая идея

Эм…

             _   _
 _ __   __ _| |_| |_
| '_ \ / _` | __| __|
| |_) | (_| | |_| |_
| .__/ \__,_|\__|\__|
|_|


Что это?