コード例 #1
0
ファイル: StatueListener.php プロジェクト: robozeri/SG
 public function onPlayerMove(PlayerMoveEvent $event)
 {
     $player = $event->getPlayer();
     if ($player instanceof Player) {
         if ($player->getLevel()->getName() === $this->plugin->vipLevelName) {
             if (isset($this->plugin->statueManager->npcsSpawns[$player->getName()])) {
                 return;
             }
             foreach ($this->plugin->statueManager->npcs as $xnpc) {
                 if ($xnpc instanceof StatueModel) {
                     if ($player->getLevel()->getName() === $xnpc->levelName) {
                         $statuePos = $xnpc->position;
                         $pp = new Vector2(round($player->x), round($player->z));
                         $npc = new Vector2($statuePos->x, $statuePos->z);
                         $dff = abs(round($pp->distance($npc)));
                         if ($dff < 12 || $dff == 0) {
                             $builder = new StatueBuilder($this->plugin);
                             $builder->displayStatues($player, $this->plugin->statueManager->npcs);
                             $this->plugin->statueManager->npcsSpawns[$player->getName()] = $player->getName();
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #2
0
 private function moveStatues(GameLevelModel $lv)
 {
     $i = mt_rand(1, 16);
     if ($i < 5) {
         foreach ($this->plugin->statueManager->npcs as $npc) {
             $i = mt_rand(1, 12);
             if ($i === 2 || $i === 3 || $i === 5) {
                 if ($npc->type === "npc") {
                     StatueBuilder::moveStatue($npc);
                     StatueBuilder::animateStatue($npc);
                 }
             } elseif ($i === 2 || $i === 5 || $i === 7) {
                 if ($npc instanceof StatueModel) {
                     if ($npc->type === "npc") {
                         if ($npc->particles != null) {
                             MagicUtil::addParticles($lv->level, $npc->particles, new Position($npc->position->x, $npc->position->y + 1, $npc->position->z), 200);
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #3
0
ファイル: StatueManager.php プロジェクト: robozeri/SG
 /**
  * handle player presence
  *
  * @param Player $player        	
  * @param Position $from        	
  */
 public function npcHandlePlayerPresence(Player $player, Position $from)
 {
     foreach ($this->npcs as $xnpc) {
         $statuePos = $xnpc->position;
         $pp = new Vector2(round($player->x), round($player->z));
         $npc = new Vector2($statuePos->x, $statuePos->z);
         $dff = abs(round($pp->distance($npc)));
         if ($dff < 4 || $dff == 0) {
             $x = round($from->x);
             $y = round($from->y);
             $z = round($from->z);
             if (round($player->x) != $x || round($player->y) != $y || round($player->z) != $z) {
                 $posKey = round($statuePos->x) . "." . round($statuePos->y) . "." . round($statuePos->z);
                 if (isset($this->npcsPositions[$posKey])) {
                     $npc = $this->npcsPositions[$posKey];
                     $block = Item::get(Item::GLASS);
                     $direct = false;
                     $update = true;
                     $player->level->setBlock($statuePos, $block->getBlock(), $direct, $update);
                     StatueBuilder::refreshNPCEquipments($player, $npc);
                 }
             }
         }
     }
 }
コード例 #4
0
ファイル: StatueBuilder.php プロジェクト: robozeri/SG
 public function spawnHallOfFrameWinners()
 {
     // update podium
     $topWinners = $this->pgin->profileManager->retrieveTopPlayers();
     $level = $this->getPlugIn()->hubLevel;
     $winners = [];
     if (count($topWinners) == 1) {
         $goldplayer = $topWinners[0]["pname"];
         $this->getPlugIn()->statueManager->npcsPodium["gold"] = $goldplayer;
         $npos = $this->getGoldItemCasePos();
         $eid = 10000;
         StatueBuilder::removeNPC2($eid, $npos);
         self::spawnCaseItem($npos, $eid, Item::DIAMOND_SWORD);
         $npos->y = $npos->y - 0.25;
         self::spawnCaseItem($npos, $eid . "1", Item::DIAMOND_HELMET);
         self::spawnCaseItem($npos, $eid . "11", Item::FIRE);
     }
     if (count($topWinners) == 2) {
         $goldplayer = $topWinners[0]["pname"];
         $this->getPlugIn()->statueManager->npcsPodium["gold"] = $goldplayer;
         $silverplayer = $topWinners[1]["pname"];
         $this->getPlugIn()->statueManager->npcsPodium["silver"] = $silverplayer;
         $npos = $this->getGoldItemCasePos();
         $eid = 20000;
         StatueBuilder::removeNPC2($eid, $npos);
         self::spawnCaseItem($npos, $eid, Item::DIAMOND_SWORD);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "1", Item::DIAMOND_HELMET);
         self::spawnCaseItem($npos, $eid . "11", Item::FIRE);
         $eid = mt_rand(3000, 30000);
         $npos = $this->getSilverItemCasePos();
         StatueBuilder::removeNPC2($eid, $npos);
         self::spawnCaseItem($npos, $eid, Item::GOLD_SWORD);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "2", Item::GOLD_HELMET);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "11", Item::FIRE);
     }
     if (count($topWinners) == 3) {
         $goldplayer = $topWinners[0]["pname"];
         $this->getPlugIn()->statueManager->npcsPodium["gold"] = $goldplayer;
         $silverplayer = $topWinners[1]["pname"];
         $this->getPlugIn()->statueManager->npcsPodium["silver"] = $silverplayer;
         $brownseplayer = $topWinners[2]["pname"];
         $this->getPlugIn()->statueManager->npcsPodium["brownse"] = $brownseplayer;
         $eid = 10000;
         $npos = $this->getGoldItemCasePos();
         StatueBuilder::removeNPC2($eid, $npos);
         self::spawnCaseItem($npos, $eid, Item::DIAMOND_SWORD);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "1", Item::DIAMOND_HELMET);
         self::spawnCaseItem($npos, $eid . "11", Item::FIRE);
         $eid = 20000;
         $npos = $this->getSilverItemCasePos();
         StatueBuilder::removeNPC2($eid, $npos);
         self::spawnCaseItem($npos, $eid, Item::GOLD_SWORD);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "2", Item::GOLD_HELMET);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "11", Item::FIRE);
         $eid = 30000;
         $npos = $this->getBrownseItemCasePos();
         StatueBuilder::removeNPC2($eid, $npos);
         self::spawnCaseItem($npos, $eid, Item::BOW);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "2", Item::ARROW);
         $npos->x = $npos->x - 0.25;
         self::spawnCaseItem($npos, $eid . "11", Item::FIRE);
     }
 }