dispatchCommand()?

Вот недавно наткнулся на это, я так понял это выполняет какую-то команду через консоль. Вопрос можно ли выполнять через эту функцию(не уверен что это функция) команду добавленную плагином, плагинами?

Не понял вопроса, но эта функция исполняет команду от лица любого кто может ее выполнить, крч это равносильно тому что кто то ее отправил

._.

$this->getServer()->dispatchCommand(new ConsoleCommandSender(),'setuperm '.$p.' sbkit.hminer');

Не много перефразировал

Это выполняется от лица консоли

а тоесть от аргумента зависит отправитель команды?

//от сервера
//use pocketmine\command\ConsoleCommandSender;
Server::getInstance()->dispatch(new ConsoleCommandSender(), "test ".$username);

//от игрока
Server::getInstance()->dispatch($player, "test ".$username);

спасибо

это не из-за этого, но помощь нужна…

2022-07-13 [12:07:44] [Server thread/CRITICAL]: ErrorException: “Undefined offset: 0” (EXCEPTION) in “plugins/LOTERY/src/lotery/LOTERY” at line 63

	public function onCommand(CommandSender $s, Command $cmd, $label, array $args){
		$p = $s->getPlayer();
		$n = $p->getName();
		$money = $this->eco->myMoney(strtolower($n));
		$cfg = $this->lotery->getAll();
		$lotery = mt_rand(0, 20);
		$inv = $p->getInventory();
		if($cmd->getName() == "lotery"){
			if(!isset($args[0])){
				if($money < 20000){
        	        $s->sendMessage("§l§bMega§fWorld §7»§c Не хватает опыта!");
                } elseif($money > 20000){
        	        $this->eco->reduceMoney(strtolower($n), 20000);
        	        $s->sendMessage("§l§bMega§fWorld §7»§f Успешно приобретен лотерейный билет!\n§l§fИспользовать: §c/lotery game§f!");
        	        $cfg[strtolower($n)]['LOTERY']++;
                    $this->lotery->setAll($cfg);
                    $this->lotery->save();
                }
			}
            if($args[0] == "game"){ //63 line
        	    if($cfg[strtolower($n)]['LOTERY'] < 1){
        	        $s->sendMessage("§l§bMega§fWorld §7»§c Не хватает билетов!");

Зачем отрицание в isset($args[0]) ?

switch(array_shift($args)){
  case 20000:
     //TODO
  break;
  case 50000:
     //TODO
  break;
  default:
    $player->sendMessage("Доступно лишь 20000 и 50000");
  break;
}

на isset($args[0])

Мишь, всё хуйня, давай по новой…

2 лайка

Особого смысла в данном коде не видно (без обид, ок?)

там куча кода который переставлять придется + ошибка не там

Как говорится, дурак всегда и будет дураком

Тебе помочь пытаются, а ты из себя умного строишь

спасибо

Всегда пожалуйста, заюш :wink:

ну ок
а в чем прикол то ну что то поменяется?