Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace anomalii;
- use anomalii\Task;
- use pocketmine\Player;
- use pocketmine\inventory\Inventory;
- use pocketmine\item\Item;
- use pocketmine\event\block\BlockBreakEvent;
- use pocketmine\event\player\PlayerInteractEvent;
- use pocketmine\event\player\PlayerJoinEvent;
- use pocketmine\event\Listener;
- use pocketmine\plugin\PluginBase;
- use pocketmine\utils\Config;
- use pocketmine\command\CommandSender;
- use pocketmine\command\Command;
- class Main extends PluginBase implements Listener{
- public $anomalies;
- public $detectors;
- public $users = [];
- public function onEnable(){
- if(!is_dir($this->getDataFolder())){
- mkdir($this->getDataFolder());
- }
- $this->getServer()->getPluginManager()->registerEvents($this, $this);
- $this->getLogger()->info("Anplug loaded");
- $this->anomalies = new Config($this->getDataFolder()."anomalies.json", Config::JSON, "");
- $this->detectors = new Config($this->getDataFolder()."detectors.json", Config::JSON, "");
- }
- public function onDisable() {
- $this->anomalies->save();
- }
- public function onJoin(PlayerJoinEvent $event) {
- $event->getPlayer()->setAllowMovementCheats(true);
- if (!$this->detectors->exists($event->getPLayer()->getName()) or $this->detectors->get($event->getPlayer()->getName()) < 1) {
- $event->getPlayer()->getInventory()->remove(Item::get(405));
- $this->detectors->set($event->getPlayer()->getName(), mt_rand(15, 20));
- $this->detectors->save();
- }
- }
- public function onBreak(BlockBreakEvent $event) {
- if ($this->checkBlock($event)) {
- $event->setCancelled(true);
- }
- }
- public function onInteract(PlayerInteractEvent $event){
- if (isset($this->users[$event->getPlayer()->getName()])) {
- if ($this->checkBlock($event)) {
- $event->getPlayer()->sendMessage("В этом месте уже есть другая аномалия, выберите другое место!");
- } else {
- $this->anomalies->set($this->users[$event->getPlayer()->getName()], [
- "X" => $event->getBlock()->getX(),
- "Y" => $event->getBlock()->getY(),
- "Z" => $event->getBlock()->getZ()
- ]);
- $event->getPlayer()->sendMessage("Аномалия §l§4{$this->users[$event->getPlayer()->getName()]} установлена!");
- $this->anomalies->save();
- unset($this->users[$event->getPlayer()->getName()]);
- }
- }
- if ($this->checkBlock($event) and $event->getItem()->getId() == 405) {
- $event->getPlayer()->sendMessage("Начался поиск артефактов, подождите 10 секунд");
- $this->getServer()->getScheduler()->scheduleDelayedTask(new Task($this, $event), 200);
- }
- }
- public function foo($event) {
- $this->detectors->set($event->getPlayer()->getName(), $this->detectors->get($event->getPlayer()->getName())-1);
- $this->detectors->save();
- if ($this->detectors->get($event->getPlayer()->getName()) < 0) {
- $event->getPlayer()->getInventory()->remove(Item::get(405));
- $event->getPlayer()->sendMessage("Детектор разряжен");
- $this->detectors->set($event->getPlayer()->getName(), mt_rand(15, 20));
- $this->detectors->save();
- } else {
- $a = $this->getAnomal($event);
- if (isset($a["drop"])) {
- $drops = $a["drop"];
- mt_srand($this->make_seed());
- $luck = mt_rand(1, 100);
- if ($luck <= 20) {
- $el = $drops[array_rand($drops)];
- $amount = mt_rand(1, $el['amount']);
- $event->getPlayer()->getInventory()->addItem(Item::get($el["id"], 0, $amount));
- $event->getPlayer()->sendMessage("Вы нашли артефакт!");
- } else {
- $event->getPlayer()->sendMessage("Артефакты не обнаружены!");
- }
- } else {
- $event->getPlayer()->sendMessage("Артефакты не обнаружены!");
- }
- }
- }
- public function checkBlock($event) {
- foreach ($this->anomalies->getAll() as $a) {
- if($a["X"] == $event->getBlock()->getX() and
- $a["Y"] == $event->getBlock()->getY() and
- $a["Z"] == $event->getBlock()->getZ()) {
- return true;
- }
- }
- return false;
- }
- public function getAnomal($event) {
- foreach ($this->anomalies->getAll() as $a) {
- if($a["X"] == $event->getBlock()->getX() and
- $a["Y"] == $event->getBlock()->getY() and
- $a["Z"] == $event->getBlock()->getZ()) {
- return $a;
- }
- }
- return null;
- }
- function make_seed() {
- list($usec, $sec) = explode(' ', microtime());
- return $sec + $usec * 1000000;
- }
- public function onCommand(CommandSender $sender, Command $cmd, $label, array $args) {
- if ($cmd->getName() == "san" and $sender->hasPermission("anomalii.command")) {
- if ($args != null and count($args) == 1) {
- if (!$this->anomalies->exists($args[0])){
- $sender->sendMessage("Тапните на аномалию");
- $this->users[$sender->getName()] = $args[0];
- } else {
- $sender->sendMessage("Аномалия §l§4{$args[0]} уже существует!");
- }
- } else {
- $sender->sendMessage("Использование: §l§4/san §o§c[название]");
- }
- } elseif ($cmd->getName() == "sanp" and $sender->hasPermission("anomalii.command")) {
- if ($args != null and count($args) > 2) {
- if ($this->anomalies->exists($args[0])) {
- switch ($args[1]) {
- case "add":
- if (!isset($this->anomalies->get($args[0])["drop"])) {
- $k = 0;
- $values = $this->anomalies->get($args[0])+["drop"=>[]];
- } else {
- $k = count($this->anomalies->get($args[0])["drop"]);
- $values = $this->anomalies->get($args[0]);
- }
- for ($i = 2; $i < count($args); $i++) {
- $arg = explode(':', $args[$i]);
- if (count($arg) == 3) {
- $values["drop"][$k] = ["id"=>$arg[0], "amount"=>$arg[1], "chance"=>$arg[2]];
- } else {
- $sender->sendMessage("Использование: §l§4/sanp §o§c[название] [add|rem] [[[id1:maxamount1:chance1] [idN:maxamountN:chanceN]]|[id]]");
- }
- $k++;
- }
- $this->anomalies->set($args[0], $values);
- $this->anomalies->save();
- $sender->sendMessage("Аномалия изменена.");
- break;
- case "rem":
- if (isset($this->anomalies->get($args[0])["drop"])) {
- $k = 0;
- $f = false;
- $drops = $this->anomalies->get($args[0]);
- if (count($args) == 3) {
- foreach ($drops["drop"] as $drop) {
- if ($drop['id'] == $args[2]) {
- $f = true;
- break;
- } else {
- $k++;
- }
- }
- if ($f) {
- unset($drops["drop"][$k]);
- sort($drops["drop"]);
- $this->anomalies->set($args[0], $drops);
- $this->anomalies->save();
- $sender->sendMessage("Аномалия изменена.");
- } else {
- $sender->sendMessage("Предмет не найден.");
- }
- } else {
- $sender->sendMessage("Использование: §l§4/sanp §o§c[название] [add|rem] [[[id1:maxamount1:chance1] [idN:maxamountN:chanceN]]|[id]]");
- }
- } else {
- $sender->sendMessage("Дроп для аномалии не установлен.");
- }
- break;
- default:
- $sender->sendMessage("Неизвестная команда");
- break;
- }
- } else {
- $sender->sendMessage("Аномалия не найдена!");
- }
- } else {
- $sender->sendMessage("Использование: §l§4/sanp §o§c[название] [add|rem] [id1:maxamount1:chance1] [idN:maxamountN:chanceN]");
- }
- } elseif($cmd->getName() == "dan" and $sender->hasPermission("anomalii.command")) {
- if ($args != null and count($args) == 1) {
- if ($this->anomalies->exists($args[0])) {
- $this->anomalies->remove($args[0]);
- $this->anomalies->save();
- $sender->sendMessage("Аномалия удалена.");
- } else {
- $sender->sendMessage("Аномалия не найдена!");
- }
- } else {
- $sender->sendMessage("Использование: §l§4/dan §o§c[название]");
- }
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement