示例#1
0
        public bool Execute(params object[] stuff)
        {
            RoomUser bot = Room.GetRoomUserManager().GetBotByName(OtherString);

            if (bot == null || OtherExtraString == "null")
            {
                return(false);
            }

            bot.BotData.Look = OtherExtraString;
            ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer"));

            serverMessage.AppendInteger(1);
            bot.Serialize(serverMessage, false);
            Room.SendMessage(serverMessage);

            return(true);
        }
示例#2
0
        public void parse(GameClient Session, ClientMessage Event)
        {
            int num = Event.PopWiredInt32();

            if (num > 0 && (Session != null && Session.GetHabbo() != null))
            {
                Session.GetHabbo().GroupID = 0;
                if (Session.GetHabbo().InRoom)
                {
                    Room          class14_ = Session.GetHabbo().CurrentRoom;
                    RoomUser      @class   = class14_.GetRoomUserByHabbo(Session.GetHabbo().Id);
                    ServerMessage Message  = new ServerMessage(28u);
                    Message.AppendInt32(1);
                    @class.Serialize(Message);
                    class14_.SendMessage(Message, null);
                }
                using (DatabaseClient class2 = PhoenixEnvironment.GetDatabase().GetClient())
                {
                    class2.ExecuteQuery("UPDATE user_stats SET groupid = 0 WHERE Id = " + Session.GetHabbo().Id + " LIMIT 1;");
                }
                DataTable dataTable_ = Session.GetHabbo().GroupMemberships;
                if (dataTable_ != null)
                {
                    ServerMessage Message2 = new ServerMessage(915u);
                    Message2.AppendInt32(dataTable_.Rows.Count);
                    foreach (DataRow dataRow in dataTable_.Rows)
                    {
                        Group class3 = GroupManager.GetGroup((int)dataRow["groupid"]);
                        Message2.AppendInt32(class3.Id);
                        Message2.AppendStringWithBreak(class3.Name);
                        Message2.AppendStringWithBreak(class3.Badge);
                        if (Session.GetHabbo().GroupID == class3.Id)
                        {
                            Message2.AppendBoolean(true);
                        }
                        else
                        {
                            Message2.AppendBoolean(false);
                        }
                    }
                    Session.SendMessage(Message2);
                }
            }
        }
