Como colocar PETS Em seu Habbo V26!
+2
@ndrezinho®
DamaGe-
6 participantes
Habbordo forum-~ :: Habbo :: Tutoriais
Página 1 de 1
Como colocar PETS Em seu Habbo V26!
Hoje estarei Ensinando vocês colocar uma PETS em Seu Servidor Versão 26! Esse tutorial É único, e VOCÊ Não Achara Lugar em softwares antigos, portanto, OU modifiquem Não excluam Este Tópico!
Coloque Este Código base nd do Servidor Seu ou seja: o Seu fonte. "Virtualusers.cs" (DENTRO DE SEU emulador VERSÃO 26!)
disso Depois, abra virtualbot.cs Seu Dentro da pasta Virtualbot emulador Seu e Troque de Tudo Que Está no virtualbot.cs Por isto:
Agora, em VÁ SUA banco de dados Dentro do phpmyadmin , SQL e coloque em VÁ ISTO:
Coloque Este Código base nd do Servidor Seu ou seja: o Seu fonte. "Virtualusers.cs" (DENTRO DE SEU emulador VERSÃO 26!)
- Código:
"Compra" caso:
using (DatabaseClient dbClient Eucalypt.dbManager.GetClient = ())
if (_isOwner == true)
(
int count = dbClient.getInt (SELECT max (id) FROM roombots ");
if (args [1] gatto == "")
(
if (dbClient.findsResult ("select id de roombots onde roomid =" + + _roomID "'"))
(
sendData ("BK" + "un solo animale Tenere Puoi por estrofe");
)
mais
(
+ int count2 count = 1;
Nome string = args [2];
("atualização do conjunto de usuários créditos dbClient.runQuery = -50 créditos em id =" + userID +"'");
refreshValueables (true, false);
miao String = "Miao!";
zz String = "Zzzzz!";
dbClient.runQuery ("INSERT INTO roombots
(id, roomid, o nome, a missão, a figura, x, y, z freeroam) VALUES ('"+ + count2
"','" + _roomID + "','" + Nome + "',' ciao ', 1,10,9,0,0)");
dbClient.runQuery ("insert into roombots_texts (id, tipo de texto ) values ('"
+ count2 + "',' dizem ','" + + miao "')");
dbClient.runQuery ("inserir
em roombots_texts (id, tipo de texto) values ('"+ count2 +"' , 'dizem', '"+
+ zz "')");
dbClient.runQuery ("insert into roombots_texts_triggers
(id, as palavras, as respostas) values ('"+ count2 + "','" + Nome +"', ' "+ + miao
"')");
sendData ("BK" + "Hai un gatto Acquistato rientrando na estrofe vedrai lo");
)
)
if (args [1] == "Coccodrillo")
(
se dbClient.findsResult (( "select id de roombots onde roomid =" + + _roomID "'"))
(
sendData ("BK" + "un solo animale Tenere Puoi por estrofe");
)
mais
(
+ int count2 count = 1;
Nome string = args [2];
dbClient.runQuery ("usuários de atualização do conjunto de créditos = -50 créditos em id =" + userID +"'");
refreshValueables (true, false);
mensagem String = "Gritar não é necessário";
miao string = "Croc!";
zz String = "Zzzzz!";
dbClient.runQuery ("INSERT INTO roombots
(id, roomid, o nome, a missão, a figura, x, y, z, freeroam, message_noshouting)
values ('"+ + count2" ',' "+ _roomID + "','" + Nome +
"',' ciao ', 2,10,9,0,0'" + mensagem + "')");
dbClient.runQuery ("inserir
em roombots_texts (id, tipo, texto) values ('"+ count2 +"', 'dizem', '"+
+ miao "')");
dbClient.runQuery ("insert into roombots_texts
(id, tipo, texto) values ( "count2 + +" ',' dizem ',' "+ + zz "')");
dbClient.runQuery ("insert into roombots_texts_triggers
(id, as palavras, as respostas) values ('"+ + "','" count2 + Nome + "','" + + miao
"')");
sendData ("BK" + "Hai un Acquistato Coccodrillo rientrando na estrofe vedrai lo");
)
)
)
mais
sendData ("BK" + "La estrofe não è Tua quindi não puoi aggiungere ne rimuovere animali ");
break;
"eli" caso:
using (DatabaseClient dbClient Eucalypt.dbManager.GetClient = ())
if (_isOwner == true)
(
int id = dbClient.getInt ("select id de onde roombots roomid = "+ + _roomID "'");
dbClient.runQuery ("excluir roombots_texts onde id =" + id + "'");
dbClient.runQuery ("excluir roombots onde roomid = '" + _roomID + "'");
dbClient.runQuery (delete "do roombots_coords onde id =" + id + "'");
dbClient.runQuery ("excluir roombots_texts_triggers onde id =" + id + "'");
sendData ("BK" + "Al rientro prossimo na estrofe não troverai più il Tuo animale");
)
mais
sendData ("BK" + "La stanza non è Tua quindi não puoi aggiungere ne rimuovere animali");
break;
disso Depois, abra virtualbot.cs Seu Dentro da pasta Virtualbot emulador Seu e Troque de Tudo Que Está no virtualbot.cs Por isto:
- Código:
using System;
using System.Data;
using System.Text;
using System.Threading;
using System.Collections;
using Holo.Virtual.Users;
using Holo.Virtual.Rooms.Pathfinding;
using Ion.Storage;
namespace Holo.Virtual.Rooms.Bots
{
///
/// Represents a computer controlled virtual user with an artifical
intelligence (AI). The bot walks around in virtual rooms on specified
coordinates, interacts with other virtual users and serves drinks and
food.
///
internal class virtualBot
{
#region Declares
///
/// The ID of the bot in the virtual room.
///
internal int roomUID;
///
/// The virtual room the bot roams in.
///
internal virtualRoom Room;
///
/// The name of the bot.
///
internal string Name;
///
/// The mission/motto that the bot has.
///
internal string Mission;
///
/// The bot's figure string.
///
internal string Figure;
///
/// The X position of the bot in the virtual room.
///
internal int X;
///
/// The Y position of the bot in the virtual room.
///
internal int Y;
///
/// The height of the bot in the virtual room.
///
internal double H;
///
/// The rotation of the bot's head in the virtual room.
///
internal byte Z1;
///
/// The rotation of the bot's body in the virtual room.
///
internal byte Z2;
///
/// Used for pathfinding. The X coordinate of the bot's target square in the virtual room.
///
internal int goalX;
///
/// Used for pathfinding. The Y coordinate of the bot's target square in the virtual room.
///
internal int goalY;
///
/// Indicates if the bot uses 'freeroam', which allows it to walk
everywhere where it can go to. Astar pathfinding is used.
///
internal bool freeRoam;
///
/// The message that the bot will use (on random) to shouting people near the bot.
///
internal string noShoutingMessage;
private delegate void statusVoid(string Key, string Value, int Length);
///
/// Handles the random determining of actions.
///
private Thread aiHandler;
///
/// Contains the texts that the bot can 'say' on random.
///
private string[] Sayings;
///
/// Contains the texts that the bot can 'shout' on random.
///
private string[] Shouts;
///
/// Contains the coordinate's where the bot can walk to. Ignored if freeroam is enabled.
///
private Coord[] Coords;
///
/// Contains the chat triggers where the bot reacts on.
///
private chatTrigger[] chatTriggers;
///
/// The virtualRoomUser object the bot is currently serving an item to.
///
private virtualRoomUser Customer;
///
/// The chatTrigger object that was invoked by the current customer.
///
private chatTrigger customerTrigger;
#endregion
#region Constructors/destructors
///
/// Contains the bot's animation statuses.
///
private Hashtable Statuses;
///
/// Initializes a new virtualBot object, loading the walk squares, chat texts etc.
///
/// The database ID of the bot.
/// The ID that identifies this bot in room.
/// The virtualRoom object where the bot is in.
internal virtualBot(int botID, int roomUID, virtualRoom Room)
{
this.roomUID = roomUID;
this.Room = Room;
DataRow dRow;
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
dRow = dbClient.getRow("SELECT
name,mission,figure,x,y,z,freeroam,message_noshouting FROM roombots
WHERE id = '" + botID + "'");
}
this.Name = Convert.ToString(dRow[0]);
this.Mission = Convert.ToString(dRow[1]);
this.Figure = Convert.ToString(dRow[2]);
this.X = Convert.ToInt32(dRow[3]);
this.Y = Convert.ToInt32(dRow[4]);
this.Z1 = Convert.ToByte(dRow[5]);
this.Z2 = Z1;
this.goalX = -1;
this.freeRoam = (Convert.ToString(dRow[6]) == "1");
this.noShoutingMessage = Convert.ToString(dRow[7]);
DataColumn dCol;
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
dCol = dbClient.getColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'say'");
}
this.Sayings = (string[])dataHandling.dColToArray(dCol);
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
dCol = dbClient.getColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'shout'");
}
this.Shouts = (string[])dataHandling.dColToArray(dCol);
DataTable dTable;
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
dTable = dbClient.getTable("SELECT words, replies, serve_replies,
serve_item FROM roombots_texts_triggers WHERE id = '" + botID + "'");
}
this.chatTriggers = new chatTrigger[dTable.Rows.Count];
int i = 0;
foreach (DataRow dbRow in dTable.Rows)
{
this.chatTriggers[i] = new
chatTrigger((Convert.ToString(dbRow["words"]).ToLower()).Split('}'),
(Convert.ToString(dbRow["replies"])).Split('}'),
(Convert.ToString(dbRow["serve_replies"])).Split('}'),
Convert.ToString(dbRow["serve_item"]));
i++;
}
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
dTable = dbClient.getTable("SELECT x,y FROM roombots_coords WHERE id = '" + botID + "'");
}
Coords = new Coord[dTable.Rows.Count];
i = 0;
foreach (DataRow dbRow in dTable.Rows)
{
Coords[i] = new Coord(Convert.ToInt32(dbRow["x"]), Convert.ToInt32(dbRow["y"]));
i++;
}
Statuses = new Hashtable();
aiHandler = new Thread(new ThreadStart(AI));
aiHandler.Priority = ThreadPriority.BelowNormal;
aiHandler.Start();
}
///
/// Safely shuts this virtualBot down and tidies up all resources.
///
internal void Kill()
{
try { aiHandler.Abort(); }
catch { }
aiHandler = null;
Room = null;
Statuses = null;
Coords = null;
Sayings = null;
Shouts = null;
chatTriggers = null;
Customer = null;
customerTrigger = null;
}
#endregion
#region Bot properties
///
/// The details string of the bot, containing room identifier ID, name, motto, figure etc.
///
internal string detailsString
{
get
{
string petTransformAdd = "";
string petTransformFigure = "";
petTransformAdd = "7ui1" + Convert.ToChar(4);
petTransformFigure = Figure + " 000 " + "98A1C5";
string s = "i:" + roomUID + Convert.ToChar(13) + "a:-1" +
Convert.ToChar(13) + "n:" + petTransformAdd + Name + Convert.ToChar(13)
+ "f:" + petTransformFigure + Convert.ToChar(13) + "l:" + X + " " + Y +
" " + H + Convert.ToChar(13);
if (Mission != "") { s += "c:" + Mission + Convert.ToChar(13); }
else { s += "c:" + " Baboh rulez!" + Convert.ToChar(13); }
return s + ":p" + Convert.ToChar(13);
}
}
///
/// The status string of the bot, containing positions, movements, statuses (animations) etc.
///
internal string statusString
{
get
{
string s = roomUID + " " + X + "," + Y + "," + H.ToString().Replace(",", ".") + "," + Z1 + "," + Z2 + "/";
foreach (string Key in Statuses.Keys)
{
s += Key;
string Value = (string)Statuses[Key];
if (Value != "")
s += " " + Value;
s += "/";
}
return s;
}
}
#endregion
#region Actions
///
/// Invoked by a virtualRoomUser. There is checked if this bot reacts
on a certain chat message, if so, then replies/orders etc are processed.
///
/// The virtualRoomUser object that interacts with this bot by saying a message.
/// The message that the virtualRoomUser said to this bot.
internal void Interact(virtualRoomUser roomUser, string Message)
{
Message = Message.ToLower();
string[] messageWords = Message.Split(' ');
if (chatTriggers != null)
{
foreach (chatTrigger Trigger in chatTriggers)
{
for (int i = 0; i < messageWords.Length; i++)
{
if (Trigger.containsWord(messageWords[i]))
{
if (Trigger.serveItem != "") // Serve an item, walk up to the customer and hand over the beverage
{
if (Customer != null) // The bot is currently serving a different room user, ignore this trigger
return;
Coord Closest = getClosestWalkCoordTo(roomUser.X, roomUser.Y);
if (Closest.X == -1) // Can't serve this user (no square close enough)
return;
Room.sendSaying(this, Trigger.Reply);
removeStatus("dance");
addStatus("carryd", Trigger.serveItem); // Make the bot starting to
carry the order to deliver it
goalX = Closest.X;
goalY = Closest.Y;
this.Customer = roomUser;
this.customerTrigger = Trigger;
}
else
{
this.Z1 = Rotation.Calculate(X, Y, roomUser.X, roomUser.Y);
this.Z2 = this.Z1;
Room.sendSaying(this, Trigger.Reply);
}
return; // One trigger per time
}
}
}
}
}
///
/// If the bot currently is processing an order, then it'll hand over the order and prepare for a new one.
///
internal void checkOrders()
{
if (Customer != null)
{
{
goalX = -1;
Rotate(Customer.X, Customer.Y);
removeStatus("carryd");
Room.sendSaying(this, customerTrigger.serveReply);
if (Customer.statusManager.containsStatus("sit") == false)
{
Customer.Z1 = Rotation.Calculate(Customer.X, Customer.Y, X, Y);
Customer.Z2 = Customer.Z1;
}
Customer.statusManager.carryItem(customerTrigger.serveItem);
}
{
Customer = null;
customerTrigger = null;
}
}
}
///
/// Rotates the bot to a certain X and Y coordinate and refreshes it in
the room. If the bot is sitting, then rotating will be ignored.
///
/// The X coordinate to face.
/// The Y coordinate to face.
internal void Rotate(int toX, int toY)
{
Rotate(Rotation.Calculate(X, Y, toX, toY));
}
///
/// Sets a new rotation for the bot and refreshes it in the room. If the bot is sitting, then rotating will be ignored.
///
/// The new rotation to use.
internal void Rotate(byte R)
{
if (R != Z1 && Statuses.ContainsKey("sit") == false)
{
Z1 = R;
Z2 = R;
Refresh();
}
}
///
/// Returns a Coord object with the X and Y of the walkcoord that is as closest to the given position.
///
/// The X position.
/// The Y position.
internal Coord getClosestWalkCoordTo(int X, int Y)
{
int minDistance = 6;
Coord Closest = new Coord(-1, 0);
foreach (Coord Coord in Coords)
{
int curDistance = Math.Abs(X - Coord.X) + Math.Abs(Y - Coord.Y);
if (curDistance < minDistance)
{
minDistance = curDistance;
Closest = Coord;
}
}
return Closest;
}
#endregion
#region Status management
///
/// Adds a status key and a value to the bot's statuses. If the status
is already inside, then the previous one will be removed.
///
/// The key of the status.
/// The value of the status.
internal void addStatus(string Key, string Value)
{
if (Statuses.ContainsKey(Key))
Statuses.Remove(Key);
Statuses.Add(Key, Value);
}
///
/// Removes a certain status from the bot's statuses.
///
/// The key of the status to remove.
internal void removeStatus(string Key)
{
try
{
if (Statuses.ContainsKey(Key))
Statuses.Remove(Key);
}
catch { }
}
///
/// Returns a bool that indicates if the bot has a certain status at the moment.
///
/// The key of the status to check.
internal bool containsStatus(string Key)
{
return Statuses.ContainsKey(Key);
}
///
/// Refreshes the status of the bot in the virtual room.
///
internal void Refresh()
{
Room.Refresh(this);
}
///
/// Adds a status to the bot, keeps it for a specified amount of time
[in ms] and removes the status. Refreshes at add and remove.
///
/// The key of the status, eg, 'sit'.
/// The value of the status, eg, '1.0'.
/// The amount of milliseconsd to keep the status before removing it again.
internal void handleStatus(string Key, string Value, int Length)
{
if (Statuses.ContainsKey(Key))
Statuses.Remove(Key);
new statusVoid(HANDLESTATUS).BeginInvoke(Key, Value, Length, null, null);
}
private void HANDLESTATUS(string Key, string Value, int Length)
{
try
{
Statuses.Add(Key, Value);
Refresh();
Thread.Sleep(Length);
Statuses.Remove(Key);
Refresh();
}
catch { }
}
#endregion
#region Misc
///
/// Ran on a thread. Handles the bot's artifical intelligence, by interacting with users and using random values etc.
///
private void AI()
{
int lastMessageID = -1;
Random RND = new Random();
//try
{
while (true)
{
if (Customer != null) // Currently serving a different user
continue;
int ACTION = RND.Next(0, 4);
switch (ACTION)
{
case 1: // Move
{
removeStatus("jmp");
removeStatus("sit");
removeStatus("ded");
Coord Next = new Coord();
int[] Borders = Room.getMapBorders();
{
Next = new Coord(RND.Next(0, Borders[0]), RND.Next(0, Borders[1]));
goalX = Next.X;
goalY = Next.Y;
}
break;
}
case 2: // Status
{
int action = RND.Next(1, 4);
switch (action)
{
case 1:
removeStatus("jmp");
removeStatus("ded");
addStatus("sit", string.Concat(1));
Refresh();
break;
case 2:
removeStatus("sit");
removeStatus("ded");
addStatus("jmp", string.Concat(1));
Refresh();
break;
case 3:
removeStatus("sit");
removeStatus("jmp");
addStatus("ded", string.Concat(1));
Refresh();
break;
}
break;
}
case 3: // Say
{
foreach (chatTrigger Trigger in chatTriggers)
Room.sendSaying(this, Trigger.Reply);
break;
}
}
Thread.Sleep(3000);
Out.WriteTrace("Bot AI loop");
}
}
//catch { aiHandler.Abort(); }
}
#endregion
#region Private objects
///
/// Represents a trigger that can be invoked by a chat message. Results in a reply and/or an order confirmation.
///
private class chatTrigger
{
///
/// A System.String array with words that invoke this trigger.
///
private string[] Words;
///
/// A System.String array with replies that are used when this trigger is invoked.
///
private string[] Replies;
///
/// A System.String array with replies that are used when the bot hands over the food/drink item for this trigger.
///
private string[] serveReplies;
///
/// The item (food/drink) that will be served when one of this trigger's words match a given word.
///
internal string serveItem;
internal chatTrigger(string[] Words, string[] Replies, string[] serveReplies, string serveItem)
{
this.Words = Words;
this.Replies = Replies;
this.serveReplies = serveReplies;
this.serveItem = serveItem;
}
///
/// Returns a boolean that indicates if this trigger replies on a certain word.
///
/// The word to check.
internal bool containsWord(string Word)
{
if (Word.Substring(Word.Length - 1, 1) == "?")
Word = Word.Substring(0, Word.Length - 1);
for (int i = 0; i < Words.Length; i++)
if (Words[i] == Word)
return true;
return false;
}
///
/// Returns a random reply from the replies array.
///
internal string Reply
{
get
{
return Replies[new Random(DateTime.Now.Millisecond).Next(0, Replies.Length)];
}
}
///
/// Returns a random 'hand over item, here you are' reply from the replies array.
///
internal string serveReply
{
get
{
return serveReplies[new Random(DateTime.Now.Millisecond).Next(0, serveReplies.Length)];
}
}
}
#endregion
}
}
Agora, em VÁ SUA banco de dados Dentro do phpmyadmin , SQL e coloque em VÁ ISTO:
- Código:
- ----------------------------
- Estrutura da tabela para roombots
- ------------ ----------------
DROP TABLE IF EXISTS `roombots»;
CREATE TABLE `roombots` (
`id` int (10) NOT NULL auto_increment,
`roomid` int (10) NOT NULL ,
`nome` varchar (50) COLLATE não NULL latin1_general_ci,
«missão» varchar (100) cotejar latin1_general_ci default NULL,
`valor` texto cotejar latin1_general_ci NOT NULL,
`x` int (5) NOT NULL,
`y` int (5 ) NOT NULL,
`z` int (1) NOT NULL,
`freeroam ENUM ('1 ', '0') latin1_general_ci cotejar NOT NULL default '0 ',
`message_noshouting` varchar (200) NOT NULL default cotejar latin1_general_ci "Gritar não é necessário. ',
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci;
- ----------------------- -----
- Quadro estrutura para roombots_coords
- ----------------------------
DROP TABLE IF EXISTS `roombots_coords»;
CREATE roombots_coords TABLE `` (
`id` int (10) NOT NULL,
`x` int (5) NOT NULL,
`y` int (5) NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci;
- - --------------------------
- Quadro estrutura para roombots_texts
- ---------------- ------------
DROP TABLE IF EXISTS `roombots_texts»;
CREATE TABLE `roombots_texts` (
`id` int (10) NOT NULL,
`tipo enum '(' mensagem ',' dizer ') cotejar latin1_general_ci NOT NULL,
`texto` varchar (255) cotejar latin1_general_ci NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci;
- --------------------- -------
- Quadro estrutura para roombots_texts_triggers
- ----------------------------
DROP TABLE IF EXISTS `roombots_texts_triggers» ,
CREATE TABLE `roombots_texts_triggers` (
`id` int (10) NOT NULL,
`texto` palavras cotejar latin1_general_ci NOT NULL,
`texto` respostas cotejar latin1_general_ci NOT NULL,
`texto` serve_replies cotejar latin1_general_ci NOT NULL,
`serve_item` varchar (20 ) cotejar latin1_general_ci NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci;
Re: Como colocar PETS Em seu Habbo V26!
Dj5Queijos eu peço q me devolva meu Cargo de ADM ou vou reclamar pro FELIX
@ndrezinho®- Membro iniciante
- Mensagens : 5
Data de inscrição : 20/03/2010
Re: Como colocar PETS Em seu Habbo V26!
affe vo reclama pro felix
@ndrezinho®- Membro iniciante
- Mensagens : 5
Data de inscrição : 20/03/2010
Re: Como colocar PETS Em seu Habbo V26!
uma vez fui fazer esse tuto fudeu meu habbo mas vo tentar denovo
Guga- Admin
- Sexo :
Mensagens : 43
Data de inscrição : 01/04/2010
Re: Como colocar PETS Em seu Habbo V26!
porisso que fudeu rsrsrsḋј5συεïјøṡ escreveu:com v36|v35 não pega!!
Guga- Admin
- Sexo :
Mensagens : 43
Data de inscrição : 01/04/2010
Re: Como colocar PETS Em seu Habbo V26!
muito bom, muito bom mesmo!
ραττяιс- Membro iniciante
- Sexo :
Mensagens : 8
Data de inscrição : 02/04/2010
Re: Como colocar PETS Em seu Habbo V26!
Guga escreveu:porisso que fudeu rsrsrsḋј5συεïјøṡ escreveu:com v36|v35 não pega!!
Se Não Sabe Ler Guga Olha o Título é Pra v26 e Não "v36" opakspokask'
HeaDShoT~*- Membro iniciante
- Mensagens : 18
Data de inscrição : 31/03/2010
Re: Como colocar PETS Em seu Habbo V26!
Bom, este tutorial não serve para todos os emuladores v26.
Mas sim, serve para uma boa parte dos emuladores.
Mas sim, serve para uma boa parte dos emuladores.
Lmrc- Membro iniciante
- Sexo :
Mensagens : 4
Idade : 27
Data de inscrição : 23/01/2011
Localização : Jampa
Tópicos semelhantes
» Criando um habbo V60
» Colocando Seu habbo No-ip
» Criando Habbo v57
» 10 Dicas Para Seu Habbo CMS Bombar!
» [Duvida]Como edito minhas moedas?
» Colocando Seu habbo No-ip
» Criando Habbo v57
» 10 Dicas Para Seu Habbo CMS Bombar!
» [Duvida]Como edito minhas moedas?
Habbordo forum-~ :: Habbo :: Tutoriais
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|