R63 Inventory Fixed!

Page 1 of 3 123 LastLast
Results 1 to 25 of 51
  1. #1
    Sorcerer Supreme toperwin is offline
    Member +Rank
    Jan 2009 Join Date
    313Posts

    R63 Inventory Fixed!

    Many people had questions about the inventory that it didn't load in new swf.
    In the new swf (RELEASE63-32073-31958-201103102307) are the inventory packets changed.
    Here how to fix the loading of the inventory

    Into /HabboHotel/Users/Inventory/InventoryComponent.cs search for:
    PHP Code:
    public ServerMessage SerializeItemInventory() 
    Replace whole void with:
    PHP Code:
            public ServerMessage SerializeItemInventory()
            {
                
    ServerMessage Message = new ServerMessage(140);

                
    Message.AppendStringWithBreak("S");
                
    Message.AppendInt32(1);
                
    Message.AppendInt32(1);
                
    Message.AppendInt32(this.ItemCount);

                
    lock (this.InventoryItems)
                {
                    List<
    UserItem>.Enumerator eItems this.InventoryItems.GetEnumerator();

                    while (
    eItems.MoveNext())
                    {
                        
    eItems.Current.Serialize(Messagetrue);
                    }
                }

                return 
    Message;
            } 
    Into /HabboHotel/Items/UserItem.cs search for:
    PHP Code:
    Message.AppendStringWithBreak(GetBaseItem().Type.ToUpper()); 
    Above it Remove:
    PHP Code:
    Message.AppendInt32(0); 
    Last edited by toperwin; 12-03-11 at 09:22 PM.


  2. #2
    Member Sav. is offline
    MemberRank
    Feb 2011 Join Date
    England.Location
    96Posts

    Re: R63 Inventory Fixed!

    1st post it's the packet structure from the emulator from the coding in the emulator before thanks for this

  3. #3
    Banned rafa95123 is offline
    BannedRank
    May 2009 Join Date
    /home/RaphaLocation
    564Posts

    Re: R63 Inventory Fixed!

    Wow, thanks man ...

    Topic wonderful man, thx ;D

  4. #4
    Banned PEjump2 is offline
    BannedRank
    Jan 2010 Join Date
    The NetherlandsLocation
    2,838Posts

    Re: R63 Inventory Fixed!

    Wait, what about the wall items?
    Cuz they now changed Wall & Room items into one packet with two seperate strings.
    And i now only see Floor items. ( S )
    Last edited by PEjump2; 12-03-11 at 10:06 PM.

  5. #5
    Member samuele309 is offline
    MemberRank
    Mar 2011 Join Date
    52Posts

    Re: R63 Inventory Fixed!

    not fix..

  6. #6
    Sorcerer Supreme toperwin is offline
    Member +Rank
    Jan 2009 Join Date
    313Posts

    Re: R63 Inventory Fixed!

    Quote Originally Posted by PEjump2 View Post
    Wait, what about the wall items?
    Cuz they now changed Wall & Room items into one packet with two seperate strings.
    And i now only see Floor items. ( S )
    Belive or don't,
    But still works ;)

  7. #7
    Banned PEjump2 is offline
    BannedRank
    Jan 2010 Join Date
    The NetherlandsLocation
    2,838Posts

    Re: R63 Inventory Fixed!

    Quote Originally Posted by Quackster View Post
    You have fucked something up then, haha
    No im just statifying that this ain't the fully fix, it can't be.

  8. #8
    Sorcerer Supreme jordynegen11 is offline
    Member +Rank
    Jul 2009 Join Date
    NetherlandsLocation
    398Posts

    Re: R63 Inventory Fixed!

    k but when i buy something i get hotel error

  9. #9
    Sorcerer Supreme toperwin is offline
    Member +Rank
    Jan 2009 Join Date
    313Posts

    Re: R63 Inventory Fixed!

    Quote Originally Posted by jordynegen11 View Post
    k but when i buy something i get hotel error
    Try this:

    Quote Originally Posted by anthony93260
    1. Open CatalogItem.cs and search for
    Code:

    Message.AppendInt32(PixelsCost);

    add this under it:

    Code:

    Message.AppendInt32(0);
    Last edited by toperwin; 13-03-11 at 04:46 PM.

  10. #10
    sexiess is a sin. Subway is offline
    Grand MasterRank
    Jun 2010 Join Date
    2,491Posts

    Re: R63 Inventory Fixed!

    this is a nice fix, thanks much.

  11. #11
    Sorcerer Supreme Emerica is offline
    Member +Rank
    Oct 2010 Join Date
    GermanyLocation
    437Posts

    Re: R63 Inventory Fixed!

    Nice thanks

  12. #12
    Otaku Sojobo is offline
    Grand MasterRank
    Nov 2006 Join Date
    ScotlandLocation
    1,279Posts

    Re: R63 Inventory Fixed!

    Quote Originally Posted by PEjump2 View Post
    Wait, what about the wall items?
    Cuz they now changed Wall & Room items into one packet with two seperate strings.
    And i now only see Floor items. ( S )
    You can skip the wallitem packet if you're a scrub but you'll get strange inventory errors if you do, for instance if you haven't got any flooritems and you buy a wallitem then I don't think you'll see any items in your inventory.

  13. #13
    Member Lts is offline
    MemberRank
    Sep 2010 Join Date
    ItalyLocation
    58Posts

    Re: R63 Inventory Fixed!

    Not working. As soon as I inventory falls ..

  14. #14
    Grand Master MikeDavies is offline
    Grand MasterRank
    Aug 2010 Join Date
    WalesLocation
    629Posts

    Re: R63 Inventory Fixed!

    Does anyone have the proper fix then?

  15. #15
    Member easystuart is offline
    MemberRank
    Aug 2010 Join Date
    ENGLANDLocation
    25Posts

    Re: R63 Inventory Fixed!

    Dosent work my Inventory Still Fails

  16. #16
    Grand Master salah-salah is offline
    Grand MasterRank
    Jan 2009 Join Date
    UndergroundLocation
    716Posts

    Re: R63 Inventory Fixed!

    Thanks for this, You can see this like a half fix:)

  17. #17
    Sorcerer Supreme robertm3363 is offline
    Member +Rank
    Aug 2010 Join Date
    ukLocation
    308Posts

    Re: R63 Inventory Fixed!

    yh... i did it but nope? it didnt work? screenies:

    http://i54.tinypic.com/est7ux.png

  18. #18
    sexiess is a sin. Subway is offline
    Grand MasterRank
    Jun 2010 Join Date
    2,491Posts

    Re: R63 Inventory Fixed!

    Oh, did you upload codes correctly, or not sure?

  19. #19
    Sorcerer Supreme Phosfor is offline
    Member +Rank
    Jul 2010 Join Date
    FranceLocation
    286Posts

    Re: R63 Inventory Fixed!

    he don't work very well ..

  20. #20
    Banned PEjump2 is offline
    BannedRank
    Jan 2010 Join Date
    The NetherlandsLocation
    2,838Posts

    Re: R63 Inventory Fixed!

    Quote Originally Posted by davidon View Post
    Oh, did you upload codes correctly, or not sure?
    You can't upload codes in a emulator dumbass, you only can add 'em.
    ROFL.

  21. #21
    The one and only! Hejula is offline
    Grand MasterRank
    Nov 2008 Join Date
    4,128Posts

    Re: R63 Inventory Fixed!

    What you on about PEjump, you put them on MediaFire, dumb ass! (I really cant take myself seriously when taking the micheal)...

  22. #22
    Sorcerer Supreme robertm3363 is offline
    Member +Rank
    Aug 2010 Join Date
    ukLocation
    308Posts

    Re: R63 Inventory Fixed!

    did i do this right...:
    InventoryComponent.cs
    PHP Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;

    using Uber.Messages;
    using Uber.HabboHotel.Pets;
    using Uber.HabboHotel.GameClients;
    using Uber.HabboHotel.Items;
    using Uber.Storage;

    namespace 
    Uber.HabboHotel.Users.Inventory
    {
        class 
    InventoryComponent
        
    {
            private List<
    UserItemInventoryItems;
            private List<
    PetInventoryPets;
            public 
    uint UserId;

            public 
    int ItemCount
            
    {
                
    get
                
    {
                    return 
    InventoryItems.Count;
                }
            }

            public 
    int PetCount
            
    {
                
    get
                
    {
                    return 
    InventoryPets.Count;
                }
            }

            public 
    InventoryComponent(uint UserId)
            {
                
    this.UserId UserId;
                
    this.InventoryItems = new List<UserItem>();
                
    this.InventoryPets = new List<Pet>();
            }

            public 
    void ClearItems()
            {
                
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                {
                    
    dbClient.AddParamWithValue("userid"UserId);
                    
    dbClient.ExecuteQuery("DELETE FROM user_items WHERE user_id = @userid");
                }

                
    UpdateItems(true);
            }

            public 
    void ClearPets()
            {
                
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                {
                    
    dbClient.AddParamWithValue("userid"UserId);
                    
    dbClient.ExecuteQuery("DELETE FROM user_pets WHERE user_id = @userid AND room_id = 0");
                }

                
    UpdatePets(true);
            }

            public 
    void LoadInventory()
            {
                
    using (TimedLock.Lock(this.InventoryItems))
                {
                    
    this.InventoryItems.Clear();
                    
    DataTable Data null;

                    
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                    {
                        
    dbClient.AddParamWithValue("userid"UserId);
                        
    Data dbClient.ReadDataTable("SELECT id,base_item,extra_data FROM user_items WHERE user_id = @userid");
                    }

                    if (
    Data != null)
                    {
                        foreach (
    DataRow Row in Data.Rows)
                        {
                            
    InventoryItems.Add(new UserItem((uint)Row["id"], (uint)Row["base_item"], (string)Row["extra_data"]));
                        }
                    }
                }

                
    using (TimedLock.Lock(this.InventoryItems))
                {
                    
    this.InventoryPets.Clear();
                    
    DataTable Data null;

                    
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                    {
                        
    dbClient.AddParamWithValue("userid"UserId);
                        
    Data dbClient.ReadDataTable("SELECT * FROM user_pets WHERE user_id = @userid AND room_id <= 0");
                    }

                    if (
    Data != null)
                    {
                        foreach (
    DataRow Row in Data.Rows)
                        {
                            
    InventoryPets.Add(UberEnvironment.GetGame().GetCatalog().GeneratePetFromRow(Row));
                        }
                    }
                }
            }

            public 
    void UpdateItems(bool FromDatabase)
            {
                if (
    FromDatabase)
                {
                    
    LoadInventory();
                }

                
    GetClient().GetMessageHandler().GetResponse().Init(101);
                
    GetClient().GetMessageHandler().SendResponse();
            }

            public 
    void UpdatePets(bool FromDatabase)
            {
                if (
    FromDatabase)
                {
                    
    LoadInventory();
                }

                
    GetClient().SendMessage(SerializePetInventory());
            }

            public 
    Pet GetPet(uint Id)
            {
               
    // lock (this.InventoryPets)
                
    using (TimedLock.Lock(this.InventoryPets))
                {
                    List<
    Pet>.Enumerator Pets this.InventoryPets.GetEnumerator();

                    while (
    Pets.MoveNext())
                    {
                        
    Pet Pet Pets.Current;

                        if (
    Pet.PetId == Id)
                        {
                            return 
    Pet;
                        }
                    }
                }

                return 
    null;
            }

            public 
    UserItem GetItem(uint Id)
            {
                
    using (TimedLock.Lock(this.InventoryItems))
                {
                    List<
    UserItem>.Enumerator Items this.InventoryItems.GetEnumerator();

                    while (
    Items.MoveNext())
                    {
                        
    UserItem Item Items.Current;

                        if (
    Item.Id == Id)
                        {
                            return 
    Item;
                        }
                    }
                }

                return 
    null;
            }

            public 
    void AddItem(uint Iduint BaseItemstring ExtraData)
            {
                
    using (TimedLock.Lock(this.InventoryItems))
                {
                    
    InventoryItems.Add(new UserItem(IdBaseItemExtraData));

                    
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                    {
                        
    dbClient.AddParamWithValue("extra_data"ExtraData);
                        
    dbClient.ExecuteQuery("INSERT INTO user_items (id,user_id,base_item,extra_data) VALUES ('" Id "','" UserId "','" BaseItem "',@extra_data)");
                    }
                }
            }

            public 
    void AddPet(Pet Pet)
            {
                if (
    Pet == null)
                {
                    return;
                }

                
    Pet.PlacedInRoom false;

                
    InventoryPets.Add(Pet);

                
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                {
                    
    dbClient.AddParamWithValue("botid"Pet.PetId);
                    
    dbClient.ExecuteQuery("UPDATE user_pets SET room_id = 0, x = 0, y = 0, z = 0 WHERE id = @botid LIMIT 1");
                }

                
    ServerMessage AddMessage = new ServerMessage(603);
                
    Pet.SerializeInventory(AddMessage);
                
    GetClient().SendMessage(AddMessage);
            }

            public 
    bool RemovePet(uint PetId)
            {
                
    using (TimedLock.Lock(this.InventoryPets))
                {
                    foreach (
    Pet Pet in this.InventoryPets)
                    {
                        if (
    Pet.PetId != PetId)
                        {
                            continue;
                        }

                        
    this.InventoryPets.Remove(Pet);

                        
    ServerMessage RemoveMessage = new ServerMessage(604);
                        
    RemoveMessage.AppendUInt(PetId);
                        
    GetClient().SendMessage(RemoveMessage);

                        return 
    true;
                    }
                }

                return 
    false;
            }

            public 
    void MovePetToRoom(uint PetIduint RoomId)
            {
                if (
    RemovePet(PetId))
                {
                    
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                    {
                        
    dbClient.AddParamWithValue("roomid"RoomId);
                        
    dbClient.AddParamWithValue("petid"PetId);
                        
    dbClient.ExecuteQuery("UPDATE user_pets SET room_id = @roomid, x = 0, y = 0, z = 0 WHERE id = @petid LIMIT 1");
                    }
                }
            }

            public 
    void RemoveItem(uint Id)
            {
                
    GetClient().GetMessageHandler().GetResponse().Init(99);
                
    GetClient().GetMessageHandler().GetResponse().AppendUInt(Id);
                
    GetClient().GetMessageHandler().SendResponse();

                
    using (TimedLock.Lock(this.InventoryItems))
                {
                    
    InventoryItems.Remove(GetItem(Id));

                    
    using (DatabaseClient dbClient UberEnvironment.GetDatabase().GetClient())
                    {
                        
    dbClient.ExecuteQuery("DELETE FROM user_items WHERE id = '" Id "' LIMIT 1");
                    }
                }
            }

                    public 
    ServerMessage SerializeItemInventory()
            {
                
    ServerMessage Message = new ServerMessage(140);

                
    Message.AppendStringWithBreak("S");
                
    Message.AppendInt32(1);
                
    Message.AppendInt32(1);
                
    Message.AppendInt32(this.ItemCount);

                
    lock (this.InventoryItems)
                {
                    List<
    UserItem>.Enumerator eItems this.InventoryItems.GetEnumerator();

                    while (
    eItems.MoveNext())
                    {
                        
    eItems.Current.Serialize(Messagetrue);
                    }
                }

                return 
    Message;
            }  
            {
                
    ServerMessage Message = new ServerMessage(140);
                
    Message.AppendInt32(this.ItemCount);

                
    using (TimedLock.Lock(this.InventoryItems))
                {
                    List<
    UserItem>.Enumerator eItems this.InventoryItems.GetEnumerator();

                    while (
    eItems.MoveNext())
                    {
                        
    eItems.Current.Serialize(Messagetrue);
                    }
                }

                
    Message.AppendInt32(this.ItemCount);
                return 
    Message;
            }

            public 
    ServerMessage SerializePetInventory()
            {
                
    ServerMessage Message = new ServerMessage(600);
                
    Message.AppendInt32(InventoryPets.Count);

                foreach (
    Pet Pet in InventoryPets)
                {
                    
    Pet.SerializeInventory(Message);
                }

                return 
    Message;
            }

            private 
    GameClient GetClient()
            {
                return 
    UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(UserId);
            }
        }

    useritems.cs
    PHP Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using Uber.Messages;
    using Uber.HabboHotel.GameClients;

    namespace 
    Uber.HabboHotel.Items
    {
        class 
    UserItem
        
    {
            public 
    uint Id;
            public 
    uint BaseItem;
            public 
    string ExtraData;

            public 
    UserItem(uint Iduint BaseItemstring ExtraData)
            {
                
    this.Id Id;
                
    this.BaseItem BaseItem;
                
    this.ExtraData ExtraData;
            }

            public 
    void Serialize(ServerMessage MessageBoolean Inventory)
            {
                
    Message.AppendUInt(Id);
                
    Message.AppendStringWithBreak(GetBaseItem().Type.ToUpper());
                
    Message.AppendUInt(Id);
                
    Message.AppendInt32(GetBaseItem().SpriteId);

                if (
    GetBaseItem().Name.Contains("a2"))
                {
                    
    Message.AppendInt32(3);
                }
                else if (
    GetBaseItem().Name.Contains("wallpaper"))
                {
                    
    Message.AppendInt32(2);
                }
                else if (
    GetBaseItem().Name.Contains("landscape"))
                {
                    
    Message.AppendInt32(4);
                }
                else
                {
                    
    Message.AppendInt32(0);
                }

                
    Message.AppendStringWithBreak(ExtraData);
                
    Message.AppendBoolean(GetBaseItem().AllowRecycle);
                
    Message.AppendBoolean(GetBaseItem().AllowTrade);
                
    Message.AppendBoolean(GetBaseItem().AllowInventoryStack);
                
    Message.AppendBoolean(UberEnvironment.GetGame().GetCatalog().GetMarketplace().CanSellItem(this));
                
    Message.AppendInt32(-1);

                if (
    GetBaseItem().Type.ToLower() == "s")
                {
                    
    Message.AppendStringWithBreak("");
                    
    Message.AppendInt32(-1);
                }
            }

            public 
    Item GetBaseItem()
            {
                return 
    UberEnvironment.GetGame().GetItemManager().GetItem(BaseItem);
            }
        }



    ---------- Post added at 07:59 PM ---------- Previous post was at 06:39 PM ----------

    BUMP could anyone help with the above?
    Last edited by robertm3363; 31-03-11 at 07:57 PM.

  23. #23
    Elite Member Daviex is offline
    Member +Rank
    Aug 2007 Join Date
    108Posts

    Re: R63 Inventory Fixed!

    for Wall: It's not -1 but 1, because the code finish with "IM" ;)

  24. #24
    Member iPots is offline
    MemberRank
    Aug 2010 Join Date
    74Posts

    Re: R63 Inventory Fixed!

    Same, I recoded the things you said, but still no work. Thanks for the post though.

    Also, can anyone upload a full working r63 emu with inv fix and all? TY

  25. #25
    Elite Member winston1888 is offline
    Member +Rank
    Feb 2011 Join Date
    YesLocation
    101Posts

    Re: R63 Inventory Fixed!

    tnx i need it :D



Page 1 of 3 123 LastLast

Advertisement