示例#1
0
        public void Handle(GameClient Session, ClientMessage Event)
        {
            uint num  = Event.PopWiredUInt();
            Room room = GoldTree.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room != null)
            {
                RoomUser roomUserByHabbo = room.GetRoomUserByHabbo(num);
                if (room != null && room.CheckRights(Session, true) && roomUserByHabbo != null && !roomUserByHabbo.IsBot && !room.UsersWithRights.Contains(num))
                {
                    room.UsersWithRights.Add(num);
                    using (DatabaseClient client = GoldTree.GetDatabase().GetClient())
                    {
                        client.ExecuteQuery(string.Concat(new object[]
                        {
                            "INSERT INTO room_rights (room_id,user_id) VALUES (",
                            room.Id,
                            ",",
                            num,
                            ")"
                        }));
                    }
                    ServerMessage serverMessage = new ServerMessage(510u);
                    serverMessage.AppendUInt(room.Id);
                    serverMessage.AppendUInt(num);
                    serverMessage.AppendStringWithBreak(roomUserByHabbo.GetClient().GetHabbo().Username);
                    Session.SendMessage(serverMessage);
                    roomUserByHabbo.AddStatus("flatctrl", "");
                    roomUserByHabbo.UpdateNeeded = true;
                    roomUserByHabbo.GetClient().SendMessage(new ServerMessage(42u));
                }
            }
        }
示例#2
0
        public void parse(GameClient Session, ClientMessage Event)
        {
            uint     num             = Event.PopWiredUInt();
            Room     room            = PhoenixEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
            RoomUser roomUserByHabbo = room.GetRoomUserByHabbo(num);

            if (room != null && room.CheckRights(Session, true) && roomUserByHabbo != null && !roomUserByHabbo.IsBot && !room.UsersWithRights.Contains(num))
            {
                room.UsersWithRights.Add(num);
                using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
                {
                    adapter.ExecuteQuery(string.Concat(new object[]
                    {
                        "INSERT INTO room_rights (room_id,user_id) VALUES ('",
                        room.RoomId,
                        "','",
                        num,
                        "')"
                    }));
                }
                ServerMessage Message = new ServerMessage(510);
                Message.AppendUInt(room.RoomId);
                Message.AppendUInt(num);
                Message.AppendStringWithBreak(roomUserByHabbo.GetClient().GetHabbo().Username);
                Session.SendMessage(Message);
                roomUserByHabbo.AddStatus("flatctrl", "");
                roomUserByHabbo.UpdateNeeded = true;
                roomUserByHabbo.GetClient().SendMessage(new ServerMessage(42));
            }
        }
        public void Handle(GameClient Session, ClientMessage Event)
        {
            uint num  = Event.PopWiredUInt();
            Room room = Essential.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room != null)
            {
                RoomUser roomUserByHabbo = room.GetRoomUserByHabbo(num);
                if (room != null && room.CheckRights(Session, true) && roomUserByHabbo != null && !roomUserByHabbo.IsBot && !room.UsersWithRights.Contains(num))
                {
                    room.UsersWithRights.Add(num);
                    using (DatabaseClient client = Essential.GetDatabase().GetClient())
                    {
                        client.ExecuteQuery(string.Concat(new object[]
                        {
                            "INSERT INTO room_rights (room_id,user_id) VALUES (",
                            room.Id,
                            ",",
                            num,
                            ")"
                        }));
                    }
                    ServerMessage serverMessage = new ServerMessage(Outgoing.GivePowers); // Updated
                    serverMessage.AppendUInt(room.Id);
                    serverMessage.AppendUInt(num);
                    serverMessage.AppendStringWithBreak(roomUserByHabbo.GetClient().GetHabbo().Username);
                    Session.SendMessage(serverMessage);

                    roomUserByHabbo.AddStatus("flatctrl", "");
                    roomUserByHabbo.UpdateNeeded = true;

                    ServerMessage Rights = new ServerMessage(Outgoing.RoomRightsLevel); // Updated
                    Rights.AppendInt32(1);
                    roomUserByHabbo.GetClient().SendMessage(Rights);
                }
                else if (room.CheckRights(Session, true) && !room.UsersWithRights.Contains(num) && Session.GetHabbo().GetMessenger().UserInFriends(num))
                {
                    room.UsersWithRights.Add(num);
                    using (DatabaseClient client = Essential.GetDatabase().GetClient())
                    {
                        client.ExecuteQuery(string.Concat(new object[]
                        {
                            "INSERT INTO room_rights (room_id,user_id) VALUES (",
                            room.Id,
                            ",",
                            num,
                            ")"
                        }));
                    }
                    ServerMessage serverMessage = new ServerMessage(Outgoing.GivePowers); // Updated
                    serverMessage.AppendUInt(room.Id);
                    serverMessage.AppendUInt(num);
                    serverMessage.AppendStringWithBreak(Essential.GetGame().GetClientManager().GetNameById(num));
                    Session.SendMessage(serverMessage);
                }
            }
        }