示例#3
0
        /// <summary>
        ///     Handles the <see cref="E:UserAdd" /> event.
        /// </summary>
        /// <param name="user"></param>
        private void OnUserAdd(RoomUser user)
        {
            try
            {
                if (user?.GetClient() == null || user.GetClient().GetHabbo() == null)
                    return;

                GameClient client = user.GetClient();

                if (client?.GetHabbo() == null || _userRoom == null)
                    return;

                if (!user.IsSpectator)
                {
                    DynamicRoomModel model = _userRoom.GetGameMap().Model;
                    if (model == null) return;
                    user.SetPos(model.DoorX, model.DoorY, model.DoorZ);
                    user.SetRot(model.DoorOrientation, false);

                    user.AddStatus(_userRoom.CheckRights(client, true) ? "flatctrl 4" : "flatctrl 1", string.Empty);

                    user.CurrentItemEffect = ItemEffectType.None;

                    if (!user.IsBot && client.GetHabbo().IsTeleporting)
                    {
                        client.GetHabbo().IsTeleporting = false;
                        client.GetHabbo().TeleportingRoomId = 0;

                        RoomItem item = _userRoom.GetRoomItemHandler().GetItem(client.GetHabbo().TeleporterId);

                        if (item != null)
                        {
                            item.ExtraData = "2";
                            item.UpdateState(false, true);
                            user.SetPos(item.X, item.Y, item.Z);
                            user.SetRot(item.Rot, false);
                            item.InteractingUser2 = client.GetHabbo().Id;
                            item.ExtraData = "0";
                            item.UpdateState(false, true);
                        }
                    }
                    if (!user.IsBot && client.GetHabbo().IsHopping)
                    {
                        client.GetHabbo().IsHopping = false;
                        client.GetHabbo().HopperId = 0;

                        RoomItem item2 = _userRoom.GetRoomItemHandler().GetItem(client.GetHabbo().HopperId);

                        if (item2 != null)
                        {
                            item2.ExtraData = "1";
                            item2.UpdateState(false, true);
                            user.SetPos(item2.X, item2.Y, item2.Z);
                            user.SetRot(item2.Rot, false);
                            user.AllowOverride = false;
                            item2.InteractingUser2 = client.GetHabbo().Id;
                            item2.ExtraData = "2";
                            item2.UpdateState(false, true);
                        }
                    }
                    if (!user.IsSpectator)
                    {
                        ServerMessage serverMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer"));
                        serverMessage.AppendInteger(1);
                        user.Serialize(serverMessage, _userRoom.GetGameMap().GotPublicPool);
                        _userRoom.SendMessage(serverMessage);
                    }
                    if (!user.IsBot)
                    {
                        ServerMessage serverMessage2 = new ServerMessage();
                        serverMessage2.Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer"));
                        serverMessage2.AppendInteger(user.VirtualId);
                        serverMessage2.AppendString(client.GetHabbo().Look);
                        serverMessage2.AppendString(client.GetHabbo().Gender.ToLower());
                        serverMessage2.AppendString(client.GetHabbo().Motto);
                        serverMessage2.AppendInteger(client.GetHabbo().AchievementPoints);
                        _userRoom.SendMessage(serverMessage2);
                    }
                    if (_userRoom.RoomData.Owner != client.GetHabbo().UserName)
                    {
                        Yupi.GetGame()
                            .GetAchievementManager()
                            .ProgressUserAchievement(client, "ACH_RoomEntry", 1);
                    }
                }
                if (client.GetHabbo().GetMessenger() != null)
                    client.GetHabbo().GetMessenger().OnStatusChanged(true);
                client.GetMessageHandler().OnRoomUserAdd();

                //if (client.GetHabbo().HasFuse("fuse_mod")) client.GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(102);
                //if (client.GetHabbo().Rank == Convert.ToUInt32(Yupi.GetDbConfig().DbData["ambassador.minrank"])) client.GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(178);

                if (OnUserEnter != null)
                    OnUserEnter(user, null);
                if (_userRoom.GotMusicController() && _userRoom.GotMusicController())
                    _userRoom.GetRoomMusicController().OnNewUserEnter(user);
                _userRoom.OnUserEnter(user);
            }
            catch (Exception ex)
            {
                ServerLogManager.LogCriticalException(ex.ToString());
            }
        }
示例#4
0
        /// <summary>
        ///     Deploys the bot.
        /// </summary>
        /// <param name="bot">The bot.</param>
        /// <param name="petData">The pet data.</param>
        /// <returns>RoomUser.</returns>
        internal RoomUser DeployBot(RoomBot bot, Pet petData)
        {
            int virtualId = _primaryPrivateUserId++;

            RoomUser roomUser = new RoomUser(0u, _userRoom.RoomId, virtualId, _userRoom, false);

            int num = _secondaryPrivateUserId++;

            roomUser.InternalRoomId = num;
            UserList.TryAdd(num, roomUser);
            OnUserAdd(roomUser);

            DynamicRoomModel model = _userRoom.GetGameMap().Model;
            Point coord = new Point(bot.X, bot.Y);

            if ((bot.X > 0) && (bot.Y >= 0) && (bot.X < model.MapSizeX) && (bot.Y < model.MapSizeY))
            {
                _userRoom.GetGameMap().AddUserToMap(roomUser, coord);
                roomUser.SetPos(bot.X, bot.Y, bot.Z);
                roomUser.SetRot(bot.Rot, false);
            }
            else
            {
                bot.X = model.DoorX;
                bot.Y = model.DoorY;
                roomUser.SetPos(model.DoorX, model.DoorY, model.DoorZ);
                roomUser.SetRot(model.DoorOrientation, false);
            }

            bot.RoomUser = roomUser;
            roomUser.BotData = bot;

            roomUser.BotAi = bot.GenerateBotAi(roomUser.VirtualId, (int) bot.BotId);

            if (roomUser.IsPet)
            {
                roomUser.BotAi.Init(bot.BotId, roomUser.VirtualId, _userRoom.RoomId, roomUser, _userRoom);
                roomUser.PetData = petData;
                roomUser.PetData.VirtualId = roomUser.VirtualId;
            }
            else
                roomUser.BotAi.Init(bot.BotId, roomUser.VirtualId, _userRoom.RoomId, roomUser, _userRoom);

            UpdateUserStatus(roomUser, false);
            roomUser.UpdateNeeded = true;

            ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer"));

            serverMessage.AppendInteger(1);
            roomUser.Serialize(serverMessage, _userRoom.GetGameMap().GotPublicPool);

            _userRoom.SendMessage(serverMessage);

            roomUser.BotAi.OnSelfEnterRoom();

            if (roomUser.IsPet)
            {
                if (_pets.Contains(roomUser.PetData.PetId))
                    _pets[roomUser.PetData.PetId] = roomUser;
                else
                    _pets.Add(roomUser.PetData.PetId, roomUser);

                PetCount++;
            }

            roomUser.BotAi.Modified();

            if (roomUser.BotData.AiType != AiType.Generic)
                return roomUser;

            if (_bots.Contains(roomUser.BotData.BotId))
                _bots[roomUser.BotData.BotId] = roomUser;
            else
                _bots.Add(roomUser.BotData.BotId, roomUser);

            serverMessage.Init(LibraryParser.OutgoingRequest("DanceStatusMessageComposer"));
            serverMessage.AppendInteger(roomUser.VirtualId);
            serverMessage.AppendInteger(roomUser.BotData.DanceId);
            _userRoom.SendMessage(serverMessage);
            PetCount++;

            return roomUser;
        }
