[ LiteCore ] исправьте пожалуйста

Исправьте пожалуйста тут дюпаются предметы, могу Shop.php скинуть или так за ранее огромное спасибо.

<?php
namespace Shop;
use pocketmine\\plugin\\PluginBase;
use pocketmine\\command\\Command;
use pocketmine\\command\\CommandSender;
use pocketmine\\Player;
use pocketmine\\Server;
use pocketmine\\item\\Item;
use pocketmine\\utils\\TextFormat as TF;
use pocketmine\\event\\Listener;
use ChestAPI\\ChestAPI;
use ChestAPI\\ChestClickEvent;
use onebone\\economyapi\\EconomyAPI;
class Shop extends PluginBase implements Listener {
    private $economy;
    private $chestAPI;
    private $shopPlayers = \[\];
    public function onEnable() {
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
        
        if(!$this->getServer()->getPluginManager()->getPlugin("ChestAPI")) {
            $this->getLogger()->critical("§cChestAPI не найден! Плагин отключен.");
            $this->getServer()->getPluginManager()->disablePlugin($this);
            return;
        }
        
        if(!$this->getServer()->getPluginManager()->getPlugin("EconomyAPI")) {
            $this->getLogger()->critical("§cEconomyAPI не найден! Плагин отключен.");
            $this->getServer()->getPluginManager()->disablePlugin($this);
            return;
        }
        
        $this->economy = EconomyAPI::getInstance();
        $this->chestAPI = ChestAPI::getInstance();
        
        $this->getLogger()->info("§aМагазин успешно загружен!");
    }
    public function onCommand(CommandSender $sender, Command $command, $label, array $args) {
        if($command->getName() == "shop") {
            if(!$sender instanceof Player) {
                $sender->sendMessage("§cЭту команду можно использовать только в игре!");
                return true;
            }
            
            $this->openShop($sender);
            return true;
        }
        return false;
    }
    public function openShop(Player $player) {
        $this->shopPlayers\[strtolower($player->getName())\] = true;
        
        $items = \[\];
        
        $glass = Item::get(20, 0, 1);
        $glass->setCustomName("§r§8");
        
        for($i = 0; $i <= 8; $i++) {
            $items\[$i\] = $glass;
        }
        
        for($i = 45; $i <= 53; $i++) {
            $items\[$i\] = $glass;
        }
        
        $items\[9\] = $glass;
        $items\[17\] = $glass;
        $items\[18\] = $glass;
        $items\[26\] = $glass;
        $items\[27\] = $glass;
        $items\[35\] = $glass;
        $items\[36\] = $glass;
        $items\[44\] = $glass;
        
        $grass = Item::get(2, 0, 1);
        $grass->setCustomName("§r§a§lТравяной блок\\n§r§7Цена: §e§l50$");
        $items\[10\] = $grass;
        
        $stone = Item::get(1, 0, 1);
        $stone->setCustomName("§r§7§lКамень\\n§r§7Цена: §e§l30$");
        $items\[11\] = $stone;
        
        $wood = Item::get(17, 0, 1);
        $wood->setCustomName("§r§6§lДубовое бревно\\n§r§7Цена: §e§l40$");
        $items\[12\] = $wood;
        
        $cobblestone = Item::get(4, 0, 1);
        $cobblestone->setCustomName("§r§7§lБулыжник\\n§r§7Цена: §e§l20$");
        $items\[13\] = $cobblestone;
        
        $planks = Item::get(5, 0, 1);
        $planks->setCustomName("§r§6§lДубовые доски\\n§r§7Цена: §e§l35$");
        $items\[14\] = $planks;
        
        $glassBlock = Item::get(20, 0, 1);
        $glassBlock->setCustomName("§r§b§lСтекло\\n§r§7Цена: §e§l45$");
        $items\[15\] = $glassBlock;
        
        $sand = Item::get(12, 0, 1);
        $sand->setCustomName("§r§e§lПесок\\n§r§7Цена: §e§l25$");
        $items\[16\] = $sand;
        
        $apple = Item::get(260, 0, 1);
        $apple->setCustomName("§r§c§lЯблоко\\n§r§7Цена: §e§l10$");
        $items\[19\] = $apple;
        
        $bread = Item::get(297, 0, 1);
        $bread->setCustomName("§r§6§lХлеб\\n§r§7Цена: §e§l15$");
        $items\[20\] = $bread;
        
        $cookedBeef = Item::get(364, 0, 1);
        $cookedBeef->setCustomName("§r§c§lЖареная говядина\\n§r§7Цена: §e§l25$");
        $items\[21\] = $cookedBeef;
        
        $cookedChicken = Item::get(366, 0, 1);
        $cookedChicken->setCustomName("§r§f§lЖареная курица\\n§r§7Цена: §e§l20$");
        $items\[22\] = $cookedChicken;
        
        $carrot = Item::get(391, 0, 1);
        $carrot->setCustomName("§r§6§lМорковь\\n§r§7Цена: §e§l12$");
        $items\[23\] = $carrot;
        
        $bakedPotato = Item::get(393, 0, 1);
        $bakedPotato->setCustomName("§r§6§lПечёный картофель\\n§r§7Цена: §e§l18$");
        $items\[24\] = $bakedPotato;
        
        $cookie = Item::get(357, 0, 1);
        $cookie->setCustomName("§r§6§lПеченье\\n§r§7Цена: §e§l8$");
        $items\[25\] = $cookie;
        
        $woodenPickaxe = Item::get(270, 0, 1);
        $woodenPickaxe->setCustomName("§r§6§lДеревянная кирка\\n§r§7Цена: §e§l50$");
        $items\[28\] = $woodenPickaxe;
        
        $stonePickaxe = Item::get(274, 0, 1);
        $stonePickaxe->setCustomName("§r§7§lКаменная кирка\\n§r§7Цена: §e§l100$");
        $items\[29\] = $stonePickaxe;
        
        $ironPickaxe = Item::get(257, 0, 1);
        $ironPickaxe->setCustomName("§r§f§lЖелезная кирка\\n§r§7Цена: §e§l200$");
        $items\[30\] = $ironPickaxe;
        
        $woodenAxe = Item::get(271, 0, 1);
        $woodenAxe->setCustomName("§r§6§lДеревянный топор\\n§r§7Цена: §e§l50$");
        $items\[31\] = $woodenAxe;
        
        $stoneAxe = Item::get(275, 0, 1);
        $stoneAxe->setCustomName("§r§7§lКаменный топор\\n§r§7Цена: §e§l100$");
        $items\[32\] = $stoneAxe;
        
        $woodenSword = Item::get(268, 0, 1);
        $woodenSword->setCustomName("§r§6§lДеревянный меч\\n§r§7Цена: §e§l40$");
        $items\[33\] = $woodenSword;
        
        $stoneSword = Item::get(272, 0, 1);
        $stoneSword->setCustomName("§r§7§lКаменный меч\\n§r§7Цена: §e§l80$");
        $items\[34\] = $stoneSword;
        
        $dirt = Item::get(3, 0, 1);
        $dirt->setCustomName("§r§6§lЗемля\\n§r§7Цена: §e§l15$");
        $items\[37\] = $dirt;
        
        $coal = Item::get(263, 0, 1);
        $coal->setCustomName("§r§8§lУголь\\n§r§7Цена: §e§l35$");
        $items\[38\] = $coal;
        
        $ironIngot = Item::get(265, 0, 1);
        $ironIngot->setCustomName("§r§f§lЖелезный слиток\\n§r§7Цена: §e§l150$");
        $items\[39\] = $ironIngot;
        
        $goldIngot = Item::get(266, 0, 1);
        $goldIngot->setCustomName("§r§e§lЗолотой слиток\\n§r§7Цена: §e§l300$");
        $items\[40\] = $goldIngot;
        
        $diamond = Item::get(264, 0, 1);
        $diamond->setCustomName("§r§b§lАлмаз\\n§r§7Цена: §e§l500$");
        $items\[41\] = $diamond;
        
        $potato = Item::get(392, 0, 1);
        $potato->setCustomName("§r§6§lКартофель\\n§r§7Цена: §e§l12$");
        $items\[42\] = $potato;
        
        $emerald = Item::get(388, 0, 1);
        $emerald->setCustomName("§r§a§lИзумруд\\n§r§7Цена: §e§l600$");
        $items\[43\] = $emerald;
        
        $this->chestAPI->openChest(
            $player, 
            $items, 
            "§l§e§lМАГАЗИН", 
            ChestAPI::DOUBLE_CHEST, 
            true, 
            true, 
            "§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬\\n§e§l✦ ДОБРО ПОЖАЛОВАТЬ В МАГАЗИН ✦\\n§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"
        );
    }
    public function onChestClick(ChestClickEvent $event) {
        $player = $event->getPlayer();
        $item = $event->getItem();
        
        if(!isset($this->shopPlayers\[strtolower($player->getName())\])) return;
        
        $event->setCancelled();
        
        if($item->getId() == 0) return;
        
        $prices = $this->getPrices();
        $itemKey = $item->getId() . ":" . $item->getDamage();
        
        if(!isset($prices\[$itemKey\])) {
            return;
        }
        
        $price = $prices\[$itemKey\];
        $balance = $this->economy->myMoney($player);
        
        if($balance < $price) {
            $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬");
            $player->sendMessage("§c§l");
            $player->sendMessage("§c§l    ✘ НЕДОСТАТОЧНО ДЕНЕГ! ✘");
            $player->sendMessage("§c§l");
            $player->sendMessage("§e§l  Нужно: §c§l" . $price . "$");
            $player->sendMessage("§e§l  У вас: §a§l" . $balance . "$");
            $player->sendMessage("§c§l");
            $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬");
            return;
        }
        
        $purchaseItem = Item::get($item->getId(), $item->getDamage(), 1);
        $purchaseItem->setCustomName("");
        
        if(!$player->getInventory()->canAddItem($purchaseItem)) {
            $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬");
            $player->sendMessage("§c§l    ✘ НЕТ МЕСТА В ИНВЕНТАРЕ! ✘");
            $player->sendMessage("§e§l  Освободите место и попробуйте снова");
            $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬");
            return;
        }
        
        $player->getInventory()->addItem($purchaseItem);
        $this->economy->reduceMoney($player, $price);
        
        $itemName = $purchaseItem->getName();
        $newBalance = $this->economy->myMoney($player);
        
        $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬");
        $player->sendMessage("§a§l    ✔ ПОКУПКА УСПЕШНА! ✔");
        $player->sendMessage("§e§l  Товар: §f§l" . $itemName);
        $player->sendMessage("§e§l  Цена: §c§l-" . $price . "$");
        $player->sendMessage("§e§l  Баланс: §a§l" . $newBalance . "$");
        $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬");
    }
    private function getPrices() {
        return \[
            "2:0" => 50,
            "1:0" => 30,
            "17:0" => 40,
            "4:0" => 20,
            "20:0" => 45,
            "12:0" => 25,
            "3:0" => 15,
            "5:0" => 35,
            "260:0" => 10,
            "297:0" => 15,
            "364:0" => 25,
            "366:0" => 20,
            "391:0" => 12,
            "392:0" => 12,
            "393:0" => 18,
            "357:0" => 8,
            "270:0" => 50,
            "274:0" => 100,
            "257:0" => 200,
            "271:0" => 50,
            "275:0" => 100,
            "268:0" => 40,
            "272:0" => 80,
            "263:0" => 35,
            "265:0" => 150,
            "266:0" => 300,
            "264:0" => 500,
            "388:0" => 600,
        \];
    }
    
