I work on a mini game but I have a problem, can some one help me? When player tap the sign, this player will teleport to (pos1) when another player tap the sign, this player will teleport to (pos2) them pos3, pos4 if the first player leave, the next player tap the sign will teleport to pos1
make variable PHP: public $pos = [1, 2, 3, 4, 5, 6, 7, 8]; public $players = []; when player touch sign: PHP: $player->teleport(min($this->pos));$this->players[strtolower($player->getName())] = min($this->pos);unset(min($this->pos)); when player leave PHP: $pos[0]= $this->players[strtolower($player->getName())];unset($this->players[strtolower($player->getName())]; i think it should work.
When player joins, push the position into another array and shift it out of the old array. When player quits, pull out the relevant position and unshift it back into the old array.
No Really Understand: I use another example please help me: =========================== PHP: public function playerJoinEvent(PlayerJoinEvent $event){ if(!isset($this->players[$event->getPlayer()->getName()])){ $this->players[$event->getPlayer()->getName()]=array("id"=>$event->getPlayer()->getName()); }else{ $event->getPlayer()->sendMessage("Error during this match"); $event->getPlayer()->kick("Error", false); }} public function PlayerQuit(PlayerQuitEvent $event){ if(isset($this->players[$event->getPlayer()->getName()])) unset($this->players[$event->getPlayer()->getName()]); } For Example: pos1 = 1,1,1,skywars; pos2 = 2,2,2,skywars; pos3 = 3,3,3,skywars; pos4 = 4,4,4,skywars So how to write?
PHP: private $availableSpawns, $usedSpawns = []; // populate $availableSpawns yourselfprivate function join(Player $player){ $pos = array_shift($this->availableSpawns); // extract one from available list $this->usedSpawns[$player->getId()] = $pos; // add it into used list $player->teleport($pos);}private function quit(Player $player){ if(isset($this->usedSpawns[$player->getId()])){ $pos = $this->usedSpawns[$player->getId()]; unset($this->usedSpawns[$player->getId()]); // remove it from used list array_unshift($this->availableSpawns, $pos); // put it back into available list }}
So when player join : $this->join($player); Quit: $this->quit($player); And what should I write in $usedSpawns = [ HERE ]
You can't populate objects at that context. Populate the array in somewhere like onEnable or when your arena starts.