public override void DoWiredAction(RoomUnitUser triggerer, HashSet <uint> used) { if (this.SelectedItems.Count > 0) { RoomItemWiredMoveUser wired = (RoomItemWiredMoveUser)this; int index = RandomUtilies.GetRandom(0, wired.SelectedItems.Count - 1); RoomItem item_ = wired.SelectedItems[index]; if (item_ != null) { if (triggerer != null) { triggerer.StopMoving(); triggerer.SetLocation(item_.X, item_.Y, item_.Z); //set new location triggerer.UpdateState(); wired.Effect(triggerer); } else { foreach (RoomUnitUser user in this.Room.RoomUserManager.GetRealUsers()) { user.StopMoving(); user.SetLocation(item_.X, item_.Y, item_.Z); //set new location user.UpdateState(); wired.Effect(user); } } } } }
//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!"); } } }