Table "bots_pet_responses".
But then I have too enter the pet id for every single pet and customize the responses, isnt there any other ways?
-- ----------------------------
-- Table structure for `bots_pet_responses`
-- ----------------------------
DROP TABLE IF EXISTS `bots_pet_responses`;
CREATE TABLE `bots_pet_responses` (
`pet_id` varchar(255) NOT NULL,
`responses` text NOT NULL,
PRIMARY KEY (`pet_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of bots_pet_responses
-- ----------------------------
INSERT INTO `bots_pet_responses` VALUES ('pet.lazy', '*sigh*;*refuses*; ... ;Who do you think you are?;you do it;Grr!;*laughs*;Why?;');
INSERT INTO `bots_pet_responses` VALUES ('pet.respected', 'was respected');
INSERT INTO `bots_pet_responses` VALUES ('pet.tired', 'ZzZzzzzz;*sleeps*;Tired... *sleeps*;ZzZzZZzzzZZz;zzZzzZzzz;... Yawnn ..;ZzZzzZ;');
INSERT INTO `bots_pet_responses` VALUES ('pet.unknowncommand', '*confused*;What?;Huh?;What is that?;hmm..?;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet0', 'woof woof woof!!!;hooooowl;wooooof!;Woof Woof!;sit;lay;snf;Woof;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet1', 'meow;meow...meOW;muew..muew;lay;sit;lay;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet10', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet11', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet12', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet13', 'Horse;Goes;Neyyyy;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet14', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet15', 'neiiigh;*trots around*;Neeeigh;*looks at*;*flicks tail*;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet2', 'Rrrr....Grrrrrg....;*Mellow*;Tick tock tick....;*feels like eating my owner*;Nom Nom Nom;.. Yawwnn!;snf;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet26', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet28', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet29', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet3', 'woof woof woof!!!;hooooowl;wooooof!;Woof Woof!;sit;lay;snf;Woof;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet30', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet4', '*pack of fresh salmon please*;Rawrrr!;*sniff sniff*;Yawnnnn..;Rawr! ... Rawrrrrr?;snf;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet5', 'Oink Oink..;*Mellow*;Sniff... Sniff..;snf;Oink!;snf;lay;oink;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet6', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet7', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet8', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet9', 'Grrr;');
ThanksINSERT INTO `bots_pet_responses` VALUES ('pet.lazy', '*sigh*;*refuses*; ... ;Who do you think you are?;you do it;Grr!;*laughs*;Why?;');
INSERT INTO `bots_pet_responses` VALUES ('pet.respected', 'was respected');
INSERT INTO `bots_pet_responses` VALUES ('pet.tired', 'ZzZzzzzz;*sleeps*;Tired... *sleeps*;ZzZzZZzzzZZz;zzZzzZzzz;... Yawnn ..;ZzZzzZ;');
INSERT INTO `bots_pet_responses` VALUES ('pet.unknowncommand', '*confused*;What?;Huh?;What is that?;hmm..?;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet0', 'woof woof woof!!!;hooooowl;wooooof!;Woof Woof!;sit;lay;snf;Woof;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet1', 'meow;meow...meOW;muew..muew;lay;sit;lay;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet10', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet11', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet12', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet13', 'Horse;Goes;Neyyyy;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet14', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet15', 'neiiigh;*trots around*;Neeeigh;*looks at*;*flicks tail*;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet2', 'Rrrr....Grrrrrg....;*Mellow*;Tick tock tick....;*feels like eating my owner*;Nom Nom Nom;.. Yawwnn!;snf;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet26', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet28', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet29', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet3', 'woof woof woof!!!;hooooowl;wooooof!;Woof Woof!;sit;lay;snf;Woof;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet30', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet4', '*pack of fresh salmon please*;Rawrrr!;*sniff sniff*;Yawnnnn..;Rawr! ... Rawrrrrr?;snf;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet5', 'Oink Oink..;*Mellow*;Sniff... Sniff..;snf;Oink!;snf;lay;oink;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet6', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet7', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet8', 'Grrr;');
INSERT INTO `bots_pet_responses` VALUES ('speech.pet9', 'Grrr;');
Thanks i solved! So close bug anyway lolTable "bots_pet_responses".
One of your catalog pages has a higher min_rank than the parent page.
I'm pretty sure it pings the client to make sure their connection active, and if it isn't, then it disconnected them?gonna sound like a noob but can someone explain how this works in a bit of detail so I can understand it more
## Client configuration
client.ping.enabled=1
client.ping.interval=20000
client.maxrequests=300
What's wrong with your group badges, are the symbols missing?Any got the fix for group badges? plenty of people are saying they have and will post it later but no one really want to release it..
and i just can't get group badges to show up at all..
pretty sure its :massgive credits,duckets etc same with globalgiveHi,
Do you know the code for :massbadge, masscredits and massduckets? Seems like they are not working when i do type in the command.
Thanks,
What's wrong with your group badges, are the symbols missing?
Massbadge does work, but massgive doesnt work, Ive checked permissions and everything is correctpretty sure its :massgive credits,duckets etc same with globalgive
Someting is missing in you database of the furniture. Run this first in your database it would work:You must be registered for see links,,, Pls Help..
SET @@global.sql_mode= '';
When I hit 200 online, it only used 400 ish mb. Do you know he did it, or did it happen and he claimed he did it?yeah I recently found out theres some sort of memory leak or something, this guy came on and did something that made my emulator use 2.3gb RAM, emulator said there was like 100+ users online and the hotel was lagging to shit, I have no idea what he did
anyone else experienced this or
He asked me if he could test it and I said sure, literally like 10 seconds after , boom the hotel completely lagged and the ram usage went through the roof, he claimed there was memory leaksWhen I hit 200 online, it only used 400 ish mb. Do you know he did it, or did it happen and he claimed he did it?
Shiiit, I woke up to MySQL having crashed a few times.. I think it was because I was transferring a 15gb database tho (MySQL was always at 90%usage, down to 2%ish now)He asked me if he could test it and I said sure, literally like 10 seconds after , boom the hotel completely lagged and the ram usage went through the roof, he claimed there was memory leaks
if (Item == null || Item.Data == null)
if (Item == null || Item.Data == null || Item.UserID != Session.GetHabbo().Id || Item.Data.InteractionType != InteractionType.GNOME_BOX)
public bool SetFloorItem(GameClient Session, Item Item, int newX, int newY, int newRot, bool newItem, bool OnRoller, bool sendMessage, bool updateRoomUserStatuses = false)
public bool SetFloorItem(GameClient Session, Item Item, int newX, int newY, int newRot, bool newItem, bool OnRoller, bool sendMessage, bool updateRoomUserStatuses = false)
{
// Questions -> Skype: keiz.er
bool NeedsReAdd = false;
if (newItem)
if (Item.IsWired)
if (Item.GetBaseItem().WiredType == WiredBoxType.EffectRegenerateMaps && _room.GetRoomItemHandler().GetFloor.Where(x => x.GetBaseItem().WiredType == WiredBoxType.EffectRegenerateMaps).Count() > 0)
return false;
List<Item> ItemsOnTile = GetFurniObjects(newX, newY);
if (Item.GetBaseItem().InteractionType == InteractionType.ROLLER && ItemsOnTile.Where(x => x.GetBaseItem().InteractionType == InteractionType.ROLLER && x.Id != Item.Id).Count() > 0)
return false;
if (!newItem)
NeedsReAdd = _room.GetGameMap().RemoveFromMap(Item);
Dictionary<int, ThreeDCoord> AffectedTiles = Gamemap.GetAffectedTiles(Item.GetBaseItem().Length, Item.GetBaseItem().Width, newX, newY, newRot);
if (!_room.GetGameMap().ValidTile(newX, newY) || _room.GetGameMap().SquareHasUsers(newX, newY) && !Item.GetBaseItem().IsSeat)
{
if (NeedsReAdd)
_room.GetGameMap().AddToMap(Item);
return false;
}
foreach (ThreeDCoord Tile in AffectedTiles.Values)
{
if (!_room.GetGameMap().ValidTile(Tile.X, Tile.Y) ||
(_room.GetGameMap().SquareHasUsers(Tile.X, Tile.Y) && !Item.GetBaseItem().IsSeat))
{
if (NeedsReAdd)
{
_room.GetGameMap().AddToMap(Item);
}
return false;
}
}
Double newZ = _room.GetGameMap().Model.SqFloorHeight[newX, newY];
if (!OnRoller)
{
if (_room.GetGameMap().Model.SqState[newX, newY] != SquareState.OPEN && !Item.GetBaseItem().IsSeat)
{
return false;
}
foreach (ThreeDCoord Tile in AffectedTiles.Values)
{
if (_room.GetGameMap().Model.SqState[Tile.X, Tile.Y] != SquareState.OPEN &&
!Item.GetBaseItem().IsSeat)
{
if (NeedsReAdd)
{
//AddItem(Item);
_room.GetGameMap().AddToMap(Item);
}
return false;
}
}
if (!Item.GetBaseItem().IsSeat && !Item.IsRoller)
{
foreach (ThreeDCoord Tile in AffectedTiles.Values)
{
if (_room.GetGameMap().GetRoomUsers(new Point(Tile.X, Tile.Y)).Count > 0)
{
if (NeedsReAdd)
_room.GetGameMap().AddToMap(Item);
return false;
}
}
}
}
// Find affected objects
var ItemsAffected = new List<Item>();
var ItemsComplete = new List<Item>();
foreach (ThreeDCoord Tile in AffectedTiles.Values.ToList())
{
List<Item> Temp = GetFurniObjects(Tile.X, Tile.Y);
if (Temp != null)
{
ItemsAffected.AddRange(Temp);
}
}
ItemsComplete.AddRange(ItemsOnTile);
ItemsComplete.AddRange(ItemsAffected);
if (!OnRoller)
{
foreach (Item I in ItemsComplete.ToList())
{
if (I == null)
continue;
if (I.Id == Item.Id)
continue;
if (I.GetBaseItem() == null)
continue;
}
}
{
if (Item.Rotation != newRot && Item.GetX == newX && Item.GetY == newY)
newZ = Item.GetZ;
foreach (Item I in ItemsComplete.ToList())
{
if (I == null)
continue;
if (I.Id == Item.Id)
continue;
if (I.GetBaseItem().InteractionType == InteractionType.STACKTOOL)
{ // Basically the core of the fix
// Questions -> Skype: keiz.er
newZ = I.GetZ;
break;
}
if (I.TotalHeight > newZ)
{
newZ = I.TotalHeight;
}
}
}
if (newRot != 0 && newRot != 2 && newRot != 4 && newRot != 6 && newRot != 8 && !Item.GetBaseItem().ExtraRot)
newRot = 0;
Item.Rotation = newRot;
int oldX = Item.GetX;
int oldY = Item.GetY;
Item.SetState(newX, newY, newZ, AffectedTiles);
if (!OnRoller && Session != null)
Item.Interactor.OnPlace(Session, Item);
if (newItem)
{
if (_floorItems.ContainsKey(Item.Id))
{
if (Session != null)
Session.SendNotification(PlusEnvironment.GetGame().GetLanguageLocale().TryGetValue("room_item_placed"));
_room.GetGameMap().RemoveFromMap(Item);
return true;
}
if (Item.IsFloorItem && !_floorItems.ContainsKey(Item.Id))
_floorItems.TryAdd(Item.Id, Item);
else if (Item.IsWallItem && !_wallItems.ContainsKey(Item.Id))
_wallItems.TryAdd(Item.Id, Item);
if (sendMessage)
_room.SendMessage(new ObjectAddComposer(Item, _room));
}
else
{
UpdateItem(Item);
if (!OnRoller && sendMessage)
_room.SendMessage(new ObjectUpdateComposer(Item, _room.OwnerId));
}
_room.GetGameMap().AddToMap(Item);
if (Item.GetBaseItem().IsSeat)
updateRoomUserStatuses = true;
if (updateRoomUserStatuses)
_room.GetRoomUserManager().UpdateUserStatusses();
if (Item.GetBaseItem().InteractionType == InteractionType.TENT || Item.GetBaseItem().InteractionType == InteractionType.TENT_SMALL)
{
_room.RemoveTent(Item.Id, Item);
_room.AddTent(Item.Id);
}
using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.RunQuery("UPDATE `items` SET `room_id` = '" + _room.RoomId + "', `x` = '" + Item.GetX + "', `y` = '" + Item.GetY + "', `z` = '" + Item.GetZ + "', `rot` = '" + Item.Rotation + "' WHERE `id` = '" + Item.Id + "' LIMIT 1");
}
return true;
}
thanks! just applied it.So I found another exploit today, that was brought to my attention by some Swedish hotel owners. Which allowed scripters to remove furniture from the room and replace it with gnomes.. What?
Yeah.. I know. But here's how to fix it
In CheckGnomeNameEvent.cs look for this:
Code:if (Item == null || Item.Data == null)
And replace it with this:
Code:if (Item == null || Item.Data == null || Item.UserID != Session.GetHabbo().Id || Item.Data.InteractionType != InteractionType.GNOME_BOX)
What happens here is when the user creates a Gnome pet, it removes the box from the room it came in, but there is no check to see if the box belongs to the user executing the event. So this means if the scripter is able to find out the itemId of a furniture they can replace it with a gnome, even if they don't have permission too.
Here's a little screenshot of it in action:
Hopefully the explanation made sense and you was all able to patch it okay
ooo niceHello for those we don't have the ,magic stack tool
fix that was released on the rival forums,
go to Plus\HabboHotel\Rooms\RoomItemHandling.cs find
Code:public bool SetFloorItem(GameClient Session, Item Item, int newX, int newY, int newRot, bool newItem, bool OnRoller, bool sendMessage, bool updateRoomUserStatuses = false)
Change the entire void to
credits go to keiz.Code:public bool SetFloorItem(GameClient Session, Item Item, int newX, int newY, int newRot, bool newItem, bool OnRoller, bool sendMessage, bool updateRoomUserStatuses = false) { // Questions -> Skype: keiz.er bool NeedsReAdd = false; if (newItem) if (Item.IsWired) if (Item.GetBaseItem().WiredType == WiredBoxType.EffectRegenerateMaps && _room.GetRoomItemHandler().GetFloor.Where(x => x.GetBaseItem().WiredType == WiredBoxType.EffectRegenerateMaps).Count() > 0) return false; List<Item> ItemsOnTile = GetFurniObjects(newX, newY); if (Item.GetBaseItem().InteractionType == InteractionType.ROLLER && ItemsOnTile.Where(x => x.GetBaseItem().InteractionType == InteractionType.ROLLER && x.Id != Item.Id).Count() > 0) return false; if (!newItem) NeedsReAdd = _room.GetGameMap().RemoveFromMap(Item); Dictionary<int, ThreeDCoord> AffectedTiles = Gamemap.GetAffectedTiles(Item.GetBaseItem().Length, Item.GetBaseItem().Width, newX, newY, newRot); if (!_room.GetGameMap().ValidTile(newX, newY) || _room.GetGameMap().SquareHasUsers(newX, newY) && !Item.GetBaseItem().IsSeat) { if (NeedsReAdd) _room.GetGameMap().AddToMap(Item); return false; } foreach (ThreeDCoord Tile in AffectedTiles.Values) { if (!_room.GetGameMap().ValidTile(Tile.X, Tile.Y) || (_room.GetGameMap().SquareHasUsers(Tile.X, Tile.Y) && !Item.GetBaseItem().IsSeat)) { if (NeedsReAdd) { _room.GetGameMap().AddToMap(Item); } return false; } } Double newZ = _room.GetGameMap().Model.SqFloorHeight[newX, newY]; if (!OnRoller) { if (_room.GetGameMap().Model.SqState[newX, newY] != SquareState.OPEN && !Item.GetBaseItem().IsSeat) { return false; } foreach (ThreeDCoord Tile in AffectedTiles.Values) { if (_room.GetGameMap().Model.SqState[Tile.X, Tile.Y] != SquareState.OPEN && !Item.GetBaseItem().IsSeat) { if (NeedsReAdd) { //AddItem(Item); _room.GetGameMap().AddToMap(Item); } return false; } } if (!Item.GetBaseItem().IsSeat && !Item.IsRoller) { foreach (ThreeDCoord Tile in AffectedTiles.Values) { if (_room.GetGameMap().GetRoomUsers(new Point(Tile.X, Tile.Y)).Count > 0) { if (NeedsReAdd) _room.GetGameMap().AddToMap(Item); return false; } } } } // Find affected objects var ItemsAffected = new List<Item>(); var ItemsComplete = new List<Item>(); foreach (ThreeDCoord Tile in AffectedTiles.Values.ToList()) { List<Item> Temp = GetFurniObjects(Tile.X, Tile.Y); if (Temp != null) { ItemsAffected.AddRange(Temp); } } ItemsComplete.AddRange(ItemsOnTile); ItemsComplete.AddRange(ItemsAffected); if (!OnRoller) { foreach (Item I in ItemsComplete.ToList()) { if (I == null) continue; if (I.Id == Item.Id) continue; if (I.GetBaseItem() == null) continue; } } { if (Item.Rotation != newRot && Item.GetX == newX && Item.GetY == newY) newZ = Item.GetZ; foreach (Item I in ItemsComplete.ToList()) { if (I == null) continue; if (I.Id == Item.Id) continue; if (I.GetBaseItem().InteractionType == InteractionType.STACKTOOL) { // Basically the core of the fix // Questions -> Skype: keiz.er newZ = I.GetZ; break; } if (I.TotalHeight > newZ) { newZ = I.TotalHeight; } } } if (newRot != 0 && newRot != 2 && newRot != 4 && newRot != 6 && newRot != 8 && !Item.GetBaseItem().ExtraRot) newRot = 0; Item.Rotation = newRot; int oldX = Item.GetX; int oldY = Item.GetY; Item.SetState(newX, newY, newZ, AffectedTiles); if (!OnRoller && Session != null) Item.Interactor.OnPlace(Session, Item); if (newItem) { if (_floorItems.ContainsKey(Item.Id)) { if (Session != null) Session.SendNotification(PlusEnvironment.GetGame().GetLanguageLocale().TryGetValue("room_item_placed")); _room.GetGameMap().RemoveFromMap(Item); return true; } if (Item.IsFloorItem && !_floorItems.ContainsKey(Item.Id)) _floorItems.TryAdd(Item.Id, Item); else if (Item.IsWallItem && !_wallItems.ContainsKey(Item.Id)) _wallItems.TryAdd(Item.Id, Item); if (sendMessage) _room.SendMessage(new ObjectAddComposer(Item, _room)); } else { UpdateItem(Item); if (!OnRoller && sendMessage) _room.SendMessage(new ObjectUpdateComposer(Item, _room.OwnerId)); } _room.GetGameMap().AddToMap(Item); if (Item.GetBaseItem().IsSeat) updateRoomUserStatuses = true; if (updateRoomUserStatuses) _room.GetRoomUserManager().UpdateUserStatusses(); if (Item.GetBaseItem().InteractionType == InteractionType.TENT || Item.GetBaseItem().InteractionType == InteractionType.TENT_SMALL) { _room.RemoveTent(Item.Id, Item); _room.AddTent(Item.Id); } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `items` SET `room_id` = '" + _room.RoomId + "', `x` = '" + Item.GetX + "', `y` = '" + Item.GetY + "', `z` = '" + Item.GetZ + "', `rot` = '" + Item.Rotation + "' WHERE `id` = '" + Item.Id + "' LIMIT 1"); } return true; }
using (QueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.RunQuery("UPDATE `bots` SET `look` = '" + User.BotData.Look + "', `gender` = '" + User.BotData.Gender + "' WHERE `id` = '" + User.BotData.Id + "' LIMIT 1");
}
using (QueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.SetQuery("UPDATE `bots` SET `look` = @look, `gender` = '" + User.BotData.Gender + "' WHERE `id` = '" + User.BotData.Id + "' LIMIT 1");
dbClient.AddParameter("look", User.BotData.Look);
dbClient.RunQuery();
}
using (QueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.RunQuery("UPDATE `bots` SET `look` = '" + Session.GetHabbo().Look + "', `gender` = '" + Session.GetHabbo().Gender + "' WHERE `id` = '" + Bot.BotData.Id + "' LIMIT 1");
}
using (QueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.SetQuery("UPDATE `bots` SET `look` = @look, `gender` = '" + Session.GetHabbo().Gender + "' WHERE `id` = '" + Bot.BotData.Id + "' LIMIT 1");
dbClient.AddParameter("look", Session.GetHabbo().Look);
dbClient.RunQuery();
}