示例#4
0
        internal void OnUserWalk(RoomUser user)
        {
            if (BaseItem.IsSeat)
            {
                user.AddStatus("sit", TextHandling.GetString(BaseItem.Z));
                user.Z   = Z;
                user.Rot = Rot;

                user.NeedsUpdate = true;
            }
        }
示例#5
0
        public static void ActivateStatus(RoomUser User)
        {
            if (User == null)
            {
                return;
            }

            if (UserIsOnSwimTile(User) && !User.Statusses.ContainsKey("swim"))
            {
                User.AddStatus("swim", "");
            }
        }
示例#6
0
        public static void ActivateStatus(RoomUser User)
        {
            if (User == null)
            {
                return;
            }

            if (UserIsOnSwimTile(User) && !User.Statusses.ContainsKey("swim"))
            {
                User.AddStatus("swim", "");
            }
        }
示例#7
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!RavenEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (!Group.IsMember(UserId) || !Group.IsAdmin(Session.GetHabbo().Id))
            {
                return;
            }

            Habbo Habbo = RavenEnvironment.GetHabboById(UserId);

            if (Habbo == null)
            {
                Session.SendNotification("Oops, an error occurred whilst finding this user.");
                return;
            }

            Group.MakeAdmin(UserId);

            Room Room = null;

            if (RavenEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
                if (User != null)
                {
                    if (!User.Statusses.ContainsKey("flatctrl 3"))
                    {
                        User.AddStatus("flatctrl 3", "");
                    }
                    User.UpdateNeeded = true;
                    if (User.GetClient() != null)
                    {
                        User.GetClient().SendMessage(new YouAreControllerComposer(3));
                    }
                }
            }

            Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 1));
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!QuasarEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId))
            {
                return;
            }

            Habbo Habbo = QuasarEnvironment.GetHabboById(UserId);

            if (Habbo == null)
            {
                Session.SendNotification("Oeps! Deze gebruiker is niet in de kamer aanwezig.");
                return;
            }

            Group.MakeAdmin(UserId);

            Room Room = null;

            if (QuasarEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
                if (User != null)
                {
                    if (!User.Statusses.ContainsKey("flatctrl 3"))
                    {
                        User.AddStatus("flatctrl 3", "");
                    }
                    User.UpdateNeeded = true;
                    if (User.GetClient() != null)
                    {
                        User.GetClient().SendMessage(new YouAreControllerComposer(3));
                    }
                }
            }

            Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 1));
        }
        public void Handle(GameClient Session, ClientMessage Event)
        {
            Room room = Essential.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room != null)
            {
                RoomUser roomUserByHabbo = room.GetRoomUserByHabbo(Session.GetHabbo().Id);
                if (roomUserByHabbo != null)
                {
                    int SignId = Event.PopWiredInt32();
                    roomUserByHabbo.Unidle();

                    roomUserByHabbo.AddStatus("sign", Convert.ToString(SignId));
                    roomUserByHabbo.UpdateNeeded = true;

                    roomUserByHabbo.CarryItem(0);
                }
            }
        }
示例#10
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int SignId = Packet.PopInt();

            if (!NeonEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room Room))
            {
                return;
            }

            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

            User.UnIdle();

            User.AddStatus("sign", Convert.ToString(SignId));
            User.UpdateNeeded = true;
            User.SignTime     = NeonEnvironment.GetUnixTimestamp() + 5;
        }
