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

[SOLVED] How to set Player as Zombie

Discussion in 'Development' started by Kenn Fatt, Jan 6, 2017.

  1. Kenn Fatt

    Kenn Fatt Slime

    Messages:
    82
    GitHub:
    kennfatt
    Hello,

    i want set player as Zombie (id 32), like disguise. but disguise was outdated and use old API.
    So, can anyone give me a clue to make it?

    PHP:

    public function onPacketSend(DataPacketSendEvent $event){
        if(isset(
    $event->getPacket()->eid)){
          if(
    $this->own->isDisguised($event->getPacket()->eid)){
            if(
    $event->getPacket() instanceof MovePlayerPacket){
              
    $pk = new MoveEntityPacket;
              
    $pk->$event->getPacket()->x;
              
    $pk->$event->getPacket()->y;
              
    $pk->$event->getPacket()->z;
              
    $pk->pitch $event->getPacket()->pitch;
              
    $pk->yaw $event->getPacket()->yaw;
              
    $event->getPlayer()->dataPacket($pk);
              
    $event->setCancelled();
            }elseif(
    $event->getPacket() instanceof AddPlayerPacket){
              
    $pk = new AddEntityPacket;
              
    $pk->eid $event->getPacket()->eid;
              
    $pk->type $this->own->mobs[$event->getPacket()->eid]->getType();
              
    $pk->$event->getPacket()->x;
              
    $pk->$event->getPacket()->y;
              
    $pk->$event->getPacket()->z;
              
    $pk->pitch $event->getPacket()->pitch;
              
    $pk->yaw $event->getPacket()->yaw;
              
    $flags 0;
              
    $flags |= << Entity::DATA_FLAG_CAN_SHOW_NAMETAG;
              
    $flags |= << Entity::DATA_FLAG_ALWAYS_SHOW_NAMETAG;
              
    $pk->metadata = [
                
    Entity::DATA_NAMETAG => [Entity::DATA_TYPE_STRING$event->getPlayer()->getName()],
                
    Entity::DATA_FLAGS=>[Entity::DATA_TYPE_BYTE,$flags],
                
    Entity::DATA_LEAD_HOLDER_EID => [Entity::DATA_TYPE_LONG, -1],
              ];
              
    $event->getPlayer()->dataPacket($pk);
              
    $event->setCancelled();
            }
          }
        }
      }
    i took it from disguise source and i try to edit.

    thanks to someone who make better way and tell to us here.
     
  2. CreeperFace

    CreeperFace Witch

    Messages:
    58
    GitHub:
    creeperface01
    use move event
     
  3. Kenn Fatt

    Kenn Fatt Slime

    Messages:
    82
    GitHub:
    kennfatt
    PlayerMoveEvent?
     
  4. Kenn Fatt

    Kenn Fatt Slime

    Messages:
    82
    GitHub:
    kennfatt
    PHP:
    public function onMove(PlayerMoveEvent $e)
      {
        
    $en $e->getPlayer();
        
    $zombie = new AddEntityPacket();
        
    $zombie->type 32;
        
    $zombie->eid $en->getId();
        
    $zombie->metadata = [];
        
    $zombie->speedX 0;
        
    $zombie->speedY 0;
        
    $zombie->speedZ 0;
        
    $zombie->$en->x;
        
    $zombie->$en->y;
        
    $zombie->$en->z;
        
    $en->dataPacket($zombie);
      }

    My question, how to replace us (Player / Human) as a Zombie.
     
    Last edited: Jan 6, 2017
  5. Muqsit

    Muqsit Chicken

    Messages:
    1,548
    GitHub:
    muqsit
    Set the player invisible and spawn a zombie where the player is. Map the position of the zombie with the position of the player.
     
  6. Kenn Fatt

    Kenn Fatt Slime

    Messages:
    82
    GitHub:
    kennfatt
    okay now i get it. but motion of zombie is really bad, and if we try first person view, we still see the head of zombie in our screen
     
  7. Kenn Fatt

    Kenn Fatt Slime

    Messages:
    82
    GitHub:
    kennfatt
    i try this, maybe someone can give me more information about it and fix what my fault:
    PHP:
    public function onMove(PlayerMoveEvent $e)
      {
        
    $en $e->getPlayer();
        
    $zombie = new AddEntityPacket();
        
    $zombie->type 32;
        
    $zombie->eid $en->getId();
        
    $zombie->metadata = [];
        
    $zombie->speedX 0;
        
    $zombie->speedY 0;
        
    $zombie->speedZ 0;
        
    $zombie->$en->x;
        
    $zombie->$en->y;
        
    $zombie->$en->z;

        
    $move = new MoveEntityPacket();
        
    $move->eid $zombie->eid;
        
    $move->$zombie->x;
        
    $move->$zombie->y;
        
    $move->$zombie->z;
        
    $move->yaw $en->yaw;
        
    $move->pitch $en->pitch;

        
    $remove = new RemoveEntityPacket();
        
    $remove->eid $en->getId();

        
    $motion = new SetEntityMotionPacket();
        
    $motion->eid $zombie->eid;
        
    $motion->motionX $en->motionX;
        
    $motion->motionY $en->motionY;
        
    $motion->motionZ $en->motionZ;

        
    $en->dataPacket($remove);
        
    $en->dataPacket($zombie);
        
    $en->dataPacket($move);
      }

     
  8. HimbeersaftLP

    HimbeersaftLP Fish

    Messages:
    2,402
    GitHub:
    HimbeersaftLP
    Wouldn't it be easier to give the player a Zombie skin?
     
  9. Kenn Fatt

    Kenn Fatt Slime

    Messages:
    82
    GitHub:
    kennfatt
    will the client (player) see their skin changed to Zombie? i think just someone else can see it.
     
  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.