Проблема с показом системы

Немогу найти плагин для показы системы типо как на DeviseOS что-бы отображалось с какого устройства ты играешь помогите пожалуйста

1 лайк

Womp womp

DeviceACM в помощь

Я могу дать тебе плагин есть такой

https://poggit.pmmp.io/p/DeviceACM/4.0.2

1 лайк

мне надо на версию 1.1.5 и на ядро prismarine

на версию 1.1.5 и ядро prismarin

Ну тогда лови пакеты логина и сохраняй их

всм?

там как-то можно через апи но у меня не получается в итоге просто начинает все не работать

типо вот {
$deviceos = [“Unknown”, “Android”, “iOS”, “macOS”, “FireOS”, “GearVR”, “HoloLens”, “Windows 10”, “Windows”, “Dedicated”, “Orbis”, “NX”];
return $deviceos[$this->clientData[$username][“DeviceOS”]];
} но я как-то вставляю криво поэтому у меня весь api накрывается

В призме нету заранее готового метода для получения доп. информации. Их надо самому дописывать или дополнять плагинами.

ладно

public function getOs(): string {
    $devices = ["Unknown", "Android", "iOS", "macOS", "FireOS", "GearVR", "HoloLens", "Windows 10", "Windows", "Dedicated", "Orbis", "NX"];
    return $devices[$this->clientData[$username][“DeviceOS”]];
}
<?php namespace SrotsDev; use pocketmine\plugin\PluginBase; use pocketmine\event\Listener; class API extends PluginBase implements Listener { public $hotbar = 0; public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); $this->svile = $this->getServer()->getPluginManager()->getPlugin("SW_svile"); $this->load(); } public function load(){ foreach($this->getServer()->getLevels() as $l){ $l->setTime(3500); $l->stopTime(); } $this->main = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-97+0.5, 106, -58+0.5), "", ""); $this->main2 = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-97+0.5, 105.5, -58+0.5), "", ""); $this->main3 = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-97+0.5, 105, -58+0.5), "", ""); $this->main4 = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-97+0.5, 104.5, -58+0.5), "", ""); $this->main5 = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-97+0.5, 104, -58+0.5), "", ""); $this->topwins = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-77.05, 105, -38.05), "", ""); $this->topkills = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-82.05, 105, -37.05), "", ""); $this->play = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-74.05, 104.6, -43.05), "", ""); $this->playonline = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-74.05, 104.3, -43.05), "", ""); $this->top1 = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-107.05, 106.3, -68.05), "", ""); $this->top2 = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-108.05, 106.3, -65.05), "", ""); $this->top3 = new \pocketmine\level\particle\FloatingTextParticle(new \pocketmine\math\Vector3(-104.05, 106.3, -69.05), "", ""); $this->getServer()->getScheduler()->scheduleRepeatingTask(new \pocketmine\scheduler\CallbackTask(array($this, "hotbar")), 21); $this->getServer()->getScheduler()->scheduleRepeatingTask(new \pocketmine\scheduler\CallbackTask(array($this, "levelup")), 50); $this->getServer()->getScheduler()->scheduleRepeatingTask(new \pocketmine\scheduler\CallbackTask(array($this, "server")), 35); $this->getServer()->getScheduler()->scheduleRepeatingTask(new \pocketmine\scheduler\CallbackTask(array($this, "topWins")), 50); $this->getServer()->getScheduler()->scheduleRepeatingTask(new \pocketmine\scheduler\CallbackTask(array($this, "topKills")), 50); $this->reports = new \pocketmine\utils\Config($this->getDataFolder() ."reports.yml", \pocketmine\utils\Config::YAML); $this->db = new \SQLite3($this->getDataFolder() ."stats.db"); $this->db->query("CREATE TABLE IF NOT EXISTS stats(name TEXT NOT NULL, games INTEGER NOT NULL, kills INTEGER NOT NULL, wins INTEGER NOT NULL);"); } public function break(\pocketmine\event\block\BlockBreakEvent $ev){ if($ev->getPlayer()->getLevel()->getFolderName() == "world"){ if(!$ev->getPlayer()->isOp()){ $ev->setCancelled(); } } } public function place(\pocketmine\event\block\BlockPlaceEvent $ev){ if($ev->getPlayer()->getLevel()->getFolderName() == "world"){ if(!$ev->getPlayer()->isOp()){ $ev->setCancelled(); } } } public function void(\pocketmine\event\player\PlayerMoveEvent $ev){ if($ev->getPlayer()->getLevel()->getFolderName() == "world" and $ev->getPlayer()->getY() <= 10){ $ev->getPlayer()->teleport($this->getServer()->getDefaultLevel()->getSafeSpawn()); } } public function damage(\pocketmine\event\entity\EntityDamageEvent $ev){ if(($ev->getEntity() instanceof \pocketmine\Player) and $ev->getEntity()->getLevel()->getFolderName() == "world"){ $ev->setCancelled(); } if($ev instanceof \pocketmine\event\entity\EntityDamageByEntityEvent){ if(($ev->getDamager() instanceof \pocketmine\Player) and $ev->getDamager()->getLevel()->getFolderName() == "world"){ $ev->setCancelled(); } } } public function click(\pocketmine\event\player\PlayerInteractEvent $ev){ if($ev->getPlayer()->getLevel()->getFolderName() == "world"){ $ev->setCancelled(); } } public function drop(\pocketmine\event\player\PlayerDropItemEvent $ev){ if($ev->getPlayer()->getLevel()->getFolderName() == "world"){ $ev->setCancelled(); } } public function create(\pocketmine\event\player\PlayerPreLoginEvent $ev){ $name = strtolower($ev->getPlayer()->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML, array( "Coins" => 0, "Exp" => 0, "Level" => 1, "Group" => "Player" )); if(!$this->db->query("SELECT * FROM stats WHERE name = '$name'")->fetchArray(SQLITE3_ASSOC)){ $this->db->query("INSERT INTO stats (name, games, kills, wins) VALUES ('$name', 0, 0, 0);"); } } public function getCoins($p){ $name = strtolower($p->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); return $cfg->get("Coins"); } public function addCoins($p, int $count){ $name = strtolower($p->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); $cfg->set("Coins", $cfg->get("Coins") +$count); $cfg->save(); } public function remCoins($p, $count){ $name = strtolower($p->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); $cfg->set("Coins", $cfg->get("Coins") -$count); $cfg->save(); } public function getGames($p){ $name = strtolower($p->getName()); $result = $this->db->query("SELECT games FROM stats WHERE name = '$name'")->fetchArray(SQLITE3_ASSOC); return $result["games"]; } public function addGame($p){ $name = strtolower($p->getName()); $this->db->query("UPDATE `stats` SET `games` = `games` +1 WHERE `name` = '$name'"); } public function getKills($p){ $name = strtolower($p->getName()); $result = $this->db->query("SELECT kills FROM stats WHERE name = '$name'")->fetchArray(SQLITE3_ASSOC); return $result["kills"]; } public function addKill($p){ $name = strtolower($p->getName()); $this->db->query("UPDATE `stats` SET `kills` = `kills` +1 WHERE `name` = '$name'"); } public function getWins($p){ $name = strtolower($p->getName()); $result = $this->db->query("SELECT wins FROM stats WHERE name = '$name'")->fetchArray(SQLITE3_ASSOC); return $result["wins"]; } public function addWin($p){ $name = strtolower($p->getName()); $this->db->query("UPDATE `stats` SET `wins` = `wins` +1 WHERE `name` = '$name'"); } public function getExp($p){ $name = strtolower($p->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); return $cfg->get("Exp"); } public function addExp($p, $count){ $name = strtolower($p->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); $cfg->set("Exp", $cfg->get("Exp") +$count); $cfg->save(); } public function getLevel($p){ $name = strtolower($p->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); return $cfg->get("Level"); } public function addLevel($p){ $name = strtolower($p->getName()); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); $cfg->set("Level", $cfg->get("Level") +1); $cfg->set("Exp", 0); $cfg->save(); } public function getMaxExp($p){ $level = $this->getLevel($p); $result = $level * 80; return $result; } public function getReward($p){ $level = $this->getLevel($p); $result = $level * 350; return $result; } public function getGroup($p){ $name = strtolower($p); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); return $cfg->get("Group"); } public function getCountGroup($name){ if($this->getGroup($name) == "Player"){ return 0; }elseif($this->getGroup($name) == "VIP"){ return 1; }elseif($this->getGroup($name) == "MVP"){ return 2; }elseif($this->getGroup($name) == "Premium"){ return 3; }elseif($this->getGroup($name) == "Shrek"){ return 4; }elseif($this->getGroup($name) == "YouTube"){ return 5; }elseif($this->getGroup($name) == "Helper"){ return 6; }elseif($this->getGroup($name) == "Admin"){ return 7; }elseif($this->getGroup($name) == "Owner"){ return 8; } } public function setGroup($p, $group){ $name = strtolower($p); $cfg = new \pocketmine\utils\Config($this->getDataFolder() ."players/{$name}.yml", \pocketmine\utils\Config::YAML); $cfg->set("Group", $group); $cfg->save(); } public function hotbar(){ foreach($this->getServer()->getOnlinePlayers() as $p){ if($p->getlevel()->getFolderName() == "world"){ $right = str_repeat(" ", 78); $date = date("d/m/y h:i:s"); $kills = $this->getKills($p); $games = $this->getGames($p); $wins = $this->getWins($p); switch($this->hotbar){ case 0: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 1: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 2: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 3: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 4: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 5: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 6: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 7: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; case 8: $m = "{$right} §l§eSKYWARS§r\n{$right}§7{$date}\n\n{$right}§fОпыт: §e{$this->getExp($p)}§7/§6{$this->getMaxExp($p)}\n{$right}§fУровень: §e{$this->getLevel($p)}\n\n{$right}§fМонет: §a{$this->getCoins($p)}\n\n{$right}§fИгр: §a{$games}\n{$right}§fУбийств: §a{$kills}\n{$right}§fПобед: §a{$wins}\n\n{$right}§fОнлайн: §a". count($this->getServer()->getOnlinePlayers()) ."\n\n{$right}§6shop.wallworld.ru"; break; } $this->hotbar++; $p->setFood(20); $p->sendTip($m . str_repeat(PHP_EOL, 13)); if($this->hotbar == 9){ $this->hotbar = 0; } } } } public function loginPacket(\pocketmine\event\server\DataPacketReceiveEvent $e){ if($e->getPacket() instanceof \pocketmine\network\mcpe\protocol\LoginPacket){ if(($data = $e->getPacket()->clientData["DeviceOS"]) != 1 and $data != 2){ if($this->getCountGroup($e->getPacket()->username) >= 0){ // }else{ $e->getPlayer()->close("","§cКупите привилегию §6VIP чтобы зайти с ПК!"); } } } } public function addSound($p, $id){ $pk = new \pocketmine\network\mcpe\protocol\LevelSoundEventPacket(); $pk->sound = $id; $pk->x = $p->x; $pk->y = $p->y; $pk->z = $p->z; $p->dataPacket($pk); } public function levelup(){ foreach($this->getServer()->getOnlinePlayers() as $p){ if($this->getExp($p) >= $this->getMaxExp($p)){ $p->sendMessage("§l§dНОВЫЙ УРОВЕНЬ!§r\n\n§7» §eВы перешли на новый уровень! §8[§a". $this->getLevel($p) ." §7-> §6". ($this->getLevel($p) +1) ."§8]§7!\n§7> §eВы получаете награду за новый уровень - §6{$this->getReward($p)} коинов§e!\n\n"); $this->addCoins($p, $this->getReward($p)); $this->addSound($p, 45); $this->addLevel($p); $this->updateTag($p); } } } public function getPlayingPlayers(){ $count = 0; foreach($this->svile->arenas as $arena){ if(count($arena->players) > 0) $count += count($arena->players); } return $count; } public function server(){ $this->main->setTitle("§l§dWALLWORLD §eSKYWARS"); $this->main2->setTitle("§fДобро пожаловать!"); $this->main3->setTitle("§eНаш сайт - §b СКОРО"); $this->main4->setTitle("§eОнлайн на данный момент §a". count($this->getServer()->getOnlinePlayers()) ."§e игроков!"); $this->main5->setTitle("§bГруппа в VK - СКОРО"); $this->getServer()->getDefaultLevel()->addParticle($this->main); $this->getServer()->getDefaultLevel()->addParticle($this->main2); $this->getServer()->getDefaultLevel()->addParticle($this->main3); $this->getServer()->getDefaultLevel()->addParticle($this->main4); $this->getServer()->getDefaultLevel()->addParticle($this->main5); $this->play->setTitle("§bРежим §cNormal§7"); $this->getServer()->getDefaultLevel()->addParticle($this->play); $this->playonline->setTitle("§b{$this->getPlayingPlayers()} §eигроков играет"); $this->getServer()->getDefaultLevel()->addParticle($this->playonline); } public function topWins(){ $top = $this->db->query("SELECT * FROM `stats` ORDER BY wins DESC LIMIT 5"); $list = ""; $count = 0; while($element = $top->fetchArray(SQLITE3_ASSOC)){ $count++; if($count == 1){ $this->top1->setTitle("§a#1. §fИгрок §a{$element["name"]} §7- §a{$element["wins"]} §fпобед \n"); $list .= "§a#1. §fИгрок §a{$element["name"]} §7- §a{$element["wins"]} §fпобед \n"; } if($count == 2){ $this->top2->setTitle("§b#2. §fИгрок §b{$element["name"]} §7- §b{$element["wins"]} §fпобед \n"); $list .= "§b#2. §fИгрок §b{$element["name"]} §7- §b{$element["wins"]} §fпобед \n"; } if($count == 3){ $this->top3->setTitle("§e#3. §fИгрок §e{$element["name"]} §7- §e{$element["wins"]} §fпобед \n"); $list .= "§e#3. §fИгрок §e{$element["name"]} §7- §e{$element["wins"]} §fпобед \n"; } if($count == 4){ $list .= "§7#4. §fИгрок §7{$element["name"]} §7- §7{$element["wins"]} §fпобед \n"; } if($count == 5){ $list .= "§6#5. §fИгрок §6{$element["name"]} §7- §6{$element["wins"]} §fпобед"; } } $this->topwins->setTitle("§l§aТОП-5§r§f игроков по §6победам"); $this->topwins->setText("\n". $list); $this->getServer()->getDefaultLevel()->addParticle($this->topwins); $this->getServer()->getDefaultLevel()->addParticle($this->top1); $this->getServer()->getDefaultLevel()->addParticle($this->top2); $this->getServer()->getDefaultLevel()->addParticle($this->top3); } public function topKills(){ $top = $this->db->query("SELECT * FROM `stats` ORDER BY kills DESC LIMIT 5"); $list = ""; $count = 0; while($element = $top->fetchArray(SQLITE3_ASSOC)){ $count++; if($count == 1){ $list .= "§a#1. §fИгрок §a{$element["name"]} §7- §a{$element["kills"]} §fубийств \n"; } if($count == 2){ $list .= "§b#2. §fИгрок §b{$element["name"]} §7- §b{$element["kills"]} §fубийств \n"; } if($count == 3){ $list .= "§e#3. §fИгрок §e{$element["name"]} §7- §e{$element["kills"]} §fубийств \n"; } if($count == 4){ $list .= "§7#4. §fИгрок §7{$element["name"]} §7- §7{$element["kills"]} §fубийств \n"; } if($count == 5){ $list .= "§6#5. §fИгрок §6{$element["name"]} §7- §6{$element["kills"]} §fубийств"; } } $this->topkills->setTitle("§l§aТОП-5§r§f игроков по §6убийствам"); $this->topkills->setText("\n". $list); $this->getServer()->getDefaultLevel()->addParticle($this->topkills); } public function updateTag($p){ $level = $this->getLevel($p); if($this->getGroup($p->getName()) == "Player"){ $p->setNameTag("§7(§e{$level}§7) §7". $p->getName()); $p->setDisplayName("§7". $p->getName()); }elseif($this->getGroup($p->getName()) == "VIP"){ $p->setNameTag("§7(§e{$level}§7) §l§aVIP§r§7 ". $p->getName()); $p->setDisplayName("§a". $p->getName()); }elseif($this->getGroup($p->getName()) == "MVP"){ $p->setNameTag("§7(§e{$level}§7) §l§bMVP§r§7 ". $p->getName()); $p->setDisplayName("§6". $p->getName()); }elseif($this->getGroup($p->getName()) == "Premium"){ $p->setNameTag("§7(§e{$level}§7) §l§6MVP+§r§7 ". $p->getName()); }elseif($this->getGroup($p->getName()) == "Shrek"){ $p->setNameTag("§7(§e{$level}§7) §l§9MVP++§r§7 ". $p->getName()); $p->setDisplayName("§9". $p->getName()); }elseif($this->getGroup($p->getName()) == "YouTube"){ $p->setNameTag("§7(§e{$level}§7) §l§cYOUTUBE§r§7 ". $p->getName()); $p->setDisplayName("§c". $p->getName()); }elseif($this->getGroup($p->getName()) == "Helper"){ $p->setNameTag("§7(§e{$level}§7) §l§bHELPER§r§7 ". $p->getName()); $p->setDisplayName("§b". $p->getName()); }elseif($this->getGroup($p->getName()) == "Admin"){ $p->setNameTag("§7(§e{$level}§7) §l§cAdmin§r§7 ". $p->getName()); $p->setDisplayName("§c". $p->getName()); }elseif($this->getGroup($p->getName()) == "Owner"){ $p->setNameTag("§7(§e{$level}§7) §l§6OWNER§r§7 ". $p->getName()); $p->setDisplayName("§6". $p->getName()); } } public function onJoin(\pocketmine\event\player\PlayerJoinEvent $ev){ $ev->setJoinMessage(null); $p = $ev->getPlayer(); $p->setAllowFlight(false); $p->setGamemode(2); $p->teleport($this->getServer()->getDefaultLevel()->getSafeSpawn()); if($this->getGroup($p->getName()) == "VIP"){ $this->getServer()->broadcastMessage("§l§aVIP§r§7 ". $p->getName() ." §eприсоединился к серверу!"); }elseif($this->getGroup($p->getName()) == "MVP"){ $this->getServer()->broadcastMessage("§l§bMVP§r§7 ". $p->getName() ." §eприсоединился к серверу!"); }elseif($this->getGroup($p->getName()) == "Premium"){ $this->getServer()->broadcastMessage("§l§6MVP+§r§7 ". $p->getName() ." §eприсоединился к серверу!"); }elseif($this->getGroup($p->getName()) == "Shrek"){ $this->getServer()->broadcastMessage("§l§9MVP++§r§7 ". $p->getName() ." §eприсоединился к серверу!"); }elseif($this->getGroup($p->getName()) == "YouTube"){ $this->getServer()->broadcastMessage("§l§cYOUTUBE§r§7 ". $p->getName() ." §eприсоединился к серверу!"); }elseif($this->getGroup($p->getName()) == "Helper"){ $this->getServer()->broadcastMessage("§l§bHELPER§r§7 ". $p->getName() ." §eприсоединился к серверу!"); }elseif($this->getGroup($p->getName()) == "Admin"){ $this->getServer()->broadcastMessage("§l§cAdmin§r§7 ". $p->getName() ." §eприсоединился к серверу!"); }elseif($this->getGroup($p->getName()) == "Owner"){ $this->getServer()->broadcastMessage("§l§6OWNER§r§7 ". $p->getName() ." §eприсоединился к серверу!"); } } public function onQuit(\pocketmine\event\player\PlayerQuitEvent $ev){ $ev->setQuitMessage(null); } public function onChat(\pocketmine\event\player\PlayerChatEvent $ev){ $p = $ev->getPlayer(); $msg = $ev->getMessage(); $level = $this->getLevel($p); $colors = array("§a", "§6", "§e", "§c", "§b"); if($this->getGroup($p->getName()) == "Player") return $ev->setFormat("§7(§e{$level}§7) §7{$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "VIP") return $ev->setFormat("§7(§e{$level}§7) §l§aVIP§r§7 {$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "MVP") return $ev->setFormat("§7(§e{$level}§7) §l§bMVP§r§7 {$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "Premium") return $ev->setFormat("§7(§e{$level}§7) §l§6MVP+§r§7 {$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "Shrek") return $ev->setFormat("§7(§e{$level}§7) §l§9MVP++§r§7 {$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "YouTube") return $ev->setFormat("§7(§e{$level}§7) §l§cYOUTUBE§r§7 {$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "Helper") return $ev->setFormat("§7(§e{$level}§7) §l§bHELPER§r§7 {$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "Admin") return $ev->setFormat("§7(§e{$level}§7) §l§cAdmin§r§7 {$p->getName()}: §f{$msg}"); if($this->getGroup($p->getName()) == "Owner") return $ev->setFormat("§7(§e{$level}§7) §l{$colors[array_rand($colors)]}OWNER§r§7 {$p->getName()}: §f{$msg}"); } public function onCommand(\pocketmine\command\CommandSender $p, \pocketmine\command\Command $cmd, $label, array $args) : bool{ switch($cmd->getName()){ case "npc": if($p->isOp()){ if($args[0] == "normal"){ $npc = new \pocketmine\entity\Human($p->level, new \pocketmine\nbt\tag\CompoundTag("", [ "Pos" => new \pocketmine\nbt\tag\ListTag("Pos", [ new \pocketmine\nbt\tag\DoubleTag("", $p->getX()), new \pocketmine\nbt\tag\DoubleTag("", $p->getY()), new \pocketmine\nbt\tag\DoubleTag("", $p->getZ()) ]), "Motion" => new \pocketmine\nbt\tag\ListTag("Motion", [ new \pocketmine\nbt\tag\DoubleTag("", 0), new \pocketmine\nbt\tag\DoubleTag("", 0), new \pocketmine\nbt\tag\DoubleTag("", 0) ]), "Rotation" => new \pocketmine\nbt\tag\ListTag("Rotation", [ new \pocketmine\nbt\tag\FloatTag("", $p->getYaw()), new \pocketmine\nbt\tag\FloatTag("", $p->getPitch()) ]), "Skin" => new \pocketmine\nbt\tag\CompoundTag("Skin", [ "Data" => new \pocketmine\nbt\tag\StringTag("Data", $p->getSkinData()), "Name" => new \pocketmine\nbt\tag\StringTag("Name", $p->getSkinId()) ])])); $npc->setNameTag("normal"); $npc->spawnToAll(); return true; } if($args[0] == "top"){ $npc = new \pocketmine\entity\Human($p->level, new \pocketmine\nbt\tag\CompoundTag("", [ "Pos" => new \pocketmine\nbt\tag\ListTag("Pos", [ new \pocketmine\nbt\tag\DoubleTag("", $p->getX()), new \pocketmine\nbt\tag\DoubleTag("", $p->getY()), new \pocketmine\nbt\tag\DoubleTag("", $p->getZ()) ]), "Motion" => new \pocketmine\nbt\tag\ListTag("Motion", [ new \pocketmine\nbt\tag\DoubleTag("", 0), new \pocketmine\nbt\tag\DoubleTag("", 0), new \pocketmine\nbt\tag\DoubleTag("", 0) ]), "Rotation" => new \pocketmine\nbt\tag\ListTag("Rotation", [ new \pocketmine\nbt\tag\FloatTag("", $p->getYaw()), new \pocketmine\nbt\tag\FloatTag("", $p->getPitch()) ]), "Skin" => new \pocketmine\nbt\tag\CompoundTag("Skin", [ "Data" => new \pocketmine\nbt\tag\StringTag("Data", $p->getSkinData()), "Name" => new \pocketmine\nbt\tag\StringTag("Name", $p->getSkinId()) ])])); $npc->setNameTag("top"); $npc->spawnToAll(); return true; } } break; case "report": if(count($args) < 2){ $p->sendMessage("§7> §eИспользование: §a/report <игрок> <причина>"); return true; } $player = $this->getServer()->getPlayer($args[0]); $name = strtolower($player->getName()); if(!($player)){ $p->sendMessage("§7> §cИгрок не в сети, или вы ввели неправильный ник!"); return true; } unset($args[0]); $reason = implode(" ", $args); $p->sendMessage("§7> §eВы успешно подали жалобу на игрока §a{$player->getName()}§e, с причиной: §7{$reason}"); if(!$this->reports->exists($name)){ $this->reports->set($name, 1); $this->reports->save(); return true; }else{ $this->reports->set($name, $this->reports->get($name) +1); $this->reports->save(); } foreach($this->getServer()->getOnlinePlayers() as $pl){ if($this->getCountGroup($pl) >= 5){ $pl->sendMessage("§7> §eИгрок §a{$p->getName()} §eподал жалобу на игрока §a{$player->getName()}§e, с причиной: §7{$reason}\n§7> §eПроверить количество жалоб: §a/reports check {$player->getName()}"); return true; } } break; case "reports": if($p->isOp() or $this->getCountGroup($p->getName()) >= 5){ if(!isset($args[0])){ $p->sendMessage("§7> §eИспользование: §a/report "); return true; } if($args[0] == "list"){ $reports = $this->reports->getAll(); $list = ""; $count = 0; arsort($reports); foreach($reports as $name => $countreports){ $count++; $list .= "§eИгрок §7{$name} §a- §7{$countreports} §eжалоб"; } $p->sendMessage("§7> §eВесь репорт-лист:\n\n{$list}"); return true; } if($args[0] == "check"){ if(!isset($args[1])){ $p->sendMessage("§7> §eИспользование: §a/report check <игрок>"); return true; } $player = $this->getServer()->getPlayer($args[1]); $name = strtolower($player->getName()); if(!($player)){ $p->sendMessage("§7> §cИгрок не в сети, или вы ввели неправильный ник!"); return true; } if(!$this->reports->exists($name)){ $p->sendMessage("§7> §cУ данного игрока нет жалоб!"); return true; }else{ $count = $this->reports->get($name); $p->sendMessage("§7> §eУ данного игрока §a{$player->getName()}§e есть §7{$count} жалоб§e!"); return true; } } if($args[0] == "delete"){ if(!isset($args[1])){ $p->sendMessage("§7> §eИспользование: §a/report delete <игрок>\n§7> §l§cВНИМАНИЕ!§r§e Чтобы не возникало ошибок используйте буквы нижнего регистра (маленькие)."); return true; } $player = $this->getServer()->getPlayer($args[1]); $name = strtolower($player->getName()); if(!($player)){ $p->sendMessage("§7> §cИгрок не в сети, или вы ввели неправильный ник!"); return true; } if(!$this->reports->exists($name)){ $p->sendMessage("§7> §cДанного игрока нет в репорт-листе!"); return true; }else{ $this->reports->remove($name); $p->sendMessage("§7> §eДанный игрок §a{$player->getName()}§e был удален из §7репорт-листа§e!"); return true; } } }else{ $p->sendMessage("§7> §cНедостаточно прав!"); return true; } break; case "block": if($p->isOp() or $this->getCountGroup($p->getName()) >= 6){ if(count($args) < 2){ $p->sendMessage("§7> §eИспользование: §a/block <игрок> <причина>"); return true; } $player = $this->getServer()->getPlayer($args[0]); if(!($player)){ $p->sendMessage("§7> §cИгрок не в сети, или вы ввели неправильный ник!"); return true; } unset($args[0]); $reason = implode(" ", $args); $p->sendMessage("§7> §eВы успешно заблокировали игрока §a{$player->getName()}§e!"); $this->getServer()->broadcastMessage("§7> §eИгрок §a{$p->getName()} §eзаблокировал игрока §a{$player->getName()}§e, по причине: §7{$reason}"); $player->close("","§7> §cВы были заблокированы игроком§f {$p->getName()}§c, по причине: §f{$reason} §7<"); $this->getServer()->dispatchCommand(new \pocketmine\command\ConsoleCommandSender(), "ban {$player->getName()} {$reason}"); return true; }else{ $p->sendMessage("§7> §cНедостаточно прав!"); return true; } break; case "k": if($p->isOp() or $this->getCountGroup($p->getName()) >= 6){ if(count($args) < 2){ $p->sendMessage("§7> §eИспользование: §a/k <игрок> <причина>"); return true; } $player = $this->getServer()->getPlayer($args[0]); if(!($player)){ $p->sendMessage("§7> §cИгрок не в сети, или вы ввели неправильный ник!"); return true; } unset($args[0]); $reason = implode(" ", $args); $p->sendMessage("§7> §eВы успешно кикнули игрока §a{$player->getName()}§e!"); $this->getServer()->broadcastMessage("§7> §eИгрок §a{$p->getName()} §eкикнул игрока §a{$player->getName()}§e, по причине: §7{$reason}"); $player->close("","§7> §cВы были кикнуты игроком§f {$p->getName()}§c, по причине: §f{$reason} §7<"); return true; }else{ $p->sendMessage("§7> §cНедостаточно прав!"); return true; } break; case "unblock": if($p->isOp() or $this->getCountGroup($p->getName()) >= 6){ if(!isset($args[0])){ $p->sendMessage("§7> §eИспользование: §a/unblock <игрок>"); return true; } $player = $args[0]; $p->sendMessage("§7> §eВы успешно разблокировали игрока §a{$player}§e!"); $this->getServer()->broadcastMessage("§7> §eИгрок §a{$p->getName()} §eразблокировал игрока §a{$player}§e!"); $this->getServer()->dispatchCommand(new \pocketmine\command\ConsoleCommandSender(), "pardon {$player}"); return true; }else{ $p->sendMessage("§7> §cНедостаточно прав!"); return true; } break; case "setgroup": if($p->isOp() or $this->getCountGroup($p->getName()) >= 7){ if(count($args) < 2){ $p->sendMessage("§7> §eИспользование: §a/setgroup <игрок> <статус>"); return true; } if($args[1] == "Player" or $args[1] == "VIP" or $args[1] == "MVP" or $args[1] == "Premium" or $args[1] == "Shrek" or $args[1] == "YouTube" or $args[1] == "Helper" or $args[1] == "Admin" or $args[1] == "Owner"){ $player = $args[0]; $this->setGroup($player, $args[1]); return true; } }else{ $p->sendMessage("§7> §cНедостаточно прав!"); return true; } break; case "addcoins": if($p->isOp() or $this->getCountGroup($p->getName()) >= 7){ if(count($args) < 2){ $p->sendMessage("§7> §eИспользование: §a/addcoins <игрок> <кол-во>"); return true; } $player = $this->getServer()->getPlayer($args[0]); if(!($player)){ $p->sendMessage("§7> §cИгрок не в сети, или вы ввели неправильный ник!"); return true; } if(!is_numeric($args[1])){ $p->sendMessage("§7> §cКоличество коинов должно быть только в цифрах!"); return true; } $this->addCoins($player, $args[1]); return true; }else{ $p->sendMessage("§7> §cНедостаточно прав!"); return true; } break; } } public function npc(\pocketmine\event\entity\EntityDamageEvent $ev){ if($ev instanceof \pocketmine\event\entity\EntityDamageByEntityEvent){ $e = $ev->getEntity(); $d = $ev->getDamager(); if(($e instanceof \pocketmine\entity\Human) && ($e->getNameTag() == "normal")){ $ev->setCancelled(); $this->getServer()->dispatchCommand($d, "sw join"); } } } } ?>

вот мой апи если кому-то не сложно и сможете норм вставить то помогите пожлауйста

откуда берется?

какое api?

пиздец

@Dinner_Bone застрели меня нахуй

да я знаю у меня есть такая но я вставляю его как-то криво я вообще не оч в этом всем у меня сервера были на джаве а на пе в первые