Ejemplo n.º 1
0
 internal void GenerateMessage(ServerMessage message)
 {
     message.Init(LibraryParser.OutgoingRequest("TargetedOfferMessageComposer"));
     message.AppendInteger(1);//show
     message.AppendInteger(Id);
     message.AppendString(Identifier);
     message.AppendString(Identifier);
     message.AppendInteger(CostCredits);
     if (CostDiamonds > 0)
     {
         message.AppendInteger(CostDiamonds);
         message.AppendInteger(105);
     }
     else
     {
         message.AppendInteger(CostDuckets);
         message.AppendInteger(0);
     }
     message.AppendInteger(PurchaseLimit);
     var TimeLeft = ExpirationTime - AzureEmulator.GetUnixTimeStamp();
     message.AppendInteger(TimeLeft);
     message.AppendString(Title);
     message.AppendString(Description);
     message.AppendString(Image);
     message.AppendString("");
     message.StartArray();
     foreach (string Product in Products)
     {
         message.AppendString(Product);
         message.SaveArray();
     }
     message.EndArray();
 }
Ejemplo n.º 2
0
        public override void Execute(GameClient session, string[] pms)
        {
            ushort result;
            ushort.TryParse(pms[0], out result);

            if (result > 4)
            {
                session.SendWhisper(TextManager.GetText("command_dance_false"));
                result = 0;
            }
            var message = new ServerMessage();
            message.Init(LibraryParser.OutgoingRequest("DanceStatusMessageComposer"));
            message.AppendInteger(session.CurrentRoomUserId);
            message.AppendInteger(result);
            session.GetHabbo().CurrentRoom.SendMessage(message);
        }
        internal ServerMessage AppendEntrySubmitMessage(ServerMessage message, int status, Room room = null)
        {
            message.Init(LibraryParser.OutgoingRequest("CompetitionEntrySubmitResultMessageComposer"));

            message.AppendInteger(Id);
            message.AppendString(Name);
            message.AppendInteger(status);
            // 0 : roomSent - 1 : send room - 2 : confirm register - 3 : neededFurnis - 4 : doorClosed - 6 : acceptRules

            if (status != 3)
            {
                message.AppendInteger(0);
                message.AppendInteger(0);
            }
            else
            {
                message.StartArray();

                foreach (var furni in RequiredFurnis)
                {
                    message.AppendString(furni);
                    message.SaveArray();
                }

                message.EndArray();

                if (room == null)
                    message.AppendInteger(0);
                else
                {
                    message.StartArray();

                    foreach (var furni in RequiredFurnis)
                    {
                        if (!room.GetRoomItemHandler().HasFurniByItemName(furni))
                        {
                            message.AppendString(furni);
                            message.SaveArray();
                        }
                    }

                    message.EndArray();
                }
            }

            return message;
        }
Ejemplo n.º 4
0
 public override bool Execute(GameClient session, string[] pms)
 {
     var message = string.Join(" ", pms);
     if (string.IsNullOrEmpty(message)) return true;
     foreach (var client in Azure.GetGame().GetClientManager().Clients.Values)
     {
         var serverMessage = new ServerMessage();
         serverMessage.Init(LibraryParser.OutgoingRequest("WhisperMessageComposer"));
         serverMessage.AppendInteger(client.CurrentRoomUserId);
         serverMessage.AppendString(message);
         serverMessage.AppendInteger(0);
         serverMessage.AppendInteger(36);
         serverMessage.AppendInteger(0);
         serverMessage.AppendInteger(-1);
         client.SendMessage(serverMessage);
     }
     return true;
 }
Ejemplo n.º 5
0
        public override void Execute(GameClient session, string[] pms)
        {
            var room = session.GetHabbo().CurrentRoom;
            if (!session.GetHabbo().CurrentRoom.RoomMuted)
            {
                session.SendWhisper("Room isn't muted.");
                return;
            }

            session.GetHabbo().CurrentRoom.RoomMuted = false;
            var message = new ServerMessage();
            message.Init(LibraryParser.OutgoingRequest("AlertNotificationMessageComposer"));
            message.AppendString("Room is now UnMuted.");
            message.AppendString("");
            room.SendMessage(message);
            AzureEmulator.GetGame()
                .GetModerationTool().LogStaffEntry(session.GetHabbo().UserName, string.Empty,
                    "Room Unmute", "Room UnMuted");
        }
        internal static void GenerateMessage(ServerMessage message, TargetedOffer offer)
        {
            message.Init(LibraryParser.OutgoingRequest("TargetedOfferMessageComposer"));
            message.AppendInteger(1);
            message.AppendInteger(offer.Id);
            message.AppendString(offer.Identifier);
            message.AppendString(offer.Identifier);
            message.AppendInteger(offer.CostCredits);

            if (offer.CostDiamonds > 0)
            {
                message.AppendInteger(offer.CostDiamonds);
                message.AppendInteger(105);
            }
            else
            {
                message.AppendInteger(offer.CostDuckets);
                message.AppendInteger(0);
            }

            message.AppendInteger(offer.PurchaseLimit);

            var timeLeft = offer.ExpirationTime - Azure.GetUnixTimeStamp();

            message.AppendInteger(timeLeft);
            message.AppendString(offer.Title);
            message.AppendString(offer.Description);
            message.AppendString(offer.Image);
            message.AppendString(string.Empty);
            message.StartArray();

            foreach (var product in offer.Products)
            {
                message.AppendString(product);
                message.SaveArray();
            }

            message.EndArray();
        }
