Подскажите пожалуйста, как сделать чтобы после смерти эффект ночного видения не пропадал?
<?php namespace FixLight; use pocketmine\{Player, Server}; use pocketmine\event\player\{PlayerJoinEvent, PlayerRespawnEvent}; use pocketmine\plugin\PluginBase; use pocketmine\event\Listener; use pocketmine\entity\Effect; Class main extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); } public function onJoin(PlayerJoinEvent $e){ $player = $e->getPlayer(); $player->addEffect(Effect::getEffect(16)->setVisible(false)->setAmplifier(1)->setDuration(20 * 9999999)); } public function onResp(PlayerRespawnEvent $e){ $player = $e->getPlayer(); $player->addEffect(Effect::getEffect(16)->setVisible(false)->setAmplifier(1)->setDuration(20 * 9999999)); } }Khm
1 лайк
При респавне игроку эффект выдается сразу же (ещё до того, пока сервер что-то сделает). И уже после выдачи эффекта, сервер начинает его регенить, тпхать на спавн, и удалять эффекты разумеется ). (сам сталкивался с такой проблемой)
Для того что-бы это исправить, тебе надо запралировать выдачу эффекта как минимум на 1 тик (я рекомендую 5)
use pocketmine\scheduler\CallbackTask;
public function onRespawn(PlayerRespawnEvent $event) {
$player = $event->getPlayer();
$this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask (array($this, "giveEffect"), array($player)), 5);
}
public function giveEffect($player) {
$player->addEffect(Effect::getEffect(16)->setVisible(false)->setAmplifier(1)->setDuration(20 * 9999999));
}
Спасиб
Нажми на Вопрос решен
1 лайк