Exemplo n.º 1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Pet related item inventory movement
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public static byte[] MoveItemPet(int itemid, byte f_slot, byte t_slot, CLGameServer.WorldMgr.pet_obj o, short info, string action)
        {
            PacketWriter Writer = new PacketWriter();

            Writer.Create(OperationCode.SERVER_ITEM_MOVE);
            switch (action)
            {
            case "MOVE_TO_PET":
            case "MOVE_FROM_PET":
                Writer.Byte(1);
                Writer.Byte(o.Slots);
                Writer.DWord(itemid);
                Writer.Byte(f_slot);
                Writer.Byte(t_slot);
                break;

            case "MOVE_INSIDE_PET":
                Writer.Byte(1);
                Writer.Byte(0x10);
                Writer.DWord(itemid);
                Writer.Byte(f_slot);
                Writer.Byte(t_slot);
                Writer.Word(info);
                break;
            }
            return(Writer.GetBytes());
        }
        ///////////////////////////////////////////////////////////////////////////
        // Despawn Pet
        ///////////////////////////////////////////////////////////////////////////
        public static byte[] PetSpawn(int petid, byte type, CLGameServer.WorldMgr.pet_obj o)
        {
            PacketWriter Writer = new PacketWriter();

            Writer.Create(OperationCode.SERVER_PLAYER_SPAWN_PET); //Select Opcode
            Writer.DWord(petid);                                  //Pet ID
            switch (type)
            {
            case 1:
                //Despawn pet
                Writer.Byte(1);
                break;

            case 2:
                //Rename pet respawn
                Writer.Byte(5);
                Writer.Text(o.Petname);
                break;

            case 3:
                //Attack pet respawn for exp info
                Writer.Byte(3);          //Static
                Writer.LWord(o.exp);     //New exp
                Writer.DWord(o.OwnerID); //Owner id
                break;
            }
            return(Writer.GetBytes());
        }
Exemplo n.º 3
0
        public static byte[] Pet_Information(int id, int model, int hp, int charid, CLGameServer.WorldMgr.pet_obj o)
        {
            PacketWriter Writer = new PacketWriter();

            Writer.Create(OperationCode.SERVER_PET_INFORMATION); //Select opcode
            Writer.DWord(id);                                    //Horse ID
            Writer.DWord(model);                                 //Horse Model
            Writer.DWord(hp);                                    //Horse HP
            Writer.DWord(hp);                                    //Horse SEC HP
            Writer.Byte(0);                                      //Static byte ?
            return(Writer.GetBytes());
        }
        ///////////////////////////////////////////////////////////////////////////
        // Grab pet information packet
        ///////////////////////////////////////////////////////////////////////////
        public static byte[] Pet_Information_grab(CLGameServer.WorldMgr.pet_obj o, byte slot)
        {
            PacketWriter Writer = new PacketWriter();

            Writer.Create(OperationCode.SERVER_PET_INFORMATION);
            try
            {
                //////////////////////////////////////////////////////////////////////////////////////
                // Grabpet structure
                //////////////////////////////////////////////////////////////////////////////////////
                Writer.DWord(o.UniqueID);                   //Unique ID
                Writer.DWord(o.Model);                      //Pet Model
                Writer.DWord(0x00006D);                     //Settings
                Writer.DWord(0x00006D);                     //Settings
                Writer.DWord(0x000047);                     //Settings 0x47 grab pet active 0 disabled
                if (o.Petname != "No name")                 //###############
                {
                    Writer.Text(o.Petname);                 // Name region
                }
                else                                        //
                {
                    Writer.Word(0);                         //###############
                }
                Writer.Byte(o.Slots);                       //Slots count inventory pet
                //////////////////////////////////////////////////////////////////////////////////////
                // Grabpet item inventory
                //////////////////////////////////////////////////////////////////////////////////////
                DB ms = new DB("SELECT * FROM char_items WHERE owner='" + o.OwnerID + "' AND pet_storage_id='" + o.UniqueID + "'");
                Writer.Byte(ms.Count());
                using (System.Data.SqlClient.SqlDataReader reader = ms.Read())
                {
                    while (reader.Read())
                    {
                        Item.AddItemPacket(Writer, reader.GetByte(5), reader.GetInt32(2), reader.GetByte(4), reader.GetInt16(6), reader.GetInt32(7), reader.GetInt32(0), reader.GetInt32(9), reader.GetInt32(30));
                    }
                }
                ms.Close();
                //////////////////////////////////////////////////////////////////////////////////////
                // Other
                //////////////////////////////////////////////////////////////////////////////////////
                Writer.DWord(o.OwnerID);                    //Character ID
                Writer.Byte(slot);                          //Slot location of the pet
                //////////////////////////////////////////////////////////////////////////////////////
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
            return(Writer.GetBytes());
        }