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

Solved Some help with Parkour Plugin

Discussion in 'Plugin Help' started by WinterBuild7074, Mar 19, 2017.

  1. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    What parameters did you use for the setText() function?
     
  2. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    $line1
    $sign->setText($line1);
     
  3. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    ...

    What did you define $line1 as?
     
  4. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    $line = "§2[§aCheckpoint§2]";

    PHP:
                if(TextFormat::clean($sign[0]) === '[Checkpoint]'){
                    
    $this->data->set($name,array($player->x,$player->y,$player->z,$player->getLevel()->getName()));
                    
    $this->data->save();
                    
    $x $b->getX();
                    
    $y $b->getY();
                    
    $z $b->getZ();
                    
    $vector3 = new Vector3($x$y$z);
                    
    $level $player->getLevel();
                    
    $tile $level->getTile($vector3);
                    
    $line1 "§2[§aCheckpoint§2]";
                    if(
    $tile instanceof Sign) {
                        
    $sign->setText($line1);
                    }
                        
    $player->sendMessage("{$this->getConfig()->get("CheckpointSaved")}");
                    }
     
  5. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    Use $tile->setText($line1), instead of $sign->setText($line1).
     
    HimbeersaftLP likes this.
  6. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    Thanks! It works. But now the second thing:
    This part doesn't work at all (doesn't give me an error too):
    if($level === "Parkour-Extreme" && $event->getTo()->getFloorY() < 66)
     
  7. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    If $level is an instance of pocketmine\level\Level, then it will never be equivalent to a string. You can use $level->getName() in place of $level.
     
  8. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    Call to a member function getName() on null
     
  9. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    Can you share the entire code again?
     
  10. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    PHP:
    <?php
    /*
      _____       _           _                 
     |  __ \     (_)         | |               
     | |  | |_ __ _  ___  ___| |__   ___  _   _
     | |  | | '__| |/ _ \/ __| '_ \ / _ \| | | |
     | |__| | |  | |  __/\__ \ |_) | (_) | |_| |
     |_____/|_|  |_|\___||___/_.__/ \___/ \__, |
                                           __/ |
                                          |___/
    */
    namespace Parkour;
    use 
    pocketmine\plugin\PluginBase;
    use 
    pocketmine\Server;
    use 
    pocketmine\command\CommandSender;
    use 
    pocketmine\command\Command;
    use 
    pocketmine\command\ConsoleCommandSender;
    use 
    pocketmine\command\CommandExecutor;
    use 
    pocketmine\event\Listener;
    use 
    pocketmine\utils\Config;
    use 
    pocketmine\event\player\PlayerInteractEvent;
    use 
    pocketmine\utils\TextFormat;
    use 
    pocketmine\Player;
    use 
    pocketmine\tile\Sign;
    use 
    pocketmine\level\Position;
    use 
    pocketmine\level\Level;
    use 
    pocketmine\entity\Entity;
    use 
    pocketmine\math\Vector3;
    use 
    pocketmine\event\player\PlayerMoveEvent;

    class 
    Main extends PluginBase implements Listener{
        
        private 
    $config;
        private 
    $pos;
        public function 
    onEnable(){
            
    $this->getServer()->getLogger()->info(TextFormat::BLUE "Parkour Has Been Enabled.");
            
    $this->getServer()->getLogger()->info(TextFormat::BLUE "By: Driesboy. http://github.com/Driesboy");
            
    $this->getServer()->getPluginManager()->registerEvents($this$this);
            @
    mkdir($this->getDataFolder());
                
    $this->saveDefaultConfig();
            
    $this->data = new Config($this->getDataFolder()."Data.yml"Config::YAML, array());
        }
        
        public function 
    onDisable(){
            
    $this->getServer()->getLogger()->info(TextFormat::GRAY ">" TextFormat::RED "RED" "Parkour was disabled.");
        }
        
        public function 
    onPlayerTouch(PlayerInteractEvent $event){
            
    $player $event->getPlayer();
            
    $b $event->getBlock();
            
    $name $event->getPlayer()->getName();
            
    $name strtolower($name);
            if(
    $b->getID() == 63 || $b->getID() == 68){
                
    $sign $player->getLevel()->getTile($b);
                if(!(
    $sign instanceof Sign)){
                    return;
                }
                
    $sign $sign->getText();
                if(
    TextFormat::clean($sign[0]) === '[Checkpoint]'){
                    
    $this->data->set($name,array($player->x,$player->y,$player->z,$player->getLevel()->getName()));
                    
    $this->data->save();
                    
    $x $b->getX();
                    
    $y $b->getY();
                    
    $z $b->getZ();
                    
    $vector3 = new Vector3($x$y$z);
                    
    $level $player->getLevel();
                    
    $tile $level->getTile($vector3);
                    
    $line1 "§2[§aCheckpoint§2]";
                    if(
    $tile instanceof Sign) {
                        
    $tile->setText($line1);
                    }
                        
    $player->sendMessage("{$this->getConfig()->get("CheckpointSaved")}");
                    }
                if(
    TextFormat::clean($sign[0]) === '[Earn Reward]'){
                    
    $this->data->remove($name,array($player->x,$player->y,$player->z,$player->getLevel()->getName()));
                    
    $this->data->save();
                    
    $player->sendMessage("{$this->getConfig()->get("EarnReward")}");
                    if(
    $this->getConfig()->get("reward-command")){
                        
    $player->getServer()->dispatchCommand(new ConsoleCommandSender(), str_ireplace("{PLAYER}"$player->getName(), $this->getConfig()->get("reward-command")));
                        
    $player->teleport($player->getLevel()->getSafeSpawn());
                    }
                }
            }
            if(
    $b->getID() == $this->getConfig()->get("CheckPointBlock")){
                
    $this->data->set($name,array($player->x,$player->y,$player->z,$player->getLevel()->getName()));
                
    $this->data->save();
                
    $player->sendMessage("{$this->getConfig()->get("CheckpointSaved")}");
            }
        }
         public function 
    onVoidLoop(PlayerMoveEvent $event){
             
    $level $this->getServer()->getLevelByName();
              if(
    $level->getName() === "Parkour-Extreme" && $event->getTo()->getFloorY() < 66){
                     
    $player $event->getPlayer();
                     
    $name $event->getPlayer()->getName();                 
                     
    $name strtolower($name);
                     
    $pos $this->data->get($name);
                    if(
    is_array($pos)){
                        
    $player->sendMessage("{$this->getConfig()->get("TeleportMessage")}");
                            
    $level $this->getServer()->getLevelByName($pos[3]);
                            
    $player->teleport(new Position($pos[0],$pos[1],$pos[2],$level));
                        }else{ 
    $player->sendMessage("{$this->getConfig()->get("No-Checkpoint")}");
                        
    $player->teleport($player->getLevel()->getSafeSpawn());
                }
                    }
            }
    }
     
  11. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    Right under onVoidLoop, changing
    PHP:
     $level $this->getServer()->getLevelByName(); 
    to
    PHP:
     $level $event->getTo()->getLevel(); 
    should fix the issue.
     
  12. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    I tried jump down a platform, but it doesn't bring me back to Checkpoint or anything.
    No errors.
     
  13. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    What shall I do now? There still must be something wrong.
     
  14. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    What was the y value of the platform?
     
  15. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    Platform Y = 79
    Sea/Ground Y = 63 or 62
     
  16. HimbeersaftLP

    HimbeersaftLP Fish

    Messages:
    2,402
    GitHub:
    HimbeersaftLP
    Add debug lines to you code.

    e.g. $player->sendMessage("Event passed")
     
    corytortoise likes this.
  17. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    OK, I added that, restarted and tested it. No, it doesn't say anything. The if code doesn't work.
     
  18. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    What shall I do now?
     
  19. WinterBuild7074

    WinterBuild7074 Zombie Pigman

    Messages:
    693
    GitHub:
    winterbuild7074
    Can anyone help me?
     
  20. XdmingXD

    XdmingXD Baby Zombie

    Messages:
    158
    GitHub:
    xdmingxd
    What are you trying to do?
    You have defined $level as string and why do you still doing $level->getName() ?
    And where is $pos?How do you define it as array?
    Don't check if it is array in config
    It is a bad idea
    Can you pls share all file that you have
     
  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.