示例#11
0
        internal override void OnUserSay(RoomUser User, string Message)
        {
            RoomUser roomUser = base.GetRoomUser();

            if (roomUser.PetData.OwnerId != User.GetClient().GetHabbo().Id)
            {
                return;
            }

            if (Message == "" || Message == null)
            {
                Message = " ";
            }

            Message = Message.Substring(1);

            bool Lazy     = false;
            bool Unknown  = false;
            bool Sleeping = false;

            try
            {
                switch (Message.ToUpper())
                {
                case "DESCANSA":
                case "RELAX":
                case "REST":
                    this.RemovePetStatus();
                    break;

                case "COME":
                case "COMER":
                case "EAT":
                    if (!roomUser.PetData.HasCommand(43))
                    {
                        Unknown = true;
                        break;
                    }

                    this.RemovePetStatus();
                    break;

                case "SIÉNTATE":
                case "SIENTATE":
                case "SIT":
                case "SIÉNTATE":
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.PetData.AddExperience(10);
                    roomUser.Statusses.Add("sit", "");
                    roomUser.Statusses.Add("gst", "joy");
                    roomUser.UpdateNeeded = true;
                    this.ActionTimer      = 25;
                    this.EnergyTimer      = 10;

                    SubtractAttributes();
                    break;

                case "TUMBATE":
                case "LAY":
                case "ACUESTATE":
                case "ACUÉSTATE":
                case "TÚMBATE":
                    if (!roomUser.PetData.HasCommand(2))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.PetData.AddExperience(10);
                    roomUser.Statusses.Add("lay", "");
                    roomUser.Statusses.Add("gst", "sml");
                    roomUser.UpdateNeeded = true;
                    this.ActionTimer      = 25;
                    this.EnergyTimer      = 10;

                    SubtractAttributes();
                    break;

                case "VEN":
                case "VEN AQU�":
                case "VEN AQUÍ":
                case "VEN AQUí":
                case "S�GUEME":
                case "FOLLOW":
                case "FOLLOW ME":
                    if (!roomUser.PetData.HasCommand(3))
                    {
                        Unknown = true;
                        break;
                    }
                    else if (!roomUser.PetData.HasCommand(7))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.PetData.AddExperience(11);
                    roomUser.MoveTo(User.SquareInFront);
                    roomUser.Statusses.Add("gst", "sml");
                    roomUser.UpdateNeeded = true;

                    this.ActionTimer = 25;
                    this.EnergyTimer = 10;
                    SubtractAttributes();
                    break;

                case "LEVANTA":
                case "STAND":
                    if (!roomUser.PetData.HasCommand(8))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.PetData.AddExperience(25);
                    roomUser.Statusses.Add("std", "");
                    roomUser.UpdateNeeded = true;

                    this.ActionTimer = 25;
                    this.EnergyTimer = 10;
                    SubtractAttributes();
                    break;

                case "JUMP":
                case "SALTA":
                case "BOTA":
                    if (!roomUser.PetData.HasCommand(19))
                    {
                        Unknown = true;
                        break;
                    }
                    else if (!roomUser.PetData.HasCommand(9))
                    {
                        Unknown = true;
                        break;
                    }
                    else if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.PetData.AddExperience(35);
                    roomUser.Statusses.Add("jmp", "");
                    roomUser.Statusses.Add("gst", "joy");
                    roomUser.UpdateNeeded = true;

                    this.ActionTimer = 45;
                    this.EnergyTimer = 20;
                    SubtractAttributes();
                    break;

                case "ADELANTE":
                case "FORWARD":
                case "DELANTE":
                case "MOVE FORWARD":
                case "STRAIGHT":
                    if (!roomUser.PetData.HasCommand(24))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.MoveTo(roomUser.SquareInFront);
                    roomUser.PetData.AddExperience(35);
                    roomUser.Statusses.Add("gst", "sml");
                    roomUser.UpdateNeeded = true;
                    break;

                case "IZQUIERDA":
                case "FOLLOW LEFT":
                case "LEFT":
                    if (!roomUser.PetData.HasCommand(15))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }

                    this.RemovePetStatus();

                    switch (roomUser.RotBody)
                    {
                    case 0:
                        roomUser.MoveTo(roomUser.X + 2, roomUser.Y);
                        break;

                    case 1:
                        roomUser.MoveTo(roomUser.X - 2, roomUser.Y - 2);
                        break;

                    case 2:
                        roomUser.MoveTo(roomUser.X, roomUser.Y + 2);
                        break;

                    case 3:
                        roomUser.MoveTo(roomUser.X + 2, roomUser.Y - 2);
                        break;

                    case 4:
                        roomUser.MoveTo(roomUser.X - 2, roomUser.Y);
                        break;

                    case 5:
                        roomUser.MoveTo(roomUser.X + 2, roomUser.Y + 2);
                        break;

                    case 6:
                        roomUser.MoveTo(roomUser.X, roomUser.Y - 2);
                        break;

                    case 7:
                        roomUser.MoveTo(roomUser.X - 2, roomUser.Y + 2);
                        break;
                    }

                    roomUser.PetData.AddExperience(35);
                    roomUser.Statusses.Add("gst", "sml");
                    roomUser.UpdateNeeded = true;
                    break;

                case "DERECHA":
                case "FOLLOW RIGHT":
                case "RIGHT":
                    if (!roomUser.PetData.HasCommand(16))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }

                    this.RemovePetStatus();

                    switch (roomUser.RotBody)
                    {
                    case 0:
                        roomUser.MoveTo(roomUser.X - 2, roomUser.Y);
                        break;

                    case 1:
                        roomUser.MoveTo(roomUser.X + 2, roomUser.Y + 2);
                        break;

                    case 2:
                        roomUser.MoveTo(roomUser.X, roomUser.Y - 2);
                        break;

                    case 3:
                        roomUser.MoveTo(roomUser.X - 2, roomUser.Y + 2);
                        break;

                    case 4:
                        roomUser.MoveTo(roomUser.X + 2, roomUser.Y);
                        break;

                    case 5:
                        roomUser.MoveTo(roomUser.X - 2, roomUser.Y - 2);
                        break;

                    case 6:
                        roomUser.MoveTo(roomUser.X, roomUser.Y + 2);
                        break;

                    case 7:
                        roomUser.MoveTo(roomUser.X + 2, roomUser.Y - 2);
                        break;
                    }

                    roomUser.PetData.AddExperience(35);
                    roomUser.Statusses.Add("gst", "sml");
                    roomUser.UpdateNeeded = true;
                    break;

                case "PIDE":
                case "BEG":
                    if (!roomUser.PetData.HasCommand(4))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.PetData.AddExperience(11);
                    roomUser.Statusses.Add("beg", "");
                    roomUser.Statusses.Add("gst", "sml");
                    roomUser.UpdateNeeded = true;

                    this.ActionTimer = 25;
                    this.EnergyTimer = 10;
                    SubtractAttributes();
                    break;

                case "DEAD":
                case "PLAY DEAD":
                case "HAZ EL MUERTO":
                    //
                    if (!roomUser.PetData.HasCommand(5))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    roomUser.PetData.AddExperience(12);
                    roomUser.Statusses.Add("ded", "");
                    roomUser.UpdateNeeded = true;

                    this.ActionTimer = 25;
                    this.EnergyTimer = 10;
                    break;

                case "FUTBOL":
                case "FOOTBALL":
                case "SOCCER":
                case "FÚTBOL":
                    if (!roomUser.PetData.HasCommand(5))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();
                    var Footballs = base.GetRoom().GetRoomItemHandler().mFloorItems.Values.Where(x => x.GetBaseItem().InteractionType == Items.InteractionType.football);
                    if (Footballs.Count() < 1)
                    {
                        Lazy = true;
                        break;
                    }
                    else
                    {
                        Items.RoomItem Item = Footballs.FirstOrDefault();
                        this.ActionTimer = 50;
                        this.EnergyTimer = 30;
                        roomUser.MoveTo(Item.GetX, Item.GetY);
                        roomUser.PetData.AddExperience(35);
                    }
                    SubtractAttributes();
                    break;

                case "JUEGA":
                case "JUGAR":
                case "PLAY":
                    if (!roomUser.PetData.HasCommand(11))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.RemovePetStatus();

                    SubtractAttributes();
                    break;

                case "QUIETO":
                case "CALLA":
                case "CALM":
                case "ESTATUA":
                case "STATUE":
                case "SHUT":
                case "SHUT UP":
                case "SILENCE":
                    this.RemovePetStatus();
                    this.ActionTimer = 650;
                    this.EnergyTimer = 20;
                    roomUser.AddStatus("wav", "");
                    roomUser.UpdateNeeded = true;
                    break;

                case "HABLA":
                case "SPEAK":
                case "TALK":
                    if (!roomUser.PetData.HasCommand(10))
                    {
                        Unknown = true;
                        break;
                    }
                    if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25)
                    {
                        Lazy = true;
                        break;
                    }
                    this.ActionTimer = 1;
                    this.EnergyTimer = 10;
                    roomUser.Statusses.Add("gst", "sml");
                    roomUser.UpdateNeeded = true;
                    roomUser.PetData.AddExperience(35);
                    SubtractAttributes();
                    break;

                case "DORMIR":
                case "DUERME":
                case "A CASA":
                case "TO NEST":
                case "A DORMIR":
                    this.RemovePetStatus();

                    var PetNest = base.GetRoom().GetRoomItemHandler().mFloorItems.Values.Where(x => x.GetBaseItem().InteractionType == Items.InteractionType.petnest);
                    if (PetNest.Count() < 1)
                    {
                        Lazy = true;
                        break;
                    }
                    else
                    {
                        Items.RoomItem Item = PetNest.FirstOrDefault();
                        roomUser.MoveTo(Item.GetX, Item.GetY);
                        roomUser.PetData.AddExperience(40);
                        int RndmEnergy = new Random().Next(25, 51);
                        if (roomUser.PetData.Energy < (Pet.MaxEnergy - RndmEnergy))
                        {
                            roomUser.PetData.Energy += RndmEnergy;
                        }
                        roomUser.PetData.Nutrition += 15;
                        roomUser.AddStatus("lay", "");
                        roomUser.AddStatus("gst", "eyb");
                        roomUser.UpdateNeeded = true;
                        Sleeping         = true;
                        this.ActionTimer = 500;
                        this.EnergyTimer = 500;
                    }
                    break;

                default:
                    Lazy = true;
                    SubtractAttributes();
                    break;
                }
            }
            catch (Exception)
            {
                Lazy = true;
                SubtractAttributes();
            }

            if (Sleeping)
            {
                string[] value   = PetLocale.GetValue("tired");
                string   message = value[new Random().Next(0, checked (value.Length - 1))];
                roomUser.Chat(null, message, false, 0, 0);
            }
            else if (Unknown)
            {
                string[] value   = PetLocale.GetValue("pet.unknowncommand");
                string   message = value[new Random().Next(0, checked (value.Length - 1))];
                roomUser.Chat(null, message, false, 0, 0);
            }
            else if (Lazy)
            {
                string[] value   = PetLocale.GetValue("pet.lazy");
                string   message = value[new Random().Next(0, checked (value.Length - 1))];
                roomUser.Chat(null, message, false, 0, 0);
            }
            else
            {
                string[] value   = PetLocale.GetValue("pet.done");
                string   message = value[new Random().Next(0, checked (value.Length - 1))];
                roomUser.Chat(null, message, false, 0, 0);
            }
        }
