Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Plus Emulation [Revision 2] FIXES!

Status
Not open for further replies.
Newbie Spellweaver
Joined
Oct 10, 2010
Messages
35
Reaction score
4
Hello guys,

today I'm creating a new thread because the old one was closed. In this thread you can post bugs and fixes. After I test your fixes I will update this post with the working fixes.



#1: Bot speech bubble
Find in RoomUser.cs:
Code:
messageB = new InvokedChatMessage(this, Message, Shout, 0,count);

Replace with:
Code:
messageB = new InvokedChatMessage(this, Message, Shout, (IsPet ? 0 : 2),count);

Proof:
aJBLx08 - Plus Emulation [Revision 2] FIXES! - RaGEZONE Forums
Credits: HillBilly
#2: Alert command
In ChatCommandHandler.cs in #region Moderation Commands add:
Code:
case "alert":
                    {
                        if (Session.GetHabbo().HasCmd("alert"))
                        {
                            if (Params[1] == null || Params[2] == null)
                            {
                                Session.SendNotif("You left something empty.");
                                return true;
                            }
                            string TargetUser = null;
                            GameClient TargetClient = null;

                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);
                            Room TargetRoom = TargetClient.GetHabbo().CurrentRoom;

                            if (TargetClient == null)
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }

                            TargetClient.SendNotif(Params[2] + " -" + Session.GetHabbo().Username);
                        }
                        return true;
                    }

Run:
Code:
INSERT INTO .`fuse_cmds` (`id`, `command`, `rank`, `params`, `description`) VALUES ('82', 'alert', '5', '%name% %message%', 'Alert a user with a specific message');

Proof:
6d7IM9E - Plus Emulation [Revision 2] FIXES! - RaGEZONE Forums
Credits: HillBilly
#3: Minimail
Find in GameClient.cs:
Code:
MiniMail.AppendInt32(1);

Replace with:
Code:
MiniMail.AppendInt32(0);

Proof:
vqleSgk - Plus Emulation [Revision 2] FIXES! - RaGEZONE Forums
Credits: BloodRaven
#4: Pets
Find in Rooms.cs:
Code:
internal void PlacePet()

Replace with:
Code:
internal void PlacePet() //colocar pet
        {
            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (Room == null || (Room.AllowPets == 0 && !Room.CheckRights(Session, true)) || !Room.CheckRights(Session, true))
            {
                return;
            }

            uint PetId = Request.PopWiredUInt();

            Pet Pet = Session.GetHabbo().GetInventoryComponent().GetPet(PetId);

            if (Pet == null || Pet.PlacedInRoom)
            {
                return;
            }

            int X = Request.PopWiredInt32();
            int Y = Request.PopWiredInt32();

            if (!Room.GetGameMap().CanWalk(X, Y, false))
            {
                return;
            }


            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("UPDATE bots SET room_id = '" + Room.RoomId + "', x = '" + X + "', y = '" + Y + "' WHERE id = '" + PetId + "'");
            }

            Pet.PlacedInRoom = true;
            Pet.RoomId = Room.RoomId;

            List<RandomSpeech> RndSpeechList = new List<RandomSpeech>();
            List<BotResponse> BotResponse = new List<Silverwave.HabboHotel.RoomBots.BotResponse>();
            RoomUser PetUser = Room.GetRoomUserManager().DeployBot(new RoomBot(Pet.PetId, Convert.ToUInt32(Pet.OwnerId), Pet.RoomId, AIType.Pet, "freeroam", Pet.Name, "", Pet.Look, X, Y, 0, 0, 0, 0, 0, 0, ref RndSpeechList, ref BotResponse, "", 0), Pet);

            Session.GetHabbo().GetInventoryComponent().MovePetToRoom(Pet.PetId);

            if (Pet.DBState != DatabaseUpdateState.NeedsInsert)
                Pet.DBState = DatabaseUpdateState.NeedsUpdate;

            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                Room.GetRoomUserManager().SavePets(dbClient);

            Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializePetInventory());

        }

