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)); } } }
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); } } }
internal void OnUserWalk(RoomUser user) { if (BaseItem.IsSeat) { user.AddStatus("sit", TextHandling.GetString(BaseItem.Z)); user.Z = Z; user.Rot = Rot; user.NeedsUpdate = true; } }
public static void ActivateStatus(RoomUser User) { if (User == null) { return; } if (UserIsOnSwimTile(User) && !User.Statusses.ContainsKey("swim")) { User.AddStatus("swim", ""); } }
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); } } }
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; }
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); } }
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"); } }
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(); } } } }
/// <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); } }
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; }
/// <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()); } }
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; } }