public override void OnUse(GameClient session, RoomItem item, int request, bool userHasRights) { if (session != null) { RoomUnitUser user = session.GetHabbo().GetRoomSession().GetRoomUser(); if (user != null) { if (ThreeDCoord.smethod_0(new ThreeDCoord(user.X, user.Y), new ThreeDCoord(item.X, item.Y)) || ThreeDCoord.smethod_0(new ThreeDCoord(user.X, user.Y), item.TDC)) { RoomItemTeleport teleport = (RoomItemTeleport)item; if (teleport.Interactor == null && user.Interacting == null) { teleport.Interactor = user; teleport.Way = 1; user.Interacting = item; } } else { if (user.Interacting == null) { user.MoveTo(item.TDC.x, item.TDC.y); } } } } }
public override void OnCycle() { bool open = false; bool tele = false; if (this.Interactor != null && this.Interactor.Interacting == this) { if (this.Way == 0) //none { this.Interactor.Interacting = null; this.Interactor = null; } else if (this.Way == 1) //going in { if (ThreeDCoord.smethod_0(new ThreeDCoord(this.Interactor.X, this.Interactor.Y), new ThreeDCoord(this.X, this.Y))) { KeyValuePair <uint, uint> teleDate = TeleHandler.GetTeleDestiny(this.ID); if (teleDate.Key != 0 && teleDate.Value != 0) { tele = true; if (teleDate.Value == this.Room.ID) { RoomItemTeleport item = (RoomItemTeleport)this.Room.RoomItemManager.TryGetRoomItem(teleDate.Key); if (item != null) { this.Interactor.SetLocation(item.X, item.Y, item.Z); this.Interactor.SetRotation(item.Rot, true); this.Interactor.Interacting = item; this.Interactor.Interacting = item; item.Interactor = this.Interactor; item.Way = 2; } else { this.Interactor.RestrictMovementType &= ~RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } } else { Room room = Skylight.GetGame().GetRoomManager().TryGetAndLoadRoom(teleDate.Value); if (room != null) { this.Interactor.Session.GetHabbo().GetRoomSession().HandleTeleport(room, teleDate.Key); } else { this.Interactor.RestrictMovementType &= ~RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } } } else { this.Interactor.RestrictMovementType &= RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } this.Way = 0; } else { if (ThreeDCoord.smethod_0(new ThreeDCoord(this.Interactor.X, this.Interactor.Y), this.TDC)) { open = true; this.Interactor.RestrictMovementType |= RestrictMovementType.Client; this.Interactor.Override = true; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } else { this.Way = 0; } } } else if (this.Way == 2) //going out { if (this.ExtraData == "2") { open = true; this.Interactor.RestrictMovementType &= ~RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); this.Way = 0; } else { tele = true; } } } else { if (this.Interactor != null) { this.Interactor = null; } this.Way = 0; } if (open) { if (this.ExtraData != "1") { this.ExtraData = "1"; this.UpdateState(false, true); } } else if (tele) { if (this.ExtraData != "2") { this.ExtraData = "2"; this.UpdateState(false, true); } } else { if (this.ExtraData != "0") { this.ExtraData = "0"; this.UpdateState(false, true); } } }
//public void UpdateUserStateOnTile(RoomUser user) //{ // if (user != null) // { // RoomTile tile = user.CurrentTile; // if (tile != null) // { // user.RemoveStatus("sit"); // user.RemoveStatus("lay"); // if (tile.IsSeat) // { // user.SetLocation(user.X, user.Y, tile.GetZ(false), true, false); // if (tile.HigestRoomItem != null) // { // user.AddStatus("sit", TextUtilies.DoubleWithDotDecimal(tile.HigestRoomItem.BaseItem.Height)); // user.SetRotation(tile.HigestRoomItem.Rot, true); // } // else // { // user.AddStatus("sit", TextUtilies.DoubleWithDotDecimal(1.0)); // user.SetRotation(this.Room.RoomGamemapManager.Model.Rotation[user.X, user.Y], true); // } // } // else if (tile.IsBed) // { // user.AddStatus("lay", TextUtilies.DoubleWithDotDecimal(tile.HigestRoomItem.BaseItem.Height)); // user.SetLocation(user.X, user.Y, tile.GetZ(false), true, false); // user.SetRotation(tile.HigestRoomItem.Rot, true); // } // else // { // user.SetLocation(user.X, user.Y, tile.GetZ(true), true, false); // } // if (!(user is RoomPet)) // { // RoomItem higestRoomItem = tile.HigestRoomItem; // if (higestRoomItem != null) // { // string gender = user.IsRealUser ? user.GetClient().GetHabbo().Gender : "M"; // int effectId = gender == "M" ? higestRoomItem.GetBaseItem().EffectM : higestRoomItem.GetBaseItem().EffectF; // if (effectId > 0) // { // if (user.ActiveEffect != effectId) // { // user.ApplyEffect(effectId); // user.EffectGaveByItem = effectId; // } // } // else // { // if (user.EffectGaveByItem > 0) // { // if (user.ActiveEffect != -1) // { // user.ApplyEffect(-1); // user.EffectGaveByItem = -1; // } // } // } // } // else // { // if (user.EffectGaveByItem > 0) // { // if (user.ActiveEffect != -1) // { // user.ApplyEffect(-1); // user.EffectGaveByItem = -1; // } // } // } // if (higestRoomItem is RoomItemFootballGate) // { // RoomItemFootballGate gate = (RoomItemFootballGate)higestRoomItem; // FigureParts gateFigureParts = new FigureParts(user.IsRealUser ? (user.GetClient().GetHabbo().Gender.ToLower() == "m" ? gate.Data[0] : gate.Data[1]) : gate.Data[0]); // FigureParts userCurrentFigureParts = new FigureParts(user.IsRealUser ? user.GetClient().GetHabbo().Look : (user as RoomBot).Data.Look); // bool changedSomething = false; // foreach (KeyValuePair<string, Dictionary<string, object>> data in gateFigureParts.GetParts()) // { // bool changePart = false; // Dictionary<string, object> data_ = userCurrentFigureParts.GetPart(data.Key); // if (data_ != null) // { // if (data_["setid"] != data.Value["setid"]) // { // changePart = true; // } // else // { // List<string> userColors = data_["colorids"] as List<string>; // List<string> gateColors = data.Value["colorids"] as List<string>; // if (userColors != null && gateColors != null && userColors.Count == gateColors.Count) // { // for(int i = 0; i < userColors.Count; i++) // { // if (userColors[i] != gateColors[i]) // { // changePart = true; // break; // } // } // } // else // { // changePart = true; // } // } // } // else // { // changePart = true; // } // if (changePart) // { // changedSomething = true; // userCurrentFigureParts.ReplacePart(data.Value); // } // } // if (!user.FootballGateFigureActive) // { // if (changedSomething) // { // user.FootballGateFigureActive = true; // string figure = userCurrentFigureParts.GetPartString(); // if (user.IsRealUser) // { // ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); // message_.Init(r63aOutgoing.UpdateUser); // message_.AppendInt32(-1); // message_.AppendString(figure); // message_.AppendString(user.GetClient().GetHabbo().Gender.ToLower()); // message_.AppendString(user.GetClient().GetHabbo().Motto); // message_.AppendInt32(user.GetClient().GetHabbo().GetUserStats().AchievementPoints); // user.GetClient().SendMessage(message_); // } // ServerMessage message_2 = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); // message_2.Init(r63aOutgoing.UpdateUser); // message_2.AppendInt32(user.VirtualID); // message_2.AppendString(figure); // message_2.AppendString(user.IsRealUser ? user.GetClient().GetHabbo().Gender.ToLower() : "m"); // message_2.AppendString(user.IsRealUser ? user.GetClient().GetHabbo().Motto : (user as RoomBot).Data.Motto); // message_2.AppendInt32(0); // this.Room.SendToAll(message_2); // } // } // else // { // if (user.FootballGateFigureActive) // { // user.FootballGateFigureActive = false; // if (user.IsRealUser) // { // ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); // message_.Init(r63aOutgoing.UpdateUser); // message_.AppendInt32(-1); // message_.AppendString(user.GetClient().GetHabbo().Look); // message_.AppendString(user.GetClient().GetHabbo().Gender.ToLower()); // message_.AppendString(user.GetClient().GetHabbo().Motto); // message_.AppendInt32(user.GetClient().GetHabbo().GetUserStats().AchievementPoints); // user.GetClient().SendMessage(message_); // } // ServerMessage message_2 = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); // message_2.Init(r63aOutgoing.UpdateUser); // message_2.AppendInt32(user.VirtualID); // message_2.AppendString(user.IsRealUser ? user.GetClient().GetHabbo().Look : (user as RoomBot).Data.Look); // message_2.AppendString(user.IsRealUser ? user.GetClient().GetHabbo().Gender.ToLower() : "m"); // message_2.AppendString(user.IsRealUser ? user.GetClient().GetHabbo().Motto : (user as RoomBot).Data.Motto); // message_2.AppendInt32(0); // this.Room.SendToAll(message_2); // } // } // } // } // } // } //} public void EnterRoom(GameClient gameClient) { RoomUnitUser roomUser = new RoomUnitUser(gameClient, this.Room, this.GetNextVirtualID()); if (roomUser.Session.GetHabbo() != null) { this.RoomUsers.Add(roomUser.VirtualID, roomUser.GetType(), roomUser); if (gameClient.GetHabbo().GetRoomSession().TargetTeleportID == 0) { roomUser.SetLocation(this.Room.RoomGamemapManager.Model.DoorX, this.Room.RoomGamemapManager.Model.DoorY, this.Room.RoomGamemapManager.Model.DoorZ); roomUser.SetRotation(this.Room.RoomGamemapManager.Model.DoorDir, true); } else { RoomItemTeleport item = (RoomItemTeleport)this.Room.RoomItemManager.TryGetRoomItem(gameClient.GetHabbo().GetRoomSession().TargetTeleportID); if (item != null) { roomUser.SetLocation(item.X, item.Y, item.Z); roomUser.SetRotation(item.Rot, true); roomUser.Interacting = item; item.Interactor = roomUser; item.Way = 2; } else { roomUser.SetLocation(this.Room.RoomGamemapManager.Model.DoorX, this.Room.RoomGamemapManager.Model.DoorY, this.Room.RoomGamemapManager.Model.DoorZ); roomUser.SetRotation(this.Room.RoomGamemapManager.Model.DoorDir, true); } } gameClient.GetHabbo().GetRoomSession().TargetTeleportID = 0; if (this.Room.HaveOwnerRights(gameClient)) { roomUser.AddStatus("flatctrl", "useradmin"); } else if (this.Room.GaveRoomRights(gameClient)) { roomUser.AddStatus("flatctrl", ""); } this.Room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.SetRoomUser, new ValueHolder().AddValue("RoomUser", new List <RoomUnit>() { roomUser }))); roomUser.Session.GetHabbo().GetRoomSession().EnteredRoom(this.Room.ID, roomUser); roomUser.Session.GetHabbo().GetMessenger().UpdateAllFriends(false); this.Room.UpdateUsersCount(); gameClient.GetHabbo().GetMessenger().UpdateAllFriends(false); if (this.Room.RoomData.OwnerID == gameClient.GetHabbo().ID) //room owner enters { if (gameClient.GetHabbo().NewbieStatus != 2) { if (gameClient.GetHabbo().NewbieRoom == this.Room.RoomData.ID) { foreach (RoomUnit user in this.RoomUsers.Values) { if (user is RoomBotNewbieGuide) { return; } } this.AddNewbieGuideTimer = 10; } } } gameClient.GetHabbo().GetUserStats().RoomRaider++; gameClient.GetHabbo().GetUserAchievements().CheckAchievement("RoomRaider"); if (this.Room.RoomData.ExtraData.SellRoomPrice != null && this.Room.RoomData.ExtraData.SellRoomPrice.Count > 0) { string message = "Looks like this room is on sale for the price of:\n"; foreach (KeyValuePair <string, int> price in this.Room.RoomData.ExtraData.SellRoomPrice) { message += price.Key.First().ToString().ToUpper() + price.Key.Substring(1) + " => " + price.Value + "\n"; } gameClient.SendNotif(message); } if (this.Room.RoomData.ExtraData.RoleplayEnabled) { gameClient.SendNotif("RP is enabled on this room!"); } } }