示例#12
0
        private void UpdateUserEffect(RoomUser User, int x, int y)
        {
            if (User.IsBot)
                return;
            byte NewCurrentUserItemEffect = room.GetGameMap().EffectMap[x, y];
            if (NewCurrentUserItemEffect > 0)
            {
                ItemEffectType Type = ByteToItemEffectEnum.Parse(NewCurrentUserItemEffect);
                if (Type != User.CurrentItemEffect)
                {
                    switch (Type)
                    {
                        case ItemEffectType.Iceskates:
                            {
                                if (User.GetClient().GetHabbo().Gender == "M")
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(38);
                                else
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(39);
                                User.CurrentItemEffect = ItemEffectType.Iceskates;
                                break;
                            }

                        case ItemEffectType.Normalskates:
                            {
                                if (User.GetClient().GetHabbo().Gender == "M")
                                {
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(55);
                                }
                                else
                                {
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(56);
                                }
                                //56=girls
                                //55=
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.Swim:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(29);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.SwimLow:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(30);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.SwimHalloween:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(37);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.None:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(-1);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.PublicPool:
                            {
                                User.AddStatus("swim", string.Empty);
                                User.CurrentItemEffect = Type;
                                break;
                            }

                    }
                }
            }
            else if (User.CurrentItemEffect != ItemEffectType.None && NewCurrentUserItemEffect == 0)
            {
                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(-1);
                User.CurrentItemEffect = ItemEffectType.None;
                User.RemoveStatus("swim");
            }
        }
示例#13
0
        public void method_46(GameClient Session, bool bool_13)
        {

            RoomUser @class = new RoomUser(Session.GetHabbo().Id, this.Id, this.int_7++, Session.GetHabbo().IsVisible);
            if (@class != null && @class.GetClient() != null && @class.GetClient().GetHabbo() != null)
            {
                if (bool_13 || [email protected]_12)
                {
                    @class.bool_11 = true;
                }
                else
                {
                    @class.method_7(this.RoomModel.DoorX, this.RoomModel.DoorY, this.RoomModel.double_0);
                    @class.method_9(this.RoomModel.int_2);
                    if (this.CheckRights(Session, true))
                    {
                        @class.AddStatus("flatctrl", "useradmin");
                    }
                    else
                    {
                        if (this.method_26(Session))
                        {
                            @class.AddStatus("flatctrl", "");
                        }
                    }
                    if ([email protected] && @class.GetClient().GetHabbo().bool_7)
                    {
                        RoomItem class2 = this.method_28(@class.GetClient().GetHabbo().uint_5);
                        if (class2 != null)
                        {
                            @class.method_7(class2.GetX, class2.Int32_1, class2.Double_0);
                            @class.method_9(class2.int_3);
                            class2.uint_4 = Session.GetHabbo().Id;
                            class2.ExtraData = "2";
                            class2.UpdateState(false, true);
                        }
                    }
                    @class.GetClient().GetHabbo().bool_7 = false;
                    @class.GetClient().GetHabbo().uint_5 = 0u;
                    ServerMessage Message = new ServerMessage(Outgoing.SetRoomUser); // P
                    Message.AppendInt32(1);
                    @class.method_14(Message);
                    this.SendMessage(Message, null);
                }
                int num = this.method_5();
                @class.int_20 = num;
                this.RoomUsers[num] = @class;
                if (!bool_13)
                {
                    this.bool_10 = true;
                }

                Session.GetHabbo().CurrentRoomId = this.Id;
                Session.GetHabbo().GetMessenger().method_5(true);
                Session.GetHabbo().RoomVisits++;
                Session.GetHabbo().CheckRoomEntryAchievements();
                Session.GetHabbo().SendToRoom(this.Id);

                //  Session.SendMessage(Session.GetHabbo().CurrentRoom.RoomModel.RelativeHeightmap(Session.GetHabbo().CurrentRoom));

                if (Session.GetHabbo().FavouriteGroup > 0)
                {
                    GroupsManager class3 = Groups.GetGroupById(Session.GetHabbo().FavouriteGroup);
                    if (class3 != null && !this.list_17.Contains(class3))
                    {
                        this.list_17.Add(class3);
                        ServerMessage Message2 = new ServerMessage(Outgoing.Guilds); // Updated
                        Message2.AppendInt32(this.list_17.Count);
                        foreach (GroupsManager current in this.list_17)
                        {
                            Message2.AppendInt32(current.Id);
                            Message2.AppendStringWithBreak(current.Badge);
                        }
                        this.SendMessage(Message2, null);
                    }
                }
                if (!bool_13)
                {
                    this.method_51();
                    for (int i = 0; i < this.RoomUsers.Length; i++)
                    {
                        RoomUser class4 = this.RoomUsers[i];
                        if (class4 != null && class4.IsBot)
                        {
                            class4.BotAI.OnUserEnterRoom(@class);
                        }
                    }
                }

                ServerMessage RoomCompetition = new ServerMessage(Outgoing.RoomCompetition);
                RoomCompetition.AppendBoolean(true);
                RoomCompetition.AppendInt32(85);
                Session.SendMessage(RoomCompetition);

                bool RoomHasPoll = false;
                bool UserFilledPoll = false;
                using (DatabaseClient dbClient = Essential.GetDatabase().GetClient())
                {
                    if (dbClient.ReadDataRow("SELECT null FROM room_polls WHERE room_id = '" + Session.GetHabbo().CurrentRoomId + "' LIMIT 1") != null)
                    {
                        RoomHasPoll = true;
                    }
                }

                if (RoomHasPoll == true)
                {

                    int PollId;
                    string PollDetails;

                    using (DatabaseClient dbClient = Essential.GetDatabase().GetClient())
                    {
                        PollId = dbClient.ReadInt32("SELECT id FROM room_polls WHERE room_id = '" + Session.GetHabbo().CurrentRoomId + "' LIMIT 1");
                        PollDetails = dbClient.ReadString("SELECT details FROM room_polls WHERE id = '" + PollId + "' LIMIT 1");


                        if (dbClient.ReadDataRow("SELECT null FROM room_poll_results WHERE user_id = '" + Session.GetHabbo().Id + "' AND poll_id = '" + PollId + "' LIMIT 1") != null)
                        {
                            UserFilledPoll = true;
                        }

                    }

                    if (UserFilledPoll == false)
                    {
                        Thread ShowPoll = new Thread(delegate() { Room.ShowPoll(Session, PollId, PollDetails); });
                        ShowPoll.Start();

                    }

                }
            }
        }
示例#14
0
        /// <summary>
        ///     Called when [timer tick].
        /// </summary>
        internal override void OnTimerTick()
        {
            RoomUser roomUser = GetRoomUser();

            if (roomUser == null)
            {
                return;
            }

            Random random = new Random();

            if (_actionTimer > 0)
            {
                _actionTimer--;
            }

            if (_speechTimer > 0)
            {
                _speechTimer--;
            }

            if (_energyTimer > 0)
            {
                _energyTimer--;
            }

            if (roomUser.X == roomUser.GoalX && roomUser.Y == roomUser.GoalY && roomUser.Statusses.ContainsKey("mv") && !roomUser.IsWalking)
            {
                roomUser.ClearMovement();
            }

            if (_speechTimer == 0)
            {
                _speechTimer = (uint)new Random().Next(20, 100);

                if (roomUser.PetData.DbState != DatabaseUpdateState.NeedsInsert)
                {
                    roomUser.PetData.DbState = DatabaseUpdateState.NeedsUpdate;
                }

                string[] value = PetLocale.GetValue($"speech.pet{roomUser.PetData.Type.Replace("pet", string.Empty)}");

                string text = value[random.Next(0, value.Length - 1)];

                if (GetRoom() != null && !GetRoom().MutedPets)
                {
                    roomUser.Chat(null, text, false, 0);
                }
                else
                {
                    roomUser.Statusses.Add(text, ServerUserChatTextHandler.GetString(roomUser.Z));
                }
            }

            if (_actionTimer == 0)
            {
                _actionTimer = (uint)random.Next(10, 40);

                if (roomUser.FollowingOwner != null)
                {
                    _actionTimer = 2;
                }

                if (!roomUser.RidingHorse)
                {
                    if (roomUser.PetData.Type == "pet_monster")
                    {
                        return;
                    }

                    if (roomUser.FollowingOwner != null)
                    {
                        roomUser.MoveTo(roomUser.FollowingOwner.SquareInFront);
                        roomUser.FollowingOwner = null;
                    }

                    if (roomUser.FollowingOwner == null)
                    {
                        Point randomPoint = GetRoom().GetGameMap().GetRandomWalkableSquare();

                        if (randomPoint.X == 0 || randomPoint.Y == 0)
                        {
                            return;
                        }

                        roomUser.MoveTo(randomPoint.X, randomPoint.Y);
                    }
                }

                if (random.Next(2, 5) % 2 == 0)
                {
                    RemovePetStatus();

                    switch (roomUser.PetData.Type)
                    {
                    case "pet_monster":
                    {
                        MoplaBreed breed = GetRoomUser().PetData.MoplaBreed;

                        roomUser.PetData.Energy--;

                        roomUser.AddStatus("gst", breed.LiveState == MoplaState.Dead ? "sad" : "sml");

                        roomUser.PetData.MoplaBreed.OnTimerTick(roomUser.PetData.LastHealth,
                                                                roomUser.PetData.UntilGrown);
                    }
                    break;

                    default:
                    {
                        if (roomUser.PetData.Energy < 30 || random.Next(2, 5) % 2 == 0)
                        {
                            roomUser.AddStatus("lay", string.Empty);
                        }
                        else if ((roomUser.PetData.Energy < 30 && roomUser.PetData.Nutrition < 30) ||
                                 roomUser.PetData.Nutrition < 30 || random.Next(2, 5) % 2 == 0)
                        {
                            roomUser.AddStatus("snf", string.Empty);
                        }
                        else if (GetRoomUser().PetData.Energy >= 30)
                        {
                            roomUser.AddStatus("gst", "joy");
                        }
                        else
                        {
                            roomUser.AddStatus("gst", "sml");
                        }
                    }
                    break;
                    }
                }
            }

            if (_energyTimer == 0)
            {
                _energyTimer = (uint)random.Next(30, 120);

                roomUser.PetData.PetEnergy(true);
            }
        }
示例#15
0
        internal void UserGoToTile(RoomUser roomUsers, bool invalidStep)
        {
            // If The Tile that the user want to Walk is Invalid!
            if (invalidStep || (roomUsers.PathStep >= roomUsers.Path.Count) ||
                ((roomUsers.GoalX == roomUsers.X) && (roomUsers.GoalY == roomUsers.Y)))
            {
                // Erase all Movement Data..
                roomUsers.IsWalking = false;
                roomUsers.ClearMovement();
                roomUsers.HandelingBallStatus = 0;
                RoomUserBreedInteraction(roomUsers);

                // Check if he is in a Horse, and if if Erase Horse and User Movement Data
                if (roomUsers.RidingHorse && !roomUsers.IsPet)
                {
                    RoomUser horseStopWalkRidingPet = GetRoomUserByVirtualId(Convert.ToInt32(roomUsers.HorseId));

                    if (horseStopWalkRidingPet != null)
                    {
                        ServerMessage horseStopWalkRidingPetMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                        horseStopWalkRidingPetMessage.AppendInteger(1);
                        horseStopWalkRidingPet.SerializeStatus(horseStopWalkRidingPetMessage, "");
                        _userRoom.SendMessage(horseStopWalkRidingPetMessage);

                        horseStopWalkRidingPet.IsWalking = false;
                        horseStopWalkRidingPet.ClearMovement();
                    }
                }

                // Finally Update User Status
                UpdateUserStatus(roomUsers, false);
                return;
            }

            // Ins't a Invalid Step.. Continuing.
            // Region Set Variables
            int pathDataCount = roomUsers.Path.Count - roomUsers.PathStep - 1;
            Vector2D nextStep = roomUsers.Path[pathDataCount];

            // Increase Step Data...
            roomUsers.PathStep++;

            // Check Against if is a Valid Step...
            if (_userRoom.GetGameMap()
                .IsValidStep3(roomUsers, new Vector2D(roomUsers.X, roomUsers.Y), new Vector2D(nextStep.X, nextStep.Y),
                    (roomUsers.GoalX == nextStep.X) && (roomUsers.GoalY == nextStep.Y), roomUsers.AllowOverride,
                    roomUsers.GetClient()))
            {
                // If is a PET Must Give the Time Tick In Syncrony with User..
                if (roomUsers.RidingHorse && !roomUsers.IsPet)
                {
                    RoomUser horsePetAi = GetRoomUserByVirtualId(Convert.ToInt32(roomUsers.HorseId));

                    if (horsePetAi != null)
                        horsePetAi.BotAi.OnTimerTick();
                }

                // Horse Ridding need be Updated First
                if (roomUsers.RidingHorse)
                {
                    // Set User Position Data
                    UserSetPositionData(roomUsers, nextStep);
                    CheckUserSittableLayable(roomUsers);

                    // Add Status of Walking
                    roomUsers.AddStatus("mv",
                        +roomUsers.SetX + "," + roomUsers.SetY + "," + ServerUserChatTextHandler.GetString(roomUsers.SetZ));
                }

                // Check if User is Ridding in Horse, if if Let's Update Ride Data.
                if (roomUsers.RidingHorse && !roomUsers.IsPet)
                {
                    RoomUser horseRidingPet = GetRoomUserByVirtualId(Convert.ToInt32(roomUsers.HorseId));

                    if (horseRidingPet != null)
                    {
                        string theUser = "******" + roomUsers.SetX + "," + roomUsers.SetY + "," +
                                      ServerUserChatTextHandler.GetString(roomUsers.SetZ);
                        string thePet = "mv " + roomUsers.SetX + "," + roomUsers.SetY + "," +
                                     ServerUserChatTextHandler.GetString(horseRidingPet.SetZ);

                        ServerMessage horseRidingPetMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                        horseRidingPetMessage.AppendInteger(2);
                        roomUsers.SerializeStatus(horseRidingPetMessage, theUser);
                        horseRidingPet.SerializeStatus(horseRidingPetMessage, thePet);
                        _userRoom.SendMessage(horseRidingPetMessage);

                        horseRidingPet.RotBody = roomUsers.RotBody;
                        horseRidingPet.RotHead = roomUsers.RotBody;
                        horseRidingPet.SetX = roomUsers.SetX;
                        horseRidingPet.SetY = roomUsers.SetY;
                        horseRidingPet.SetZ = roomUsers.SetZ - 1;
                        horseRidingPet.SetStep = true;

                        UpdateUserEffect(horseRidingPet, horseRidingPet.SetX, horseRidingPet.SetY);
                        UpdateUserStatus(horseRidingPet, false);
                    }
                }

                // If is not Ridding Horse doesn't Need Update Effect
                if (!roomUsers.RidingHorse)
                {
                    // Set User Position Data
                    UserSetPositionData(roomUsers, nextStep);
                    CheckUserSittableLayable(roomUsers);

                    // Add Status of Walking
                    roomUsers.AddStatus("mv",
                        +roomUsers.SetX + "," + roomUsers.SetY + "," + ServerUserChatTextHandler.GetString(roomUsers.SetZ));
                }

                // Region Update User Effect And Status
                UpdateUserEffect(roomUsers, roomUsers.SetX, roomUsers.SetY);

                // Update Effect if is Ridding
                if (roomUsers.RidingHorse)
                    UpdateUserStatus(roomUsers, false);

                // Region Update User Map Data
                _userRoom.GetGameMap().GameMap[roomUsers.X, roomUsers.Y] = roomUsers.SqState;
                roomUsers.SqState = _userRoom.GetGameMap().GameMap[roomUsers.SetX, roomUsers.SetY];

                // If user is in soccer proccess.
                if (_userRoom.GotSoccer())
                    _userRoom.GetSoccer().OnUserWalk(roomUsers);

                return;
            }

            // Isn't a Valid Step! And he Can Go? Erase Imediatile Effect
            if (roomUsers.Statusses.ContainsKey("mv"))
                roomUsers.ClearMovement();

            // If user isn't pet and Bot, we have serious Problems. Let Recalculate Path!
            if (!roomUsers.IsPet && !roomUsers.IsBot)
                roomUsers.PathRecalcNeeded = true;
        }
示例#16
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());
            }
        }