Ejemplo n.º 7
0
Archivo: Pet.cs Proyecto: BjkGkh/Azure2
        /// <summary>
        /// Adds the experience.
        /// </summary>
        /// <param name="amount">The amount.</param>
        internal void AddExperience(int amount)
        {
            {
                var oldExperienceGoal = ExperienceGoal;
                Experience += amount;
                if (Experience >= 51900)
                    return;
                if (DbState != DatabaseUpdateState.NeedsInsert)
                    DbState = DatabaseUpdateState.NeedsUpdate;
                if (Room == null)
                    return;
                ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("AddPetExperienceMessageComposer"));
                serverMessage.AppendInteger(PetId);
                serverMessage.AppendInteger(VirtualId);
                serverMessage.AppendInteger(amount);
                Room.SendMessage(serverMessage);
                if (Experience < oldExperienceGoal)
                    return;
                var ownerSession = AzureEmulator.GetGame().GetClientManager().GetClientByUserId(OwnerId);

                // Reset pet commands
                PetCommands.Clear();
                PetCommands = PetCommandHandler.GetPetCommands(this);

                if (ownerSession == null)
                    return;
                ServerMessage levelNotify = new ServerMessage(LibraryParser.OutgoingRequest("NotifyNewPetLevelMessageComposer"));
                SerializeInventory(levelNotify, true);
                ownerSession.SendMessage(levelNotify);

                ServerMessage tp = new ServerMessage();
                tp.Init(LibraryParser.OutgoingRequest("PetTrainerPanelMessageComposer"));
                tp.AppendInteger(PetId);

                List<short> availableCommands = new List<short>();

                tp.AppendInteger(PetCommands.Count);
                foreach (short sh in PetCommands.Keys)
                {
                    tp.AppendInteger(sh);
                    if (PetCommands[sh])
                        availableCommands.Add(sh);
                }

                tp.AppendInteger(availableCommands.Count);
                foreach (short sh in availableCommands)
                    tp.AppendInteger(sh);
                ownerSession.SendMessage(tp);
            }
        }
