Ejemplo n.º 1
0
        public Trade(Room room, RoomUnitUser user, RoomUnitUser target)
        {
            this.Room    = room;
            this.Traders = new TradeUser[] { new TradeUser(user), new TradeUser(target) };
            this.Started = false;
            this.Status  = TradeConfirmStatus.None;

            user.AddStatus("trd", "");
            target.AddStatus("trd", "");
        }
Ejemplo n.º 2
0
        //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!");
                }
            }
        }