Find:
Code:
dbClient.setQuery("SELECT * FROM bots WHERE room_id = " + RoomId);

Replace with:
Code:
dbClient.setQuery("SELECT * FROM bots WHERE room_id = " + RoomId + " AND ai_type = 'generic'");

Find in RoomUser.cs:
Code:
internal void Serialize(ServerMessage Message, bool gotPublicRoom)

Replace with:
Code:
internal void Serialize(ServerMessage Message, bool gotPublicRoom)
        {
            if (Message == null)
                return;

            if (IsSpectator)
                return;

            if (IsBot)
            {
                Message.AppendInt32(BotAI.BaseId);
                Message.AppendString(BotData.Name);
                Message.AppendString(BotData.Motto);
                if (BotData.AiType == AIType.Pet)
                    if (PetData.HaveSaddle == Convert.ToBoolean(2))
                    {
                        Message.AppendString(string.Concat(new object[] { this.BotData.Look.ToLower(), " 3 4 10 0 2 ", this.PetData.PetHair, " ", this.PetData.HairDye, " 3 ", this.PetData.PetHair, " ", this.PetData.HairDye }));
                    }
                    else if (PetData.HaveSaddle == Convert.ToBoolean(1))
                    {
                        Message.AppendString(string.Concat(new object[] { this.BotData.Look.ToLower(), " 3 2 ", this.PetData.PetHair, " ", this.PetData.HairDye, " 3 ", this.PetData.PetHair, " ", this.PetData.HairDye, " 4 9 0" }));
                    }
                    else
                    {
                        Message.AppendString(string.Concat(new object[] { this.BotData.Look.ToLower(), " 2 2 ", this.PetData.PetHair, " ", this.PetData.HairDye, " 3 ", this.PetData.PetHair, " ", this.PetData.HairDye }));
                    }

                    //Message.AppendString(BotData.Look.ToLower() + ((PetData.HaveSaddle) ? " 3 2 " + PetData.PetHair + " " + PetData.HairDye + " 3 " + PetData.PetHair + " " + PetData.HairDye + " 4 9 0" : " 2 2 " + PetData.PetHair + " " + PetData.HairDye + " 3 " + PetData.PetHair + " " + PetData.HairDye + ""));
                else
                    Message.AppendString(BotData.Look.ToLower());
                Message.AppendInt32(VirtualId);
                Message.AppendInt32(X);
                Message.AppendInt32(Y);
                Message.AppendString(TextHandling.GetString(Z));
                Message.AppendInt32(0);
                Message.AppendInt32((BotData.AiType == AIType.Generic) ? 4 : 2);

                if (BotData.AiType == AIType.Pet)
                {

                    Message.AppendInt32(PetData.Type);
                    Message.AppendInt32(PetData.OwnerId); // userid
                    Message.AppendString(PetData.OwnerName); // username
                    Message.AppendInt32(1);
                    Message.AppendBoolean(PetData.HaveSaddle);
                    Message.AppendBoolean(RidingHorse);
                    Message.AppendInt32(0);
                    Message.AppendInt32(0);
                    Message.AppendString("");
                }
                else
                {
                    Message.AppendString(BotData.Gender.ToLower()); // ?
                    Message.AppendInt32(BotData.OwnerId); // ? 
                    Message.AppendString(SilverwaveEnvironment.GetGame().GetClientManager().GetNameById(BotData.OwnerId)); // Owner name
                    Message.AppendInt32(4);
                    Message.AppendShort(1);
                    Message.AppendShort(2);
                    Message.AppendShort(5);
                    Message.AppendShort(4);
                }
            }
            else if (!IsBot && GetClient() != null && GetClient().GetHabbo() != null)
            {
                Group Group = SilverwaveEnvironment.GetGame().GetGroupManager().GetGroup(GetClient().GetHabbo().FavouriteGroup);

                Users.Habbo User = GetClient().GetHabbo();
                Message.AppendInt32(User.Id);
                Message.AppendString(User.Username);
                Message.AppendString(User.Motto);
                Message.AppendString(User.Look);
                Message.AppendInt32(VirtualId);
                Message.AppendInt32(X);
                Message.AppendInt32(Y);
                Message.AppendString(TextHandling.GetString(Z));
                Message.AppendInt32(0);
                Message.AppendInt32(1);
                Message.AppendString(User.Gender.ToLower());
                if (Group != null)
                {
                    Message.AppendInt32(Group.Id);
                    Message.AppendInt32(0);
                    Message.AppendString(Group.Name);
                }
                else
                {
                    Message.AppendInt32(0);
                    Message.AppendInt32(0);
                    Message.AppendString("");
                }
                Message.AppendString("");
                //Message.AppendBoolean(false);
                Message.AppendInt32(User.ActivityPoints);
                Message.AppendBoolean(false);
                //Message.AppendBoolean(true);

                /*if (gotPublicRoom)
                    Message.AppendString("ch=s01/250,56,49");
                else
                    Message.AppendString(string.Empty);
                */

            }
        }

