Beispiel #1
0
        public SpawnMonster(Monster m) : base(PacketCmdS2C.PKT_S2C_ObjectSpawn)
        {

            buffer.Write(m.getNetId());
            buffer.Write((short)345);
            //
            buffer.Write((short)343);

            buffer.Write((byte)99);// 99 for jungle monster, 3 for minion
            buffer.Write(m.getNetId());
            buffer.Write(m.getNetId());
            buffer.Write((byte)64);
            buffer.Write((float)m.getX()); //x
            buffer.Write((float)m.getZ()); //z
            buffer.Write((float)m.getY()); //y
            buffer.Write((float)m.getX()); //x
            buffer.Write((float)m.getZ()); //z
            buffer.Write((float)m.getY()); //y
            buffer.Write((float)m.getFacing().X); //facing x
            buffer.Write((float)m.getMap().getHeightAtLocation(m.getFacing().X, m.getFacing().Y)); //facing z
            buffer.Write((float)m.getFacing().Y); //facing y

            var str = m.getName();
            foreach (var b in Encoding.Default.GetBytes(str)) // starting with a string -> Dragon6.1.1
                buffer.Write(b);
            buffer.fill(0, 64 - str.Length);

            foreach (var b in Encoding.Default.GetBytes(m.getModel())) // starting with a string -> Dragon
                buffer.Write(b);
            buffer.fill(0, 64 - m.getModel().Length);

            str = m.getName();
            foreach (var b in Encoding.Default.GetBytes(str)) // starting with a string -> Dragon6.1.1
                buffer.Write(b);
            buffer.fill(0, 64 - str.Length);

            buffer.fill(0, 64); // empty


            buffer.Write((int)300);
            buffer.fill(0, 12);
            buffer.Write((int)1); //campId 1
            buffer.Write((int)100);
            buffer.Write((int)74);
            buffer.Write((long)1);
            buffer.Write((float)115.0066f);
            buffer.Write((byte)0);

            //
            buffer.fill(0, 13);
            buffer.Write((sbyte)-128); // always 0x80/-128
            buffer.Write((byte)63); // always 0x3F/63
            buffer.fill(0, 13);
            buffer.Write((byte)3); //type 3=champ/jungle; 2=minion
            buffer.Write((int)13337);
            buffer.Write((float)m.getX()); //x
            buffer.Write((float)m.getY());  //y
            buffer.Write((float)-0.8589599f);  // rotation1 from -1 to 1
            buffer.Write((float)0.5120428f); //rotation2 from -1 to 1
        }