1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Undefined array key pls help

Discussion in 'Development' started by GrieferHax, Sep 26, 2021.

  1. GrieferHax

    GrieferHax Silverfish

    Messages:
    19
    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:
    <?php

    declare(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(101)->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 $senderCommand $cmd$label, array $arg):bool{
        
    $player $sender->getPlayer();
        switch(
    $cmd){
          case 
    "code":
            
    $this->reedemCodeForm($player);
            break;
        }
        return 
    true;
      }
    }
     
  2. Axon

    Axon Zombie

    Messages:
    276
    Have you tried using
    isset instead?

    eg:
    isset($test[$i])
     
    Agent, NTT and Kyd like this.
  3. GrieferHax

    GrieferHax Silverfish

    Messages:
    19
    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:
    <?php

    declare(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(101)->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 $senderCommand $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??????
     
  4. Axon

    Axon Zombie

    Messages:
    276
    I don’t understand.
     
    Agent likes this.
  5. GrieferHax

    GrieferHax Silverfish

    Messages:
    19
    I nie make it with a data base
     
  6. Kyd

    Kyd Zombie Pigman

    Messages:
    678
    GitHub:
    boi1216
    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:
    <?php

    declare(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(101)->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 $senderCommand $cmd$label, array $arg):bool{
        
    $player $sender->getPlayer();
        switch(
    $cmd){
          case 
    "code":
            
    $this->reedemCodeForm($player);
            break;
        }
        return 
    true;
      }
    }
     
  7. GrieferHax

    GrieferHax Silverfish

    Messages:
    19
    Thanks you real help me that i know for the next but now i have a komplett other code
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.