public void OnRemove(GameClient Session, Item Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0) { RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (User != null) { User.UnlockWalking(); } Item.InteractingUser = 0; } if (Item.InteractingUser2 != 0) { RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser2); if (User != null) { User.UnlockWalking(); } Item.InteractingUser2 = 0; } }
public override void OnRemove(GameClient Session, RoomItem RoomItem_0) { RoomItem_0.ExtraData = "0"; if (RoomItem_0.InteractingUser != 0u) { RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(RoomItem_0.InteractingUser); if (@class != null) { @class.ClearMovement(true); @class.UnlockWalking(); } RoomItem_0.InteractingUser = 0u; } }
public override void OnPlace(GameClient Session, RoomItem Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0u) { RoomUser @class = Item.GetRoom().GetRoomUserByHabbo(Item.InteractingUser); if (@class != null) { @class.ClearMovement(true); @class.UnlockWalking(); } Item.InteractingUser = 0u; } }
public void OnPlace(GameClient Session, RoomItem Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0u) { RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.ClearMovement(true); roomUserByHabbo.UnlockWalking(); } Item.InteractingUser = 0u; } }
public override void OnPlace(GameClient Session, Item Item) { Item.ExtraData = "0"; if (Item.InteractingUser == 0) { return; } RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(Item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.UnlockWalking(); } Item.InteractingUser = 0; }
public void OnRemove(GameClient Session, RoomItem item) { item.ExtraData = "0"; if (item.InteractingUser != 0) { RoomUser User = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser); if (User != null) { User.ClearMovement(); User.UnlockWalking(); } item.InteractingUser = 0; } }
public void OnPlace(GameClient Session, Item Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0) { RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (User != null) { User.ClearMovement(true); User.UnlockWalking(); } Item.InteractingUser = 0; } }
public override void OnPlace(GameClient session, RoomItem item) { item.ExtraData = "0"; if (item.InteractingUser != 0) { RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser); if (user != null) { user.ClearMovement(); user.UnlockWalking(); } item.InteractingUser = 0; } }
public void OnRemove(GameClient Session, RoomItem Item) { checked { Item.GetRoom().GetRoomItemHandler().HopperCount--; using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor()) { queryreactor.setQuery("DELETE FROM items_hopper WHERE item_id=@hid OR room_id=" + Item.GetRoom().RoomId + " LIMIT 1"); queryreactor.addParameter("hid", Item.Id); queryreactor.runQuery(); } if (Item.InteractingUser != 0u) { RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.UnlockWalking(); } Item.InteractingUser = 0u; } } }
public void OnRemove(GameClient session, RoomItem item) { { item.GetRoom().GetRoomItemHandler().HopperCount--; using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery(string.Format("DELETE FROM items_hopper WHERE item_id=@hid OR room_id={0} LIMIT 1", item.GetRoom().RoomId)); queryReactor.AddParameter("hid", item.Id); queryReactor.RunQuery(); } if (item.InteractingUser == 0u) { return; } RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.UnlockWalking(); } item.InteractingUser = 0u; } }
public override void OnRemove(GameClient session, RoomItem item) { item.ExtraData = "0"; if (item.InteractingUser != 0) { RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser); user?.UnlockWalking(); item.InteractingUser = 0; } if (item.InteractingUser2 != 0) { RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser2); user?.UnlockWalking(); item.InteractingUser2 = 0; } }
public void OnRemove(GameClient Session, RoomItem Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0u) { RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.UnlockWalking(); } Item.InteractingUser = 0u; } if (Item.InteractingUser2 != 0u) { RoomUser roomUserByHabbo2 = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser2); if (roomUserByHabbo2 != null) { roomUserByHabbo2.UnlockWalking(); } Item.InteractingUser2 = 0u; } }
public override void OnRemove(GameClient session, RoomItem item) { item.GetRoom().GetRoomItemHandler().HopperCount--; using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery( $"DELETE FROM items_hopper WHERE item_id=@hid OR room_id={item.GetRoom().RoomId} LIMIT 1"); queryReactor.AddParameter("hid", item.Id); queryReactor.RunQuery(); } if (item.InteractingUser == 0u) { return; } RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser); roomUserByHabbo?.UnlockWalking(); item.InteractingUser = 0u; }
public void OnRemove(GameClient Session, Item Item) { Item.GetRoom().GetRoomItemHandler().HopperCount--; using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM items_hopper WHERE item_id=@hid OR room_id=" + Item.GetRoom().RoomId + " LIMIT 1"); dbClient.AddParameter("hid", Item.Id); dbClient.RunQuery(); } if (Item.InteractingUser != 0) { RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser); if (User != null) { User.UnlockWalking(); } Item.InteractingUser = 0; } }
public void OnRemove(GameClient session, RoomItem item) { item.ExtraData = "0"; if (item.InteractingUser != 0u) { RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser); if (roomUserByHabbo != null) { roomUserByHabbo.UnlockWalking(); } item.InteractingUser = 0u; } if (item.InteractingUser2 == 0u) { return; } RoomUser roomUserByHabbo2 = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser2); if (roomUserByHabbo2 != null) { roomUserByHabbo2.UnlockWalking(); } item.InteractingUser2 = 0u; }
internal void ProcessUpdates() { this.UpdateCounter--; if (this.UpdateCounter <= 0) { this.UpdateNeeded = false; this.UpdateCounter = 0; if (this.TimerRunning && this.int_0 > 0) { this.int_0 += 500; this.GetRoom().int_13 += 500; this.UpdateNeeded = true; if (this.int_0 > SongManager.GetSong(Convert.ToInt32(this.ExtraData)).Length) { ServerMessage Message = new ServerMessage(327); Message.AppendInt32(7); Message.AppendInt32(6); Message.AppendInt32(7); Message.AppendInt32(0); Message.AppendInt32(0); this.GetRoom().SendMessage(Message, null); this.int_0 = 1; this.GetRoom().int_13 = 0; } } else { string text = this.GetBaseItem().InteractionType.ToLower(); switch (text) { case "onewaygate": { RoomUser roomUserByHabbo = null; if (this.InteractingUser > 0) { roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser); } if (roomUserByHabbo != null && roomUserByHabbo.X == this.mX && roomUserByHabbo.Y == this.mY && this.Extra1 != "tried") { this.ExtraData = "1"; this.Extra1 = "tried"; roomUserByHabbo.UnlockWalking(); roomUserByHabbo.MoveTo(this.SquareBehind); this.ReqUpdate(0); this.UpdateState(false, true); } else { if ((roomUserByHabbo != null && (roomUserByHabbo.Coordinate != this.SquareBehind)) || this.Extra1 == "tried") { this.Extra1 = ""; this.ExtraData = "0"; this.InteractingUser = 0; this.UpdateState(false, true); this.GetRoom().GenerateMaps(); } else { if (this.ExtraData == "1") { this.ExtraData = "0"; this.UpdateState(false, true); } } } if (roomUserByHabbo == null) { this.InteractingUser = 0u; } break; } case "teleport": { bool flag = false; bool flag2 = false; if (this.InteractingUser > 0u) { RoomUser roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser); if (roomUserByHabbo != null) { if (!(roomUserByHabbo.Coordinate == this.Coordinate)) { roomUserByHabbo.AllowOverride = false; if (roomUserByHabbo.TeleDelay == -1) { roomUserByHabbo.TeleDelay = 1; } if (TeleHandler.IsTeleLinked(this.Id)) { flag2 = true; if (roomUserByHabbo.TeleDelay == 0) { uint num2 = TeleHandler.GetLinkedTele(this.Id); uint num3 = TeleHandler.GetTeleRoomId(num2); if (num3 == this.RoomId) { RoomItem class2 = this.GetRoom().GetItem(num2); if (class2 == null) { roomUserByHabbo.UnlockWalking(); } else { roomUserByHabbo.SetPos(class2.GetX, class2.GetY, class2.GetZ); roomUserByHabbo.SetRot(class2.Rot); class2.ExtraData = "2"; class2.UpdateState(false, true); class2.InteractingUser2 = this.InteractingUser; } } else { if (!roomUserByHabbo.IsBot) { PhoenixEnvironment.GetGame().GetRoomManager().method_5(new TeleUserData(roomUserByHabbo.GetClient().GetMessageHandler(), roomUserByHabbo.GetClient().GetHabbo(), num3, num2)); } } this.InteractingUser = 0u; } else { roomUserByHabbo.TeleDelay--; } } else { roomUserByHabbo.UnlockWalking(); this.InteractingUser = 0u; roomUserByHabbo.MoveTo(this.SquareInFront); } } else { if ((roomUserByHabbo.Coordinate == this.SquareInFront) && roomUserByHabbo.Item == this) { roomUserByHabbo.AllowOverride = true; flag = true; if (roomUserByHabbo.IsWalking && (roomUserByHabbo.GoalX != this.mX || roomUserByHabbo.GoalY != this.mY)) { roomUserByHabbo.ClearMovement(true); } roomUserByHabbo.CanWalk = false; roomUserByHabbo.AllowOverride = true; roomUserByHabbo.MoveTo(this.Coordinate); } else { this.InteractingUser = 0u; } } } else { this.InteractingUser = 0u; } } if (this.InteractingUser2 > 0u) { RoomUser user2 = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser2); if (user2 != null) { flag = true; user2.UnlockWalking(); if (user2.Coordinate == this.Coordinate) { user2.MoveTo(this.SquareInFront); } } this.InteractingUser2 = 0u; } if (flag) { if (this.ExtraData != "1") { this.ExtraData = "1"; this.UpdateState(false, true); } } else { if (flag2) { if (this.ExtraData != "2") { this.ExtraData = "2"; this.UpdateState(false, true); } } else { if (this.ExtraData != "0") { this.ExtraData = "0"; this.UpdateState(false, true); } } } this.ReqUpdate(1); break; } case "bottle": { int num = PhoenixEnvironment.GetRandomNumber(0, 7); this.ExtraData = num.ToString(); this.UpdateState(); break; } case "dice": try { RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser); if (@class.GetClient().GetHabbo().Rigger > 0) { this.ExtraData = @class.GetClient().GetHabbo().Rigger.ToString(); @class.GetClient().GetHabbo().Rigger = 0; } else { int num = PhoenixEnvironment.GetRandomNumber(1, 6); this.ExtraData = num.ToString(); } } catch { int num = PhoenixEnvironment.GetRandomNumber(1, 6); this.ExtraData = num.ToString(); } this.UpdateState(); break; case "habbowheel": { int num = PhoenixEnvironment.GetRandomNumber(1, 10); this.ExtraData = num.ToString(); this.UpdateState(); break; } case "loveshuffler": if (this.ExtraData == "0") { int num = PhoenixEnvironment.GetRandomNumber(1, 4); this.ExtraData = num.ToString(); this.ReqUpdate(20); } else { if (this.ExtraData != "-1") { this.ExtraData = "-1"; } } this.UpdateState(false, true); break; case "alert": if (this.ExtraData == "1") { this.ExtraData = "0"; this.UpdateState(false, true); } break; case "vendingmachine": if (this.ExtraData == "1") { RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser); if (@class != null) { @class.UnlockWalking(); int int_ = this.GetBaseItem().VendingIds[PhoenixEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)]; @class.CarryItem(int_); } this.InteractingUser = 0u; this.ExtraData = "0"; this.UpdateState(false, true); } break; case "wf_trg_onsay": case "wf_trg_enterroom": case "wf_trg_furnistate": case "wf_trg_onfurni": case "wf_trg_offfurni": case "wf_trg_gameend": case "wf_trg_gamestart": case "wf_trg_attime": case "wf_trg_atscore": case "wf_act_saymsg": case "wf_act_togglefurni": case "wf_act_givepoints": case "wf_act_moverotate": case "wf_act_matchfurni": case "wf_act_give_phx": case "wf_cnd_trggrer_on_frn": case "wf_cnd_furnis_hv_avtrs": case "wf_cnd_has_furni_on": case "wf_cnd_phx": case "bb_teleport": if (this.ExtraData == "1") { this.ExtraData = "0"; this.UpdateState(false, true); } break; case "wf_trg_timer": if (this.ExtraData == "1") { this.ExtraData = "0"; this.UpdateState(false, true); } if (this.Extra1.Length > 0) { this.GetRoom().method_15(this); this.ReqUpdate(Convert.ToInt32(Convert.ToDouble(this.Extra1) * 2.0)); } break; case "wf_act_moveuser": if (this.dictionary_1.Count > 0 && this.GetRoom().UserList != null) { int num4 = 0; RoomUser[] RoomUser_ = this.GetRoom().UserList; for (int i = 0; i < RoomUser_.Length; i++) { RoomUser class4 = RoomUser_[i]; if (class4 != null) { if (class4.IsBot) { this.dictionary_1.Remove(class4); } if (this.dictionary_1.ContainsKey(class4)) { if (this.dictionary_1[class4] > 0) { if (this.dictionary_1[class4] == 10 && !class4.IsBot) { class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(4, true); } Dictionary <RoomUser, int> dictionary; RoomUser key; (dictionary = this.dictionary_1)[key = class4] = dictionary[key] - 1; num4++; } else { this.dictionary_1.Remove(class4); class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(0, true); } } } } if (num4 > 0) { this.ReqUpdate(0); } else { this.dictionary_1.Clear(); } } break; case "counter": if (this.TimerRunning && this.Extra1 != "1") { this.ExtraData = Convert.ToString(Convert.ToInt32(this.ExtraData) - 1); if (Convert.ToInt32(this.ExtraData) <= 0) { this.ExtraData = "0"; this.TimerRunning = false; this.GetRoom().method_89(0, this, true); } this.UpdateState(true, true); this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData)); this.Extra1 = "1"; this.ReqUpdate(1); } else { if (this.TimerRunning) { this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData) - 0.5); this.Extra1 = "0"; this.ReqUpdate(1); } } break; } } } }
public void ProcessUpdates() { this.UpdateCounter--; if (this.UpdateCounter > 0) { return; } this.UpdateCounter = 0; switch (this.GetBaseItem().InteractionType) { case InteractionType.football: if (this.interactionCountHelper <= 0 || this.interactionCountHelper > 6) { this.ExtraData = "0"; this.UpdateState(false, true); this.interactionCountHelper = 0; break; } int Length = 1; int OldX = this.GetX; int OldY = this.GetY; int NewX = this.GetX; int NewY = this.GetY; Point NewPoint = this.GetMoveCoord(OldX, OldY, 1); if (this.interactionCountHelper > 3) { Length = 3; this.ExtraData = "6"; this.UpdateState(false, true); } else if (this.interactionCountHelper > 1 && this.interactionCountHelper < 4) { Length = 2; this.ExtraData = "4"; this.UpdateState(false, true); } else { Length = 1; this.ExtraData = "2"; this.UpdateState(false, true); } if (Length != 1 && !this.GetRoom().GetGameMap().CanStackItem(NewPoint.X, NewPoint.Y, true)) { this.GetNewDir(NewX, NewY); this.interactionCountHelper--; } for (int i = 1; i <= Length; i++) { NewPoint = this.GetMoveCoord(OldX, OldY, i); if ((this.interactionCountHelper <= 3 && this.GetRoom().GetGameMap().SquareHasUsers(NewPoint.X, NewPoint.Y))) { this.interactionCountHelper = 0; break; } if (this.GetRoom().GetGameMap().CanStackItem(NewPoint.X, NewPoint.Y, true)) { NewX = NewPoint.X; NewY = NewPoint.Y; this.GetRoom().GetSoccer().HandleFootballGameItems(new Point(NewPoint.X, NewPoint.Y)); } else { this.GetNewDir(NewX, NewY); this.interactionCountHelper--; break; } if (!this.GetRoom().GetGameMap().SquareTakingOpen(NewPoint.X, NewPoint.Y)) { List <RoomUser> Users = this.GetRoom().GetGameMap().GetNearUsers(new Point(NewPoint.X, NewPoint.Y), 1); if (Users != null) { bool BreakMe = false; foreach (RoomUser User in Users) { if (User == null || this.InteractingUser == User.VirtualId) { continue; } if (User.SetX != NewPoint.X || User.SetY != NewPoint.Y) { continue; } if (User.SetStep && User.SetX == User.GoalX && User.SetY == User.GoalY) { this.interactionCountHelper = 6; this.InteractingUser = User.VirtualId; this.MovementDir = MovementManagement.GetMovementByDirection(User.RotBody); BreakMe = true; break; } } if (BreakMe) { break; } } } this.interactionCountHelper--; } double Z = this.GetRoom().GetGameMap().SqAbsoluteHeight(NewX, NewY); this.GetRoom().GetRoomItemHandler().PositionReset(this, NewX, NewY, Z); this.UpdateCounter = 1; break; case InteractionType.ChronoTimer: if (string.IsNullOrEmpty(this.ExtraData)) { break; } int NumChrono = 0; if (!int.TryParse(this.ExtraData, out NumChrono)) { break; } if (!this.ChronoStarter) { break; } if (NumChrono > 0) { if (this.interactionCountHelper == 1) { NumChrono--; /*if (!this.GetRoom().GetBanzai().isBanzaiActive || !this.GetRoom().GetFreeze().isGameActive) * { * NumChrono = 0; * }*/ this.interactionCountHelper = 0; this.ExtraData = NumChrono.ToString(); this.UpdateState(); } else { this.interactionCountHelper++; } this.UpdateCounter = 1; break; } else { this.ChronoStarter = false; this.GetRoom().GetGameManager().StopGame(); break; } case InteractionType.banzaitele: if (this.InteractingUser == 0) { this.ExtraData = string.Empty; this.UpdateState(); break; } this.ExtraData = "1"; this.UpdateState(); this.UpdateCounter = 1; RoomUser roomUserByHabbo = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser); if (roomUserByHabbo != null) { this.GetRoom().GetGameMap().TeleportToItem(roomUserByHabbo, this); roomUserByHabbo.SetRot(ButterflyEnvironment.GetRandomNumber(0, 7), false); roomUserByHabbo.CanWalk = true; } this.InteractingUser = 0; break; case InteractionType.freezetile: if (this.InteractingUser <= 0) { break; } RoomUser roomUserByHabbo3 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser); if (roomUserByHabbo3 != null) { roomUserByHabbo3.CountFreezeBall = 1; } this.ExtraData = "11000"; this.UpdateState(false, true); this.GetRoom().GetFreeze().onFreezeTiles(this, this.freezePowerUp, this.InteractingUser); this.InteractingUser = 0; this.interactionCountHelper = (byte)0; break; case InteractionType.scoreboard: if (string.IsNullOrEmpty(this.ExtraData)) { break; } int num4 = 0; try { num4 = int.Parse(this.ExtraData); } catch { } if (num4 > 0) { if (this.interactionCountHelper == 1) { int num2 = num4 - 1; this.interactionCountHelper = (byte)0; this.ExtraData = num2.ToString(); this.UpdateState(); } else { this.interactionCountHelper++; } this.UpdateCounter = 1; break; } else { this.UpdateCounter = 0; break; } case InteractionType.vendingmachine: if (!(this.ExtraData == "1")) { break; } RoomUser roomUserByHabbo1 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser); if (roomUserByHabbo1 != null) { int num2 = this.GetBaseItem().VendingIds[ButterflyEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)]; roomUserByHabbo1.CarryItem(num2); } this.InteractingUser = 0; this.ExtraData = "0"; this.UpdateState(false, true); break; case InteractionType.vendingenablemachine: if (!(this.ExtraData == "1")) { break; } RoomUser roomUserByHabboEnable = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser); if (roomUserByHabboEnable != null) { int num2 = this.GetBaseItem().VendingIds[ButterflyEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)]; roomUserByHabboEnable.ApplyEffect(num2); } this.InteractingUser = 0; this.ExtraData = "0"; this.UpdateState(false, true); break; case InteractionType.alert: if (!(this.ExtraData == "1")) { break; } this.ExtraData = "0"; this.UpdateState(false, true); break; case InteractionType.onewaygate: RoomUser roomUser3 = (RoomUser)null; if (this.InteractingUser > 0) { roomUser3 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser); } if (roomUser3 == null) { this.InteractingUser = 0; break; } if (roomUser3.Coordinate == this.SquareBehind || !Gamemap.TilesTouching(this.GetX, this.GetY, roomUser3.X, roomUser3.Y)) { roomUser3.UnlockWalking(); this.ExtraData = "0"; this.InteractingUser = 0; this.UpdateState(false, true); } else { roomUser3.CanWalk = false; roomUser3.AllowOverride = true; roomUser3.MoveTo(this.SquareBehind); this.UpdateCounter = 1; } break; case InteractionType.loveshuffler: if (this.ExtraData == "0") { this.ExtraData = ButterflyEnvironment.GetRandomNumber(1, 4).ToString(); this.ReqUpdate(20); } else if (this.ExtraData != "-1") { this.ExtraData = "-1"; } this.UpdateState(false, true); break; case InteractionType.habbowheel: this.ExtraData = ButterflyEnvironment.GetRandomNumber(1, 10).ToString(); this.UpdateState(); break; case InteractionType.dice: this.ExtraData = ButterflyEnvironment.GetRandomNumber(1, 6).ToString(); this.UpdateState(); break; case InteractionType.bottle: this.ExtraData = ButterflyEnvironment.GetRandomNumber(0, 7).ToString(); this.UpdateState(); break; case InteractionType.TELEPORT: case InteractionType.ARROW: bool keepDoorOpen = false; bool showTeleEffect = false; if (this.InteractingUser > 0) { RoomUser roomUserByHabbo2 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser); if (roomUserByHabbo2 != null) { if (roomUserByHabbo2.Coordinate == this.Coordinate) { roomUserByHabbo2.AllowOverride = false; if (ItemTeleporterFinder.IsTeleLinked(this.Id, this.mRoom)) { showTeleEffect = true; int linkedTele = ItemTeleporterFinder.GetLinkedTele(this.Id); int teleRoomId = ItemTeleporterFinder.GetTeleRoomId(linkedTele, this.mRoom); if (teleRoomId == this.RoomId) { Item roomItem = this.GetRoom().GetRoomItemHandler().GetItem(linkedTele); if (roomItem == null) { roomUserByHabbo2.UnlockWalking(); } else { roomUserByHabbo2.SetRot(roomItem.Rotation, false); roomItem.GetRoom().GetGameMap().TeleportToItem(roomUserByHabbo2, roomItem); roomItem.ExtraData = "2"; roomItem.UpdateState(false, true); roomItem.InteractingUser2 = this.InteractingUser; roomItem.ReqUpdate(2); } } else if (!roomUserByHabbo2.IsBot && roomUserByHabbo2 != null && (roomUserByHabbo2.GetClient() != null && roomUserByHabbo2.GetClient().GetHabbo() != null)) { roomUserByHabbo2.GetClient().GetHabbo().IsTeleporting = true; roomUserByHabbo2.GetClient().GetHabbo().TeleportingRoomID = teleRoomId; roomUserByHabbo2.GetClient().GetHabbo().TeleporterId = linkedTele; roomUserByHabbo2.GetClient().GetHabbo().PrepareRoom(teleRoomId, ""); } this.InteractingUser = 0; } else { roomUserByHabbo2.UnlockWalking(); this.InteractingUser = 0; } } else if (roomUserByHabbo2.Coordinate == this.SquareInFront) { roomUserByHabbo2.AllowOverride = true; keepDoorOpen = true; roomUserByHabbo2.CanWalk = false; roomUserByHabbo2.AllowOverride = true; roomUserByHabbo2.MoveTo(this.Coordinate.X, this.Coordinate.Y, true); } else { this.InteractingUser = 0; } } else { this.InteractingUser = 0; } this.UpdateCounter = 1; } if (this.InteractingUser2 > 0) { RoomUser roomUserByHabbo2 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser2); if (roomUserByHabbo2 != null) { keepDoorOpen = true; roomUserByHabbo2.UnlockWalking(); roomUserByHabbo2.MoveTo(this.SquareInFront); } this.UpdateCounter = 1; this.InteractingUser2 = 0; } if (keepDoorOpen) { if (this.ExtraData != "1") { this.ExtraData = "1"; this.UpdateState(false, true); } } else if (showTeleEffect) { if (this.ExtraData != "2") { this.ExtraData = "2"; this.UpdateState(false, true); } } else if (this.ExtraData != "0") { this.ExtraData = "0"; this.UpdateState(false, true); } break; } }
internal void ProcessUpdates() { this.UpdateCounter--; if (this.UpdateCounter <= 0 || IsTrans) { this.UpdateNeeded = false; this.UpdateCounter = 0; RoomUser User = null; RoomUser User2 = null; switch (GetBaseItem().InteractionType) { case InteractionType.gift: // do nothing break; case InteractionType.onewaygate: User = null; if (InteractingUser > 0) { User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser); //GetRoom().FreeSqareForUsers(mX, mY); } if (User != null && User.Coordinate == SquareBehind) { User.UnlockWalking(); //data = new StringData("0"); InteractingUser = 0; ServerMessage update = new ServerMessage(Outgoing.OneWayDoorStatus); update.AppendUInt(Id); // id update.AppendInt32(0); // status mRoom.SendMessage(update); } else if (data.ToString() == "1") { //data = new StringData("0"); ServerMessage update = new ServerMessage(Outgoing.OneWayDoorStatus); update.AppendUInt(Id); // id update.AppendInt32(0); // status mRoom.SendMessage(update); } if (User == null) { InteractingUser = 0; } break; case InteractionType.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().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser); // Is this user okay? if (User != null) { // Is he in the tele? if (User.Coordinate == Coordinate) { //Remove the user from the square User.AllowOverride = false; if (TeleHandler.IsTeleLinked(Id, mRoom)) { showTeleEffect = true; if (true) { // Woop! No more delay. uint TeleId = TeleHandler.GetLinkedTele(Id, mRoom); uint RoomId = TeleHandler.GetTeleRoomId(TeleId, mRoom); // Do we need to tele to the same room or gtf to another? if (RoomId == this.RoomId) { RoomItem Item = GetRoom().GetRoomItemHandler().GetItem(TeleId); if (Item == null) { User.UnlockWalking(); } else { // Set pos User.SetPos(Item.GetX, Item.GetY, Item.GetZ); User.SetRot(Item.Rot, false); // Force tele effect update (dirty) Item.data = new StringData("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.. WHY DARIO?! if (!User.IsBot && User != null && User.GetClient() != null && User.GetClient().GetHabbo() != null && User.GetClient().GetMessageHandler() != null) { User.GetClient().GetHabbo().IsTeleporting = true; User.GetClient().GetHabbo().TeleportingRoomID = RoomId; User.GetClient().GetHabbo().TeleporterId = TeleId; User.GetClient().GetMessageHandler().ForwardToRoom((int)RoomId); } else { } //FirewindEnvironment.GetGame().GetRoomManager().AddTeleAction(new TeleUserData(User.GetClient().GetMessageHandler(), User.GetClient().GetHabbo(), 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. User.UnlockWalking(); InteractingUser = 0; } } // Is he in front of the tele? else if (User.Coordinate == SquareInFront) { User.AllowOverride = true; // 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 != mX || User.GoalY != mY)) { User.ClearMovement(true); } User.CanWalk = false; User.AllowOverride = true; // Move into the tele User.MoveTo(Coordinate.X, Coordinate.Y, true); } // 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().GetRoomUserManager().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 (data.ToString() != "1") { data = new StringData("1"); UpdateState(false, true); } } else if (showTeleEffect) { if (data.ToString() != "2") { data = new StringData("2"); UpdateState(false, true); } } else { if (data.ToString() != "0") { data = new StringData("0"); UpdateState(false, true); } } // We're constantly going! ReqUpdate(1, false); break; case InteractionType.bottle: data = new StringData(FirewindEnvironment.GetRandomNumber(0, 7).ToString()); UpdateState(); break; case InteractionType.dice: data = new StringData(FirewindEnvironment.GetRandomNumber(1, 6).ToString()); UpdateState(); break; case InteractionType.habbowheel: data = new StringData(FirewindEnvironment.GetRandomNumber(1, 10).ToString()); UpdateState(); break; case InteractionType.loveshuffler: if (data.GetData() == "0") { data = new StringData(FirewindEnvironment.GetRandomNumber(1, 4).ToString()); ReqUpdate(20, false); } else if (data.GetData() != "-1") { data = new StringData("-1"); } UpdateState(false, true); break; case InteractionType.alert: if (data.GetData() == "1") { data = new StringData("0"); UpdateState(false, true); } break; case InteractionType.vendingmachine: if (data.GetData() == "1") { User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser); if (User != null) { User.UnlockWalking(); int randomDrink = GetBaseItem().VendingIds[FirewindEnvironment.GetRandomNumber(0, (GetBaseItem().VendingIds.Count - 1))]; User.CarryItem(randomDrink); } this.InteractingUser = 0; data = new StringData("0"); UpdateState(false, true); } break; case InteractionType.scoreboard: { if (string.IsNullOrEmpty((string)data.GetData())) { break; } int seconds = 0; try { seconds = int.Parse((string)data.GetData()); } catch { } if (seconds > 0) { if (interactionCountHelper == 1) { seconds--; interactionCountHelper = 0; data = new StringData(seconds.ToString()); UpdateState(); } else { interactionCountHelper++; } UpdateCounter = 1; } else { UpdateCounter = 0; } break; } case InteractionType.banzaicounter: { if (string.IsNullOrEmpty((string)data.GetData())) { break; } int seconds = 0; try { seconds = int.Parse((string)data.GetData()); } catch { } if (seconds > 0) { if (interactionCountHelper == 1) { seconds--; interactionCountHelper = 0; if (GetRoom().GetBanzai().isBanzaiActive) { ((StringData)data).Data = seconds.ToString(); UpdateState(); } else { break; } } else { interactionCountHelper++; } UpdateCounter = 1; } else { UpdateCounter = 0; GetRoom().GetBanzai().BanzaiEnd(); } break; } case InteractionType.banzaitele: { ((StringData)data).Data = string.Empty; UpdateState(); break; } /* * 3 = Red 1 * 4 = Red 2 * 5 = Red 3 * * 6 = Green 1 * 7 = Green 2 * 8 = Green 3 * * 9 = Blue 1 * 10= Blue 2 * 11= Blue 3 * * 12= Yellow 1 * 13= Yellow 2 * 14= Yellow 3 */ case InteractionType.banzaifloor: { if (value == 3) { if (interactionCountHelper == 1) { interactionCountHelper = 0; switch (team) { case Team.blue: { ((StringData)data).Data = "11"; break; } case Team.green: { ((StringData)data).Data = "8"; break; } case Team.red: { ((StringData)data).Data = "5"; break; } case Team.yellow: { ((StringData)data).Data = "14"; break; } } } else { ((StringData)data).Data = ""; interactionCountHelper++; } UpdateState(); interactionCount++; if (interactionCount < 16) { UpdateCounter = 1; } else { UpdateCounter = 0; } } break; } case InteractionType.banzaipuck: { if (interactionCount > 4) { interactionCount++; UpdateCounter = 1; } else { interactionCount = 0; UpdateCounter = 0; } break; } case InteractionType.freezetile: { if (InteractingUser > 0) { ((StringData)data).Data = "11000"; UpdateState(false, true); GetRoom().GetFreeze().onFreezeTiles(this, freezePowerUp, InteractingUser); InteractingUser = 0; interactionCountHelper = 0; } break; } case InteractionType.freezetimer: { if (string.IsNullOrEmpty((string)data.GetData())) { break; } int seconds = 0; try { seconds = int.Parse(data.GetData().ToString()); } catch { } if (seconds > 0) { if (interactionCountHelper == 1) { seconds--; interactionCountHelper = 0; if (GetRoom().GetFreeze().GameIsStarted) { ((StringData)data).Data = seconds.ToString(); UpdateState(); } else { break; } } else { interactionCountHelper++; } UpdateCounter = 1; } else { UpdateNeeded = false; GetRoom().GetFreeze().StopGame(); } break; } } } }
private bool TeleportUser(RoomUser user) { if (user == null) return false; else if (user.GetClient() == null) return false; else if (user.GetClient().GetHabbo() == null || user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() == null) return false; if (disposed || user.GetClient().GetHabbo().IsHopping || user.GetClient().GetHabbo().IsTeleporting) { user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0); return false; } if (user.InteractingGate) { RoomItem itemm = user.GetClient().GetHabbo().CurrentRoom.GetRoomItemHandler().GetItem(user.GateId); if (itemm != null) itemm.InteractingUser = 0; user.UnlockWalking(); user.InteractingGate = false; user.GateId = 0; user.UpdateNeeded = true; } user.UnlockWalking(); if (items.Count > 1) { int toTest = 0; RoomItem item; for (int i = 0; i < items.Count; i++) { toTest = rnd.Next(0, items.Count); item = items[toTest]; if (item == null) continue; if (item.Coordinate != user.Coordinate) { gamemap.TeleportToItem(user, item); user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0); return true; } } } else if (items.Count == 1) { gamemap.TeleportToItem(user, items.First()); user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0); return true; } else if (items.Count == 0) { user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0); } return false; }