示例#5
0
        internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
        {
            RoomUser BotUser = new RoomUser(0, room.RoomId, primaryPrivateUserID++, room, false);
            int PersonalID = secondaryPrivateUserID++;
            BotUser.InternalRoomID = PersonalID;
            //this.UserList[PersonalID] = BotUser;
            userlist.Add(PersonalID, BotUser);
            DynamicRoomModel Model = room.GetGameMap().Model;

            if ((Bot.X > 0 && Bot.Y > 0) && Bot.X < Model.MapSizeX && Bot.Y < Model.MapSizeY)
            {
                BotUser.SetPos(Bot.X, Bot.Y, Bot.Z);
                BotUser.SetRot(Bot.Rot, false);
            }
            else
            {
                Bot.X = Model.DoorX;
                Bot.Y = Model.DoorY;

                BotUser.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ);
                BotUser.SetRot(Model.DoorOrientation, false);
            }

            BotUser.BotData = Bot;
            BotUser.BotAI = Bot.GenerateBotAI(BotUser.VirtualId);

            if (BotUser.IsPet)
            {

                BotUser.BotAI.Init((int)Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
                BotUser.PetData = PetData;
                BotUser.PetData.VirtualId = BotUser.VirtualId;
            }
            else
            {
                BotUser.BotAI.Init(-1, BotUser.VirtualId, room.RoomId, BotUser, room);
            }

            UpdateUserStatus(BotUser, false);
            BotUser.UpdateNeeded = true;

            ServerMessage EnterMessage = new ServerMessage(28);
            EnterMessage.AppendInt32(1);
            BotUser.Serialize(EnterMessage, room.GetGameMap().gotPublicPool);
            room.SendMessage(EnterMessage);

            BotUser.BotAI.OnSelfEnterRoom();

            if (BotUser.BotData.AiType == AIType.Guide)
                room.guideBotIsCalled = true;
            if (BotUser.IsPet)
            {
                if (pets.ContainsKey(BotUser.PetData.PetId)) //Pet allready placed
                    pets[BotUser.PetData.PetId] = BotUser;
                else
                    pets.Add(BotUser.PetData.PetId, BotUser);

                petCount++;
            }

            return BotUser;
        }