Find and edit:
Code:
CheckPetNameMessageEvent = and change it to public const int CheckPetNameMessageEvent = 3913; //akl
GetSellablePetBreedsMessageEvent = and change it to public const int GetSellablePetBreedsMessageEvent = 3780; //akl
(Credits: BloodRaven (Headers))

Proof:
vy3osCW - Plus Emulation [Revision 2] FIXES! - RaGEZONE Forums
-> More: Coming Soon! <-


Buglist:
Code:
* Chatlogs
 

Attachments

You must be registered for see attachments list
Last edited:
Junior Spellweaver
Joined
Dec 31, 2013
Messages
198
Reaction score
25
Add all the old fixes, they I'll eventually go far down the list and hard to find.
 
Junior Spellweaver
Joined
Jan 31, 2009
Messages
162
Reaction score
44
Buglist:
Code:
* Groups: When buying, do not appear in the room.
* Wired: Many effects do not work.
* FastFood: Even configured, displays errors: "gamecenter.game_crashed".
* SnowStorm: Existing structure, missing mysql tables.
* Horse: Make a real fix on OnCycle()
 
Newbie Spellweaver
Joined
May 18, 2013
Messages
74
Reaction score
7
I don't know if this is way correct for this fix, i'm newbie in C#. I dont know too if someone has posted this fix.
But the Wired Trigger triggeronusersay dont works for me and i fix with this:
In RoomUser.cs search for:

PHP:
SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.SOCIAL_CHAT);
And before this add:
PHP:
if (mRoom.GetWiredHandler().ExecuteWired(Wired.WiredItemType.TriggerUserSaysKeyword, this, Message))
                    return;

Before:
After:
 
Newbie Spellweaver
Joined
Oct 10, 2010
Messages
35
Reaction score
4
I'll be waiting, by the way, thanks! :)

Find in Groups.cs:
Code:
Room.Group = Group;

Add after it:
Code:
            Room.GroupId = Group.Id;

Find in Room.cs:
Code:
if(Room.GroupId > 0)

Repleace the whole if(){} with:
Code:
         if(Room.RoomData.GroupId > 0)
            {
                GetResponse().AppendInt32(Room.RoomData.Group.Id);
                GetResponse().AppendString(Room.RoomData.Group.Name);
                GetResponse().AppendString(Room.RoomData.Group.Badge);
                Response.AppendString("");
            }

Credits: Spot Ify: Enjoy!
 