    public function onChestClose(\\ChestAPI\\ChestCloseEvent $event) {
        $player = $event->getPlayer();
        if(isset($this->shopPlayers\[strtolower($player->getName())\])) {
            unset($this->shopPlayers\[strtolower($player->getName())\]);
            $player->getCursorInventory()->clearAll();
        }
    }
    
    public function onPlayerQuit(\\pocketmine\\event\\player\\PlayerQuitEvent $event) {
        $player = $event->getPlayer();
        if(isset($this->shopPlayers\[strtolower($player->getName())\])) {
            unset($this->shopPlayers\[strtolower($player->getName())\]);
            $player->getCursorInventory()->clearAll();
        }
    }
    
    public function onPlayerDropItem(\\pocketmine\\event\\player\\PlayerDropItemEvent $event) {
        $player = $event->getPlayer();
        if(isset($this->shopPlayers\[strtolower($player->getName())\])) {
            $event->setCancelled(true);
            $player->getInventory()->setItemInHand(Item::get(0));
            $player->getCursorInventory()->clearAll();
            $player->sendMessage("§c§lНельзя выбрасывать предметы из магазина!");
        }
    }
    
    public function onInventoryTransaction(\\pocketmine\\event\\inventory\\InventoryTransactionEvent $event) {
        $player = $event->getTransaction()->getSource();
        if($player instanceof Player) {
            if(isset($this->shopPlayers\[strtolower($player->getName())\])) {
                $event->setCancelled(true);
            }
        }
    }
}