示例#6
0
 internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
 {
     int virtualId = this.primaryPrivateUserID++;
     RoomUser roomUser = new RoomUser(0u, this.room.RoomId, virtualId, this.room, false);
     int num = this.secondaryPrivateUserID++;
     roomUser.InternalRoomID = num;
     this.userlist.Add(num, roomUser);
     DynamicRoomModel model = this.room.GetGameMap().Model;
     Point coord = new Point(Bot.X, Bot.Y);
     if (Bot.X > 0 && Bot.Y > 0 && Bot.X < model.MapSizeX && Bot.Y < model.MapSizeY)
     {
         this.room.GetGameMap().AddUserToMap(roomUser, coord);
         roomUser.SetPos(Bot.X, Bot.Y, Bot.Z);
         roomUser.SetRot(Bot.Rot, false);
     }
     else
     {
         Bot.X = model.DoorX;
         Bot.Y = model.DoorY;
         roomUser.SetPos(model.DoorX, model.DoorY, model.DoorZ);
         roomUser.SetRot(model.DoorOrientation, false);
     }
     roomUser.BotData = Bot;
     checked
     {
         roomUser.BotAI = Bot.GenerateBotAI(roomUser.VirtualId, (int)Bot.BotId);
         if (roomUser.IsPet)
         {
             roomUser.BotAI.Init(Bot.BotId, roomUser.VirtualId, this.room.RoomId, roomUser, this.room);
             roomUser.PetData = PetData;
             roomUser.PetData.VirtualId = roomUser.VirtualId;
         }
         else
         {
             roomUser.BotAI.Init(Bot.BotId, roomUser.VirtualId, this.room.RoomId, roomUser, this.room);
         }
         this.UpdateUserStatus(roomUser, false);
         roomUser.UpdateNeeded = true;
         ServerMessage serverMessage = new ServerMessage(Outgoing.SetRoomUserMessageComposer);
         serverMessage.AppendInt32(1);
         roomUser.Serialize(serverMessage, this.room.GetGameMap().gotPublicPool);
         this.room.SendMessage(serverMessage);
         roomUser.BotAI.OnSelfEnterRoom();
         if (roomUser.IsPet)
         {
             if (this.pets.Contains(roomUser.PetData.PetId))
             {
                 this.pets[roomUser.PetData.PetId] = roomUser;
             }
             else
             {
                 this.pets.Add(roomUser.PetData.PetId, roomUser);
             }
             this.petCount++;
         }
         if (roomUser.BotData.AiType == AIType.Generic)
         {
             if (this.bots.Contains(roomUser.BotData.BotId))
             {
                 this.bots[roomUser.BotData.BotId] = roomUser;
             }
             else
             {
                 this.bots.Add(roomUser.BotData.BotId, roomUser);
             }
             serverMessage.Init(Outgoing.DanceStatusMessageComposer);
             serverMessage.AppendInt32(roomUser.VirtualId);
             serverMessage.AppendInt32(roomUser.BotData.DanceId);
             this.room.SendMessage(serverMessage);
             this.petCount++;
         }
         return roomUser;
     }
 }
示例#7
0
        public void parse(GameClient Session, ClientMessage Request)
        {
            string text = PhoenixEnvironment.FilterInjectionChars(Request.PopFixedString(), false, true);

            if (text.Length < 3)
            {
                ServerMessage Message = new ServerMessage(571u);
                Message.AppendString("J");
                Session.SendMessage(Message);
            }
            else
            {
                if (text.Length > 15)
                {
                    ServerMessage Message = new ServerMessage(571u);
                    Message.AppendString("K");
                    Session.SendMessage(Message);
                }
                else
                {
                    if (text.Contains(" ") || !Session.GetMessageHandler().NameFree(text) || text != ChatCommandHandler.ApplyWordFilter(text))
                    {
                        ServerMessage Message = new ServerMessage(571u);
                        Message.AppendString("QA");
                        Session.SendMessage(Message);
                    }
                    else
                    {
                        if (Request.Header == "GW")
                        {
                            ServerMessage Message = new ServerMessage(571u);
                            Message.AppendString("H");
                            Message.AppendString(text);
                            Session.SendMessage(Message);
                        }
                        else
                        {
                            if (Request.Header == "GV")
                            {
                                ServerMessage Message2 = new ServerMessage(570u);
                                Message2.AppendString("H");
                                Session.SendMessage(Message2);
                                ServerMessage Message3 = new ServerMessage(572u);
                                Message3.AppendUInt(Session.GetHabbo().Id);
                                Message3.AppendString("H");
                                Message3.AppendString(text);
                                Session.SendMessage(Message3);
                                if (Session.GetHabbo().CurrentRoomId > 0u)
                                {
                                    Room          @class   = PhoenixEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                                    RoomUser      class2   = @class.GetRoomUserByHabbo(Session.GetHabbo().Id);
                                    ServerMessage Message4 = new ServerMessage(28u);
                                    Message4.AppendInt32(1);
                                    class2.Serialize(Message4);
                                    @class.SendMessage(Message4, null);
                                }
                                Dictionary <Room, int> dictionary = PhoenixEnvironment.GetGame().GetRoomManager().method_22();
                                IEnumerable <Room>     arg_204_0  = dictionary.Keys;
                                if (ChangeUserNameMessageEvent.func_0 == null)
                                {
                                    ChangeUserNameMessageEvent.func_0 = new Func <Room, int>(ChangeUserNameMessageEvent.smethod_0);
                                }
                                IOrderedEnumerable <Room> orderedEnumerable = arg_204_0.OrderByDescending(ChangeUserNameMessageEvent.func_0);
                                foreach (Room current in orderedEnumerable)
                                {
                                    if (current.Owner == Session.GetHabbo().Username)
                                    {
                                        current.Owner = text;
                                        PhoenixEnvironment.GetGame().GetRoomManager().UnloadRoom(PhoenixEnvironment.GetGame().GetRoomManager().GetRoom(current.RoomId));
                                    }
                                }
                                using (DatabaseClient class3 = PhoenixEnvironment.GetDatabase().GetClient())
                                {
                                    class3.ExecuteQuery(string.Concat(new string[]
                                    {
                                        "UPDATE rooms SET owner = '",
                                        text,
                                        "' WHERE owner = '",
                                        Session.GetHabbo().Username,
                                        "'"
                                    }));
                                    class3.ExecuteQuery(string.Concat(new object[]
                                    {
                                        "UPDATE users SET username = '******' WHERE Id = '",
                                        Session.GetHabbo().Id,
                                        "' LIMIT 1"
                                    }));
                                    PhoenixEnvironment.GetGame().GetClientManager().RecordCmdLogs(Session, "flagme", "OldName: " + Session.GetHabbo().Username + " NewName: " + text);
                                    Session.GetHabbo().Username = text;
                                    Session.GetHabbo().UpdateRooms(class3);
                                    foreach (RoomData current2 in Session.GetHabbo().UsersRooms)
                                    {
                                        current2.Owner = text;
                                    }
                                }
                                PhoenixEnvironment.GetGame().GetAchievementManager().UnlockAchievement(Session, 9u, 1);
                            }
                        }
                    }
                }
            }
        }