示例#17
0
        private void HandleSetMovement(SquarePoint Point, RoomUser User, ref bool updated, bool setSquareMap)
        {
            int nextX = Point.X;
            int nextY = Point.Y;

            User.RemoveStatus("mv");

            //double nextZ = room.GetGameMap().SqAbsoluteHeight(nextX, nextY);
            double nextZ = room.GetGameMap().GetNewZForUser(nextX, nextY, User.Z);

            //if (room.GetGameMap().SquareOccupied(nextX, nextY, nextZ))
            //    return;

            if (User.UserIsRidingAHorse())
                nextZ += 1;

            User.Statusses.Remove("lay");
            User.Statusses.Remove("sit");
            if (!User.isFlying)
                User.AddStatus("mv", nextX + "," + nextY + "," + TextHandling.GetString(nextZ));
            else
                User.AddStatus("mv", nextX + "," + nextY + "," + TextHandling.GetString(nextZ + 4 + (0.5 * Math.Sin(0.7 * User.flyk))));

            int newRot = Rotation.Calculate(User.X, User.Y, nextX, nextY, User.moonwalkEnabled);

            User.RotBody = newRot;
            User.RotHead = newRot;

            User.SetStep = true;
            User.SetX = nextX;
            User.SetY = nextY;
            User.SetZ = nextZ;

            UpdateUserEffect(User, User.SetX, User.SetY);
            updated = true;
            User.UpdateNeeded = true;


            if (setSquareMap)
            {
                room.GetGameMap().GameMap[User.X, User.Y] = User.SqState; // REstore the old one
                User.SqState = room.GetGameMap().GameMap[User.SetX, User.SetY];//Backup the new one
                
                if (!room.AllowWalkthrough)
                    room.GetGameMap().GameMap[nextX, nextY] = 0;
            }
        }