Sean, it's an error in packet structure (appends) so rather you pick R2 (it's fixed) or do like me take the is floor item thing from R2 and put in R1 (works)
Printable View
Sean, it's an error in packet structure (appends) so rather you pick R2 (it's fixed) or do like me take the is floor item thing from R2 and put in R1 (works)
Yeah, the packet structure in the latest version of Habbo has changed (once again) in an effort for Sulake to be one step ahead of us retro kiddies.
George can you explain what you did to get it to work?
Or any ideas when a fix for this will be released? :)
No ones got an idea how to fix the furni disappearing issue? :O
I know ,
Options:
- Use newest SWFs
- Remove last Serialize line on RoomItem :D
If it is that one, Ive tried it on R2 but it still seems to disappear on every reload :(PHP Code:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Uber.HabboHotel.Pathfinding;
using Uber.HabboHotel.Rooms;
using Uber.HabboHotel.Items.Interactors;
using Uber.HabboHotel.GameClients;
using Uber.Messages;
using Uber.Storage;
namespace Uber.HabboHotel.Items
{
class RoomItem
{
public uint Id;
public uint RoomId;
public uint BaseItem;
public string ExtraData;
public int X;
public int Y;
public Double Z;
public int Rot;
public int TempVar1;
public int TempVar2;
public string WallPos;
public bool UpdateNeeded;
public int UpdateCounter;
public uint InteractingUser;
public uint InteractingUser2;
public int FireWorkCount;
public Coord Coordinate
{
get
{
return new Coord(X, Y);
}
}
public double TotalHeight
{
get
{
return Z + GetBaseItem().Height;
}
}
public bool IsWallItem
{
get
{
if (GetBaseItem().Type.ToLower() == "i")
{
return true;
}
return false;
}
}
public bool IsFloorItem
{
get
{
if (GetBaseItem().Type.ToLower() == "s")
{
return true;
}
return false;
}
}
public Coord SquareInFront
{
get
{
Coord Sq = new Coord(X, Y);
if (Rot == 0)
{
Sq.y--;
}
else if (Rot == 2)
{
Sq.x++;
}
else if (Rot == 4)
{
Sq.y++;
}
else if (Rot == 6)
{
Sq.x--;
}
return Sq;
}
}
public Coord SquareBehind
{
get
{
Coord Sq = new Coord(X, Y);
if (Rot == 0)
{
Sq.y++;
}
else if (Rot == 2)
{
Sq.x--;
}
else if (Rot == 4)
{
Sq.y--;
}
else if (Rot == 6)
{
Sq.x++;
}
return Sq;
}
}
internal FurniInteractor Interactor
{
get
{
switch (GetBaseItem().InteractionType.ToLower())
{
case "teleport":
return new InteractorTeleport();
case "bottle":
return new InteractorSpinningBottle();
case "dice":
return new InteractorDice();
case "habbowheel":
return new InteractorHabboWheel();
case "loveshuffler":
return new InteractorLoveShuffler();
case "onewaygate":
return new InteractorOneWayGate();
case "alert":
return new InteractorAlert();
case "vendingmachine":
return new InteractorVendor();
case "gate":
return new InteractorGate(GetBaseItem().Modes);
case "scoreboard":
return new InteractorScoreboard();
case "firework":
return new InteractorFirework();
case "default":
default:
return new InteractorGenericSwitch(GetBaseItem().Modes);
}
}
}
public RoomItem(uint Id, uint RoomId, uint BaseItem, string ExtraData, int X, int Y, Double Z, int Rot, string WallPos, int FireWorkCount)
{
this.Id = Id;
this.RoomId = RoomId;
this.BaseItem = BaseItem;
this.ExtraData = ExtraData;
this.X = X;
this.Y = Y;
this.Z = Z;
this.Rot = Rot;
this.WallPos = WallPos;
this.UpdateNeeded = false;
this.UpdateCounter = 0;
this.InteractingUser = 0;
this.InteractingUser2 = 0;
this.TempVar1 = 0;
this.TempVar2 = 0;
this.FireWorkCount = FireWorkCount;
switch (GetBaseItem().InteractionType.ToLower())
{
case "teleport":
ReqUpdate(0);
break;
case "teleportwalk":
ReqUpdate(0);
break;
}
}
public void ProcessUpdates()
{
this.UpdateCounter--;
if (this.UpdateCounter <= 0)
{
this.UpdateNeeded = false;
this.UpdateCounter = 0;
RoomUser User = null;
RoomUser User2 = null;
switch (GetBaseItem().InteractionType.ToLower())
{
case "onewaygate":
User = null;
if (InteractingUser > 0)
{
User = GetRoom().GetRoomUserByHabbo(InteractingUser);
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
}
if (User != null && User.X == X && User.Y == Y)
{
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
ExtraData = "1";
User.MoveTo(SquareBehind);
ReqUpdate(0);
UpdateState(false, true);
}
else if (User != null && User.Coordinate == SquareBehind)
{
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
User.UnlockWalking();
Session.GetHabbo().Credits = Session.GetHabbo().Credits - 5;
Session.GetHabbo().UpdateCreditsBalance(true);
Session.SendNotif("Youve bought a toll ticket for 5c");
ExtraData = "0";
InteractingUser = 0;
UpdateState(false, true);
}
else if (ExtraData == "1")
{
ExtraData = "0";
UpdateState(false, true);
}
if (User == null)
{
InteractingUser = 0;
}
break;
case "freegate":
User = null;
if (InteractingUser > 0)
{
User = GetRoom().GetRoomUserByHabbo(InteractingUser);
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
}
if (User != null && User.X == X && User.Y == Y)
{
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
ExtraData = "1";
User.MoveTo(SquareBehind);
ReqUpdate(0);
UpdateState(false, true);
}
else if (User != null && User.Coordinate == SquareBehind)
{
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
User.UnlockWalking();
//Session.SendNotif("Toll System - This gate is free, Have a nice day!");
ExtraData = "0";
InteractingUser = 0;
UpdateState(false, true);
}
else if (ExtraData == "1")
{
ExtraData = "0";
UpdateState(false, true);
}
if (User == null)
{
InteractingUser = 0;
}
break;
case "policegate":
User = null;
if (InteractingUser > 0)
{
User = GetRoom().GetRoomUserByHabbo(InteractingUser);
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
}
if (User != null && User.X == X && User.Y == Y)
{
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
if (Session.GetHabbo().HasFuse("fuse_cop"))
{
ExtraData = "1";
User.MoveTo(SquareBehind);
ReqUpdate(0);
UpdateState(false, true);
}
else
{
Session.SendNotif("Your not a police officer, so this gate cannot be used");
User.UnlockWalking();
InteractingUser = 0;
// Move out of the Gate
User.MoveTo(SquareInFront);
}
}
else if (User != null && User.Coordinate == SquareBehind)
{
User.UnlockWalking();
ExtraData = "0";
InteractingUser = 0;
UpdateState(false, true);
}
else if (ExtraData == "1")
{
ExtraData = "0";
UpdateState(false, true);
}
if (User == null)
{
InteractingUser = 0;
}
break;
case "malegate":
User = null;
if (InteractingUser > 0)
{
User = GetRoom().GetRoomUserByHabbo(InteractingUser);
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
}
if (User != null && User.X == X && User.Y == Y)
{
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
if (Session.GetHabbo().Gender.ToLower() == "m")
{
ExtraData = "1";
User.MoveTo(SquareBehind);
ReqUpdate(0);
UpdateState(false, true);
}
else
{
Session.SendNotif("Your not a boy.");
User.UnlockWalking();
InteractingUser = 0;
// Move out of the Gate
User.MoveTo(SquareInFront);
}
}
else if (User != null && User.Coordinate == SquareBehind)
{
User.UnlockWalking();
ExtraData = "0";
InteractingUser = 0;
UpdateState(false, true);
}
else if (ExtraData == "1")
{
ExtraData = "0";
UpdateState(false, true);
}
if (User == null)
{
InteractingUser = 0;
}
break;
case "girlgate":
User = null;
if (InteractingUser > 0)
{
User = GetRoom().GetRoomUserByHabbo(InteractingUser);
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
}
if (User != null && User.X == X && User.Y == Y)
{
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
if (Session.GetHabbo().Gender.ToLower() == "f")
{
ExtraData = "1";
User.MoveTo(SquareBehind);
ReqUpdate(0);
UpdateState(false, true);
}
else
{
Session.SendNotif("Your not a girl.");
User.UnlockWalking();
InteractingUser = 0;
// Move out of the Gate
User.MoveTo(SquareInFront);
}
}
else if (User != null && User.Coordinate == SquareBehind)
{
User.UnlockWalking();
ExtraData = "0";
InteractingUser = 0;
UpdateState(false, true);
}
else if (ExtraData == "1")
{
ExtraData = "0";
UpdateState(false, true);
}
if (User == null)
{
InteractingUser = 0;
}
break;
case "teleport":
User = null;
User2 = null;
bool keepDoorOpen = false;
bool showTeleEffect = false;
// Do we have a primary user that wants to go somewhere?
if (InteractingUser > 0)
{
User = GetRoom().GetRoomUserByHabbo(InteractingUser);
// Is this user okay?
if (User != null)
{
// Is he in the tele?
if (User.Coordinate == Coordinate)
{
if (User.TeleDelay == -1)
{
User.TeleDelay = 1;
}
if (TeleHandler.IsTeleLinked(Id))
{
showTeleEffect = true;
if (User.TeleDelay == 0)
{
// Woop! No more delay.
uint TeleId = TeleHandler.GetLinkedTele(Id);
uint RoomId = TeleHandler.GetTeleRoomId(TeleId);
// Do we need to tele to the same room or gtf to another?
if (RoomId == this.RoomId)
{
RoomItem Item = GetRoom().GetItem(TeleId);
if (Item == null)
{
User.UnlockWalking();
}
else
{
// Set pos
User.SetPos(Item.X, Item.Y, Item.Z);
User.SetRot(Item.Rot);
// Force tele effect update (dirty)
Item.ExtraData = "2";
Item.UpdateState(false, true);
// Set secondary interacting user
Item.InteractingUser2 = InteractingUser;
}
}
else
{
// Let's run the teleport delegate to take futher care of this..
UberEnvironment.GetGame().GetRoomManager().AddTeleAction(new TeleUserData(User, RoomId, TeleId));
}
// We're done with this tele. We have another one to bother.
InteractingUser = 0;
}
else
{
// We're linked, but there's a delay, so decrease the delay and wait it out.
User.TeleDelay--;
}
}
else
{
// This tele is not linked, so let's gtfo.
// Open the door
keepDoorOpen = true;
User.UnlockWalking();
InteractingUser = 0;
// Move out of the tele
User.MoveTo(SquareInFront);
}
}
// Is he in front of the tele?
else if (User.Coordinate == SquareInFront)
{
// Open the door
keepDoorOpen = true;
// Lock his walking. We're taking control over him. Allow overriding so he can get in the tele.
if (User.IsWalking && (User.GoalX != X || User.GoalY != Y))
{
User.ClearMovement(true);
}
User.CanWalk = false;
User.AllowOverride = true;
// Move into the tele
User.MoveTo(Coordinate);
}
// Not even near, do nothing and move on for the next user.
else
{
InteractingUser = 0;
}
}
else
{
// Invalid user, do nothing and move on for the next user.
InteractingUser = 0;
}
}
// Do we have a secondary user that wants to get out of the tele?
if (InteractingUser2 > 0)
{
User2 = GetRoom().GetRoomUserByHabbo(InteractingUser2);
// Is this user okay?
if (User2 != null)
{
// If so, open the door, unlock the user's walking, and try to push him out in the right direction. We're done with him!
keepDoorOpen = true;
User2.UnlockWalking();
User2.MoveTo(SquareInFront);
}
// This is a one time thing, whether the user's valid or not.
InteractingUser2 = 0;
}
// Set the new item state, by priority
if (keepDoorOpen)
{
if (ExtraData != "1")
{
ExtraData = "1";
UpdateState(false, true);
}
}
else if (showTeleEffect)
{
if (ExtraData != "2")
{
ExtraData = "2";
UpdateState(false, true);
}
}
else
{
if (ExtraData != "0")
{
ExtraData = "0";
UpdateState(false, true);
}
}
// We're constantly going!
ReqUpdate(1);
break;
case "bottle":
ExtraData = UberEnvironment.GetRandomNumber(0, 7).ToString();
UpdateState();
break;
case "dice":
ExtraData = UberEnvironment.GetRandomNumber(1, 10).ToString();
UpdateState();
break;
case "habbowheel":
ExtraData = UberEnvironment.GetRandomNumber(2, 2).ToString();
UpdateState();
break;
case "loveshuffler":
if (ExtraData == "0")
{
ExtraData = UberEnvironment.GetRandomNumber(1, 4).ToString();
ReqUpdate(20);
}
else if (ExtraData != "-1")
{
ExtraData = "-1";
}
UpdateState(false, true);
break;
case "alert":
if (this.ExtraData == "1")
{
this.ExtraData = "0";
this.UpdateState(false, true);
}
break;
case "vendingmachine":
if (this.ExtraData == "1")
{
User = GetRoom().GetRoomUserByHabbo(InteractingUser);
GameClient Session = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(User.HabboId);
if (User != null)
{
User.UnlockWalking();
int randomDrink = GetBaseItem().VendingIds[UberEnvironment.GetRandomNumber(0, (GetBaseItem().VendingIds.Count - 1))];
User.CarryItem(randomDrink);
}
Session.GetHabbo().Credits = Session.GetHabbo().Credits - 1;
Session.GetHabbo().UpdateCreditsBalance(true);
Session.SendNotif("You were charged 1c for this!, But your health and energy got updated!");
this.InteractingUser = 0;
this.ExtraData = "0";
UpdateState(false, true);
}
break;
}
}
}
public void ReqUpdate(int Cycles)
{
this.UpdateCounter = Cycles;
this.UpdateNeeded = true;
}
public void UpdateState()
{
UpdateState(true, true);
}
public void UpdateState(bool inDb, bool inRoom)
{
if (inDb)
{
using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("extra_data", this.ExtraData);
dbClient.ExecuteQuery("UPDATE items SET extra_data = @extra_data WHERE id = '" + Id + "' LIMIT 1");
}
}
if (inRoom)
{
ServerMessage Message = new ServerMessage();
if (IsFloorItem)
{
Message.Init(88);
Message.AppendStringWithBreak(Id.ToString());
Message.AppendStringWithBreak(ExtraData);
}
else
{
Message.Init(85);
Serialize(Message);
}
GetRoom().SendMessage(Message);
}
}
public void Serialize(ServerMessage Message)
{
// AU33614959XEP:w=3,11 l=31,83 l0
// A]r|ebuAQsPAQAJ0.0q|ebuA0MC[!`A
if (IsFloorItem)
{
Message.AppendUInt(Id);
Message.AppendInt32(GetBaseItem().SpriteId);
Message.AppendInt32(X);
Message.AppendInt32(Y);
Message.AppendInt32(Rot);
Message.AppendStringWithBreak(Z.ToString().Replace(',', '.'));
Message.AppendInt32(0);
Message.AppendStringWithBreak(ExtraData);
Message.AppendInt32(-1);
}
else if (IsWallItem)
{
Message.AppendStringWithBreak(Id + "");
Message.AppendInt32(GetBaseItem().SpriteId);
Message.AppendStringWithBreak(WallPos);
switch (GetBaseItem().InteractionType.ToLower())
{
case "postit":
Message.AppendStringWithBreak(ExtraData.Split(' ')[0]);
break;
default:
Message.AppendStringWithBreak(ExtraData);
break;
}
}
}
public Item GetBaseItem()
{
return UberEnvironment.GetGame().GetItemManager().GetItem(BaseItem);
}
public Room GetRoom()
{
return UberEnvironment.GetGame().GetRoomManager().GetRoom(RoomId);
}
}
}
i get message:
Specified cast is not valid.
what did i do wrong?
Insert something into items.
Make a stable fix please?
i get message:
Specified cast is not valid.
what did i do wrong?
The Emulator of your Space Hotel is runned by Phoenix Emulator!
hyginho98 did you mean me? becouse i dont understand verry wel? ^^ could you explain what my problem is?
yeah i need a fix fast for the disapearing furni thing?
---------- Post added at 02:44 PM ---------- Previous post was at 01:10 PM ----------
woot nvm fixed it :)
---------- Post added at 03:48 PM ---------- Previous post was at 02:44 PM ----------
Has anyone got the sql code for the Habbo Club furniture it aint in this database :s
Does someone maybe have an fix for the disconnecting when you call a guide?
It's the best uberEmulator I think.
i get message:
Specified cast is not valid.
what did i do wrong?
could someone help me with this error:
http://img14.imageshack.us/img14/1261/uberfailu.jpg
there isnt any Habbo Club furniture in the catalouge?
Does Uber works with Phoenix.
phoenix is uber, rebranded 0/0 and a few sql changes ohh and you cant forget the wired lmao paying 20 quid for wired stupid!
Can someone post the club furniture please? I haven't got it in the sql I downloaded in the thread. Not VIP the Habbo Club sofa's and stuff.
Thanks,
Sean
Teleporters ain't working with me. It works when both teleporters is in the same room, men in two diffrent rooms it won't. What could be the problem?
Respect for the improvments.
Anyway I am facing problems with the Quests, it does not open when using client version "63-34097-33779-201105272309_e84ec7bfbeb937306e935af7f1805c21", anyone has a fix for this?