示例#8
0
        internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
        {
            int num2;
            this.primaryPrivateUserID = (num2 = this.primaryPrivateUserID) + 1;
            RoomUser BotUser = new RoomUser(0, this.room.RoomId, num2, this.room, false);
            this.secondaryPrivateUserID = (num2 = this.secondaryPrivateUserID) + 1;
            int key = num2;
            BotUser.InternalRoomID = key;
            this.userlist.Add(key, BotUser);
            DynamicRoomModel Model = this.room.GetGameMap().Model;
            Point myPoint = new Point(Bot.X,Bot.Y);
            if ((Bot.X > 0 && Bot.Y > 0) && Bot.X < Model.MapSizeX && Bot.Y < Model.MapSizeY)
            {
                room.GetGameMap().AddUserToMap(BotUser, myPoint);
                BotUser.SetPos(Bot.X, Bot.Y, Bot.Z);
                BotUser.SetRot(Bot.Rot, false);
            }
            else
            {
                Bot.X = Model.DoorX;
                Bot.Y = Model.DoorY;

                BotUser.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ);
                BotUser.SetRot(Model.DoorOrientation, false);
            }

            BotUser.BotData = Bot;
            BotUser.BotAI = Bot.GenerateBotAI(BotUser.VirtualId,(int)Bot.BotId);

            if (BotUser.IsPet)
            {

                BotUser.BotAI.Init(Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
                BotUser.PetData = PetData;
                BotUser.PetData.VirtualId = BotUser.VirtualId;
            }
            else
            {
                BotUser.BotAI.Init(Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
            }

            this.UpdateUserStatus(BotUser, false);
            BotUser.UpdateNeeded = true;

            ServerMessage EnterMessage = new ServerMessage(Outgoing.PlaceBot);
            EnterMessage.AppendInt32(1);
            BotUser.Serialize(EnterMessage, room.GetGameMap().gotPublicPool);
            room.SendMessage(EnterMessage);

            BotUser.BotAI.OnSelfEnterRoom();

            if (BotUser.IsPet)
            {
                if (pets.ContainsKey(BotUser.PetData.PetId)) //Pet allready placed
                    pets[BotUser.PetData.PetId] = BotUser;
                else
                    pets.Add(BotUser.PetData.PetId, BotUser);

                petCount++;
            }
            if (BotUser.BotData.AiType == AIType.Generic)
            {
                if (bots.ContainsKey(BotUser.BotData.BotId))
                    bots[BotUser.BotData.BotId] = BotUser;
                else
                {
                    bots.Add(BotUser.BotData.BotId, BotUser);
                }

                EnterMessage.Init(Outgoing.Dance);
                EnterMessage.AppendInt32(BotUser.VirtualId);
                EnterMessage.AppendInt32(BotUser.BotData.DanceId);
                room.SendMessage(EnterMessage);
                petCount++;
            }

            return BotUser;
        }
示例#9
0
 public void parse(GameClient Session, ClientMessage Event)
 {
     if (Session.GetHabbo().LoadingRoom > 0u && Session.GetHabbo().LoadingChecksPassed)
     {
         RoomData @class = PhoenixEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().LoadingRoom);
         if (@class != null)
         {
             if (@class.Model == null)
             {
                 Session.SendNotif("Error loading room, please try again soon! (Error Code: MdlData)");
                 Session.SendMessage(new ServerMessage(18u));
                 Session.GetMessageHandler().ClearRoomLoading();
             }
             else
             {
                 Session.SendMessage(@class.Model.method_1());
                 Session.SendMessage(@class.Model.method_2());
                 Room class2 = PhoenixEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().LoadingRoom);
                 if (class2 != null)
                 {
                     Session.GetMessageHandler().ClearRoomLoading();
                     ServerMessage Message = new ServerMessage(30u);
                     if (class2.Model.StaticFurniMap != "")
                     {
                         Message.AppendStringWithBreak(class2.Model.StaticFurniMap);
                     }
                     else
                     {
                         Message.AppendInt32(0);
                     }
                     Session.SendMessage(Message);
                     if (class2.Type == "private")
                     {
                         Hashtable     hashtable_  = class2.Hashtable_0;
                         Hashtable     hashtable_2 = class2.Hashtable_1;
                         ServerMessage Message2    = new ServerMessage(32u);
                         Message2.AppendInt32(hashtable_.Count);
                         foreach (RoomItem class3 in hashtable_.Values)
                         {
                             class3.Serialize(Message2);
                         }
                         Session.SendMessage(Message2);
                         ServerMessage Message3 = new ServerMessage(45u);
                         Message3.AppendInt32(hashtable_2.Count);
                         foreach (RoomItem class3 in hashtable_2.Values)
                         {
                             class3.Serialize(Message3);
                         }
                         Session.SendMessage(Message3);
                     }
                     class2.method_46(Session, Session.GetHabbo().SpectatorMode);
                     List <RoomUser> list = new List <RoomUser>();
                     for (int i = 0; i < class2.UserList.Length; i++)
                     {
                         RoomUser class4 = class2.UserList[i];
                         if (class4 != null && (!class4.IsSpectator && class4.Visible))
                         {
                             list.Add(class4);
                         }
                     }
                     ServerMessage Message4 = new ServerMessage(28u);
                     Message4.AppendInt32(list.Count);
                     foreach (RoomUser class4 in list)
                     {
                         class4.Serialize(Message4);
                     }
                     Session.SendMessage(Message4);
                     ServerMessage Message5 = new ServerMessage(472u);
                     Message5.AppendBoolean(class2.Hidewall);
                     Message5.AppendInt32(class2.Wallthick);
                     Message5.AppendInt32(class2.Floorthick);
                     Session.SendMessage(Message5);
                     if (class2.Type == "public")
                     {
                         ServerMessage Message6 = new ServerMessage(471u);
                         Message6.AppendBoolean(false);
                         Message6.AppendStringWithBreak(class2.ModelName);
                         Message6.AppendBoolean(false);
                         Session.SendMessage(Message6);
                     }
                     else
                     {
                         if (class2.Type == "private")
                         {
                             ServerMessage Message6 = new ServerMessage(471u);
                             Message6.AppendBoolean(true);
                             Message6.AppendUInt(class2.RoomId);
                             if (class2.CheckRights(Session, true))
                             {
                                 Message6.AppendBoolean(true);
                             }
                             else
                             {
                                 Message6.AppendBoolean(false);
                             }
                             Session.SendMessage(Message6);
                             ServerMessage Message7 = new ServerMessage(454u);
                             Message7.AppendBoolean(false);
                             @class.Serialize(Message7, false, false);
                             Session.SendMessage(Message7);
                         }
                     }
                     ServerMessage Message8 = class2.method_67(true);
                     if (Message8 != null)
                     {
                         Session.SendMessage(Message8);
                     }
                     for (int i = 0; i < class2.UserList.Length; i++)
                     {
                         RoomUser class4 = class2.UserList[i];
                         if (class4 != null && !class4.IsSpectator)
                         {
                             if (class4.IsDancing)
                             {
                                 ServerMessage Message9 = new ServerMessage(480u);
                                 Message9.AppendInt32(class4.VirtualId);
                                 Message9.AppendInt32(class4.DanceId);
                                 Session.SendMessage(Message9);
                             }
                             if (class4.IsAsleep)
                             {
                                 ServerMessage Message10 = new ServerMessage(486u);
                                 Message10.AppendInt32(class4.VirtualId);
                                 Message10.AppendBoolean(true);
                                 Session.SendMessage(Message10);
                             }
                             if (class4.CarryItemID > 0 && class4.CarryTimer > 0)
                             {
                                 ServerMessage Message11 = new ServerMessage(482u);
                                 Message11.AppendInt32(class4.VirtualId);
                                 Message11.AppendInt32(class4.CarryItemID);
                                 Session.SendMessage(Message11);
                             }
                             if (!class4.IsBot)
                             {
                                 try
                                 {
                                     if (class4.GetClient().GetHabbo() != null && class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect >= 1)
                                     {
                                         ServerMessage Message12 = new ServerMessage(485u);
                                         Message12.AppendInt32(class4.VirtualId);
                                         Message12.AppendInt32(class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect);
                                         Session.SendMessage(Message12);
                                     }
                                     goto IL_5C5;
                                 }
                                 catch
                                 {
                                     goto IL_5C5;
                                 }
                             }
                             if (!class4.IsPet && class4.BotData.EffectId != 0)
                             {
                                 ServerMessage Message12 = new ServerMessage(485u);
                                 Message12.AppendInt32(class4.VirtualId);
                                 Message12.AppendInt32(class4.BotData.EffectId);
                                 Session.SendMessage(Message12);
                             }
                         }
                         IL_5C5 :;
                     }
                     if (class2 != null && Session != null && Session.GetHabbo().CurrentRoom != null)
                     {
                         class2.method_8(Session.GetHabbo().CurrentRoom.GetRoomUserByHabbo(Session.GetHabbo().Id));
                     }
                     if (class2.Achievement > 0u)
                     {
                         PhoenixEnvironment.GetGame().GetAchievementManager().UnlockAchievement(Session, class2.Achievement, 1);
                     }
                     if (Session.GetHabbo().Muted&& Session.GetHabbo().MuteLength > 0)
                     {
                         ServerMessage Message13 = new ServerMessage(27u);
                         Message13.AppendInt32(Session.GetHabbo().MuteLength);
                         Session.SendMessage(Message13);
                     }
                 }
             }
         }
     }
 }