Shop.php (12,8 КБ) сори не думал что такое будет вот сам shop.php

ёбанарот, страшно то как.

1 лайк

вот исправленный код:

<?php namespace Shop; use pocketmine\\\\plugin\\\\PluginBase; use pocketmine\\\\command\\\\Command; use pocketmine\\\\command\\\\CommandSender; use pocketmine\\\\Player; use pocketmine\\\\Server; use pocketmine\\\\item\\\\Item; use pocketmine\\\\utils\\\\TextFormat as TF; use pocketmine\\\\event\\\\Listener; use ChestAPI\\\\ChestAPI; use ChestAPI\\\\ChestClickEvent; use onebone\\\\economyapi\\\\EconomyAPI; class Shop extends PluginBase implements Listener { private $economy; private $chestAPI; private $shopPlayers = \\\[\\\]; public function onEnable() { $this->getServer()->getPluginManager()->registerEvents($this, $this); if(!$this->getServer()->getPluginManager()->getPlugin("ChestAPI")) { $this->getLogger()->critical("§cChestAPI не найден! Плагин отключен."); $this->getServer()->getPluginManager()->disablePlugin($this); return; } if(!$this->getServer()->getPluginManager()->getPlugin("EconomyAPI")) { $this->getLogger()->critical("§cEconomyAPI не найден! Плагин отключен."); $this->getServer()->getPluginManager()->disablePlugin($this); return; } $this->economy = EconomyAPI::getInstance(); $this->chestAPI = ChestAPI::getInstance(); $this->getLogger()->info("§aМагазин успешно загружен!"); } public function onCommand(CommandSender $sender, Command $command, $label, array $args) { if($command->getName() == "shop") { if(!$sender instanceof Player) { $sender->sendMessage("§cЭту команду можно использовать только в игре!"); return true; } $this->openShop($sender); return true; } return false; } public function openShop(Player $player) { $this->shopPlayers\\\[strtolower($player->getName())\\\] = true; $items = \\\[\\\]; $glass = Item::get(20, 0, 1); $glass->setCustomName("§r§8"); for($i = 0; $i <= 8; $i++) { $items\\\[$i\\\] = $glass; } for($i = 45; $i <= 53; $i++) { $items\\\[$i\\\] = $glass; } $items\\\[9\\\] = $glass; $items\\\[17\\\] = $glass; $items\\\[18\\\] = $glass; $items\\\[26\\\] = $glass; $items\\\[27\\\] = $glass; $items\\\[35\\\] = $glass; $items\\\[36\\\] = $glass; $items\\\[44\\\] = $glass; $grass = Item::get(2, 0, 1); $grass->setCustomName("§r§a§lТравяной блок\\\\n§r§7Цена: §e§l50$"); $items\\\[10\\\] = $grass; $stone = Item::get(1, 0, 1); $stone->setCustomName("§r§7§lКамень\\\\n§r§7Цена: §e§l30$"); $items\\\[11\\\] = $stone; $wood = Item::get(17, 0, 1); $wood->setCustomName("§r§6§lДубовое бревно\\\\n§r§7Цена: §e§l40$"); $items\\\[12\\\] = $wood; $cobblestone = Item::get(4, 0, 1); $cobblestone->setCustomName("§r§7§lБулыжник\\\\n§r§7Цена: §e§l20$"); $items\\\[13\\\] = $cobblestone; $planks = Item::get(5, 0, 1); $planks->setCustomName("§r§6§lДубовые доски\\\\n§r§7Цена: §e§l35$"); $items\\\[14\\\] = $planks; $glassBlock = Item::get(20, 0, 1); $glassBlock->setCustomName("§r§b§lСтекло\\\\n§r§7Цена: §e§l45$"); $items\\\[15\\\] = $glassBlock; $sand = Item::get(12, 0, 1); $sand->setCustomName("§r§e§lПесок\\\\n§r§7Цена: §e§l25$"); $items\\\[16\\\] = $sand; $apple = Item::get(260, 0, 1); $apple->setCustomName("§r§c§lЯблоко\\\\n§r§7Цена: §e§l10$"); $items\\\[19\\\] = $apple; $bread = Item::get(297, 0, 1); $bread->setCustomName("§r§6§lХлеб\\\\n§r§7Цена: §e§l15$"); $items\\\[20\\\] = $bread; $cookedBeef = Item::get(364, 0, 1); $cookedBeef->setCustomName("§r§c§lЖареная говядина\\\\n§r§7Цена: §e§l25$"); $items\\\[21\\\] = $cookedBeef; $cookedChicken = Item::get(366, 0, 1); $cookedChicken->setCustomName("§r§f§lЖареная курица\\\\n§r§7Цена: §e§l20$"); $items\\\[22\\\] = $cookedChicken; $carrot = Item::get(391, 0, 1); $carrot->setCustomName("§r§6§lМорковь\\\\n§r§7Цена: §e§l12$"); $items\\\[23\\\] = $carrot; $bakedPotato = Item::get(393, 0, 1); $bakedPotato->setCustomName("§r§6§lПечёный картофель\\\\n§r§7Цена: §e§l18$"); $items\\\[24\\\] = $bakedPotato; $cookie = Item::get(357, 0, 1); $cookie->setCustomName("§r§6§lПеченье\\\\n§r§7Цена: §e§l8$"); $items\\\[25\\\] = $cookie; $woodenPickaxe = Item::get(270, 0, 1); $woodenPickaxe->setCustomName("§r§6§lДеревянная кирка\\\\n§r§7Цена: §e§l50$"); $items\\\[28\\\] = $woodenPickaxe; $stonePickaxe = Item::get(274, 0, 1); $stonePickaxe->setCustomName("§r§7§lКаменная кирка\\\\n§r§7Цена: §e§l100$"); $items\\\[29\\\] = $stonePickaxe; $ironPickaxe = Item::get(257, 0, 1); $ironPickaxe->setCustomName("§r§f§lЖелезная кирка\\\\n§r§7Цена: §e§l200$"); $items\\\[30\\\] = $ironPickaxe; $woodenAxe = Item::get(271, 0, 1); $woodenAxe->setCustomName("§r§6§lДеревянный топор\\\\n§r§7Цена: §e§l50$"); $items\\\[31\\\] = $woodenAxe; $stoneAxe = Item::get(275, 0, 1); $stoneAxe->setCustomName("§r§7§lКаменный топор\\\\n§r§7Цена: §e§l100$"); $items\\\[32\\\] = $stoneAxe; $woodenSword = Item::get(268, 0, 1); $woodenSword->setCustomName("§r§6§lДеревянный меч\\\\n§r§7Цена: §e§l40$"); $items\\\[33\\\] = $woodenSword; $stoneSword = Item::get(272, 0, 1); $stoneSword->setCustomName("§r§7§lКаменный меч\\\\n§r§7Цена: §e§l80$"); $items\\\[34\\\] = $stoneSword; $dirt = Item::get(3, 0, 1); $dirt->setCustomName("§r§6§lЗемля\\\\n§r§7Цена: §e§l15$"); $items\\\[37\\\] = $dirt; $coal = Item::get(263, 0, 1); $coal->setCustomName("§r§8§lУголь\\\\n§r§7Цена: §e§l35$"); $items\\\[38\\\] = $coal; $ironIngot = Item::get(265, 0, 1); $ironIngot->setCustomName("§r§f§lЖелезный слиток\\\\n§r§7Цена: §e§l150$"); $items\\\[39\\\] = $ironIngot; $goldIngot = Item::get(266, 0, 1); $goldIngot->setCustomName("§r§e§lЗолотой слиток\\\\n§r§7Цена: §e§l300$"); $items\\\[40\\\] = $goldIngot; $diamond = Item::get(264, 0, 1); $diamond->setCustomName("§r§b§lАлмаз\\\\n§r§7Цена: §e§l500$"); $items\\\[41\\\] = $diamond; $potato = Item::get(392, 0, 1); $potato->setCustomName("§r§6§lКартофель\\\\n§r§7Цена: §e§l12$"); $items\\\[42\\\] = $potato; $emerald = Item::get(388, 0, 1); $emerald->setCustomName("§r§a§lИзумруд\\\\n§r§7Цена: §e§l600$"); $items\\\[43\\\] = $emerald; $this->chestAPI->openChest( $player, $items, "§l§e§lМАГАЗИН", ChestAPI::DOUBLE_CHEST, true, true, "§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬\\\\n§e§l✦ ДОБРО ПОЖАЛОВАТЬ В МАГАЗИН ✦\\\\n§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" ); } public function onChestClick(ChestClickEvent $event) { $player = $event->getPlayer(); $item = $event->getItem(); if(!isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) return; $event->setCancelled(); if($item->getId() == 0) return; $prices = $this->getPrices(); $itemKey = $item->getId() . ":" . $item->getDamage(); if(!isset($prices\\\[$itemKey\\\])) { return; } $price = $prices\\\[$itemKey\\\]; $balance = $this->economy->myMoney($player); if($balance < $price) { $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§c§l"); $player->sendMessage("§c§l ✘ НЕДОСТАТОЧНО ДЕНЕГ! ✘"); $player->sendMessage("§c§l"); $player->sendMessage("§e§l Нужно: §c§l" . $price . "$"); $player->sendMessage("§e§l У вас: §a§l" . $balance . "$"); $player->sendMessage("§c§l"); $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); return; } $purchaseItem = Item::get($item->getId(), $item->getDamage(), 1); $purchaseItem->setCustomName(""); if(!$player->getInventory()->canAddItem($purchaseItem)) { $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§c§l ✘ НЕТ МЕСТА В ИНВЕНТАРЕ! ✘"); $player->sendMessage("§e§l Освободите место и попробуйте снова"); $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); return; } $player->getInventory()->addItem($purchaseItem); $this->economy->reduceMoney($player, $price); $itemName = $purchaseItem->getName(); $newBalance = $this->economy->myMoney($player); $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§a§l ✔ ПОКУПКА УСПЕШНА! ✔"); $player->sendMessage("§e§l Товар: §f§l" . $itemName); $player->sendMessage("§e§l Цена: §c§l-" . $price . "$"); $player->sendMessage("§e§l Баланс: §a§l" . $newBalance . "$"); $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); } private function getPrices() { return \\\[ "2:0" => 50, "1:0" => 30, "17:0" => 40, "4:0" => 20, "20:0" => 45, "12:0" => 25, "3:0" => 15, "5:0" => 35, "260:0" => 10, "297:0" => 15, "364:0" => 25, "366:0" => 20, "391:0" => 12, "392:0" => 12, "393:0" => 18, "357:0" => 8, "270:0" => 50, "274:0" => 100, "257:0" => 200, "271:0" => 50, "275:0" => 100, "268:0" => 40, "272:0" => 80, "263:0" => 35, "265:0" => 150, "266:0" => 300, "264:0" => 500, "388:0" => 600, \\\]; } public function onChestClose(\\\\ChestAPI\\\\ChestCloseEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { unset($this->shopPlayers\\\[strtolower($player->getName())\\\]); $player->getCursorInventory()->clearAll(); } } public function onPlayerQuit(\\\\pocketmine\\\\event\\\\player\\\\PlayerQuitEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { unset($this->shopPlayers\\\[strtolower($player->getName())\\\]); $player->getCursorInventory()->clearAll(); } } public function onPlayerDropItem(\\\\pocketmine\\\\event\\\\player\\\\PlayerDropItemEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { $event->setCancelled(true); $player->getInventory()->setItemInHand(Item::get(0)); $player->getCursorInventory()->clearAll(); $player->sendMessage("§c§lНельзя выбрасывать предметы из магазина!"); } } public function onInventoryTransaction(\\\\pocketmine\\\\event\\\\inventory\\\\InventoryTransactionEvent $event) { $player = $event->getTransaction()->getSource(); if($player instanceof Player) { if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { $event->setCancelled(true); } } } } <?php namespace Shop; use pocketmine\\\\plugin\\\\PluginBase; use pocketmine\\\\command\\\\Command; use pocketmine\\\\command\\\\CommandSender; use pocketmine\\\\Player; use pocketmine\\\\Server; use pocketmine\\\\item\\\\Item; use pocketmine\\\\utils\\\\TextFormat as TF; use pocketmine\\\\event\\\\Listener; use ChestAPI\\\\ChestAPI; use ChestAPI\\\\ChestClickEvent; use onebone\\\\economyapi\\\\EconomyAPI; class Shop extends PluginBase implements Listener { private $economy; private $chestAPI; private $shopPlayers = \\\[\\\]; public function onEnable() { $this->getServer()->getPluginManager()->registerEvents($this, $this); if(!$this->getServer()->getPluginManager()->getPlugin("ChestAPI")) { $this->getLogger()->critical("§cChestAPI не найден! Плагин отключен."); $this->getServer()->getPluginManager()->disablePlugin($this); return; } if(!$this->getServer()->getPluginManager()->getPlugin("EconomyAPI")) { $this->getLogger()->critical("§cEconomyAPI не найден! Плагин отключен."); $this->getServer()->getPluginManager()->disablePlugin($this); return; } $this->economy = EconomyAPI::getInstance(); $this->chestAPI = ChestAPI::getInstance(); $this->getLogger()->info("§aМагазин успешно загружен!"); } public function onCommand(CommandSender $sender, Command $command, $label, array $args) { if($command->getName() == "shop") { if(!$sender instanceof Player) { $sender->sendMessage("§cЭту команду можно использовать только в игре!"); return true; } $this->openShop($sender); return true; } return false; } public function openShop(Player $player) { $this->shopPlayers\\\[strtolower($player->getName())\\\] = true; $items = \\\[\\\]; $glass = Item::get(20, 0, 1); $glass->setCustomName("§r§8"); for($i = 0; $i <= 8; $i++) { $items\\\[$i\\\] = $glass; } for($i = 45; $i <= 53; $i++) { $items\\\[$i\\\] = $glass; } $items\\\[9\\\] = $glass; $items\\\[17\\\] = $glass; $items\\\[18\\\] = $glass; $items\\\[26\\\] = $glass; $items\\\[27\\\] = $glass; $items\\\[35\\\] = $glass; $items\\\[36\\\] = $glass; $items\\\[44\\\] = $glass; $grass = Item::get(2, 0, 1); $grass->setCustomName("§r§a§lТравяной блок\\\\n§r§7Цена: §e§l50$"); $items\\\[10\\\] = $grass; $stone = Item::get(1, 0, 1); $stone->setCustomName("§r§7§lКамень\\\\n§r§7Цена: §e§l30$"); $items\\\[11\\\] = $stone; $wood = Item::get(17, 0, 1); $wood->setCustomName("§r§6§lДубовое бревно\\\\n§r§7Цена: §e§l40$"); $items\\\[12\\\] = $wood; $cobblestone = Item::get(4, 0, 1); $cobblestone->setCustomName("§r§7§lБулыжник\\\\n§r§7Цена: §e§l20$"); $items\\\[13\\\] = $cobblestone; $planks = Item::get(5, 0, 1); $planks->setCustomName("§r§6§lДубовые доски\\\\n§r§7Цена: §e§l35$"); $items\\\[14\\\] = $planks; $glassBlock = Item::get(20, 0, 1); $glassBlock->setCustomName("§r§b§lСтекло\\\\n§r§7Цена: §e§l45$"); $items\\\[15\\\] = $glassBlock; $sand = Item::get(12, 0, 1); $sand->setCustomName("§r§e§lПесок\\\\n§r§7Цена: §e§l25$"); $items\\\[16\\\] = $sand; $apple = Item::get(260, 0, 1); $apple->setCustomName("§r§c§lЯблоко\\\\n§r§7Цена: §e§l10$"); $items\\\[19\\\] = $apple; $bread = Item::get(297, 0, 1); $bread->setCustomName("§r§6§lХлеб\\\\n§r§7Цена: §e§l15$"); $items\\\[20\\\] = $bread; $cookedBeef = Item::get(364, 0, 1); $cookedBeef->setCustomName("§r§c§lЖареная говядина\\\\n§r§7Цена: §e§l25$"); $items\\\[21\\\] = $cookedBeef; $cookedChicken = Item::get(366, 0, 1); $cookedChicken->setCustomName("§r§f§lЖареная курица\\\\n§r§7Цена: §e§l20$"); $items\\\[22\\\] = $cookedChicken; $carrot = Item::get(391, 0, 1); $carrot->setCustomName("§r§6§lМорковь\\\\n§r§7Цена: §e§l12$"); $items\\\[23\\\] = $carrot; $bakedPotato = Item::get(393, 0, 1); $bakedPotato->setCustomName("§r§6§lПечёный картофель\\\\n§r§7Цена: §e§l18$"); $items\\\[24\\\] = $bakedPotato; $cookie = Item::get(357, 0, 1); $cookie->setCustomName("§r§6§lПеченье\\\\n§r§7Цена: §e§l8$"); $items\\\[25\\\] = $cookie; $woodenPickaxe = Item::get(270, 0, 1); $woodenPickaxe->setCustomName("§r§6§lДеревянная кирка\\\\n§r§7Цена: §e§l50$"); $items\\\[28\\\] = $woodenPickaxe; $stonePickaxe = Item::get(274, 0, 1); $stonePickaxe->setCustomName("§r§7§lКаменная кирка\\\\n§r§7Цена: §e§l100$"); $items\\\[29\\\] = $stonePickaxe; $ironPickaxe = Item::get(257, 0, 1); $ironPickaxe->setCustomName("§r§f§lЖелезная кирка\\\\n§r§7Цена: §e§l200$"); $items\\\[30\\\] = $ironPickaxe; $woodenAxe = Item::get(271, 0, 1); $woodenAxe->setCustomName("§r§6§lДеревянный топор\\\\n§r§7Цена: §e§l50$"); $items\\\[31\\\] = $woodenAxe; $stoneAxe = Item::get(275, 0, 1); $stoneAxe->setCustomName("§r§7§lКаменный топор\\\\n§r§7Цена: §e§l100$"); $items\\\[32\\\] = $stoneAxe; $woodenSword = Item::get(268, 0, 1); $woodenSword->setCustomName("§r§6§lДеревянный меч\\\\n§r§7Цена: §e§l40$"); $items\\\[33\\\] = $woodenSword; $stoneSword = Item::get(272, 0, 1); $stoneSword->setCustomName("§r§7§lКаменный меч\\\\n§r§7Цена: §e§l80$"); $items\\\[34\\\] = $stoneSword; $dirt = Item::get(3, 0, 1); $dirt->setCustomName("§r§6§lЗемля\\\\n§r§7Цена: §e§l15$"); $items\\\[37\\\] = $dirt; $coal = Item::get(263, 0, 1); $coal->setCustomName("§r§8§lУголь\\\\n§r§7Цена: §e§l35$"); $items\\\[38\\\] = $coal; $ironIngot = Item::get(265, 0, 1); $ironIngot->setCustomName("§r§f§lЖелезный слиток\\\\n§r§7Цена: §e§l150$"); $items\\\[39\\\] = $ironIngot; $goldIngot = Item::get(266, 0, 1); $goldIngot->setCustomName("§r§e§lЗолотой слиток\\\\n§r§7Цена: §e§l300$"); $items\\\[40\\\] = $goldIngot; $diamond = Item::get(264, 0, 1); $diamond->setCustomName("§r§b§lАлмаз\\\\n§r§7Цена: §e§l500$"); $items\\\[41\\\] = $diamond; $potato = Item::get(392, 0, 1); $potato->setCustomName("§r§6§lКартофель\\\\n§r§7Цена: §e§l12$"); $items\\\[42\\\] = $potato; $emerald = Item::get(388, 0, 1); $emerald->setCustomName("§r§a§lИзумруд\\\\n§r§7Цена: §e§l600$"); $items\\\[43\\\] = $emerald; $this->chestAPI->openChest( $player, $items, "§l§e§lМАГАЗИН", ChestAPI::DOUBLE_CHEST, true, true, "§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬\\\\n§e§l✦ ДОБРО ПОЖАЛОВАТЬ В МАГАЗИН ✦\\\\n§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" ); } public function onChestClick(ChestClickEvent $event) { $player = $event->getPlayer(); $item = $event->getItem(); if(!isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) return; $event->setCancelled(); if($item->getId() == 0) return; $prices = $this->getPrices(); $itemKey = $item->getId() . ":" . $item->getDamage(); if(!isset($prices\\\[$itemKey\\\])) { return; } $price = $prices\\\[$itemKey\\\]; $balance = $this->economy->myMoney($player); if($balance < $price) { $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§c§l"); $player->sendMessage("§c§l ✘ НЕДОСТАТОЧНО ДЕНЕГ! ✘"); $player->sendMessage("§c§l"); $player->sendMessage("§e§l Нужно: §c§l" . $price . "$"); $player->sendMessage("§e§l У вас: §a§l" . $balance . "$"); $player->sendMessage("§c§l"); $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); return; } $purchaseItem = Item::get($item->getId(), $item->getDamage(), 1); $purchaseItem->setCustomName(""); if(!$player->getInventory()->canAddItem($purchaseItem)) { $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§c§l ✘ НЕТ МЕСТА В ИНВЕНТАРЕ! ✘"); $player->sendMessage("§e§l Освободите место и попробуйте снова"); $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); return; } $player->getInventory()->addItem($purchaseItem); $this->economy->reduceMoney($player, $price); $itemName = $purchaseItem->getName(); $newBalance = $this->economy->myMoney($player); $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§a§l ✔ ПОКУПКА УСПЕШНА! ✔"); $player->sendMessage("§e§l Товар: §f§l" . $itemName); $player->sendMessage("§e§l Цена: §c§l-" . $price . "$"); $player->sendMessage("§e§l Баланс: §a§l" . $newBalance . "$"); $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); } private function getPrices() { return \\\[ "2:0" => 50, "1:0" => 30, "17:0" => 40, "4:0" => 20, "20:0" => 45, "12:0" => 25, "3:0" => 15, "5:0" => 35, "260:0" => 10, "297:0" => 15, "364:0" => 25, "366:0" => 20, "391:0" => 12, "392:0" => 12, "393:0" => 18, "357:0" => 8, "270:0" => 50, "274:0" => 100, "257:0" => 200, "271:0" => 50, "275:0" => 100, "268:0" => 40, "272:0" => 80, "263:0" => 35, "265:0" => 150, "266:0" => 300, "264:0" => 500, "388:0" => 600, \\\]; } public function onChestClose(\\\\ChestAPI\\\\ChestCloseEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { unset($this->shopPlayers\\\[strtolower($player->getName())\\\]); $player->getCursorInventory()->clearAll(); } } public function onPlayerQuit(\\\\pocketmine\\\\event\\\\player\\\\PlayerQuitEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { unset($this->shopPlayers\\\[strtolower($player->getName())\\\]); $player->getCursorInventory()->clearAll(); } } public function onPlayerDropItem(\\\\pocketmine\\\\event\\\\player\\\\PlayerDropItemEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { $event->setCancelled(true); $player->getInventory()->setItemInHand(Item::get(0)); $player->getCursorInventory()->clearAll(); $player->sendMessage("§c§lНельзя выбрасывать предметы из магазина!"); } } public function onInventoryTransaction(\\\\pocketmine\\\\event\\\\inventory\\\\InventoryTransactionEvent $event) { $player = $event->getTransaction()->getSource(); if($player instanceof Player) { if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { $event->setCancelled(true); } } } } <?php namespace Shop; use pocketmine\\\\plugin\\\\PluginBase; use pocketmine\\\\command\\\\Command; use pocketmine\\\\command\\\\CommandSender; use pocketmine\\\\Player; use pocketmine\\\\Server; use pocketmine\\\\item\\\\Item; use pocketmine\\\\utils\\\\TextFormat as TF; use pocketmine\\\\event\\\\Listener; use ChestAPI\\\\ChestAPI; use ChestAPI\\\\ChestClickEvent; use onebone\\\\economyapi\\\\EconomyAPI; class Shop extends PluginBase implements Listener { private $economy; private $chestAPI; private $shopPlayers = \\\[\\\]; public function onEnable() { $this->getServer()->getPluginManager()->registerEvents($this, $this); if(!$this->getServer()->getPluginManager()->getPlugin("ChestAPI")) { $this->getLogger()->critical("§cChestAPI не найден! Плагин отключен."); $this->getServer()->getPluginManager()->disablePlugin($this); return; } if(!$this->getServer()->getPluginManager()->getPlugin("EconomyAPI")) { $this->getLogger()->critical("§cEconomyAPI не найден! Плагин отключен."); $this->getServer()->getPluginManager()->disablePlugin($this); return; } $this->economy = EconomyAPI::getInstance(); $this->chestAPI = ChestAPI::getInstance(); $this->getLogger()->info("§aМагазин успешно загружен!"); } public function onCommand(CommandSender $sender, Command $command, $label, array $args) { if($command->getName() == "shop") { if(!$sender instanceof Player) { $sender->sendMessage("§cЭту команду можно использовать только в игре!"); return true; } $this->openShop($sender); return true; } return false; } public function openShop(Player $player) { $this->shopPlayers\\\[strtolower($player->getName())\\\] = true; $items = \\\[\\\]; $glass = Item::get(20, 0, 1); $glass->setCustomName("§r§8"); for($i = 0; $i <= 8; $i++) { $items\\\[$i\\\] = $glass; } for($i = 45; $i <= 53; $i++) { $items\\\[$i\\\] = $glass; } $items\\\[9\\\] = $glass; $items\\\[17\\\] = $glass; $items\\\[18\\\] = $glass; $items\\\[26\\\] = $glass; $items\\\[27\\\] = $glass; $items\\\[35\\\] = $glass; $items\\\[36\\\] = $glass; $items\\\[44\\\] = $glass; $grass = Item::get(2, 0, 1); $grass->setCustomName("§r§a§lТравяной блок\\\\n§r§7Цена: §e§l50$"); $items\\\[10\\\] = $grass; $stone = Item::get(1, 0, 1); $stone->setCustomName("§r§7§lКамень\\\\n§r§7Цена: §e§l30$"); $items\\\[11\\\] = $stone; $wood = Item::get(17, 0, 1); $wood->setCustomName("§r§6§lДубовое бревно\\\\n§r§7Цена: §e§l40$"); $items\\\[12\\\] = $wood; $cobblestone = Item::get(4, 0, 1); $cobblestone->setCustomName("§r§7§lБулыжник\\\\n§r§7Цена: §e§l20$"); $items\\\[13\\\] = $cobblestone; $planks = Item::get(5, 0, 1); $planks->setCustomName("§r§6§lДубовые доски\\\\n§r§7Цена: §e§l35$"); $items\\\[14\\\] = $planks; $glassBlock = Item::get(20, 0, 1); $glassBlock->setCustomName("§r§b§lСтекло\\\\n§r§7Цена: §e§l45$"); $items\\\[15\\\] = $glassBlock; $sand = Item::get(12, 0, 1); $sand->setCustomName("§r§e§lПесок\\\\n§r§7Цена: §e§l25$"); $items\\\[16\\\] = $sand; $apple = Item::get(260, 0, 1); $apple->setCustomName("§r§c§lЯблоко\\\\n§r§7Цена: §e§l10$"); $items\\\[19\\\] = $apple; $bread = Item::get(297, 0, 1); $bread->setCustomName("§r§6§lХлеб\\\\n§r§7Цена: §e§l15$"); $items\\\[20\\\] = $bread; $cookedBeef = Item::get(364, 0, 1); $cookedBeef->setCustomName("§r§c§lЖареная говядина\\\\n§r§7Цена: §e§l25$"); $items\\\[21\\\] = $cookedBeef; $cookedChicken = Item::get(366, 0, 1); $cookedChicken->setCustomName("§r§f§lЖареная курица\\\\n§r§7Цена: §e§l20$"); $items\\\[22\\\] = $cookedChicken; $carrot = Item::get(391, 0, 1); $carrot->setCustomName("§r§6§lМорковь\\\\n§r§7Цена: §e§l12$"); $items\\\[23\\\] = $carrot; $bakedPotato = Item::get(393, 0, 1); $bakedPotato->setCustomName("§r§6§lПечёный картофель\\\\n§r§7Цена: §e§l18$"); $items\\\[24\\\] = $bakedPotato; $cookie = Item::get(357, 0, 1); $cookie->setCustomName("§r§6§lПеченье\\\\n§r§7Цена: §e§l8$"); $items\\\[25\\\] = $cookie; $woodenPickaxe = Item::get(270, 0, 1); $woodenPickaxe->setCustomName("§r§6§lДеревянная кирка\\\\n§r§7Цена: §e§l50$"); $items\\\[28\\\] = $woodenPickaxe; $stonePickaxe = Item::get(274, 0, 1); $stonePickaxe->setCustomName("§r§7§lКаменная кирка\\\\n§r§7Цена: §e§l100$"); $items\\\[29\\\] = $stonePickaxe; $ironPickaxe = Item::get(257, 0, 1); $ironPickaxe->setCustomName("§r§f§lЖелезная кирка\\\\n§r§7Цена: §e§l200$"); $items\\\[30\\\] = $ironPickaxe; $woodenAxe = Item::get(271, 0, 1); $woodenAxe->setCustomName("§r§6§lДеревянный топор\\\\n§r§7Цена: §e§l50$"); $items\\\[31\\\] = $woodenAxe; $stoneAxe = Item::get(275, 0, 1); $stoneAxe->setCustomName("§r§7§lКаменный топор\\\\n§r§7Цена: §e§l100$"); $items\\\[32\\\] = $stoneAxe; $woodenSword = Item::get(268, 0, 1); $woodenSword->setCustomName("§r§6§lДеревянный меч\\\\n§r§7Цена: §e§l40$"); $items\\\[33\\\] = $woodenSword; $stoneSword = Item::get(272, 0, 1); $stoneSword->setCustomName("§r§7§lКаменный меч\\\\n§r§7Цена: §e§l80$"); $items\\\[34\\\] = $stoneSword; $dirt = Item::get(3, 0, 1); $dirt->setCustomName("§r§6§lЗемля\\\\n§r§7Цена: §e§l15$"); $items\\\[37\\\] = $dirt; $coal = Item::get(263, 0, 1); $coal->setCustomName("§r§8§lУголь\\\\n§r§7Цена: §e§l35$"); $items\\\[38\\\] = $coal; $ironIngot = Item::get(265, 0, 1); $ironIngot->setCustomName("§r§f§lЖелезный слиток\\\\n§r§7Цена: §e§l150$"); $items\\\[39\\\] = $ironIngot; $goldIngot = Item::get(266, 0, 1); $goldIngot->setCustomName("§r§e§lЗолотой слиток\\\\n§r§7Цена: §e§l300$"); $items\\\[40\\\] = $goldIngot; $diamond = Item::get(264, 0, 1); $diamond->setCustomName("§r§b§lАлмаз\\\\n§r§7Цена: §e§l500$"); $items\\\[41\\\] = $diamond; $potato = Item::get(392, 0, 1); $potato->setCustomName("§r§6§lКартофель\\\\n§r§7Цена: §e§l12$"); $items\\\[42\\\] = $potato; $emerald = Item::get(388, 0, 1); $emerald->setCustomName("§r§a§lИзумруд\\\\n§r§7Цена: §e§l600$"); $items\\\[43\\\] = $emerald; $this->chestAPI->openChest( $player, $items, "§l§e§lМАГАЗИН", ChestAPI::DOUBLE_CHEST, true, true, "§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬\\\\n§e§l✦ ДОБРО ПОЖАЛОВАТЬ В МАГАЗИН ✦\\\\n§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬" ); } public function onChestClick(ChestClickEvent $event) { $player = $event->getPlayer(); $item = $event->getItem(); if(!isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) return; $event->setCancelled(); if($item->getId() == 0) return; $prices = $this->getPrices(); $itemKey = $item->getId() . ":" . $item->getDamage(); if(!isset($prices\\\[$itemKey\\\])) { return; } $price = $prices\\\[$itemKey\\\]; $balance = $this->economy->myMoney($player); if($balance < $price) { $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§c§l"); $player->sendMessage("§c§l ✘ НЕДОСТАТОЧНО ДЕНЕГ! ✘"); $player->sendMessage("§c§l"); $player->sendMessage("§e§l Нужно: §c§l" . $price . "$"); $player->sendMessage("§e§l У вас: §a§l" . $balance . "$"); $player->sendMessage("§c§l"); $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); return; } $purchaseItem = Item::get($item->getId(), $item->getDamage(), 1); $purchaseItem->setCustomName(""); if(!$player->getInventory()->canAddItem($purchaseItem)) { $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§c§l ✘ НЕТ МЕСТА В ИНВЕНТАРЕ! ✘"); $player->sendMessage("§e§l Освободите место и попробуйте снова"); $player->sendMessage("§c§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); return; } $player->getInventory()->addItem($purchaseItem); $this->economy->reduceMoney($player, $price); $itemName = $purchaseItem->getName(); $newBalance = $this->economy->myMoney($player); $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); $player->sendMessage("§a§l ✔ ПОКУПКА УСПЕШНА! ✔"); $player->sendMessage("§e§l Товар: §f§l" . $itemName); $player->sendMessage("§e§l Цена: §c§l-" . $price . "$"); $player->sendMessage("§e§l Баланс: §a§l" . $newBalance . "$"); $player->sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); } private function getPrices() { return \\\[ "2:0" => 50, "1:0" => 30, "17:0" => 40, "4:0" => 20, "20:0" => 45, "12:0" => 25, "3:0" => 15, "5:0" => 35, "260:0" => 10, "297:0" => 15, "364:0" => 25, "366:0" => 20, "391:0" => 12, "392:0" => 12, "393:0" => 18, "357:0" => 8, "270:0" => 50, "274:0" => 100, "257:0" => 200, "271:0" => 50, "275:0" => 100, "268:0" => 40, "272:0" => 80, "263:0" => 35, "265:0" => 150, "266:0" => 300, "264:0" => 500, "388:0" => 600, \\\]; } public function onChestClose(\\\\ChestAPI\\\\ChestCloseEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { unset($this->shopPlayers\\\[strtolower($player->getName())\\\]); $player->getCursorInventory()->clearAll(); } } public function onPlayerQuit(\\\\pocketmine\\\\event\\\\player\\\\PlayerQuitEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { unset($this->shopPlayers\\\[strtolower($player->getName())\\\]); $player->getCursorInventory()->clearAll(); } } public function onPlayerDropItem(\\\\pocketmine\\\\event\\\\player\\\\PlayerDropItemEvent $event) { $player = $event->getPlayer(); if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { $event->setCancelled(true); $player->getInventory()->setItemInHand(Item::get(0)); $player->getCursorInventory()->clearAll(); $player->sendMessage("§c§lНельзя выбрасывать предметы из магазина!"); } } public function onInventoryTransaction(\\\\pocketmine\\\\event\\\\inventory\\\\InventoryTransactionEvent $event) { $player = $event->getTransaction()->getSource(); if($player instanceof Player) { if(isset($this->shopPlayers\\\[strtolower($player->getName())\\\])) { $event->setCancelled(true); } } } }
1 лайк

спасибо

Можешь в формате php скинуть Shop.php

Он ничего не исправил

1 лайк

Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.