最終更新:
famima2015 2016年06月27日(月) 17:02:16履歴

今回はサーバーに入ったら1秒毎に時間を表示するプラグインを作ります。
<?php namespace main; use pocketmine\plugin\PluginBase; use pocketmine\Player; use pocketmine\event\Listener; use pocketmine\event\player\PlayerJoinEvent; use pocketmine\scheduler\PluginTask;//これをuseしてください class main extends PluginBase implements Listener{ public function onEnable(){ //サーバー起動時の処理 $this->getServer()->getPluginManager()->registerEvents($this,$this); } public function onjoin(PlayerJoinEvent $event){//プレイヤーがサーバーに入った時の処理 $player = $event->getPlayer(); //イベントからプレイヤー取得 $task = new time($this, $player);//インスタンス作成 $this->getServer()->getScheduler()->scheduleRepeatingTask($task, 20); /*今回は1秒毎に実行するので20(1Tick×20)にしています scheduleRepeatingTaskをscheduleDelayedTaskに 変えると何秒後に実行する!というものになります*/ } } class time extends PluginTask{//PluginTaskを継承したクラスです。phpファイルを分けてもできます public function __construct(PluginBase $owner, Player $player) { parent::__construct($owner); $this->player = $player;//Playerデータを引き継ぎます } public function onRun($currentTick){ $time=date("Y年m月j日 H時i分s秒");//時間を取得 $this->player->sendTip($time); } }

難しすぎて分からない...

分かるんだけどもっと簡単に出来ないかな?
実はCallbackTaskを使用して簡単にコードを書くことが出来ます。今回は起動してからXX分後にサーバーを止めるコードです。
<?php namespace main; use pocketmine\plugin\PluginBase; use pocketmine\scheduler\CallbackTask;//追加でこれをuseします class main extends PluginBase{ public function onEnable(){ //サーバー起動時の処理 $this->getServer()->getPluginManager()->registerEvents($this,$this); $this->getServer()->getScheduler()->scheduleDelayedTask( new CallbackTask([$this,"StopTask"]), 20 * 60 * XX); //XXを分に自由に変えてください } public function StopTask(){ $this->getServer()->shutdown();//サーバーを止めます } }
最新コメント