示例#10
0
        internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
        {
            DynamicRoomModel Model = room.GetGameMap().Model;

            RoomUser BotUser = new RoomUser(0, string.Empty, room.RoomId, primaryPrivateUserID++, room, false);
            BotUser.InternalRoomID = ++secondaryPrivateUserID;
            //this.UserList[PersonalID] = BotUser;
            userlist.Add(BotUser.InternalRoomID, BotUser);

            if ((Bot.X > 0 && Bot.Y > 0) && Bot.X < Model.MapSizeX && Bot.Y < Model.MapSizeY)
            {
                BotUser.SetPos(Bot.X, Bot.Y, Bot.Z);
                BotUser.SetRot(Bot.Rot, false);
            }
            else
            {
                Bot.X = Model.DoorX;
                Bot.Y = Model.DoorY;

                BotUser.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ);
                BotUser.SetRot(Model.DoorOrientation, false);
            }

            BotUser.BotData = Bot;
            BotUser.BotAI = Bot.GenerateBotAI(BotUser.VirtualId);

            if (BotUser.IsPet)
            {
                BotUser.BotAI.Init((int)Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
                BotUser.PetData = PetData;
                BotUser.PetData.virtualID = BotUser.VirtualId;
            }
            else
            {
                BotUser.BotAI.Init(Bot.ownerID > 0 ? (int)Bot.BotId : -1, BotUser.VirtualId, room.RoomId, BotUser, room);
            }

            UpdateUserStatus(BotUser, false);
            BotUser.UpdateNeeded = true;

            ServerMessage EnterMessage = PacketHandelingManager.GetRecycledItem(OutputCode.UsersMessageEvent);
            EnterMessage.AddInt32(1);
            BotUser.Serialize(EnterMessage);
            room.SendMessage(EnterMessage);

            BotUser.BotAI.OnSelfEnterRoom();

            if (BotUser.IsPet)
            {
                if (pets.ContainsKey(BotUser.PetData.petID)) //Pet allready placed
                    pets[BotUser.PetData.petID] = BotUser;
                else
                    pets.Add(BotUser.PetData.petID, BotUser);

                petCount++;
            }

            return BotUser;
        }
