I will make a ReedemCode plugin but i got a error the erroris Undefined array key 1 At Liner 32 but i dont know what i make wrong PHP: <?phpdeclare(strict_types=1);namespace ghax\reedemcode;use pocketmine\plugin\PluginBase;use pocketmine\Player;use pocketmine\Server;use pocketmine\command\Command;use pocketmine\command\CommandSender;use pocketmine\item\Item;use jojoe77777\FormAPI\CustomForm;class Main extends PluginBase{ public function onEnable(){ $this->getServer()->getLogger()->Info("Activate Reedemcode!"); } public function reedemCodeForm(Player $player){ $form = new CustomForm(function(Player $player, array $data){ $test = array(); $i = 0; $name = $player->getName(); if($data == null){ return true; } switch($data[0]){ case "test": $item = Item::get(1, 0, 1)->setCustomName("§l§6Reward"); do{ $i++; }while(!$test[$i] == null||$test[$i] == $name); if(!$test[$i] = $name){ $player->getInventory()->addItem($item); $test[$i] = $name; }else{ $player->sendMessage("§BDu hast diesen §aReedemCode §schon benutzt!"); } break; } }); $form->setTitle("ReedemCode"); //$form->setContent("§bDein ReedemCode:"); $form->addInput("§bDein ReedemCode:","Code",""); //$form->addButton("ReedemCode Senden"); $form->sendToPlayer($player); } public function onCommand(CommandSender $sender, Command $cmd, $label, array $arg):bool{ $player = $sender->getPlayer(); switch($cmd){ case "code": $this->reedemCodeForm($player); break; } return true; }}
No but i have seen i can use in_array and array_push but now i have a NEW problem the player name dont saved in the array PHP: <?phpdeclare(strict_types=1);namespace ghax\reedemcode;use pocketmine\plugin\PluginBase;use pocketmine\Player;use pocketmine\Server;use pocketmine\command\Command;use pocketmine\command\CommandSender;use pocketmine\item\Item;use pocketmine\utils\Config;use jojoe77777\FormAPI\CustomForm;class Main extends PluginBase{ public array $test; public function onEnable(){ $this->getServer()->getLogger()->Info("Activate Reedemcode!"); } public function reedemCodeForm(Player $player){ $form = new CustomForm(function(Player $player, array $data){ $name = $player->getName(); if($data == null){ return true; } switch($data[0]){ case "test": $item = Item::get(1, 0, 1)->setCustomName("§l§6Reward"); if(!in_array($name , $test)){ $player->getInventory()->addItem($item); array_push($test, $name); }else{ $player->sendMessage("§BDu hast diesen §aReedemCode §schon benutzt!"); } break; } }); $form->setTitle("ReedemCode"); //$form->setContent("§bDein ReedemCode:"); $form->addInput("§bDein ReedemCode:","Code",""); //$form->addButton("ReedemCode Senden"); $form->sendToPlayer($player); } public function onCommand(CommandSender $sender, Command $cmd, $label, array $arg):bool{ $player = $sender->getPlayer(); switch($cmd){ case "code": $this->reedemCodeForm($player); break; } return true; }} When i declare test as public array $test; i cant use by the new CustomForm and the i make $this->test; je say i dont need to declare bevor use and i make $test ans coding undeclare Variable but why??????
You can't use variable inside a function to store data, you have to declare property for that. Also since you're constructing new class inside your function you have to call the property via your main class. PHP: <?phpdeclare(strict_types=1);namespace ghax\reedemcode;use pocketmine\plugin\PluginBase;use pocketmine\Player;use pocketmine\Server;use pocketmine\command\Command;use pocketmine\command\CommandSender;use pocketmine\item\Item;use jojoe77777\FormAPI\CustomForm;class Main extends PluginBase{ public static $test = array(); public function onEnable(){ $this->getServer()->getLogger()->Info("Activate Reedemcode!"); } public function reedemCodeForm(Player $player){ $form = new CustomForm(function(Player $player, array $data){ $i = 0; $name = $player->getName(); if($data == null){ return true; } switch($data[0]){ case "test": $item = Item::get(1, 0, 1)->setCustomName("§l§6Reward"); do{ $i++; }while(!isset(Main::$test[$i]) || Main::$test[$i] == $name); if(!Main::$test[$i] = $name){ $player->getInventory()->addItem($item); Main::$test[$i] = $name; }else{ $player->sendMessage("§BDu hast diesen §aReedemCode §schon benutzt!"); } break; } }); $form->setTitle("ReedemCode"); //$form->setContent("§bDein ReedemCode:"); $form->addInput("§bDein ReedemCode:","Code",""); //$form->addButton("ReedemCode Senden"); $form->sendToPlayer($player); } public function onCommand(CommandSender $sender, Command $cmd, $label, array $arg):bool{ $player = $sender->getPlayer(); switch($cmd){ case "code": $this->reedemCodeForm($player); break; } return true; }}