Ejemplo n.º 8
0
        public void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (session == null)
            {
                return;
            }
            RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);
            if (roomUserByHabbo == null)
            {
                return;
            }

            if (PathFinder.GetDistance(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y) > 1)
            {
                roomUserByHabbo.MoveTo(item.SquareInFront);
            }

            if (Math.Abs(roomUserByHabbo.X - item.X) < 2 && Math.Abs(roomUserByHabbo.Y - item.Y) < 2)
            {
                roomUserByHabbo.SetRot(PathFinder.CalculateRotation(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y), false);
                Room room = item.GetRoom();
                var point = new Point(0, 0);
                switch (roomUserByHabbo.RotBody)
                {
                    case 4:
                        point = new Point(item.X, item.Y + 1);
                        break;

                    case 0:
                        point = new Point(item.X, item.Y - 1);
                        break;

                    case 6:
                        point = new Point(item.X - 1, item.Y);
                        break;

                    default:
                        if (roomUserByHabbo.RotBody != 2)
                        {
                            return;
                        }
                        point = new Point(item.X + 1, item.Y);
                        break;
                }
                if (!room.GetGameMap().ValidTile2(point.X, point.Y))
                {
                    return;
                }
                var coordinatedItems = room.GetGameMap().GetCoordinatedItems(point);
                if (coordinatedItems.Any(i => !i.GetBaseItem().Stackable)) return;
                double num = item.GetRoom().GetGameMap().SqAbsoluteHeight(point.X, point.Y);
                var serverMessage = new ServerMessage();
                serverMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer"));
                serverMessage.AppendInteger(item.X);
                serverMessage.AppendInteger(item.Y);
                serverMessage.AppendInteger(point.X);
                serverMessage.AppendInteger(point.Y);
                serverMessage.AppendInteger(1);
                serverMessage.AppendInteger(item.Id);
                serverMessage.AppendString(item.Z.ToString(AzureEmulator.CultureInfo));
                serverMessage.AppendString(num.ToString(AzureEmulator.CultureInfo));
                serverMessage.AppendInteger(0);
                room.SendMessage(serverMessage);
                item.GetRoom().GetRoomItemHandler().SetFloorItem(roomUserByHabbo.GetClient(), item, point.X, point.Y, item.Rot, false, false, false);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Serializes the ticket chatlog.
        /// </summary>
        /// <param name="ticket">The ticket.</param>
        /// <param name="roomData">The room data.</param>
        /// <param name="timestamp">The timestamp.</param>
        /// <returns>ServerMessage.</returns>
        /// <exception cref="System.NullReferenceException">No room found.</exception>
        internal static ServerMessage SerializeTicketChatlog(SupportTicket ticket, RoomData roomData, double timestamp)
        {
            var message = new ServerMessage();
            RoomData room = AzureEmulator.GetGame().GetRoomManager().GenerateRoomData(ticket.RoomId);
            //if (room == null)
            //{
            //    throw new NullReferenceException("No room found.");
            //}

            message.Init(LibraryParser.OutgoingRequest("ModerationToolIssueChatlogMessageComposer"));

            message.AppendInteger(ticket.TicketId);
            message.AppendInteger(ticket.SenderId);
            message.AppendInteger(ticket.ReportedId);
            message.AppendInteger(ticket.RoomId);

            message.AppendByte(1);
            message.AppendShort(2);
            message.AppendString("roomName");
            message.AppendByte(2);
            message.AppendString(ticket.RoomName);
            message.AppendString("roomId");
            message.AppendByte(1);
            message.AppendInteger(ticket.RoomId);

            var tempChatlogs = room.RoomChat.Reverse().Skip(Math.Max(0, room.RoomChat.Count() - 60)).Take(60).ToList();

            message.AppendShort(tempChatlogs.Count());
            foreach (var chatLog in tempChatlogs)
            {
                chatLog.Serialize(ref message);
            }
            tempChatlogs = null;

            return message;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Serializes the room chatlog.
        /// </summary>
        /// <param name="roomId">The room identifier.</param>
        /// <returns>ServerMessage.</returns>
        /// <exception cref="System.NullReferenceException">No room found.</exception>
        internal static ServerMessage SerializeRoomChatlog(uint roomId)
        {
            var message = new ServerMessage();
            Room room = AzureEmulator.GetGame().GetRoomManager().LoadRoom(roomId);

             message.Init(LibraryParser.OutgoingRequest("ModerationToolRoomChatlogMessageComposer"));
            message.AppendByte(1); //type
            message.AppendShort(2);
            message.AppendString("roomName");
            message.AppendByte(2);
            message.AppendString(room.RoomData.Name);
            message.AppendString("roomId");
            message.AppendByte(1);
            message.AppendInteger(room.RoomData.Id);

            if (room != null)
            {
                var tempChatlogs = room.RoomData.RoomChat.Reverse().Skip(Math.Max(0, room.RoomData.RoomChat.Count() - 150)).Take(150).ToList();
                message.AppendShort(tempChatlogs.Count());
                foreach (var chatLog in tempChatlogs)
                {
                    chatLog.Serialize(ref message);
                }
                tempChatlogs = null;
            }
            else
            {
                DateTime Date = AzureEmulator.UnixToDateTime(1413672144);
                message.AppendInteger((DateTime.Now - Date).Seconds); // niet goed denk ik
                message.AppendInteger(1);
                message.AppendString("*Kamer is niet geladen!*");
                message.AppendString("");
                message.AppendBool(false);

            }
            return message;
        }
Ejemplo n.º 11
0
        private void FreezeUser(RoomUser user)
        {
            if (user.IsBot || user.ShieldActive || user.Team == Team.None || user.Freezed)
                return;

            user.Freezed = true;
            user.FreezeCounter = 0;
            --user.FreezeLives;

            if (user.FreezeLives <= 0)
            {
                var serverMessage = new ServerMessage();
                serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFreezeLivesMessageComposer"));
                serverMessage.AppendInteger(user.InternalRoomId);
                serverMessage.AppendInteger(user.FreezeLives);
                user.GetClient().SendMessage(serverMessage);
                user.ApplyEffect(-1);
                _room.GetGameManager().AddPointToTeam(user.Team, -10, user);
                var managerForFreeze = _room.GetTeamManagerForFreeze();
                managerForFreeze.OnUserLeave(user);
                user.Team = Team.None;
                if (ExitTeleport != null) _room.GetGameMap().TeleportToItem(user, ExitTeleport);
                user.Freezed = false;
                user.SetStep = false;
                user.IsWalking = false;
                user.UpdateNeeded = true;
                if (!managerForFreeze.BlueTeam.Any() && !managerForFreeze.RedTeam.Any() &&
                    !managerForFreeze.GreenTeam.Any() && managerForFreeze.YellowTeam.Any())
                    StopGame();
                else if (managerForFreeze.BlueTeam.Any() && !managerForFreeze.RedTeam.Any() &&
                         !managerForFreeze.GreenTeam.Any() && !managerForFreeze.YellowTeam.Any())
                    StopGame();
                else if (!managerForFreeze.BlueTeam.Any() && managerForFreeze.RedTeam.Any() &&
                         !managerForFreeze.GreenTeam.Any() && !managerForFreeze.YellowTeam.Any())
                    StopGame();
                else
                {
                    if (managerForFreeze.BlueTeam.Any() || managerForFreeze.RedTeam.Any() ||
                        !managerForFreeze.GreenTeam.Any() || managerForFreeze.YellowTeam.Any())
                        return;
                    StopGame();
                }
            }
            else
            {
                _room.GetGameManager().AddPointToTeam(user.Team, -10, user);
                user.ApplyEffect(12);
                var serverMessage = new ServerMessage();
                serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFreezeLivesMessageComposer"));
                serverMessage.AppendInteger(user.InternalRoomId);
                serverMessage.AppendInteger(user.FreezeLives);
                user.GetClient().SendMessage(serverMessage);
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// News the height map.
        /// </summary>
        /// <returns>ServerMessage.</returns>
        private ServerMessage NewHeightMap()
        {
            var serverMessage = new ServerMessage();
            serverMessage.Init(LibraryParser.OutgoingRequest("HeightMapMessageComposer"));
            serverMessage.AppendInteger(Model.MapSizeX);

            {
                serverMessage.AppendInteger(Model.MapSizeX * Model.MapSizeY);
                for (Int32 i = 0; i < Model.MapSizeY; i++)
                    for (Int32 j = 0; j < Model.MapSizeX; j++)
                        serverMessage.AppendShort((short)(SqAbsoluteHeight(j, i) * 256));
                //  serverMessage.AppendShort(this.Model.SqFloorHeight[j, i] * 256);
                return serverMessage;
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Serializes the event information.
        /// </summary>
        /// <param name="roomId">The room identifier.</param>
        internal void SerializeEventInfo(uint roomId)
        {
            Room room = AzureEmulator.GetGame().GetRoomManager().GetRoom(roomId);
            if (room == null)
            {
                return;
            }
            RoomEvent @event = GetEvent(roomId);
            if (@event == null || @event.HasExpired)
            {
                return;
            }
            if (!RoomHasEvents(roomId))
            {
                return;
            }
            var serverMessage = new ServerMessage();
            serverMessage.Init(LibraryParser.OutgoingRequest("RoomEventMessageComposer"));
            serverMessage.AppendInteger(roomId);
            serverMessage.AppendInteger(room.RoomData.OwnerId);
            serverMessage.AppendString(room.RoomData.Owner);
            serverMessage.AppendInteger(1);
            serverMessage.AppendInteger(1);
            serverMessage.AppendString(@event.Name);
            serverMessage.AppendString(@event.Description);
            serverMessage.AppendInteger(0);
            serverMessage.AppendInteger(
                ((int)Math.Floor((@event.Time - AzureEmulator.GetUnixTimeStamp()) / 60.0)));

            serverMessage.AppendInteger(@event.Category);
            room.SendMessage(serverMessage);
        }
Ejemplo n.º 14
0
 /// <summary>
 ///     Sends the new items.
 /// </summary>
 /// <param name="id">The identifier.</param>
 internal void SendNewItems(uint id)
 {
     var serverMessage = new ServerMessage();
     serverMessage.Init(LibraryParser.OutgoingRequest("NewInventoryObjectMessageComposer"));
     serverMessage.AppendInteger(1);
     serverMessage.AppendInteger(1);
     serverMessage.AppendInteger(1);
     serverMessage.AppendInteger(id);
     _mClient.SendMessage(serverMessage);
 }
Ejemplo n.º 15
0
        /// <summary>
        ///     Serializes the bot inventory.
        /// </summary>
        /// <returns>ServerMessage.</returns>
        internal ServerMessage SerializeBotInventory()
        {
            var serverMessage = new ServerMessage();
            serverMessage.Init(LibraryParser.OutgoingRequest("BotInventoryMessageComposer"));

            serverMessage.AppendInteger(_inventoryBots.Count);
            foreach (RoomBot current in _inventoryBots.Values)
            {
                serverMessage.AppendInteger(current.BotId);
                serverMessage.AppendString(current.Name);
                serverMessage.AppendString(current.Motto);
                serverMessage.AppendString("m");
                serverMessage.AppendString(current.Look);
            }
            return serverMessage;
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Updates the user status.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="cycleGameItems">if set to <c>true</c> [cyclegameitems].</param>
        internal void UpdateUserStatus(RoomUser user, bool cycleGameItems)
        {
            if (user == null) return;

            if (user.IsSitting == false)
            {
                if (user.Statusses.ContainsKey("sit"))
                {
                    user.Statusses.Remove("sit");
                    user.UpdateNeeded = true;
                }
            }
            if (user.IsLyingDown == false)
            {
                if (user.Statusses.ContainsKey("lay"))
                {
                    user.Statusses.Remove("lay");
                    user.UpdateNeeded = true;
                }
            }

            var isBot = user.IsBot;
            if (isBot) cycleGameItems = false;

            try
            {
                var coordItemSearch = new CoordItemSearch(UserRoom.GetGameMap().CoordinatedItems);
                var allRoomItemForSquare = coordItemSearch.GetAllRoomItemForSquare(user.X, user.Y);
                var itemsOnSquare = UserRoom.GetGameMap().GetCoordinatedItems(new Point(user.X, user.Y));

                var newZ = UserRoom.GetGameMap().SqAbsoluteHeight(user.X, user.Y, itemsOnSquare) + ((user.RidingHorse && user.IsPet == false) ? 1 : 0);

                if (Math.Abs(newZ - user.Z) > 0)
                {
                    user.Z = newZ;
                    user.UpdateNeeded = true;
                }

                if (!allRoomItemForSquare.Any()) user.LastItem = 0;
                using (var enumerator = allRoomItemForSquare.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        var item = enumerator.Current;
                        item.UserWalksOnFurni(user);
                        if (cycleGameItems)
                        {
                            AzureEmulator.GetGame()
                                .GetQuestManager()
                                .ProgressUserQuest(user.GetClient(), QuestType.StandOn, item.GetBaseItem().ItemId);
                        }

                        if (item.GetBaseItem().IsSeat)
                        {
                            if (!user.Statusses.ContainsKey("sit"))
                                if (item.GetBaseItem().StackMultipler && !string.IsNullOrWhiteSpace(item.ExtraData))
                                    if (item.ExtraData != "0")
                                    {
                                        var num2 = Convert.ToInt32(item.ExtraData);
                                        user.Statusses.Add("sit",
                                            item.GetBaseItem().ToggleHeight[num2].ToString(CultureInfo.InvariantCulture)
                                                .Replace(',', '.'));
                                    }
                                    else
                                    {
                                        user.Statusses.Add("sit", Convert.ToString(item.GetBaseItem().Height));
                                    }
                            else
                                {
                                    user.Statusses.Add("sit", Convert.ToString(item.GetBaseItem().Height));
                                }

                            if (Math.Abs(user.Z - item.Z) > 0 || user.RotBody != item.Rot)
                            {
                                user.Z = item.Z;
                                user.RotHead = item.Rot;
                                user.RotBody = item.Rot;
                                user.UpdateNeeded = true;
                            }
                        }

                        var interactionType = item.GetBaseItem().InteractionType;

                        switch (interactionType)
                        {
                            case Interaction.QuickTeleport:
                            case Interaction.GuildGate:
                            case Interaction.WalkInternalLink:
                                {
                                    item.Interactor.OnUserWalk(user.GetClient(), item, user);
                                    break;
                                }
                            case Interaction.None:
                                break;

                            case Interaction.PressurePadBed:
                            case Interaction.Bed:
                                {
                                    if (!user.Statusses.ContainsKey("lay"))
                                        user.Statusses.Add("lay", TextHandling.GetString(item.GetBaseItem().Height));
                                    else
                                    if (user.Statusses["lay"] != TextHandling.GetString(item.GetBaseItem().Height))
                                        user.Statusses["lay"] = TextHandling.GetString(item.GetBaseItem().Height);

                                    user.Z = item.Z;
                                    user.RotHead = item.Rot;
                                    user.RotBody = item.Rot;
                                    user.UpdateNeeded = true;

                                    if (item.GetBaseItem().InteractionType == Interaction.PressurePadBed)
                                    {
                                        item.ExtraData = "1";
                                        item.UpdateState();
                                    }
                                    break;
                                }

                            case Interaction.Guillotine:
                                {
                                    if (!user.Statusses.ContainsKey("lay")) user.Statusses.Add("lay", TextHandling.GetString(item.GetBaseItem().Height));
                                    else if (user.Statusses["lay"] != TextHandling.GetString(item.GetBaseItem().Height)) user.Statusses["lay"] = TextHandling.GetString(item.GetBaseItem().Height);

                                    user.Z = item.Z;
                                    user.RotBody = item.Rot;

                                    item.ExtraData = "1";
                                    item.UpdateState();
                                    var avatarEffectsInventoryComponent =
                                        user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();

                                    avatarEffectsInventoryComponent.ActivateCustomEffect(133);
                                    break;
                                }

                            case Interaction.FootballGate:
                                break;

                            case Interaction.BanzaiGateBlue:
                            case Interaction.BanzaiGateRed:
                            case Interaction.BanzaiGateYellow:
                            case Interaction.BanzaiGateGreen:
                                {
                                        int Effect = (int)item.Team + 32;
                                        var teamManagerForBanzai =
                                            user.GetClient().GetHabbo().CurrentRoom.GetTeamManagerForBanzai();
                                        var avatarEffectsInventoryComponent =
                                            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();
                                        if (user.Team == Team.none)
                                        {
                                            if (!teamManagerForBanzai.CanEnterOnTeam(item.Team)) break;
                                            if (user.Team != Team.none) teamManagerForBanzai.OnUserLeave(user);
                                            user.Team = item.Team;
                                            teamManagerForBanzai.AddUser(user);
                                            if (avatarEffectsInventoryComponent.CurrentEffect != Effect) avatarEffectsInventoryComponent.ActivateCustomEffect(Effect);
                                            break;
                                        }
                                        if (user.Team != Team.none && user.Team != item.Team)
                                        {
                                            teamManagerForBanzai.OnUserLeave(user);
                                            user.Team = Team.none;
                                            avatarEffectsInventoryComponent.ActivateCustomEffect(0);
                                            break;
                                        }
                                        teamManagerForBanzai.OnUserLeave(user);

                                        if (avatarEffectsInventoryComponent.CurrentEffect == Effect) avatarEffectsInventoryComponent.ActivateCustomEffect(0);
                                        user.Team = Team.none;
                                        break;
                                    }

                            case Interaction.Jump:
                                break;

                            case Interaction.Pinata:
                                {
                                    if (!user.IsWalking || item.ExtraData.Length <= 0) break;
                                    var num5 = int.Parse(item.ExtraData);
                                    if (num5 >= 100 || user.CurrentEffect != 158) break;
                                    var num6 = num5 + 1;
                                    item.ExtraData = num6.ToString();
                                    item.UpdateState();
                                    AzureEmulator.GetGame()
                                        .GetAchievementManager()
                                        .ProgressUserAchievement(user.GetClient(), "ACH_PinataWhacker", 1, false);
                                    if (num6 == 100)
                                    {
                                        AzureEmulator.GetGame().GetPinataHandler().DeliverRandomPinataItem(user, UserRoom, item);
                                        AzureEmulator.GetGame()
                                            .GetAchievementManager()
                                            .ProgressUserAchievement(user.GetClient(), "ACH_PinataBreaker", 1, false);
                                    }
                                    break;
                                }
                            case Interaction.TileStackMagic:
                            case Interaction.Poster:
                                break;

                            case Interaction.Tent:
                            case Interaction.BedTent:
                                if (user.LastItem == item.Id) break;
                                if (!user.IsBot && !user.OnCampingTent)
                                {
                                    var serverMessage22 = new ServerMessage();
                                    serverMessage22.Init(
                                        LibraryParser.OutgoingRequest("UpdateFloorItemExtraDataMessageComposer"));
                                    serverMessage22.AppendString(item.Id.ToString());
                                    serverMessage22.AppendInteger(0);
                                    serverMessage22.AppendString("1");
                                    user.GetClient().SendMessage(serverMessage22);
                                    user.OnCampingTent = true;
                                    user.LastItem = item.Id;
                                }
                                break;

                            case Interaction.RunWaySage:
                                {
                                    var num7 = new Random().Next(1, 4);
                                    item.ExtraData = num7.ToString();
                                    item.UpdateState();
                                    break;
                                }
                            case Interaction.Shower:
                            case Interaction.ChairState:
                            case Interaction.PressurePad:
                                {
                                    item.ExtraData = "1";
                                    item.UpdateState();
                                    break;
                                }
                            case Interaction.BanzaiTele:
                                {
                                    if (user.IsWalking)
                                        UserRoom.GetGameItemHandler().OnTeleportRoomUserEnter(user, item);
                                    break;
                                }
                            case Interaction.FreezeYellowGate:
                            case Interaction.FreezeRedGate:
                            case Interaction.FreezeGreenGate:
                            case Interaction.FreezeBlueGate:
                                {
                                    if (cycleGameItems)
                                    {
                                        var num4 = (int)(item.Team + 39);
                                        var teamManagerForFreeze =
                                            user.GetClient().GetHabbo().CurrentRoom.GetTeamManagerForFreeze();
                                        var avatarEffectsInventoryComponent2 =
                                            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();
                                        if (user.Team != item.Team)
                                        {
                                            if (teamManagerForFreeze.CanEnterOnTeam(item.Team))
                                            {
                                                if (user.Team != Team.none) teamManagerForFreeze.OnUserLeave(user);
                                                user.Team = item.Team;
                                                teamManagerForFreeze.AddUser(user);
                                                if (avatarEffectsInventoryComponent2.CurrentEffect != num4) avatarEffectsInventoryComponent2.ActivateCustomEffect(num4);
                                            }
                                        }
                                        else
                                        {
                                            teamManagerForFreeze.OnUserLeave(user);
                                            if (avatarEffectsInventoryComponent2.CurrentEffect == num4) avatarEffectsInventoryComponent2.ActivateCustomEffect(0);
                                            user.Team = Team.none;
                                        }
                                        var serverMessage33 =
                                            new ServerMessage(
                                                LibraryParser.OutgoingRequest("UserIsPlayingFreezeMessageComposer"));
                                        serverMessage33.AppendBool(user.Team != Team.none);
                                        user.GetClient().SendMessage(serverMessage33);
                                    }
                                    break;
                                }
                        }

                            if (item.GetBaseItem().InteractionType == Interaction.BedTent)
                            user.OnCampingTent = true;

                        user.LastItem = item.Id;
                    }
                }

                if (user.IsSitting && user.TeleportEnabled)
                {
                    user.Z -= 0.35;
                    user.UpdateNeeded = true;
                }
                if (!cycleGameItems) return;
                if (UserRoom.GotSoccer()) UserRoom.GetSoccer().OnUserWalk(user);
                if (UserRoom.GotBanzai()) UserRoom.GetBanzai().OnUserWalk(user);
                UserRoom.GetFreeze().OnUserWalk(user);
            }
            catch (Exception e)
            {
                Logging.HandleException(e, "RoomUserManager.cs:UpdateUserStatus");
            }
        }
Ejemplo n.º 17
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)
        {
            var virtualId = _primaryPrivateUserId++;
            var roomUser = new RoomUser(0u, UserRoom.RoomId, virtualId, UserRoom, false);
            var num = _secondaryPrivateUserId++;
            roomUser.InternalRoomId = num;
            UserList.TryAdd(num, roomUser);
            OnUserAdd(roomUser);

            var model = UserRoom.GetGameMap().Model;
            var 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;

            var 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;
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Handles the <see cref="E:UserAdd" /> event.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// <param name="user"></param>
        private void OnUserAdd(RoomUser user)
        {
            try
            {
                if (user == null || user.GetClient() == null || user.GetClient().GetHabbo() == null) return;
                var client = user.GetClient();
                if (client == null || client.GetHabbo() == null || UserRoom == null) return;

                if (!user.IsSpectator)
                {
                    var 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;

                        var 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;

                        var 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)
                    {
                        var serverMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer"));
                        serverMessage.AppendInteger(1);
                        user.Serialize(serverMessage, UserRoom.GetGameMap().GotPublicPool);
                        UserRoom.SendMessage(serverMessage);
                    }
                    if (!user.IsBot)
                    {
                        var 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)
                    {
                        AzureEmulator.GetGame()
                            .GetQuestManager()
                            .ProgressUserQuest(client, QuestType.SocialVisit, 0u);
                        AzureEmulator.GetGame()
                            .GetAchievementManager()
                            .ProgressUserAchievement(client, "ACH_RoomEntry", 1, false);
                    }
                }
                if (client.GetHabbo().GetMessenger() != null) client.GetHabbo().GetMessenger().OnStatusChanged(true);
                client.GetMessageHandler().OnRoomUserAdd();

                //if (client.GetHabbo().HasFuse("moderator")) client.GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(102);
                //if (client.GetHabbo().Rank == Convert.ToUInt32(AzureEmulator.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)
            {
                Logging.LogCriticalException(ex.ToString());
            }
        }
Ejemplo n.º 19
0
        internal bool UserCanWalkInTile(RoomUser RoomUsers)
        {
            // Check if User CanWalk...
            if ((UserRoom.GetGameMap().CanWalk(RoomUsers.SetX, RoomUsers.SetY, RoomUsers.AllowOverride)) || (RoomUsers.RidingHorse))
            {
                // Let's Update his Movement...
                UserRoom.GetGameMap().UpdateUserMovement(new Point(RoomUsers.Coordinate.X, RoomUsers.Coordinate.Y), new Point(RoomUsers.SetX, RoomUsers.SetY), RoomUsers);
                var HasItemInPlace = UserRoom.GetGameMap().GetCoordinatedItems(new Point(RoomUsers.X, RoomUsers.Y));

                // Set His Actual X,Y,Z Position...
                RoomUsers.X = RoomUsers.SetX;
                RoomUsers.Y = RoomUsers.SetY;
                RoomUsers.Z = RoomUsers.SetZ;

                // Check Sub Items Interactionables
                foreach (var RoomItem in HasItemInPlace.ToArray())
                {
                    RoomItem.UserWalksOffFurni(RoomUsers);
                    switch (RoomItem.GetBaseItem().InteractionType)
                    {
                        case Interaction.RunWaySage:
                        case Interaction.ChairState:
                        case Interaction.Shower:
                        case Interaction.PressurePad:
                        case Interaction.PressurePadBed:
                        case Interaction.Guillotine:
                            RoomItem.ExtraData = "0";
                            RoomItem.UpdateState();
                            break;

                        case Interaction.Tent:
                        case Interaction.BedTent:
                            if (!RoomUsers.IsBot && RoomUsers.OnCampingTent)
                            {
                                var serverMessage = new ServerMessage();
                                serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFloorItemExtraDataMessageComposer"));
                                serverMessage.AppendString(RoomItem.Id.ToString());
                                serverMessage.AppendInteger(0);
                                serverMessage.AppendString("0");
                                RoomUsers.GetClient().SendMessage(serverMessage);
                                RoomUsers.OnCampingTent = false;
                            }
                            break;

                        case Interaction.None:
                            break;
                    }
                }

                // Let's Update user Status..
                UpdateUserStatus(RoomUsers, true);
                return false;
            }

            return true;
        }
Ejemplo n.º 20
0
 /// <summary>
 /// Serializes the group information.
 /// </summary>
 /// <param name="group">The group.</param>
 /// <param name="response">The response.</param>
 /// <param name="session">The session.</param>
 /// <param name="room">The room.</param>
 /// <param name="newWindow">if set to <c>true</c> [new window].</param>
 internal void SerializeGroupInfo(Guild group, ServerMessage response, GameClient session, Room room,
     bool newWindow = false)
 {
     if (room == null || group == null)
         return;
     DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
     DateTime dateTime2 = dateTime.AddSeconds(group.CreateTime);
     response.Init(LibraryParser.OutgoingRequest("GroupDataMessageComposer"));
     response.AppendInteger(group.Id);
     response.AppendBool(true);
     response.AppendInteger(group.State);
     response.AppendString(group.Name);
     response.AppendString(group.Description);
     response.AppendString(group.Badge);
     response.AppendInteger(group.RoomId);
     response.AppendString((AzureEmulator.GetGame().GetRoomManager().GenerateRoomData(group.RoomId) == null) ? "No room found.." : AzureEmulator.GetGame().GetRoomManager().GenerateRoomData(group.RoomId).Name);
     response.AppendInteger((group.CreatorId == session.GetHabbo().Id) ? 3 : (group.Requests.Contains(session.GetHabbo().Id) ? 2 : (group.Members.ContainsKey(session.GetHabbo().Id) ? 1 : 0)));
     response.AppendInteger(group.Members.Count);
     response.AppendBool(session.GetHabbo().FavouriteGroup == group.Id);
     response.AppendString(string.Format("{0}-{1}-{2}", dateTime2.Day.ToString("00"), dateTime2.Month.ToString("00"), dateTime2.Year));
     response.AppendBool(group.CreatorId == session.GetHabbo().Id);
     response.AppendBool(group.Admins.ContainsKey(session.GetHabbo().Id));
     response.AppendString((AzureEmulator.GetHabboById(group.CreatorId) == null) ? string.Empty : AzureEmulator.GetHabboById(group.CreatorId).UserName);
     response.AppendBool(newWindow);
     response.AppendBool(group.AdminOnlyDeco == 0u);
     response.AppendInteger(group.Requests.Count);
     response.AppendBool(group.HasForum);
     room.SendMessage(response);
 }
Ejemplo n.º 21
0
 /// <summary>
 /// Serializes the messenger action.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="name">The name.</param>
 internal void SerializeMessengerAction(int type, string name)
 {
     if (GetClient() == null)
         return;
     var serverMessage = new ServerMessage();
     serverMessage.Init(LibraryParser.OutgoingRequest("ConsoleMessengerActionMessageComposer"));
     serverMessage.AppendString(GetClient().GetHabbo().Id.ToString());
     serverMessage.AppendInteger(type);
     serverMessage.AppendString(name);
     foreach (var current in Friends.Values.Where(current => current.Client != null))
         current.Client.SendMessage(serverMessage);
 }
Ejemplo n.º 22
0
 /// <summary>
 ///     Updates the item on roller.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="nextCoord">The next coord.</param>
 /// <param name="rolledId">The rolled identifier.</param>
 /// <param name="nextZ">The next z.</param>
 /// <returns>ServerMessage.</returns>
 internal ServerMessage UpdateItemOnRoller(RoomItem item, Point nextCoord, uint rolledId, double nextZ)
 {
     var serverMessage = new ServerMessage();
     serverMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer"));
     serverMessage.AppendInteger(item.X);
     serverMessage.AppendInteger(item.Y);
     serverMessage.AppendInteger(nextCoord.X);
     serverMessage.AppendInteger(nextCoord.Y);
     serverMessage.AppendInteger(1);
     serverMessage.AppendInteger(item.Id);
     serverMessage.AppendString(TextHandling.GetString(item.Z));
     serverMessage.AppendString(TextHandling.GetString(nextZ));
     serverMessage.AppendInteger(rolledId);
     SetFloorItem(item, nextCoord.X, nextCoord.Y, nextZ);
     return serverMessage;
 }
Ejemplo n.º 23
0
        /// <summary>
        ///     Serializes the room data.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="session">The session.</param>
        /// <param name="isNotReload">if set to <c>true</c> [from view].</param>
        /// <param name="sendRoom">if set to <c>true</c> [send room].</param>
        /// <param name="show">if set to <c>true</c> [show].</param>
        internal void SerializeRoomData(ServerMessage message, GameClient session, bool isNotReload,
            bool? sendRoom = false, bool show = true)
        {
            var room = Azure.GetGame().GetRoomManager().GetRoom(session.GetHabbo().CurrentRoomId);

            message.Init(LibraryParser.OutgoingRequest("RoomDataMessageComposer"));
            message.AppendBool(show); //flatId
            Serialize(message, true, !isNotReload);
            message.AppendBool(isNotReload);
            message.AppendBool(Azure.GetGame().GetNavigator() != null &&
                               Azure.GetGame().GetNavigator().GetPublicItem(Id) != null); // staffPick
            message.AppendBool(!isNotReload || session.GetHabbo().HasFuse("fuse_mod")); // bypass bell, pass ...
            message.AppendBool(room != null && room.RoomMuted); //roomMuted
            message.AppendInteger(WhoCanMute);
            message.AppendInteger(WhoCanKick);
            message.AppendInteger(WhoCanBan);
            message.AppendBool(room != null && room.CheckRights(session, true));
            message.AppendInteger(ChatType);
            message.AppendInteger(ChatBalloon);
            message.AppendInteger(ChatSpeed);
            message.AppendInteger(ChatMaxDistance);
            message.AppendInteger(ChatFloodProtection);
            if (sendRoom == null) return;

            if (sendRoom.Value)
            {
                if (Azure.GetGame().GetRoomManager().GetRoom(Id) != null)
                    Azure.GetGame().GetRoomManager().GetRoom(Id).SendMessage(message);
            }
            else session.SendMessage(message);
        }
Ejemplo n.º 24
0
 /// <summary>
 /// Serializes the badge.
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <returns>ServerMessage.</returns>
 internal ServerMessage SerializeBadge(string badge)
 {
     var serverMessage = new ServerMessage();
     serverMessage.Init(LibraryParser.OutgoingRequest("ReceiveBadgeMessageComposer"));
     serverMessage.AppendInteger(1);
     serverMessage.AppendString(badge);
     return serverMessage;
 }
Ejemplo n.º 25
0
        internal bool MoveBall(RoomItem item, GameClient mover, int newX, int newY)
        {
            if (item == null || item.GetBaseItem() == null /*|| mover == null || mover.GetHabbo() == null*/)
                return false;

            if (!_room.GetGameMap().ItemCanBePlacedHere(newX, newY))
                return false;

            var oldRoomCoord = item.Coordinate;
            var itemIsOnGameItem = GameItemOverlaps(item);
            double newZ = _room.GetGameMap().Model.SqFloorHeight[newX][newY];

            var mMessage = new ServerMessage();
            mMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer")); // Cf
            mMessage.AppendInteger(item.Coordinate.X);
            mMessage.AppendInteger(item.Coordinate.Y);
            mMessage.AppendInteger(newX);
            mMessage.AppendInteger(newY);
            mMessage.AppendInteger(1);
            mMessage.AppendInteger(item.Id);
            mMessage.AppendString(TextHandling.GetString(item.Z));
            mMessage.AppendString(TextHandling.GetString(newZ));
            mMessage.AppendInteger(item.Id);
            _room.SendMessage(mMessage);

            if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY)
                return false;

            item.SetState(newX, newY, item.Z,
                Gamemap.GetAffectedTiles(item.GetBaseItem().Length, item.GetBaseItem().Width, newX, newY, item.Rot));

            if (itemIsOnGameItem || mover == null || mover.GetHabbo() == null)
                return false;
            HandleFootballGameItems(new Point(newX, newY),
                _room.GetRoomUserManager().GetRoomUserByHabbo(mover.GetHabbo().Id));
            return false;
        }
Ejemplo n.º 26
0
        private void PickUpPowerUp(RoomItem item, RoomUser user)
        {
            switch (item.FreezePowerUp)
            {
                case FreezePowerUp.BlueArrow:
                case FreezePowerUp.GreenArrow:
                case FreezePowerUp.OrangeSnowball:
                    user.BanzaiPowerUp = item.FreezePowerUp;
                    break;

                case FreezePowerUp.Shield:
                    ActivateShield(user);
                    break;

                case FreezePowerUp.Heart:
                    if (user.FreezeLives < 5)
                    {
                        {
                            ++user.FreezeLives;
                        }
                        _room.GetGameManager().AddPointToTeam(user.Team, 10, user);
                    }
                    var serverMessage = new ServerMessage();
                    serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFreezeLivesMessageComposer"));
                    serverMessage.AppendInteger(user.InternalRoomId);
                    serverMessage.AppendInteger(user.FreezeLives);
                    user.GetClient().SendMessage(serverMessage);
                    break;
            }
            item.FreezePowerUp = FreezePowerUp.None;
            item.ExtraData = $"1{item.ExtraData}";
            item.UpdateState(false, true);
        }
Ejemplo n.º 27
0
 /// <summary>
 ///     Updates the user on roller.
 /// </summary>
 /// <param name="user">The user.</param>
 /// <param name="nextCoord">The next coord.</param>
 /// <param name="rollerId">The roller identifier.</param>
 /// <param name="nextZ">The next z.</param>
 /// <returns>ServerMessage.</returns>
 internal ServerMessage UpdateUserOnRoller(RoomUser user, Point nextCoord, uint rollerId, double nextZ)
 {
     var serverMessage = new ServerMessage(0);
     serverMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer"));
     serverMessage.AppendInteger(user.X);
     serverMessage.AppendInteger(user.Y);
     serverMessage.AppendInteger(nextCoord.X);
     serverMessage.AppendInteger(nextCoord.Y);
     serverMessage.AppendInteger(0);
     serverMessage.AppendInteger(rollerId);
     serverMessage.AppendInteger(2);
     serverMessage.AppendInteger(user.VirtualId);
     serverMessage.AppendString(TextHandling.GetString(user.Z));
     serverMessage.AppendString(TextHandling.GetString(nextZ));
     _room.GetGameMap()
         .UpdateUserMovement(new Point(user.X, user.Y), new Point(nextCoord.X, nextCoord.Y), user);
     _room.GetGameMap().GameMap[user.X, user.Y] = 1;
     user.X = nextCoord.X;
     user.Y = nextCoord.Y;
     user.Z = nextZ;
     _room.GetGameMap().GameMap[user.X, user.Y] = 0;
     return serverMessage;
 }
Ejemplo n.º 28
0
        /// <summary>
        /// Serializes the club.
        /// </summary>
        internal void SerializeClub()
        {
            var client = GetClient();
            var serverMessage = new ServerMessage();
            serverMessage.Init(LibraryParser.OutgoingRequest("SubscriptionStatusMessageComposer"));
            serverMessage.AppendString("club_habbo");
            if (client.GetHabbo().GetSubscriptionManager().HasSubscription)
            {
                double num = client.GetHabbo().GetSubscriptionManager().GetSubscription().ExpireTime;
                var num2 = num - AzureEmulator.GetUnixTimeStamp();

                {
                    var num3 = (int)Math.Ceiling(num2 / 86400.0);
                    var i =
                        (int)
                            Math.Ceiling(
                                (

                                    AzureEmulator.GetUnixTimeStamp() -
                                    (double)client.GetHabbo().GetSubscriptionManager().GetSubscription().ActivateTime) /
                                86400.0);
                    var num4 = num3 / 31;
                    if (num4 >= 1)
                        num4--;
                    serverMessage.AppendInteger(num3 - num4 * 31);
                    serverMessage.AppendInteger(1);
                    serverMessage.AppendInteger(num4);
                    serverMessage.AppendInteger(1);
                    serverMessage.AppendBool(true);
                    serverMessage.AppendBool(true);
                    serverMessage.AppendInteger(i);
                    serverMessage.AppendInteger(i);
                    serverMessage.AppendInteger(10);
                }
            }
            else
            {
                serverMessage.AppendInteger(0);
                serverMessage.AppendInteger(0);
                serverMessage.AppendInteger(0);
                serverMessage.AppendInteger(0);
                serverMessage.AppendBool(false);
                serverMessage.AppendBool(false);
                serverMessage.AppendInteger(0);
                serverMessage.AppendInteger(0);
                serverMessage.AppendInteger(0);
            }
            client.SendMessage(serverMessage);
            var serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("UserClubRightsMessageComposer"));
            serverMessage2.AppendInteger(GetSubscriptionManager().HasSubscription ? 2 : 0);
            serverMessage2.AppendInteger(Rank);
            serverMessage2.AppendBool(Rank >= Convert.ToUInt32(AzureEmulator.GetDbConfig().DbData["ambassador.minrank"]));
            client.SendMessage(serverMessage2);
        }
Ejemplo n.º 29
0
 /// <summary>
 /// Serializes the badge reward.
 /// </summary>
 /// <param name="success">if set to <c>true</c> [success].</param>
 /// <returns>ServerMessage.</returns>
 internal ServerMessage SerializeBadgeReward(bool success)
 {
     var serverMessage = new ServerMessage();
     serverMessage.Init(LibraryParser.OutgoingRequest("WiredRewardAlertMessageComposer"));
     serverMessage.AppendInteger(success ? 7 : 1);
     return serverMessage;
 }
Ejemplo n.º 30
0
        /// <summary>
        ///     Serializes the room chatlog.
        /// </summary>
        /// <param name="roomId">The room identifier.</param>
        /// <returns>ServerMessage.</returns>
        /// <exception cref="System.NullReferenceException">No room found.</exception>
        internal static ServerMessage SerializeRoomChatlog(uint roomId)
        {
            var message = new ServerMessage();

            var room = Azure.GetGame().GetRoomManager().LoadRoom(roomId);

            if (room?.RoomData != null)
            {
                message.Init(LibraryParser.OutgoingRequest("ModerationToolRoomChatlogMessageComposer"));
                message.AppendByte(1);
                message.AppendShort(2);
                message.AppendString("roomName");
                message.AppendByte(2);
                message.AppendString(room.RoomData.Name);
                message.AppendString("roomId");
                message.AppendByte(1);
                message.AppendInteger(room.RoomData.Id);

                var tempChatlogs =
                    room.RoomData.RoomChat.Reverse()
                        .Skip(Math.Max(0, room.RoomData.RoomChat.Count - 60))
                        .Take(60)
                        .ToList();

                message.AppendShort(tempChatlogs.Count);

                foreach (var chatLog in tempChatlogs)
                    chatLog.Serialize(ref message);

                return message;
            }

            return null;
        }