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

PlayerPreLoginEvent

Discussion in 'Development' started by Martti16, May 2, 2017.

  1. Martti16

    Martti16 Spider

    Messages:
    14
    GitHub:
    Marttinek
    How to fix it? Does not work, please help xd
    PHP:
    <?php

    namespace mypluginxd;

    use 
    pocketmine\plugin\PluginBase;
    use 
    pocketmine\event\Listener;
    use 
    pocketmine\event\player\PlayerPreLoginEvent;
    use 
    pocketmine\Player;
    use 
    pocketmine\Server;

    class 
    main extends PluginBase implements Listener{
      
        public function 
    onEnable(){
    }
          
        public function 
    onPlayerPreLogin(PlayerPreLoginEvent $event){
        if(
    $server->getPlayer($event->getPlayer()) !== null){
            
    $event->getPlayer()->close("""Gracz jest juz na serwerze/n Already logged in");
    }
    }  
    }
     
    Last edited by a moderator: May 2, 2017
  2. Thunder33345

    Thunder33345 Moderator Staff Member

    Messages:
    2,137
    GitHub:
    Thunder33345
    you did not register this event
     
    Martti16 likes this.
  3. Sandertv

    Sandertv Zombie Pigman Poggit Reviewer

    Messages:
    786
    GitHub:
    Sandertv
    Also, You're trying to get a player from a player or something? Huh? $server is undefined? $server->getPlayer() requires a string, not a player object.
     
    Martti16 likes this.
  4. Kyd

    Kyd Zombie Pigman

    Messages:
    678
    GitHub:
    boi1216
    PHP:
    < ?php

    namespace mypluginxd;

    use 
    pocketmine\plugin\PluginBase;
    use 
    pocketmine\event\Listener;
    use 
    pocketmine\event\player\PlayerPreLoginEvent;
    use 
    pocketmine\Player;
    use 
    pocketmine\Server;

    class 
    main extends PluginBase implements Listener{

    public function 
    onEnable(){
    $this->getServer()->getPluginManager()->registerEvents($this$this); 
     }

    public function 
    onPlayerPreLogin(PlayerPreLoginEvent $event){
     if(
    $event->getPlayer() !== null){
            
    $event->getPlayer()->close("""Gracz jest juz na serwerze/n Already logged in"); 
    }

    }
    You must use registerEvents function in PluginManager
     
    Martti16 likes this.
  5. SOFe

    SOFe Administrator Staff Member PMMP Team Poggit Admin

    Messages:
    1,968
    GitHub:
    sof3
    You obviously don't understand what he wants. He wants to check if a player of the same name is already logged in. $event->getPlayer() always returns a Player object and using checking its nullity is unreasonable.

    @Martti16 Several problems in your code:
    You should pass the player name to the server. $server->getPlayer($event->getPlayer()->getName()) is more correct.
    You should use kick() instead of close(). To remove the "Kicked by admin" prefix, pass false as the second parameter.
    \n instead of /n.
     
    jasonwynn10 and Martti16 like this.
  6. Martti16

    Martti16 Spider

    Messages:
    14
    GitHub:
    Marttinek
    Please edit this for me, it does not work... -.-
     
  7. jasonwynn10

    jasonwynn10 Moderator Poggit Reviewer

    Messages:
    1,489
    GitHub:
    jasonwynn10
    PHP:
    <?php

    namespace mypluginxd;

    use 
    pocketmine\plugin\PluginBase;
    use 
    pocketmine\event\Listener;
    use 
    pocketmine\event\player\PlayerPreLoginEvent;
    use 
    pocketmine\Player;
    use 
    pocketmine\Server;

    class 
    main extends PluginBase implements Listener
        public function 
    onEnable(){
            
    $this->getServer()->getPluginManager()->registerEvents($this$this);
        }  
        public function 
    onPlayerPreLogin(PlayerPreLoginEvent $event){
            if(
    $this->getServer()->getPlayer($event->getPlayer->getName()) == null) {
                return;
            }
            
    $event->setCancelled();
            
    $event->setKickMessage("Gracz jest juz na serwerze\n Already logged in");
        }
    }
     
    Martti16 likes this.
  8. Martti16

    Martti16 Spider

    Messages:
    14
    GitHub:
    Marttinek
    Thank you!
     
  9. Kyd

    Kyd Zombie Pigman

    Messages:
    678
    GitHub:
    boi1216
    Oh now I understand what you want.
    I using this:
    PHP:
    public function onPlayerPreLog(PlayerPreLoginEvent $e){
    if ((
    $pl $this->getServer()->getPlayer($p->getName())) instanceof Player){
    $e->setCancelled();
    $e->setKickMessage("§cHrac se stejnym jmenem jiz hraje!");
    }
    }
     
  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.