Можно ли сделать лимит на установку шалкеров, допустим х3?
PMM3, спасибо большое за ваши ответы
- Взять ивент при установке блоков
- Проверить блок (является оно шалкером?
- Получить игрока и записать в бд
- Делать подсчет пои вызове ивента (если количество равен 3 то отменить ивент)
public function onPlace(BlockPlaceEvent $event){
if($event->getBlock()->getId() != "айди шалкера") return;
$player = $event->getPlayer();
$name = strtolower($player->getName());
if(//Делаешь проверку
$event->setCancelled(true);
$player->sendMessage("Лимит на шалкера");
return;
//Записываешь игрока
}
ладно ejje
1 лайк
И заработает?
нет
<?php
namespace твой;
use pocketmine\{event\Listener, plugin\PluginBase, Server};
use pocketmine\event\block\BlockPlaceEvent;
use pocketmine\item\Item;
class твой extends PluginBase implements Listener {
private $shulkerBoxCount = 0;
private $shulkerBoxLimit = 10; // Максимальное количество шалкеров, которое можно разместить
public function onEnable(){
$this->getServer()->getPluginManager()->registerEvents($this, $this);
}
public function onBlockPlace(BlockPlaceEvent $event) {
$item = $event->getItem();
if($item->getId() === Item::SHULKER_BOX) {
if($this->shulkerBoxCount >= $this->shulkerBoxLimit) { // проверка
$event->getPlayer()->sendMessage("Вы достигли лимита поставки шалкеров.");
$event->setCancelled();
} else {
$this->shulkerBoxCount++; // добавляем +1
}
}
}
}
и что ты написал
вот
Это только отрывок кода, полный плагин надо написать
BlockBreakEvent
покинул чат
Прочем сдесь он?
А если игрок сломает шалкер?
-_-
В посте не указано это, и ты тоже не написал в своем коде
<?php
namespace dir\dir;
use pocketmine\event\block\BlockPlaceEvent;
use pocketmine\block\ShulkerBox;
use pocketmine\event\Listener;
use pocketmine\plugin\PluginBase;
class Main extends PluginBase implements Listener{
private const PLACE_LIMIT = 3;
public function onEnable() : void{
$this->getServer()->getPluginManager()->registerEvents($this, $this);
}
public function handleBlockPlace(BlockPlaceEvent $event) : void{
if($event->getBlock() instanceof ShulkerBox){
$player = $event->getPlayer();
$username = $player->getLowerCaseName();
if(!isset($this->limitFilter[$username]){
$this->limitFilter[$username] = 0;
}
++$this->limitFilter[$username];
if($this->limitFilter[$username] >= self::PLACE_LIMIT){
$event->setCancelled();
$player->sendMessage('лимит исчерпан');
}
}
}
}
Логика таже
у меня код адекватнее и выполнено все по тз
Я не знаю кому галочку ставить
У меня код меньше, и логика таже