FAIR
04.Декабрь.2022 20:30:00
1
$x = 1000;
$z = 1200;
$p->getLevel()->loadChunk($x » 4, $z » 4);
$y = $p->getLevel()->getHighestBlockAt($x, $z);
$p->sendMessage("Чанк с координатами {$x} {$y} {$z} был прогружен");
/
$z = mt_rand(-1500, 1500);
$player->getLevel()->loadChunk($x » 4, $z » 4);
Server::getInstance()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "onTp"], [$x, $z, $player]), 40);
break;
}
}
public function onTp(int $x, int $z, Player $player) {
$y = $player->getLevel()->getHighestBlockAt($x, $z);
$player->sendMessage("Чанк с координатами {$x} {$y} {$z} был прогружен");
на обе вариации кода сервер возвращает Y = -1
как исправить?
shoghi
04.Декабрь.2022 20:37:41
2
$x = 1000;
$z = 1200;
$player->teleport(new Position($x, 65, $z));
Server::getInstance()->getScheduler()->scheduleDelayedTask(new CallbackTask(function(int $currentTick) use ($x, $z, $player){
$player->teleport($x, $player->asPosition()->getLevel()->getHighestBlockAt($x, $z), $z);
}), 10);
да, костыльно, но работает
shoghi
04.Декабрь.2022 20:38:53
3
удалите кто-нибудь колбаску из 1.1 ядер пж, добавьте клозур таск
FAIR
04.Декабрь.2022 20:55:41
4
обработанное исключение при выполнении команды ‘id’ в id: Argument 2 passed to pocketmine\scheduler\CallbackTask::__construct() must be of the type array, int given, called in /root/test/plugins/FrudiID/src/IDPlay/Idfrudi.php on line 45
не работает
FAIR
04.Декабрь.2022 21:22:57
6
shoghi:
$x = 1000;
$z = 1200;
$player->teleport(new Position($x, 65, $z));
Server::getInstance()->getScheduler()->scheduleDelayedTask(new CallbackTask(function(int $currentTick) use ($x, $z, $player){
$player->teleport($x, $player->asPosition()->getLevel()->getHighestBlockAt($x, $z), $z);
}), 10);
я чутка отредачил, но все равно дает одну и туже ошибку
Could not execute task pocketmine\scheduler\CallbackTask: Argument 1 passed to IDPlay\Idfrudi::IDPlay{closure}() must be of the type int, object given
[21:21:17] [Server thread/CRITICAL]: TypeError: “Argument 1 passed to IDPlay\Idfrudi::IDPlay{closure}() must be of the type int, object given” (EXCEPTION) in “plugins/FrudiID/src/IDPlay/Idfrudi” at line 43
да и работает только телепорт на 65 высоту, дальше в блоки опять тепает
shoghi
04.Декабрь.2022 21:39:27
7
$x = mt_rand(1, 5000);
$z = mt_rand(1, 5000);
$sender->teleport(new Position($x, 128, $z, $sender->getLevel()));
$sender->setImmobile(true);
Loader::getInstance()->getScheduler()->scheduleDelayedTask(new CallbackTask(function() use ($sender, $x, $z){
$sender->teleport(new Position($x, $sender->getLevel()->getHighestBlockAt($x, $z) + 2, $z));
$sender->setImmobile(false);
}), 20);
shoghi
04.Декабрь.2022 21:39:38
8
вытащил это говно из своего старого проекта
баран, подгрузи чанк и потом тпхай через 0.5с раз на то пошло
qrvgqwe
04.Декабрь.2022 21:41:03
10
2 раза телепортировать с целью подгрузить чанк…
shoghi
04.Декабрь.2022 21:42:09
11
я делал, я грузил и тепал даже через 5 секунд, оно все равно возвращало -1
qrvgqwe
04.Декабрь.2022 22:09:39
12
неправильно ты делал значит
FAIR
05.Декабрь.2022 03:50:10
13
спасибо , но это не пойдет. мне нужны координаты для спавна обьекта, а не для телепортации
FAIR
05.Декабрь.2022 03:50:45
14
я давал на прогруз и 40 секунд. и все равно - 1 возвращало
Ты хочешь высчитать Y так получи Y игрока и * на 4
FAIR
05.Декабрь.2022 05:00:56
16
у меня нет игрока, мне нужно получить Y для рандомного спавна блока
Ну тогда
$y = $player->getLevel()->getHighestBlockAt($x, $z) * (4/2);