Example #1
0
        public static MovementInfo RecvStartMoving(Packet p)
        {
            p.Skip(2);
            int charid = p.ReadInt();

            short from_x = p.ReadShort();
            short from_y = p.ReadShort();
            byte from_z = p.ReadByte();

            short to_x = p.ReadShort();
            short to_y = p.ReadShort();
            byte to_z = p.ReadByte();
            short direction = p.ReadShort();

            MovementInfo mi = new MovementInfo
            {
                PacketID = 1,
                CharacterID = charid,
                FromX = from_x,
                FromY = from_y,
                FromZ = from_z,
                ToX = to_x,
                ToY = to_y,
                ToZ = to_z,
                Rotation = direction
            };

            return mi;
        }
Example #2
0
        public static MovementInfo RecvStopMoving(Packet p)
        {
            p.Skip(2);
            int charid = p.ReadInt();

            short from_x = p.ReadShort();
            short from_y = p.ReadShort();
            byte from_z = p.ReadByte();

            MovementInfo mi = new MovementInfo
            {
                PacketID = 3,
                CharacterID = charid,
                FromX = from_x,
                FromY = from_y,
                FromZ = from_z,
            };

            return mi;
        }
Example #3
0
        public static byte[] SendStartMoving(MovementInfo mo, byte movingspeed)
        {
            Packet p = new Packet(200);
            p.WriteByte(0);
            p.WriteInt(mo.CharacterID);
            p.WriteShort(mo.FromX);
            p.WriteShort(mo.FromY);
            p.WriteByte(mo.FromZ);
            p.WriteShort(mo.ToX);
            p.WriteShort(mo.ToY);
            p.WriteByte(mo.ToZ);
            p.WriteShort(mo.Rotation);
            p.WriteHexString("00");
            p.WriteByte(11 + movingspeed);
            p.WriteHexString("00");

            return p.GetWrittenBuffer(PacketIds.SendStartMoving);
        }
Example #4
0
 public static byte[] SendStopMoving(MovementInfo mo)
 {
     Packet p = new Packet(200);
     p.WriteByte(0);
     p.WriteInt(mo.CharacterID);
     p.WriteShort(mo.FromX);
     p.WriteShort(mo.FromY);
     p.WriteByte(mo.FromZ);
     p.WriteByte(0);
     return p.GetWrittenBuffer(PacketIds.SendStopMoving);
 }
Example #5
0
 public static byte[] SendMonsterMove(MovementInfo mi)
 {
     Packet p = new Packet(200);
     p.WriteHexString("0A 40 16 00 00 39 05 00 00 03");
     p.WriteShort(mi.FromX);
     p.WriteShort(mi.FromY);
     p.WriteByte(mi.FromZ);
     p.WriteShort(mi.ToX);
     p.WriteShort(mi.ToY);
     p.WriteByte(mi.ToZ);
     p.WriteShort(mi.Rotation);
     p.WriteHexString("15 03 00 00");
     return p.GetWrittenBuffer();
 }
Example #6
0
 public static byte[] SendMonsterStop(MovementInfo mi)
 {
     Packet p = new Packet(200);
     p.WriteHexString("0C 40 0D 00 00 39 05 00 00 03");
     p.WriteShort(mi.FromX);
     p.WriteShort(mi.FromY);
     p.WriteHexString("00 15 03");
     return p.GetWrittenBuffer();
 }
Example #7
0
 public ClientMovementInfoEventArgs(MovementInfo MI)
 {
     this.mi = MI;
 }
Example #8
0
        public override MovementInfo OnMove(Character target)
        {
            if (Alive && target.Alive)
            {
                if (GetDistance(Position.X, Position.Y, target.Position.X, target.Position.Y) <= AttackRange + 15)
                {
                    Attacking = true;
                }

                MovementInfo move = new MovementInfo();

                move.FromX = (short)Position.X;
                move.FromY = (short)Position.Y;
                move.FromZ = 0;

                move.CharacterID = MonsterID;
                move.ToX = (short)target.Position.X;
                move.ToY = (short)target.Position.Y;
                move.ToZ = 0;

                double rotation = Math.Atan2(move.ToY - move.FromX, move.ToX - move.FromX);
                rotation = rotation * 180 / Math.PI;
                move.Rotation = (int)Math.Abs(rotation);

                return move;
            }
            else
                return base.OnMove(target);
        }
Example #9
0
        public static byte[] SendStartMoving(MovementInfo mo, Character ch)
        {
            Packet p = new Packet(200);
            p.WriteByte(0);
            p.WriteInt(ch.CharacterId);
            p.WriteShort(mo.FromX);
            p.WriteShort(mo.FromY);
            p.WriteByte(mo.FromZ);
            p.WriteShort(mo.ToX);
            p.WriteShort(mo.ToY);
            p.WriteByte(mo.ToZ);
            p.WriteShort(mo.Rotation);
            p.WriteHexString("00");
            p.WriteByte(11 + ch.MovingSpeed);
            if (ch.UsingFastMovement())
                p.WriteHexString("06");
            else
                p.WriteHexString("00");

            return p.GetWrittenBuffer(PacketIds.SendStartMoving);
        }
Example #10
0
 public static byte[] SendMonsterStopMoving(BaseEntity ent , MovementInfo mi)
 {
     Pet pet = null;
     Monster m = null;
     Packet p = new Packet(200);
     if (ent is Monster)
     {
         m = ent as Monster;
         p.WriteHexString("00");
         p.WriteInt(m.MonsterID);
         p.WriteByte((byte)m.Type);
         p.WriteShort(mi.FromX);
         p.WriteShort(mi.FromY);
         p.WriteHexString("00 14");
         p.WriteByte(m.MovementSpeed);
     }
     if (ent is Pet)
     {
         pet = ent as Pet;
         p.WriteHexString("00");
         p.WriteInt(pet.PetID);
         p.WriteByte((byte)pet.Type);
         p.WriteShort(mi.FromX);
         p.WriteShort(mi.FromY);
         p.WriteHexString("00 00 03");
     }
     return p.GetWrittenBuffer(PacketIds.SendMonsterStopMoving);
 }
Example #11
0
 public static byte[] SendMonsterKeepMoving(BaseEntity ent, MovementInfo mi)
 {
     Pet pet = null;
     Packet p = new Packet(200);
     if (ent is Pet)
     {
         pet = ent as Pet;
         p.WriteHexString("00");
         p.WriteInt(pet.PetID);
         p.WriteByte((byte)pet.Type);
         p.WriteShort(mi.FromX);
         p.WriteShort(mi.FromY);
         p.WriteByte(mi.FromZ);
         p.WriteShort(mi.ToX);
         p.WriteShort(mi.ToY);
         p.WriteByte(mi.ToZ);
         p.WriteInt(mi.Rotation);
         p.WriteHexString("00 00");
     }
     return p.GetWrittenBuffer(PacketIds.SendMonsterKeepMoving);
 }