public bool IncrementAndCheckFlood(out int MuteTime) { MuteTime = 0; ChatSpamCount++; if (ChatSpamTicks == -1) { ChatSpamTicks = 8; } else if (ChatSpamCount >= 6) { if (GetClient().GetHabbo().GetPermissions().HasRight("events_staff")) { MuteTime = 3; } else if (GetClient().GetHabbo().GetPermissions().HasRight("gold_vip")) { MuteTime = 7; } else if (GetClient().GetHabbo().GetPermissions().HasRight("silver_vip")) { MuteTime = 10; } else { MuteTime = 20; } GetClient().GetHabbo().FloodTime = UnixUtilities.GetNow() + MuteTime; ChatSpamCount = 0; return(true); } return(false); }
public ModeratorUserChatlogComposer(Habbo habbo, List <KeyValuePair <RoomData, List <ChatlogEntry> > > chatlogs) : base(ServerPacketHeader.ModeratorUserChatlogMessageComposer) { WriteInteger(habbo.Id); WriteString(habbo.Username); WriteInteger(chatlogs.Count); // Room Visits Count foreach (var Chatlog in chatlogs) { WriteByte(1); WriteShort(2);//Count WriteString("roomName"); WriteByte(2); WriteString(Chatlog.Key.Name); // room name WriteString("roomId"); WriteByte(1); WriteInteger(Chatlog.Key.Id); WriteShort(Chatlog.Value.Count); // Chatlogs Count foreach (var Entry in Chatlog.Value) { var Username = "******"; if (Entry.PlayerNullable() != null) { Username = Entry.PlayerNullable().Username; } WriteString(UnixUtilities.FromUnixTimestamp(Entry.Timestamp).ToShortTimeString()); WriteInteger(Entry.PlayerId); // UserId of message WriteString(Username); // Username of message WriteString(!string.IsNullOrEmpty(Entry.Message) ? Entry.Message : "** user sent a blank message **"); // Message WriteBoolean(habbo.Id == Entry.PlayerId); } } }
public ModeratorSupportTicketComposer(int Id, ModerationTicket Ticket) : base(ServerPacketHeader.ModeratorSupportTicketMessageComposer) { WriteInteger(Ticket.Id); // Id WriteInteger(Ticket.GetStatus(Id)); // Tab ID WriteInteger(Ticket.Type); // Type WriteInteger(Ticket.Category); // Category WriteInteger(Convert.ToInt32((DateTime.Now - UnixUtilities.FromUnixTimestamp(Ticket.Timestamp)).TotalMilliseconds)); // This should fix the overflow? WriteInteger(Ticket.Priority); // Priority WriteInteger(0); //?? WriteInteger(Ticket.Sender == null ? 0 : Ticket.Sender.Id); // Sender ID //base.WriteInteger(1); WriteString(Ticket.Sender == null ? string.Empty : Ticket.Sender.Username); // Sender Name WriteInteger(Ticket.Reported == null ? 0 : Ticket.Reported.Id); // Reported ID WriteString(Ticket.Reported == null ? string.Empty : Ticket.Reported.Username); // Reported Name WriteInteger(Ticket.Moderator == null ? 0 : Ticket.Moderator.Id); // Moderator ID WriteString(Ticket.Moderator == null ? string.Empty : Ticket.Moderator.Username); // Mod Name WriteString(Ticket.Issue); // Issue WriteInteger(Ticket.Room == null ? 0 : Ticket.Room.Id); // Room Id WriteInteger(0); { // push String // push Integer // push Integer } }
public bool IsBanned(int UserId) { if (!_bans.ContainsKey(UserId)) { return(false); } var BanTime = _bans[UserId] - UnixUtilities.GetNow(); if (BanTime <= 0) { double time; _bans.TryRemove(UserId, out time); using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `room_bans` WHERE `room_id` = @rid AND `user_id` = @uid;"); dbClient.AddParameter("rid", _instance.Id); dbClient.AddParameter("uid", UserId); dbClient.RunQuery(); } return(false); } return(true); }
public ProfileInformationComposer(Habbo habbo, Player session, List <Group> groups, int friendCount) : base(ServerPacketHeader.ProfileInformationMessageComposer) { var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(habbo.AccountCreated); WriteInteger(habbo.Id); WriteString(habbo.Username); WriteString(habbo.Look); WriteString(habbo.Motto); WriteString(origin.ToString("dd/MM/yyyy")); WriteInteger(habbo.GetStats().AchievementPoints); WriteInteger(friendCount); // Friend Count WriteBoolean(habbo.Id != session.GetHabbo().Id&& session.GetHabbo().GetMessenger().FriendshipExists(habbo.Id)); // Is friend WriteBoolean(habbo.Id != session.GetHabbo().Id&& !session.GetHabbo().GetMessenger().FriendshipExists(habbo.Id) && session.GetHabbo().GetMessenger().RequestExists(habbo.Id)); // Sent friend request WriteBoolean(Program.GameContext.PlayerController.GetClientByUserId(habbo.Id) != null); WriteInteger(groups.Count); foreach (var group in groups) { WriteInteger(group.Id); WriteString(group.Name); WriteString(group.Badge); WriteString(Program.GameContext.GetGroupManager().GetColourCode(group.Colour1, true)); WriteString(Program.GameContext.GetGroupManager().GetColourCode(group.Colour2, false)); WriteBoolean(habbo.GetStats().FavouriteGroupId == group.Id); // todo favs WriteInteger(0); //what the f**k WriteBoolean(group != null ? group.ForumEnabled : true); //HabboTalk } WriteInteger(Convert.ToInt32(UnixUtilities.GetNow() - habbo.LastOnline)); // Last online WriteBoolean(true); // Show the profile }
public void Ban(RoomUser Avatar, double Time) { if (Avatar == null || _instance.CheckRights(Avatar.GetClient(), true) || IsBanned(Avatar.UserId)) { return; } var BanTime = UnixUtilities.GetNow() + Time; if (!_bans.TryAdd(Avatar.UserId, BanTime)) { _bans[Avatar.UserId] = BanTime; } using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { dbClient.SetQuery("REPLACE INTO `room_bans` (`user_id`,`room_id`,`expire`) VALUES (@uid, @rid, @expire);"); dbClient.AddParameter("rid", _instance.Id); dbClient.AddParameter("uid", Avatar.UserId); dbClient.AddParameter("expire", BanTime); dbClient.RunQuery(); } _instance.GetRoomUserManager().RemoveUserFromRoom(Avatar.GetClient(), true, true); }
public ModeratorTicketChatlogComposer(ModerationTicket ticket, RoomData roomData, double timestamp) : base(ServerPacketHeader.ModeratorTicketChatlogMessageComposer) { WriteInteger(ticket.Id); WriteInteger(ticket.Sender != null ? ticket.Sender.Id : 0); WriteInteger(ticket.Reported != null ? ticket.Reported.Id : 0); WriteInteger(roomData.Id); WriteByte(1); WriteShort(2);//Count WriteString("roomName"); WriteByte(2); WriteString(roomData.Name); WriteString("roomId"); WriteByte(1); WriteInteger(roomData.Id); WriteShort(ticket.ReportedChats.Count); foreach (var Chat in ticket.ReportedChats) { WriteString(UnixUtilities.FromUnixTimestamp(timestamp).ToShortTimeString()); WriteInteger(ticket.Id); WriteString(ticket.Reported != null ? ticket.Reported.Username : "******"); WriteString(Chat); WriteBoolean(false); } }
public PetInformationComposer(Habbo Habbo) : base(ServerPacketHeader.PetInformationMessageComposer) { WriteInteger(Habbo.Id); WriteString(Habbo.Username); WriteInteger(Habbo.Rank); WriteInteger(10); WriteInteger(0); WriteInteger(0); WriteInteger(100); WriteInteger(100); WriteInteger(100); WriteInteger(100); WriteInteger(Habbo.GetStats().Respect); WriteInteger(Habbo.Id); WriteInteger(Convert.ToInt32(Math.Floor((UnixUtilities.GetNow() - Habbo.AccountCreated) / 86400))); //How? WriteString(Habbo.Username); WriteInteger(1); //3 on hab WriteBoolean(false); WriteBoolean(false); WriteInteger(0); //5 on hab WriteInteger(0); // Anyone can ride horse WriteInteger(0); WriteInteger(0); //512 on hab WriteInteger(0); //1536 WriteInteger(0); //2560 WriteInteger(0); //3584 WriteInteger(0); WriteString(""); WriteBoolean(false); WriteInteger(-1);//255 on hab WriteInteger(-1); WriteInteger(-1); WriteBoolean(false); }
public void BanzaiStart() { if (IsBanzaiActive) { return; } floorMap = new byte[_room.GetGameMap().Model.MapSizeY, _room.GetGameMap().Model.MapSizeX]; field = new GameField(floorMap, true); timestarted = UnixUtilities.GetNow(); _room.GetGameManager().LockGates(); for (var i = 1; i < 5; i++) { _room.GetGameManager().Points[i] = 0; } foreach (var tile in _banzaiTiles.Values) { tile.ExtraData = "1"; tile.value = 0; tile.team = Team.None; tile.UpdateState(); } ResetTiles(); IsBanzaiActive = true; _room.GetWired().TriggerEvent(WiredBoxType.TriggerGameStarts, null); foreach (var user in _room.GetRoomUserManager().GetRoomUsers()) { user.LockedTilesCount = 0; } }
public ModeratorRoomChatlogComposer(Room room, ICollection <ChatlogEntry> chats) : base(ServerPacketHeader.ModeratorRoomChatlogMessageComposer) { WriteByte(1); WriteShort(2);//Count WriteString("roomName"); WriteByte(2); WriteString(room.Name); WriteString("roomId"); WriteByte(1); WriteInteger(room.Id); WriteShort(chats.Count); foreach (var Entry in chats) { var Username = "******"; if (Entry.PlayerNullable() != null) { Username = Entry.PlayerNullable().Username; } WriteString(UnixUtilities.FromUnixTimestamp(Entry.Timestamp).ToShortTimeString()); // time? WriteInteger(Entry.PlayerId); // User Id WriteString(Username); // Username WriteString(!string.IsNullOrEmpty(Entry.Message) ? Entry.Message : "** user sent a blank message **"); // Message WriteBoolean(false); //TODO, AI's? } }
public RoomPromotion(string name, string description, int categoryId) { Name = name; Description = description; TimestampStarted = UnixUtilities.GetNow(); TimestampExpires = UnixUtilities.GetNow() + Convert.ToInt32(Program.SettingsManager.TryGetValue("room.promotion.lifespan")) * 60; CategoryId = categoryId; }
public void ChangeName(string Username) { LastNameChange = UnixUtilities.GetNow(); this.Username = Username; SaveKey("username", Username); SaveKey("last_change", LastNameChange.ToString()); }
public CallForHelpPendingCallsComposer(ModerationTicket ticket) : base(ServerPacketHeader.CallForHelpPendingCallsMessageComposer) { WriteInteger(1);// Count for whatever reason? { WriteString(ticket.Id.ToString()); WriteString(UnixUtilities.FromUnixTimestamp(ticket.Timestamp).ToShortTimeString());// "11-02-2017 04:07:05"; WriteString(ticket.Issue); } }
public void Parse(Player session, ClientPacket packet) { if (!session.GetHabbo().InRoom) { return; } var userId = packet.PopInt(); packet.PopInt(); //roomId var time = packet.PopInt(); var room = session.GetHabbo().CurrentRoom; if (room == null) { return; } if (room.WhoCanMute == 0 && !room.CheckRights(session, true) && room.Group == null || room.WhoCanMute == 1 && !room.CheckRights(session) && room.Group == null || room.Group != null && !room.CheckRights(session, false, true)) { return; } var target = room.GetRoomUserManager().GetRoomUserByHabbo(HabboFactory.GetUsernameById(userId)); if (target == null) { return; } if (target.GetClient().GetHabbo().GetPermissions().HasRight("mod_tool")) { return; } if (room.MutedUsers.ContainsKey(userId)) { if (room.MutedUsers[userId] < UnixUtilities.GetNow()) { room.MutedUsers.Remove(userId); } else { return; } } room.MutedUsers.Add(userId, UnixUtilities.GetNow() + time * 60); target.GetClient().SendWhisper("The room owner has muted you for " + time + " minutes!"); Program.GameContext.GetAchievementManager().ProgressAchievement(session, "ACH_SelfModMuteSeen", 1); }
public void LogCommand(int UserId, string Data, string MachineId) { using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `logs_client_staff` (`user_id`,`data_string`,`machine_id`, `timestamp`) VALUES (@UserId,@Data,@MachineId,@Timestamp)"); dbClient.AddParameter("UserId", UserId); dbClient.AddParameter("Data", Data); dbClient.AddParameter("MachineId", MachineId); dbClient.AddParameter("Timestamp", UnixUtilities.GetNow()); dbClient.RunQuery(); } }
public void Parse(Player session, ClientPacket packet) { if (session == null || session.GetHabbo() == null || !session.GetHabbo().GetPermissions().HasRight("mod_trade_lock")) { return; } var userId = packet.PopInt(); var message = packet.PopString(); var days = packet.PopInt() / 1440.0; packet.PopString(); //unk1 packet.PopString(); //unk2 var length = UnixUtilities.GetNow() + days * 86400; var habbo = HabboFactory.GetHabboById(userId); if (habbo == null) { session.SendWhisper("An error occoured whilst finding that user in the database."); return; } if (habbo.GetPermissions().HasRight("mod_trade_lock") && !session.GetHabbo().GetPermissions().HasRight("mod_trade_lock_any")) { session.SendWhisper("Oops, you cannot trade lock another user ranked 5 or higher."); return; } if (days < 1) { days = 1; } if (days > 365) { days = 365; } using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '" + length + "', `trading_locks_count` = `trading_locks_count` + '1' WHERE `user_id` = '" + habbo.Id + "' LIMIT 1"); } if (habbo.GetClient() != null) { habbo.TradingLockExpiry = length; habbo.GetClient().SendNotification("You have been trade banned for " + days + " day(s)!\r\rReason:\r\r" + message); } }
public ModeratorUserRoomVisitsComposer(Habbo Data, Dictionary <double, RoomData> Visits) : base(ServerPacketHeader.ModeratorUserRoomVisitsMessageComposer) { WriteInteger(Data.Id); WriteString(Data.Username); WriteInteger(Visits.Count); foreach (var Visit in Visits) { WriteInteger(Visit.Value.Id); WriteString(Visit.Value.Name); WriteInteger(UnixUtilities.FromUnixTimestamp(Visit.Key).Hour); WriteInteger(UnixUtilities.FromUnixTimestamp(Visit.Key).Minute); } }
public bool Activate() { var TsNow = UnixUtilities.GetNow(); using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { dbClient.SetQuery("UPDATE `user_effects` SET `is_activated` = '1', `activated_stamp` = @ts WHERE `id` = @id"); dbClient.AddParameter("ts", TsNow); dbClient.AddParameter("id", Id); dbClient.RunQuery(); Activated = true; TimestampActivated = TsNow; return(true); } }
public bool Execute(params object[] Params) { if (Params.Length != 1) { return(false); } var Player = (Habbo)Params[0]; if (Player == null) { return(false); } var User = Instance.GetRoomUserManager().GetRoomUserByHabbo(Player.Id); if (User == null) { return(false); } if (Player.GetPermissions().HasRight("mod_tool") || Instance.OwnerId == Player.Id) { Player.GetClient().SendPacket(new WhisperComposer(User.VirtualId, "Wired Mute Exception: Unmutable Player", 0, 0)); return(false); } var Time = StringData != null?int.Parse(StringData.Split(';')[0]) : 0; var Message = StringData != null?StringData.Split(';')[1] : "No message!"; if (Time > 0) { Player.GetClient().SendPacket(new WhisperComposer(User.VirtualId, "Wired Mute: Muted for " + Time + "! Message: " + Message, 0, 0)); if (!Instance.MutedUsers.ContainsKey(Player.Id)) { Instance.MutedUsers.Add(Player.Id, UnixUtilities.GetNow() + Time * 60); } else { Instance.MutedUsers.Remove(Player.Id); Instance.MutedUsers.Add(Player.Id, UnixUtilities.GetNow() + Time * 60); } } return(true); }
public void ReCacheBans() { if (_bans.Count > 0) { _bans.Clear(); } using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { DataTable GetBans = null; dbClient.SetQuery("SELECT `bantype`,`value`,`reason`,`expire` FROM `bans` WHERE `bantype` = 'machine' OR `bantype` = 'user'"); GetBans = dbClient.GetTable(); if (GetBans != null) { foreach (DataRow dRow in GetBans.Rows) { var value = Convert.ToString(dRow["value"]); var reason = Convert.ToString(dRow["reason"]); var expires = (double)dRow["expire"]; var type = Convert.ToString(dRow["bantype"]); var Ban = new ModerationBan(BanTypeUtility.GetModerationBanType(type), value, reason, expires); if (Ban != null) { if (expires > UnixUtilities.GetNow()) { if (!_bans.ContainsKey(value)) { _bans.Add(value, Ban); } } else { dbClient.SetQuery("DELETE FROM `bans` WHERE `bantype` = '" + BanTypeUtility.FromModerationBanType(Ban.Type) + "' AND `value` = @Key LIMIT 1"); dbClient.AddParameter("Key", value); dbClient.RunQuery(); } } } } } Logger.Trace("Cached " + _bans.Count + " username and machine bans."); }
public bool CheckMute(Player session) { if (MutedUsers.ContainsKey(session.GetHabbo().Id)) { if (MutedUsers[session.GetHabbo().Id] < UnixUtilities.GetNow()) { MutedUsers.Remove(session.GetHabbo().Id); } else { return(true); } } if (session.GetHabbo().TimeMuted > 0 || RoomMuted && session.GetHabbo().Username != OwnerName) { return(true); } return(false); }
public void OnTrigger(Player Session, Item Item, int Request, bool HasRights) { if (Item == null || Item.GetRoom() == null || Session == null || Session.GetHabbo() == null) { return; } var User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } User.LastInteraction = UnixUtilities.GetNow(); // Alright. But is this user in the right position? if (User.Coordinate == Item.Coordinate || User.Coordinate == Item.SquareInFront) { // Fine. But is this tele even free? if (Item.InteractingUser != 0) { return; } if (!User.CanWalk || Session.GetHabbo().IsTeleporting || Session.GetHabbo().TeleporterId != 0 || User.LastInteraction + 2 - UnixUtilities.GetNow() < 0) { return; } User.TeleDelay = 2; Item.InteractingUser = User.GetClient().GetHabbo().Id; } else if (User.CanWalk) { User.MoveTo(Item.SquareInFront); } }
public void Parse(Player session, ClientPacket packet) { var signId = packet.PopInt(); if (!Program.GameContext.GetRoomManager().TryGetRoom(session.GetHabbo().CurrentRoomId, out var room)) { return; } var user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id); if (user == null) { return; } user.UnIdle(); user.SetStatus("sign", Convert.ToString(signId)); user.UpdateNeeded = true; user.SignTime = UnixUtilities.GetNow() + 5; }
public bool TryCreateGroup(Habbo player, string name, string description, int roomId, string badge, int colour1, int colour2, out Group group) { group = new Group(0, name, description, badge, roomId, player.Id, (int)UnixUtilities.GetNow(), 0, colour1, colour2, 0, false); if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(badge)) { return(false); } using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `groups` (`name`, `desc`, `badge`, `owner_id`, `created`, `room_id`, `state`, `colour1`, `colour2`, `admindeco`) VALUES (@name, @desc, @badge, @owner, UNIX_TIMESTAMP(), @room, '0', @colour1, @colour2, '0')"); dbClient.AddParameter("name", group.Name); dbClient.AddParameter("desc", group.Description); dbClient.AddParameter("owner", group.CreatorId); dbClient.AddParameter("badge", group.Badge); dbClient.AddParameter("room", group.RoomId); dbClient.AddParameter("colour1", group.Colour1); dbClient.AddParameter("colour2", group.Colour2); group.Id = Convert.ToInt32(dbClient.InsertQuery()); group.AddMember(player.Id); group.MakeAdmin(player.Id); if (!_groups.TryAdd(group.Id, group)) { return(false); } dbClient.SetQuery("UPDATE `rooms` SET `group_id` = @gid WHERE `id` = @rid LIMIT 1"); dbClient.AddParameter("gid", group.Id); dbClient.AddParameter("rid", group.RoomId); dbClient.RunQuery(); dbClient.RunQuery("DELETE FROM `room_rights` WHERE `room_id` = '" + roomId + "'"); } return(true); }
public ModeratorUserInfoComposer(DataRow User, DataRow Info) : base(ServerPacketHeader.ModeratorUserInfoMessageComposer) { var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Convert.ToDouble(Info["trading_locked"])); WriteInteger(User != null ? Convert.ToInt32(User["id"]) : 0); WriteString(User != null ? Convert.ToString(User["username"]) : "Unknown"); WriteString(User != null ? Convert.ToString(User["look"]) : "Unknown"); WriteInteger(User != null ? Convert.ToInt32(Math.Ceiling((UnixUtilities.GetNow() - Convert.ToDouble(User["account_created"])) / 60)) : 0); WriteInteger(User != null ? Convert.ToInt32(Math.Ceiling((UnixUtilities.GetNow() - Convert.ToDouble(User["last_online"])) / 60)) : 0); WriteBoolean(User != null ? Program.GameContext.PlayerController.GetClientByUserId(Convert.ToInt32(User["id"])) != null : false); WriteInteger(Info != null ? Convert.ToInt32(Info["cfhs"]) : 0); WriteInteger(Info != null ? Convert.ToInt32(Info["cfhs_abusive"]) : 0); WriteInteger(Info != null ? Convert.ToInt32(Info["cautions"]) : 0); WriteInteger(Info != null ? Convert.ToInt32(Info["bans"]) : 0); WriteInteger(Info != null ? Convert.ToInt32(Info["trading_locks_count"]) : 0); //Trading lock counts WriteString(Convert.ToDouble(Info["trading_locked"]) != 0 ? origin.ToString("dd/MM/yyyy HH:mm:ss") : "0"); //Trading lock WriteString(""); //Purchases WriteInteger(0); //Itendity information tool WriteInteger(0); //Id bans. WriteString(User != null ? Convert.ToString(User["mail"]) : "Unknown"); WriteString(""); //user_classification }
public void Execute(Player Session, Room Room, string[] Params) { if (Params.Length == 1) { Session.SendWhisper("Please enter the username of the user you'd like to IP ban & account ban."); return; } var Habbo = HabboFactory.GetHabboByUsername(Params[1]); if (Habbo == null) { Session.SendWhisper("An error occoured whilst finding that user in the database."); return; } if (Habbo.GetPermissions().HasRight("mod_tool") && !Session.GetHabbo().GetPermissions().HasRight("mod_ban_any")) { Session.SendWhisper("Oops, you cannot ban that user."); return; } var IPAddress = string.Empty; var Expire = UnixUtilities.GetNow() + 78892200; var Username = Habbo.Username; using (var dbClient = Program.DatabaseManager.GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_info` SET `bans` = `bans` + '1' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1"); dbClient.SetQuery("SELECT `ip_last` FROM `users` WHERE `id` = '" + Habbo.Id + "' LIMIT 1"); IPAddress = dbClient.GetString(); } string Reason = null; if (Params.Length >= 3) { Reason = CommandManager.MergeParams(Params, 2); } else { Reason = "No reason specified."; } if (!string.IsNullOrEmpty(IPAddress)) { Program.GameContext.GetModerationManager().BanUser(Session.GetHabbo().Username, ModerationBanType.IP, IPAddress, Reason, Expire); } Program.GameContext.GetModerationManager().BanUser(Session.GetHabbo().Username, ModerationBanType.Username, Habbo.Username, Reason, Expire); var TargetClient = Program.GameContext.PlayerController.GetClientByUsername(Username); if (TargetClient != null) { TargetClient.Disconnect(); } Session.SendWhisper("Success, you have IP and account banned the user '" + Username + "' for '" + Reason + "'!"); }
public void Parse(Player session, ClientPacket packet) { //0 = sent, 1 = blocked, 2 = no chat, 3 = already reported. if (session == null) { return; } var userId = packet.PopInt(); if (userId == session.GetHabbo().Id)//Hax { return; } if (session.GetHabbo().AdvertisingReportedBlocked) { session.SendPacket(new SubmitBullyReportComposer(1));//This user is blocked from reporting. return; } var client = Program.GameContext.PlayerController.GetClientByUserId(Convert.ToInt32(userId)); if (client == null) { session.SendPacket(new SubmitBullyReportComposer(0));//Just say it's sent, the user isn't found. return; } if (session.GetHabbo().LastAdvertiseReport > UnixUtilities.GetNow()) { session.SendNotification("Reports can only be sent per 5 minutes!"); return; } if (client.GetHabbo().GetPermissions().HasRight("mod_tool"))//Reporting staff, nope! { session.SendNotification("Sorry, you cannot report staff members via this tool."); return; } //This user hasn't even said a word, nope! if (!client.GetHabbo().HasSpoken) { session.SendPacket(new SubmitBullyReportComposer(2)); return; } //Already reported, nope. if (client.GetHabbo().AdvertisingReported&& session.GetHabbo().Rank < 2) { session.SendPacket(new SubmitBullyReportComposer(3)); return; } if (session.GetHabbo().Rank <= 1) { session.GetHabbo().LastAdvertiseReport = UnixUtilities.GetNow() + 300; } else { session.GetHabbo().LastAdvertiseReport = UnixUtilities.GetNow(); } client.GetHabbo().AdvertisingReported = true; session.SendPacket(new SubmitBullyReportComposer(0)); //Program.Game.GameClientManager.ModAlert("New advertising report! " + Client.GetHabbo().Username + " has been reported for advertising by " + Session.GetHabbo().Username +"."); Program.GameContext.PlayerController.DoAdvertisingReport(session, client); }
public void BanzaiEnd(bool triggeredByUser = false) { IsBanzaiActive = false; _room.GetGameManager().StopGame(); floorMap = null; if (!triggeredByUser) { _room.GetWired().TriggerEvent(WiredBoxType.TriggerGameEnds, null); } var winners = _room.GetGameManager().GetWinningTeam(); _room.GetGameManager().UnlockGates(); foreach (var tile in _banzaiTiles.Values) { if (tile.team == winners) { tile.interactionCount = 0; tile.interactionCountHelper = 0; tile.UpdateNeeded = true; } else if (tile.team == Team.None) { tile.ExtraData = "0"; tile.UpdateState(); } } if (winners != Team.None) { var Winners = _room.GetRoomUserManager().GetRoomUsers(); foreach (var User in Winners.ToList()) { if (User.Team != Team.None) { if (UnixUtilities.GetNow() - timestarted > 5) { Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallTilesLocked", User.LockedTilesCount); Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallPlayer", 1); } } if (winners == Team.Blue) { if (User.CurrentEffect == 35) { if (UnixUtilities.GetNow() - timestarted > 5) { Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1); } _room.SendPacket(new ActionComposer(User.VirtualId, 1)); } } else if (winners == Team.Red) { if (User.CurrentEffect == 33) { if (UnixUtilities.GetNow() - timestarted > 5) { Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1); } _room.SendPacket(new ActionComposer(User.VirtualId, 1)); } } else if (winners == Team.Green) { if (User.CurrentEffect == 34) { if (UnixUtilities.GetNow() - timestarted > 5) { Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1); } _room.SendPacket(new ActionComposer(User.VirtualId, 1)); } } else if (winners == Team.Yellow) { if (User.CurrentEffect == 36) { if (UnixUtilities.GetNow() - timestarted > 5) { Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1); } _room.SendPacket(new ActionComposer(User.VirtualId, 1)); } } } if (field != null) { field.Dispose(); } } }
public void Parse(Player session, ClientPacket packet) { if (session == null || session.GetHabbo() == null) { return; } var room = session.GetHabbo().CurrentRoom; if (room == null) { return; } if (session.GetHabbo().InRoom) { if (!Program.GameContext.GetRoomManager().TryGetRoom(session.GetHabbo().CurrentRoomId, out var oldRoom)) { return; } if (oldRoom.GetRoomUserManager() != null) { oldRoom.GetRoomUserManager().RemoveUserFromRoom(session, false); } } if (!room.GetRoomUserManager().AddAvatarToRoom(session)) { room.GetRoomUserManager().RemoveUserFromRoom(session, false); return;//TODO: Remove? } room.SendObjects(session); if (session.GetHabbo().GetMessenger() != null) { session.GetHabbo().GetMessenger().OnStatusChanged(true); } if (session.GetHabbo().GetStats().QuestId > 0) { Program.GameContext.GetQuestManager().QuestReminder(session, session.GetHabbo().GetStats().QuestId); } session.SendPacket(new RoomEntryInfoComposer(room.RoomId, room.CheckRights(session, true))); session.SendPacket(new RoomVisualizationSettingsComposer(room.WallThickness, room.FloorThickness, room.Hidewall.ToString() == "1")); var user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Username); if (user != null && session.GetHabbo().PetId == 0) { room.SendPacket(new UserChangeComposer(user, false)); } session.SendPacket(new RoomEventComposer(room, room.Promotion)); if (room.GetWired() != null) { room.GetWired().TriggerEvent(WiredBoxType.TriggerRoomEnter, session.GetHabbo()); } if (UnixUtilities.GetNow() < session.GetHabbo().FloodTime&& session.GetHabbo().FloodTime != 0) { session.SendPacket(new FloodControlComposer((int)session.GetHabbo().FloodTime - (int)UnixUtilities.GetNow())); } }
public void Parse(Player session, ClientPacket packet) { if (session == null || session.GetHabbo() == null || !session.GetHabbo().InRoom) { return; } var room = session.GetHabbo().CurrentRoom; if (room == null) { return; } var user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id); if (user == null) { return; } var message = StringUtilities.Escape(packet.PopString()); if (message.Length > 100) { message = message.Substring(0, 100); } var colour = packet.PopInt(); if (!Program.GameContext.GetChatManager().GetChatStyles().TryGetStyle(colour, out var style) || style.RequiredRight.Length > 0 && !session.GetHabbo().GetPermissions().HasRight(style.RequiredRight)) { colour = 0; } user.UnIdle(); if (UnixUtilities.GetNow() < session.GetHabbo().FloodTime&& session.GetHabbo().FloodTime != 0) { return; } if (session.GetHabbo().TimeMuted > 0) { session.SendPacket(new MutedComposer(session.GetHabbo().TimeMuted)); return; } if (!session.GetHabbo().GetPermissions().HasRight("room_ignore_mute") && room.CheckMute(session)) { session.SendWhisper("Oops, you're currently muted."); return; } user.LastBubble = session.GetHabbo().CustomBubbleId == 0 ? colour : session.GetHabbo().CustomBubbleId; if (!session.GetHabbo().GetPermissions().HasRight("mod_tool")) { if (user.IncrementAndCheckFlood(out var muteTime)) { session.SendPacket(new FloodControlComposer(muteTime)); return; } } Program.GameContext.GetChatManager().GetLogs().StoreChatlog(new ChatlogEntry(session.GetHabbo().Id, room.Id, message, UnixUtilities.GetNow(), session.GetHabbo(), room)); if (message.StartsWith(":", StringComparison.CurrentCulture) && Program.GameContext.GetChatManager().GetCommands().Parse(session, message)) { return; } if (Program.GameContext.GetChatManager().GetFilter().CheckBannedWords(message)) { session.GetHabbo().BannedPhraseCount++; if (session.GetHabbo().BannedPhraseCount >= Convert.ToInt32(Program.SettingsManager.TryGetValue("room.chat.filter.banned_phrases.chances"))) { Program.GameContext.GetModerationManager().BanUser("System", ModerationBanType.Username, session.GetHabbo().Username, "Spamming banned phrases (" + message + ")", UnixUtilities.GetNow() + 78892200); session.Disconnect(); return; } session.SendPacket(new ChatComposer(user.VirtualId, message, 0, colour)); return; } if (!session.GetHabbo().GetPermissions().HasRight("word_filter_override")) { message = Program.GameContext.GetChatManager().GetFilter().CheckMessage(message); } Program.GameContext.GetQuestManager().ProgressUserQuest(session, QuestType.SocialChat); user.OnChat(user.LastBubble, message, false); }