示例#11
0
        internal void RefreshUser(RoomUser user)
        {
            ServerMessage LeaveMessage = PacketHandelingManager.GetRecycledItem(OutputCode.UserRemoveMessageEvent);
            LeaveMessage.AddString(user.VirtualId.ToString());
            room.SendMessage(LeaveMessage);

            ServerMessage EnterMessage = PacketHandelingManager.GetRecycledItem(OutputCode.UsersMessageEvent);
            EnterMessage.AddInt32(1);
            user.Serialize(EnterMessage);
            room.SendMessage(EnterMessage);
        }
示例#12
0
        public void parse(GameClient Session, ClientMessage Event)
        {
            int num = Event.PopWiredInt32();

            if (num > 0 && (Session != null && Session.GetHabbo() != null))
            {
                Session.GetHabbo().GroupID = num;
                using (DatabaseClient @class = PhoenixEnvironment.GetDatabase().GetClient())
                {
                    @class.ExecuteQuery(string.Concat(new object[]
                    {
                        "UPDATE user_stats SET groupid = ",
                        num,
                        " WHERE Id = ",
                        Session.GetHabbo().Id,
                        " LIMIT 1;"
                    }));
                }
                DataTable dataTable_ = Session.GetHabbo().GroupMemberships;
                if (dataTable_ != null)
                {
                    ServerMessage Message = new ServerMessage(915u);
                    Message.AppendInt32(dataTable_.Rows.Count);
                    foreach (DataRow dataRow in dataTable_.Rows)
                    {
                        Group class2 = GroupManager.GetGroup((int)dataRow["groupid"]);
                        Message.AppendInt32(class2.Id);
                        Message.AppendStringWithBreak(class2.Name);
                        Message.AppendStringWithBreak(class2.Badge);
                        if (Session.GetHabbo().GroupID == class2.Id)
                        {
                            Message.AppendBoolean(true);
                        }
                        else
                        {
                            Message.AppendBoolean(false);
                        }
                    }
                    Session.SendMessage(Message);
                    if (Session.GetHabbo().InRoom)
                    {
                        Room          class14_ = Session.GetHabbo().CurrentRoom;
                        RoomUser      class3   = class14_.GetRoomUserByHabbo(Session.GetHabbo().Id);
                        ServerMessage Message2 = new ServerMessage(28u);
                        Message2.AppendInt32(1);
                        class3.Serialize(Message2);
                        class14_.SendMessage(Message2, null);
                        Group class4 = GroupManager.GetGroup(Session.GetHabbo().GroupID);
                        if (!class14_.list_17.Contains(class4))
                        {
                            class14_.list_17.Add(class4);
                            ServerMessage Message3 = new ServerMessage(309u);
                            Message3.AppendInt32(class14_.list_17.Count);
                            foreach (Group class2 in class14_.list_17)
                            {
                                Message3.AppendInt32(class2.Id);
                                Message3.AppendStringWithBreak(class2.Badge);
                            }
                            class14_.SendMessage(Message3, null);
                        }
                        else
                        {
                            foreach (Group current in class14_.list_17)
                            {
                                if (current == class4 && current.Badge != class4.Badge)
                                {
                                    ServerMessage Message3 = new ServerMessage(309u);
                                    Message3.AppendInt32(class14_.list_17.Count);
                                    foreach (Group class2 in class14_.list_17)
                                    {
                                        Message3.AppendInt32(class2.Id);
                                        Message3.AppendStringWithBreak(class2.Badge);
                                    }
                                    class14_.SendMessage(Message3, null);
                                }
                            }
                        }
                    }
                }
            }
        }