Newbie Spellweaver
Joined
May 20, 2013
Messages
51
Reaction score
13
Something was wrong with the staff alert command but I fixed it.
Here;
#region Staff Alert :)sa) case "sa":
{
if (Session.GetHabbo().HasCmd("sa"))
{
string Message = "Message From Staff: \n" + MergeParams(Params, 1) + "\n\n - " + Session.GetHabbo().Username;
ServerMessage message = new ServerMessage(Outgoing.BroadcastMessage);
message.AppendString(Message);
SilverwaveEnvironment.GetGame().GetClientManager().StaffAlert(message);

SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "StaffAlert", "Staff alert [" + Message + "]");
}
return true;
}
 
Last edited:
git bisect -m
Loyal Member
Joined
Sep 2, 2011
Messages
2,171
Reaction score
916
New Fix;
Its a GiveRank Command (Its a good Command)
Go to ChatCommandHandler.cs and put that:
PHP Code:
PHP:
#regionGive rank (:rank)
                case "rank":
                case "giverank":
                    {
                        if (Session.GetHabbo().HasCmd("rank"))
                        {
                            if (Params.Length < 1)
                            {
                                Session.SendNotif("You must include a Valid Rank!");
                                return true;
                            }
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                             using (IQueryAdapter dbClient = sul0wnEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                dbClient.setQuery("UPDATE users SET rank = VALUES " + Params[2] + " WHERE username = '" + Params[1] + "' LIMIT 1" );
                                dbClient.runQuery();
                                }
                            TargetClient = sul0wnEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                sul0wnEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Rank", "Rank Give To User [" + Params[2] + "]");
                                TargetClient.SendNotif("You Have Received a Rank , Reenter in the Hotel");
                                return true;
                            }
                            else
                            {
                                Session.SendNotif("User was not found");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion
Query:
Code:
Code:
INSERT INTO `fuse_cmds` (`id`, `command`, `rank`, `params`, `description`) VALUES
(87, 'giverank', 8, '%rank% %user', 'Give rank to a user');
Im trying to Fix the Gifts, but, I really think the error its in the insert in the items_user (Invetory)
He create the item in user_presents;

Probabbily fix to Gifts:
PHP Code:
PHP:
                                    Receiver.GetHabbo().GetInventoryComponent().SendFloorInventoryUpdate();
                                        Receiver.GetMessageHandler().GetResponse().Init(Outgoing.SendPurchaseAlert);
                                        Receiver.GetMessageHandler().GetResponse().AppendInt32(1);
                                        Receiver.GetMessageHandler().GetResponse().AppendInt32(1);
                                        Receiver.GetMessageHandler().GetResponse().AppendInt32(1);
                                        Receiver.GetMessageHandler().GetResponse().AppendInt32(u.Id);
                                        Receiver.GetMessageHandler().SendResponse();
The packet structre are wrong, this its the correct.

Put this on GameClientMessageHandler:
PHP Code:
PHP:
 internal void OpenPresent()
        {
            Room room = sul0wnEnvironment.GetGame().GetRoomManager().GetRoom(this.Session.GetHabbo().CurrentRoomId);
            if ((room != null) && room.CheckRights(this.Session, true))
            {
                uint pId = this.Request.PopWiredUInt();
                RoomItem item = room.GetRoomItemHandler().GetItem(pId);
                if (item != null)
                {
                    IQueryAdapter adapter;
                    item.MagicRemove = true;
                    ServerMessage message = new ServerMessage(Outgoing.UpdateItemOnRoom);
                    item.Serialize(message, room.OwnerId);
                    room.SendMessage(message);
                    DataRow row = null;
                    using (adapter = sul0wnEnvironment.GetDatabaseManager().getQueryreactor())
                    {
                        adapter.setQuery("SELECT * FROM user_gifts WHERE gift_id = " + item.Id);
                        row = adapter.getRow();

                    }
                    if (row == null)
                    {
                        room.GetRoomItemHandler().RemoveFurniture(this.Session, item.Id);
                    }
                    else
                    {
                        Item item2 = sul0wnEnvironment.GetGame().GetItemManager().GetItem(Convert.ToUInt32(row["item_id"]));
                        if (item2 == null)
                        {
                            room.GetRoomItemHandler().RemoveFurniture(this.Session, item.Id);
                        }
                        else if (item2.Type.ToString().ToLower().Equals("s") && (item2.InteractionType != InteractionType.teleport))
                        {
                            room.GetRoomItemHandler().RemoveFurniture(this.Session, item.Id);

                            using (adapter = sul0wnEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                adapter.runFastQuery(string.Concat(new object[] { "UPDATE items SET base_id = '", row["item_id"], "' WHERE item_id = ", item.Id }));

                                adapter.setQuery(string.Concat(new object[] { "UPDATE items_extradata SET data = '" + row["extradata"] + "' WHERE item_id = " + item.Id }));
                                adapter.addParameter("extradata", row["extradata"]);
                                adapter.runQuery();

                                adapter.runFastQuery("DELETE FROM user_gifts WHERE gift_id = " + item.Id);
                            }

                            string s = item.GetBaseItem().Type.ToString().ToLower();
                            string extraData = row["extradata"].ToString();
                            item.BaseItem = Convert.ToUInt32(row["item_id"]);
                            item.refreshItem();
                            item.ExtraData = extraData;
                            if (!room.GetRoomItemHandler().SetFloorItem(this.Session, item, item.GetX, item.GetY, item.Rot, true, false, true))
                            {
                                this.Session.SendNotif("Failed to create your gift!");
                            }
                            else
                            {
                                this.Response.Init(Outgoing.OpenGift);
                                this.Response.AppendString(item2.Type.ToString());
                                this.Response.AppendInt32(item2.SpriteId);
                                this.Response.AppendString(item2.Name);
                                this.Response.AppendInt32(item.Id);
                                this.Response.AppendString(s);
                                this.Response.AppendBoolean(true);
                                this.Response.AppendString(extraData);
                                this.SendResponse();
                            }
                        }
                        else
                        {
                            room.GetRoomItemHandler().RemoveFurniture(this.Session, item.Id);
                            using (adapter = sul0wnEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                adapter.runFastQuery("DELETE FROM user_gifts WHERE gift_id = " + item.Id);
                            }
                            this.Session.GetMessageHandler().GetResponse().Init(Outgoing.SendPurchaseAlert);
                            this.Session.GetMessageHandler().GetResponse().AppendInt32(1);
                            int i = 2;
                            if (item2.Type.ToString().ToLower().Equals("s"))
                            {
                                if (item2.InteractionType == InteractionType.pet)
                                {
                                    i = 3;
                                }
                                else
                                {
                                    i = 1;
                                }
                            }
                            this.Session.GetMessageHandler().GetResponse().AppendInt32(i);
                            List<UserItem> list = sul0wnEnvironment.GetGame().GetCatalog().DeliverItems(this.Session, item2, (int)row["amount"], (string)row["extradata"], 0, 0);
                            this.Session.GetMessageHandler().GetResponse().AppendInt32(list.Count);
                            foreach (UserItem item3 in list)
                            {
                                this.Session.GetMessageHandler().GetResponse().AppendInt32(item3.Id);
                            }
                            this.Session.GetMessageHandler().SendResponse();
                            this.Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
                            //this.Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateInventary);
                            //this.Session.GetMessageHandler().SendResponse();
                        }
                    }
                }
            }
            this.Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateInventary);
            this.Session.GetMessageHandler().SendResponse();
        }
The second part of fix based on marloncolhado swift fix.
OBS: replace sul0wn to silverwave.


Edit@
I'm looking in the fast food and have a method to enable it

Change FASTFOOD = false to True on silverwave settings.cs

And the groups fix mentioned here only make not must have a f5 when buy a group to appear on room.
I'm working on the add article command to the landing view articles, the packet it's 396
And the horse don't animates, it's the on cycle, mentioned by marlon.

And the wires works if you add the interaction types from v1 of Plus, it's in the folder but isn't on the project, must only change the packets.
I will add a fix to add double database connection, to one connection for users,catalogs,etc and the another for items, likely butterfly, and a command in the .ini for: welcome message, show packets, game path(from the swf), and auto Clear from the console.

I will try to put ODBC compatibility to use pgsql, mssql, mssql, oci, and oca compatibility. Can be hard.
 
R.I.P Millercent
Loyal Member
Joined
Nov 6, 2012
Messages
2,230
Reaction score
314
A new bug I found;
Some items can not be rotated. I've searched the DB and there's not to allow whether it can rotate or not that I can see.. Am I missing something or is it just me? Furni that you can't rotate; Some Olympic furni, some customs, some Habbo furni.
 
~|=_=|~
Joined
Sep 25, 2013
Messages
624
Reaction score
26
A new bug I found;
Some items can not be rotated. I've searched the DB and there's not to allow whether it can rotate or not that I can see.. Am I missing something or is it just me? Furni that you can't rotate; Some Olympic furni, some customs, some Habbo furni.
Some furniture's don't rotate for me as well. I never figured out how to get furniture's to rotate. >.<
 
Joined
Aug 10, 2011
Messages
7,399
Reaction score
3,307
A new bug I found;
Some items can not be rotated. I've searched the DB and there's not to allow whether it can rotate or not that I can see.. Am I missing something or is it just me? Furni that you can't rotate; Some Olympic furni, some customs, some Habbo furni.

Original Bcstorm leenster had fixed this with some dirty code.
 
Newbie Spellweaver
Joined
Jan 3, 2014
Messages
37
Reaction score
4
Giverank fix:
Code:
#region Give rank (:rank)                 case "rank": 
                case "giverank": 
                    { 
                        if (Session.GetHabbo().HasCmd("rank"))
                        {
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;


                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[2]);
                            if (TargetClient != null)
                            {
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    int rank = int.Parse(Params[1]);
                                    if (Params[2] == null)
                                    {
                                        Session.SendNotif("No podrás dar el rango sino pones un nombre de usuario");
                                        return true;
                                    }
                                    else if(rank < 1)
                                    {
                                        Session.SendNotif("Número de rango invalido (1 - 9)");
                                        return true;
                                    }
                                    else
                                    {
                                        dbClient.setQuery("UPDATE users SET rank = '" + Params[1] + "' WHERE username = '" + Params[2] + "' LIMIT 1");
                                        dbClient.runQuery();
                                        Session.SendNotif("Rango entregado exitosamente.");
                                        TargetClient.SendNotif("You Have Received a Rank , Reenter in the Hotel");
                                        //:giverank 9 Oppa
                                        return true;
                                    }
                                }
                            }
                            else
                            {
                                Session.SendNotif("¡Nombre de usuario invalido!");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion
 
Newbie Spellweaver
Joined
Feb 7, 2014
Messages
19
Reaction score
18
Buglist:
Code:
* Groups: When buying, do not appear in the room.
* Wired: Many effects do not work.
* FastFood: Even configured, displays errors: "gamecenter.game_crashed".
* SnowStorm: Existing structure, missing mysql tables.
* Horse: Make a real fix on OnCycle()

Although there is structure ,also lack systems as "walking", "points score", "update status" among others,I have the mysql tables and other fixes, contact: brend-off@hotmail.com

Sorry for my horrografia! :(
 
Joined
Aug 10, 2011
Messages
7,399
Reaction score
3,307
Got the chase effect working.


Wired Rules:

- Moves to a person if they are in the same row or column.
- If there are multiple persons matching the row / column, it goes to the person closest to the furniture.
- If there are no matching users found, it moves into a random direction.

Will make the flee effect later today.

These are all the wireds I have 100% working, including room unload, saving, animations and features + stability.
bBYRTNX - Plus Emulation [Revision 2] FIXES! - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Last edited:
Status
Not open for further replies.
Back
Top