public void SendNotif(string message, int type = 0) { ServerMessage message_ = null; switch (type) { case 0: message_ = BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NotifFromMod).Handle(new ValueHolder().AddValue("Message", message)); break; case 1: message_ = BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NotifFromAdmin).Handle(new ValueHolder().AddValue("Message", message)); break; case 2: message_ = BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.MOTD).Handle(new ValueHolder().AddValue("Message", new List <string>() { message })); break; default: message_ = BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NotifFromMod).Handle(new ValueHolder().AddValue("Message", message)); break; } this.SendMessage(message_); }
public byte[] GetBytes(Revision revision) { byte[] bytes = null; if (!this.Bytes.TryGetValue(revision, out bytes)) { OutgoingPacket packet_ = null; if (BasicUtilies.GetRevisionPacketManager(revision).HandleOutgoing(this.Packet, out packet_)) { ServerMessage message = packet_.Handle(this.ValueHolder); if (message == null || message is EmptyServerMessage) { bytes = null; } else { bytes = message.GetBytes(); } } else { throw new Exception("Unable to find packet id: " + this.Packet + ", from: " + revision); } this.Bytes.Add(revision, bytes); } return(bytes); }
public void Handle(GameClient session, ClientMessage message) { if (session != null && session.GetHabbo() != null && session.GetHabbo().GetRoomSession() != null) { Room room = session.GetHabbo().GetRoomSession().GetRoom(); if (room != null) { RoomItem item = room.RoomItemManager.TryGetFloorItem(message.PopWiredUInt()); if (room.GaveRoomRights(session)) { if (item != null) { int x = message.PopWiredInt32(); int y = message.PopWiredInt32(); int rot = message.PopWiredInt32(); if (room.RoomItemManager.MoveFloorItemOnRoom(session, item, x, y, rot)) { return; } } } //ServerMessage msg = BasicUtilies.GetRevisionServerMessage(Revision.PRODUCTION_201601012205_226667486); //msg.Init(2419); //msg.AppendString("furni_placement_error"); //msg.AppendInt32(1); //msg.AppendString("message"); //msg.AppendString("${room.error.cant_set_item}"); //session.SendMessage(msg); session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.UpdateFloorItem).Handle(new ValueHolder("Item", item))); } } }
public void Handle(GameClient session, ClientMessage message) { if (session != null && session.GetHabbo() != null) { session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.CatalogIndexes).Handle(new ValueHolder("Rank", session.GetHabbo().Rank))); } }
public void AddBadge(string badgeId, int slotId, bool saveToDB) { if (!this.HaveBadge(badgeId)) { if (saveToDB) { using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { dbClient.AddParamWithValue("userId", this.HabboID); dbClient.AddParamWithValue("badge", badgeId); dbClient.AddParamWithValue("slotId", slotId); dbClient.ExecuteQuery("INSERT INTO user_badges(user_id, badge_id, badge_slot) VALUES(@userId, @badge, @slotId)"); } } this.Badges.Add(badgeId, new Badge(badgeId, slotId)); if (this.Habbo.GetSession().Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { this.Habbo.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.Habbo.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.UnseenItem).Handle(new ValueHolder().AddValue("Type", 4).AddValue("ID", BadgeManager.GetBadgeID(badgeId)))); } this.SendAllBadges(); } }
private void HandleActivityPointsUpdate(int id) { this.ActivityPoints.TryGetValue(id, out int points); if (this.GetSession().Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { this.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.UpdateActivityPoints).Handle(new ValueHolder().AddValue("ID", id).AddValue("Points", points))); } }
public void SendOnlineUsersCount() { if (this.GetSession().Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { this.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.UpdateActivityPointsSilence).Handle(new ValueHolder().AddValue("ActivityPoints", this.ActivityPoints.Concat(new Dictionary <int, int>() { { 69, Skylight.GetGame().GetGameClientManager().OnlineCount } }).ToDictionary(k => k.Key, v => v.Value)))); } }
public void LeaveRoom(GameClient session, bool sendLeavePacket) { this.LeaveRoom(session.GetHabbo().GetRoomSession().GetRoomUser()); session.GetHabbo().GetRoomSession().LeavedRoom(); if (sendLeavePacket) { session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.LeaveRoom).Handle()); } }
public override bool HandleMessage(GameClient session, ClientMessage message) { IncomingPacket incomingPacket; if (BasicUtilies.GetRevisionPacketManager(session.Revision).HandleIncoming(message.GetID(), out incomingPacket)) { incomingPacket.Handle(session, message); try { if (Skylight.GetConfig()["debug.incoming"] == "1") { Logging.WriteLine(string.Concat(new object[] { "[", session.ID, "] --> [", message.GetID(), "] ", message.GetHeader(), message.GetBody() })); } } catch { } } else { try { if (Skylight.GetConfig()["show.unhandled.packets"] == "1") { Logging.WriteLine(string.Concat(new object[] { "[", session.ID, "] --> Packet dosen't exit: [", message.GetID(), "] ", message.GetHeader(), message.GetBody() })); } } catch { } } return(true); }
public void Handle(GameClient session, ClientMessage message) { //if (session.SecurityNumber[0] == 0) //should be called once so this shouldn meter //{ if (ServerConfiguration.EnableCrypto) { int cryptoType = message.PopWiredInt32(); if (cryptoType == 0 && ServerConfiguration.CryptoType == 0) //banner data requested & server using this type encryption { //session.SecurityNumber[0] = 1; //session.SecurityNumber[1] = 1; ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); message_.Init(r63aOutgoing.Crypto); message_.AppendString(Skylight.GetPublicToken()); message_.AppendInt32(0); //not used session.SendMessage(message_); } else { session.Stop("Invalid crypto type"); } } else { if (!ServerConfiguration.RequireMachineID) { IncomingPacket incoming; if (BasicUtilies.GetRevisionPacketManager(Revision.RELEASE63_35255_34886_201108111108).HandleIncoming(r63aIncoming.GetSessionParameters, out incoming)) { incoming.Handle(session, null); } } else //REQUIRED EDITED HABBO.SWF { //session.SecurityNumber[0] = 1; //session.SecurityNumber[1] = 1; ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); message_.Init(r63aOutgoing.Crypto); message_.AppendBoolean(false); //message_.AppendString(""); //message_.AppendInt32(0); //not used session.SendMessage(message_); } } //} //else //{ // session.Stop("Crypto error"); //} }
public void AddInventoryItemToHand(InventoryItem inventoryItem) { if (inventoryItem.GetItem().IsWallItem) { this.WallItems.Add(inventoryItem.ID, inventoryItem); } else { this.FloorItems.Add(inventoryItem.ID, inventoryItem); } this.SendData(BasicUtilies.GetRevisionPacketManager(this.Session.Revision).GetOutgoing(OutgoingPacketsEnum.AddItemToInventory).Handle(new ValueHolder("InventoryManager", this, "Item", inventoryItem))); }
public void UpdateCredits(bool save) { this.GetSession().SendMessage(BasicUtilies.GetRevisionPacketManager(this.GetSession().Revision).GetOutgoing(OutgoingPacketsEnum.UpdateCredits).Handle(new ValueHolder().AddValue("Credits", this.Credits))); if (save) { using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { dbClient.AddParamWithValue("credits", this.Credits); dbClient.AddParamWithValue("userId", this.ID); dbClient.ExecuteQuery("UPDATE users SET credits = @credits WHERE id = @userId LIMIT 1"); } } }
public void RemoveItemFromHand(uint id, bool delete) { if (delete) { using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { dbClient.AddParamWithValue("itemId", id); dbClient.ExecuteQuery("DELETE FROM items WHERE id = @itemId LIMIT 1;"); } } this.SendData(BasicUtilies.GetRevisionPacketManager(this.Session.Revision).GetOutgoing(OutgoingPacketsEnum.RemoveItemFromHand).Handle(new ValueHolder("InventoryManager", this, "ID", id))); this.FloorItems.Remove(id); this.WallItems.Remove(id); }
public void UpdateAchievement(GameClient session, string group) { if (session.Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { if (this.Achievements.ContainsKey(group)) { Achievement achievement = this.Achievements[group]; if (achievement != null) { AchievementLevel level = session.GetHabbo().GetUserAchievements().GetAchievementLevel(achievement.GroupName) == achievement.LevelsCount ? achievement.GetLevel(session.GetHabbo().GetUserAchievements().GetAchievementLevel(achievement.GroupName)) : achievement.GetLevel(session.GetHabbo().GetUserAchievements().GetAchievementLevel(achievement.GroupName) + 1); //next level progress if (level != null) { session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.UpdateAchievement).Handle(new ValueHolder().AddValue("Session", session).AddValue("Achievement", achievement).AddValue("Level", level).AddValue("LastLevel", achievement.GetLevel(level.Level - 1)))); } } } } }
public ServerMessage SearchRooms(string entry, Revision revision) { DataTable results = null; using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { if (entry.Length > 0) { if (entry.StartsWith("owner:")) { dbClient.AddParamWithValue("owner", Skylight.GetGame().GetGameClientManager().GetIDByUsername(entry.Substring(6))); results = dbClient.ReadDataTable("SELECT * FROM rooms WHERE type = 'private' AND ownerid = @owner ORDER BY users_now LIMIT 50"); } else if (entry.StartsWith("tag:")) { dbClient.AddParamWithValue("query", "%" + entry.Substring(4).Replace("%", "\\%") + "%"); results = dbClient.ReadDataTable("SELECT * FROM rooms WHERE type = 'private' AND tags LIKE @query ORDER BY users_now LIMIT 50"); } else { dbClient.AddParamWithValue("query", "%" + entry.Replace("%", "\\%") + "%"); results = dbClient.ReadDataTable("SELECT r.* FROM rooms r LEFT JOIN users u ON r.ownerid = u.id WHERE r.type = 'private' AND (r.name LIKE @query OR u.username LIKE @query) ORDER BY r.users_now LIMIT 50"); } } } List <RoomData> rooms = new List <RoomData>(); if (results != null && results.Rows.Count > 0) { foreach (DataRow dataRow in results.Rows) { RoomData room = Skylight.GetGame().GetRoomManager().TryGetAndLoadRoomData((uint)dataRow["id"], dataRow); if (room != null) { rooms.Add(room); } } } return(BasicUtilies.GetRevisionPacketManager(revision).GetOutgoing(OutgoingPacketsEnum.RoomSearch).Handle(new ValueHolder("Entry", entry, "Rooms", rooms, "PublicRoom", this.PublicRooms.Count > 0 ? this.PublicRooms.Values.ElementAt(new Random().Next(0, this.PublicRooms.Count)) : null))); }
public void AddAchievement(GameClient session, string group, int level) { if (this.Achievements.ContainsKey(group)) { Achievement achievement = this.Achievements[group]; if (achievement != null) { AchievementLevel currentLevel = achievement.GetLevel(session.GetHabbo().GetUserAchievements().GetAchievementLevel(group)); AchievementLevel nextLevel = achievement.GetLevel(level); if (nextLevel != null && nextLevel.Level > session.GetHabbo().GetUserAchievements().GetAchievementLevel(group)) { session.GetHabbo().GetUserAchievements().AchievementUnlocked(group, level); if (currentLevel != null) { session.GetHabbo().GetBadgeManager().RemoveBadge(currentLevel.LevelBadge); } session.GetHabbo().GetBadgeManager().AddBadge(nextLevel.LevelBadge, 0, true); session.GetHabbo().AddActivityPoints(nextLevel.ActivityPointsType, nextLevel.ActivityPoints); session.GetHabbo().UpdateActivityPoints(nextLevel.ActivityPointsType, true); session.GetHabbo().GetUserStats().AchievementPoints += nextLevel.Score; if (session.Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.AchievementUnlocked).Handle(new ValueHolder().AddValue("Achievement", achievement).AddValue("NextLevel", nextLevel).AddValue("CurrentLevel", currentLevel))); } this.UpdateAchievement(session, group); using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { if (session.GetHabbo().GetUserSettings().FriendStream) { dbClient.AddParamWithValue("userId", session.GetHabbo().ID); dbClient.AddParamWithValue("badge", nextLevel.LevelBadge); dbClient.ExecuteQuery("INSERT INTO user_friend_stream(type, user_id, timestamp, extra_data) VALUES('2', @userId, UNIX_TIMESTAMP(), @badge)"); } } } } } }
public void Handle(GameClient session, ClientMessage message) { if (session != null && session.GetHabbo() != null && session.GetHabbo().GetRoomSession() != null) { Room room = session.GetHabbo().GetRoomSession().GetRoom(); if (room != null && room.GaveRoomRights(session)) { RoomItem item = room.RoomItemManager.TryGetFloorItem(message.PopWiredUInt()); if (item != null) { int x = message.PopWiredInt32(); int y = message.PopWiredInt32(); int rot = message.PopWiredInt32(); if (!room.RoomItemManager.MoveFloorItemOnRoom(session, item, x, y, rot)) { session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.UpdateFloorItem).Handle(new ValueHolder("Item", item))); } } } } }
public byte[] GetHeightmap(Revision revision, RoomTile[,] tiles) { return(BasicUtilies.GetRevisionPacketManager(revision).GetOutgoing(OutgoingPacketsEnum.Heightmap).Handle(new ValueHolder().AddValue("Heightmap", this.BuildHeightmap(tiles))).GetBytes()); }
public void Handle(GameClient session, ClientMessage message) { if (session != null && session.GetHabbo() != null && session.GetHabbo().GetRoomSession().RequestedRoomID > 0 && session.GetHabbo().GetRoomSession().LoadingRoom) { Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(session.GetHabbo().GetRoomSession().RequestedRoomID); session.GetHabbo().GetRoomSession().ResetRequestedRoom(); if (room != null) { if (room.RoomGamemapManager.Model != null) { session.SendData(room.RoomGamemapManager.Model.GetHeightmap(session.Revision, room.RoomGamemapManager.Tiles)); session.SendData(room.RoomGamemapManager.Model.GetRelativeHeightmap(session.Revision)); session.SendData(room.RoomGamemapManager.Model.GetPublicItems(session.Revision), true); if (room.RoomData.Type == "private") { ServerMessage floorItems = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); floorItems.Init(r63aOutgoing.FloorItems); floorItems.AppendInt32(room.RoomItemManager.FloorItems.Count); foreach (RoomItem item in room.RoomItemManager.FloorItems.Values) { item.Serialize(floorItems); } session.SendMessage(floorItems); ServerMessage wallItems = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); wallItems.Init(r63aOutgoing.WallItems); wallItems.AppendInt32(room.RoomItemManager.WallItems.Count); foreach (RoomItem item in room.RoomItemManager.WallItems.Values) { item.Serialize(wallItems); } session.SendMessage(wallItems); } room.RoomUserManager.EnterRoom(session); ICollection <RoomUnit> users = room.RoomUserManager.GetRoomUsers(); ServerMessage setRoomUsers = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); setRoomUsers.Init(r63aOutgoing.SetRoomUser); setRoomUsers.AppendInt32(users.Count); foreach (RoomUnit user in users) { user.Serialize(setRoomUsers); } session.SendMessage(setRoomUsers); ServerMessage roomVIPsetting = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); roomVIPsetting.Init(r63aOutgoing.RoomVIPSettings); roomVIPsetting.AppendBoolean(room.RoomData.Hidewalls); roomVIPsetting.AppendInt32(room.RoomData.Wallthick); roomVIPsetting.AppendInt32(room.RoomData.Floorthick); session.SendMessage(roomVIPsetting); if (room.RoomData.Type == "private") { ServerMessage roomOwner = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); roomOwner.Init(r63aOutgoing.RoomOwner); roomOwner.AppendBoolean(true); //is private room roomOwner.AppendUInt(room.ID); roomOwner.AppendBoolean(room.HaveOwnerRights(session)); //is roomowner session.SendMessage(roomOwner); ServerMessage roomData = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); roomData.Init(r63aOutgoing.RoomData); roomData.AppendBoolean(false); //entered room room.RoomData.Serialize(roomData, false); roomData.AppendBoolean(false); //forward roomData.AppendBoolean(room.RoomData.IsStaffPick); //is staff pick session.SendMessage(roomData); } else { ServerMessage roomOwner = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); roomOwner.Init(r63aOutgoing.RoomOwner); roomOwner.AppendBoolean(false); //is private room roomOwner.AppendString(room.RoomGamemapManager.Model.ID); roomOwner.AppendInt32(0); //unknwown session.SendMessage(roomOwner); } MultiRevisionServerMessage usersStatuses = room.RoomUserManager.GetUserStatus(true); if (usersStatuses != null) { session.SendData(usersStatuses.GetBytes(session.Revision)); } foreach (RoomUnitUser user in room.RoomUserManager.GetRealUsers()) { if (user.Dancing) { ServerMessage danceMessage = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); danceMessage.Init(r63aOutgoing.Dance); danceMessage.AppendInt32(user.VirtualID); danceMessage.AppendInt32(user.DanceID); session.SendMessage(danceMessage); } if (user.Sleeps) { ServerMessage sleeps = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); sleeps.Init(r63aOutgoing.Sleeps); sleeps.AppendInt32(user.VirtualID); sleeps.AppendBoolean(true); session.SendMessage(sleeps); } if (user.Handitem > 0 && user.HanditemTimer > 0) { ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); message_.Init(r63aOutgoing.Handitem); message_.AppendInt32(user.VirtualID); message_.AppendInt32(user.Handitem); session.SendMessage(message_); } if (user.ActiveEffect > 0) { session.SendMessage(BasicUtilies.GetRevisionPacketManager(Revision.PRODUCTION_201601012205_226667486).GetOutgoing(OutgoingPacketsEnum.Effect).Handle(new ValueHolder("VirtualID", user.VirtualID, "EffectID", user.ActiveEffect))); } } room.RoomWiredManager.UserEnterRoom(session.GetHabbo().GetRoomSession().GetRoomUser()); if (session.GetHabbo().IsMuted()) { ServerMessage flood = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); flood.Init(r63aOutgoing.Flood); flood.AppendInt32(session.GetHabbo().MuteTimeLeft()); session.SendMessage(flood); } } else { session.SendNotif("Failed load room model!"); } } else { session.SendNotif("Room not found!"); } } }
public void Handle(GameClient session, ClientMessage message) { session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.InfoRetrieve).Handle(new ValueHolder().AddValue("Session", session))); }
public void Initialize() { Logging.WriteLine("█▀▀▀█ █ █ █ █ █ ▀ █▀▀▀ █ █ ▀▀█▀▀", ConsoleColor.Yellow); Logging.WriteLine("▀▀▀▄▄ █▀▄ █▄▄█ █ ▀█▀ █ ▀█ █▀▀█ █ ", ConsoleColor.Yellow); Logging.WriteLine("█▄▄▄█ ▀ ▀ ▄▄▄█ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀ ▀ ▀ ", ConsoleColor.Yellow); Logging.WriteLine(Skylight.Version, ConsoleColor.Yellow); Logging.WriteBlank(); Logging.WriteLine(Licence.WelcomeMessage, ConsoleColor.Green); Logging.WriteBlank(); try { Skylight.ServerStarted = Stopwatch.StartNew(); Skylight.ConfigurationData = new ConfigurationData("config.conf"); Logging.Write("Connecting to database... ", ConsoleColor.White); try { DatabaseServer DatabaseServer = new DatabaseServer(Skylight.GetConfig()["db.hostname"], uint.Parse(Skylight.GetConfig()["db.port"]), Skylight.GetConfig()["db.username"], Skylight.GetConfig()["db.password"]); Database Database = new Database(Skylight.GetConfig()["db.name"], uint.Parse(Skylight.GetConfig()["db.pool.minsize"]), uint.Parse(Skylight.GetConfig()["db.pool.maxsize"])); Skylight.DatabaseManager = new DatabaseManager(DatabaseServer, Database); using (DatabaseClient dbClient = Skylight.DatabaseManager.GetClient()) { //WHAT AN LOVLY COMMAND WE HAVE OVER HERE! =D dbClient.ExecuteQuery(@"DROP PROCEDURE IF EXISTS parse_activity_points; CREATE PROCEDURE parse_activity_points(bound VARCHAR(255), bound2 VARCHAR(255)) BEGIN DECLARE id INT DEFAULT 0; DECLARE value TEXT; DECLARE occurance INT DEFAULT 0; DECLARE i INT DEFAULT 0; DECLARE splitted_value TEXT; DECLARE splitted_value_2 TEXT; DECLARE splitted_value_3 TEXT; DECLARE done INT DEFAULT 0; DECLARE cur1 CURSOR FOR SELECT users.id, users.activity_points FROM users; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP TEMPORARY TABLE IF EXISTS activity_points_parsed_data; CREATE TEMPORARY TABLE activity_points_parsed_data(`id` INT NOT NULL,`value` VARCHAR(255) NOT NULL,`value2` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`,`value`)) ENGINE=Memory; OPEN cur1; read_loop: LOOP FETCH cur1 INTO id, value; IF done THEN LEAVE read_loop; END IF; SET occurance = (SELECT LENGTH(value) - LENGTH(REPLACE(value, bound, '')) +1); SET i=1; WHILE i <= occurance DO SET splitted_value = (SELECT REPLACE(SUBSTRING(SUBSTRING_INDEX(value, bound, i), LENGTH(SUBSTRING_INDEX(value, bound, i - 1)) + 1), bound, '')); SET splitted_value_2 = (SELECT REPLACE(SUBSTRING(SUBSTRING_INDEX(splitted_value, bound2, 1), LENGTH(SUBSTRING_INDEX(splitted_value, bound2, 1 - 1)) + 1), bound2, '')); SET splitted_value_3 = (SELECT REPLACE(SUBSTRING(SUBSTRING_INDEX(splitted_value, bound2, 2), LENGTH(SUBSTRING_INDEX(splitted_value, bound2, 2 - 1)) + 1), bound2, '')); IF splitted_value_3 = '' THEN SET splitted_value_3 = splitted_value_2, splitted_value_2 = '0'; END IF; INSERT INTO activity_points_parsed_data VALUES (id, splitted_value_2, splitted_value_3) ON DUPLICATE KEY UPDATE value2 = value2 + splitted_value_3; SET i = i + 1; END WHILE; END LOOP; CLOSE cur1; END;"); } } catch (MySqlException ex) { Logging.WriteLine("failed!", ConsoleColor.Red); Skylight.ExceptionShutdown(ex); return; } Logging.WriteLine("completed!", ConsoleColor.Green); Skylight.LateQueryManager = new LateQueryManager(); Skylight.PublicToken = new BigInteger(DiffieHellman.GenerateRandomHexString(15), 16).ToString(); Skylight.HabboCrypto = new HabboCrypto(n, e, d); using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { dbClient.AddParamWithValue("bannerData", Skylight.HabboCrypto.Prime + ":" + Skylight.HabboCrypto.Generator); dbClient.ExecuteQuery("UPDATE users SET online = '0'; UPDATE rooms SET users_now = '0'; UPDATE server_settings SET banner_data = @bannerData;"); } Skylight.TargetRevision = RevisionUtilies.StringToRevision(Skylight.GetConfig()["game.revision"]); Skylight.MultiRevisionSupport = TextUtilies.StringToBool(Skylight.GetConfig()["game.mrs.enabled"]); Skylight.PacketManager = BasicUtilies.GetRevisionPacketManager(Skylight.Revision); //needed for stuff Skylight.PacketManager.Initialize(); Skylight.Game = new Game(); Skylight.Game.Init(); if (Skylight.GetConfig()["game.efpfr.enabled"] == "1") { Skylight.ExternalFlashPolicyFileRequestPort = true; Skylight.FlashPolicyFileRequestListener = new FlashPolicyFileRequestListener(Skylight.GetConfig()["game.efpfr.bindip"], int.Parse(Skylight.GetConfig()["game.efpfr.port"])); Skylight.FlashPolicyFileRequestListener.Start(); } Skylight.SocketsManager = new SocketsManager(Skylight.GetConfig()["game.tcp.bindip"], int.Parse(Skylight.GetConfig()["game.tcp.port"]), int.Parse(Skylight.GetConfig()["game.tcp.conlimit"])); foreach (string key in Skylight.ConfigurationData.GetChildKeys("game.tcp.extra")) { Skylight.SocketsManager.AddListener(new SocketsListener(Skylight.SocketsManager, Skylight.GetConfig()["game.tcp.extra." + key + ".bindip"], int.Parse(Skylight.GetConfig()["game.tcp.extra." + key + ".port"]), RevisionUtilies.StringToRevision(Skylight.GetConfig()["game.tcp.extra." + key + ".revision"]), RevisionUtilies.StringToCrypto(Skylight.GetConfig().TryGet("game.tcp.extra." + key + ".crypto")))); } Skylight.SocketsManager.Start(); if (Skylight.GetConfig()["rcon.tcp.enabled"] == "1") { Skylight.RCONListener = new RCONListener(Skylight.GetConfig()["rcon.tcp.bindip"], int.Parse(Skylight.GetConfig()["rcon.tcp.port"]), Skylight.GetConfig()["rcon.tcp.allowedips"]); Skylight.RCONListener.Start(); } if (Skylight.GetConfig()["mus.tcp.enabled"] == "1") { Skylight.MUSListener = new MUSListener(Skylight.GetConfig()["mus.tcp.bindip"], int.Parse(Skylight.GetConfig()["mus.tcp.port"])); Skylight.MUSListener.Start(); } TimeSpan bootTime = Skylight.Uptime; Logging.WriteLine("READY! (" + bootTime.Seconds + " s, " + bootTime.Milliseconds + " ms)", ConsoleColor.Green); } catch (Exception ex) { Logging.WriteLine("FAILED TO BOOT! ", ConsoleColor.Red); Skylight.ExceptionShutdown(ex); } }
public ServerMessage GetFlatCatsMessage(GameClient session) { return(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.FlatCats).Handle(new ValueHolder().AddValue("FlatCats", this.FlatCats.Values.ToList()).AddValue("Rank", session.GetHabbo().Rank))); }
public ServerMessage SerializeModTool(GameClient session) { return(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.ModTool).Handle(new ValueHolder().AddValue("Session", session))); }
public override bool HandlePacket(GameClient session, ref byte[] packet) { try { ClientMessage message = this.TryParseAsOldCrypto(packet); if (message is OldCryptoClientMessage) { if (this.State == 0 && message.GetID() == r63aIncoming.InitCryptoMessage) //same on r26 and r63a { IncomingPacket packet_ = null; if (BasicUtilies.GetRevisionPacketManager(Revision.RELEASE63_35255_34886_201108111108).HandleIncoming(message.GetID(), out packet_)) { packet_.Handle(session, message); this.State = 1; } } else if (this.State == 1 && message.GetID() == r26Outgoing.SecretKey && ServerConfiguration.RequireMachineID) { session.RemoveDataHandler(this.Identifier()); session.Revision = Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169; } else if (this.State == 1 && message.GetID() == 204 /* NO CLUE WTF IS THIS */ && !ServerConfiguration.RequireMachineID) { session.RemoveDataHandler(this.Identifier()); session.Revision = Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169; } else if (this.State == 1 && message.GetID() == r63aIncoming.Variables && ServerConfiguration.RequireMachineID) { session.RemoveDataHandler(this.Identifier()); session.Revision = Revision.RELEASE63_35255_34886_201108111108; } else if (this.State == 1 && message.GetID() == r63aIncoming.SSOTicket && !ServerConfiguration.RequireMachineID) { session.RemoveDataHandler(this.Identifier()); session.Revision = Revision.RELEASE63_35255_34886_201108111108; } else { session.Stop("Old crypto, unable to find revision #1"); } } else { message = this.TryParseAsNewCrypto(packet); if (message is NewCryptoClientMessage) { if (message.GetID() == r63bIncoming.VersionCheck) { session.RemoveDataHandler(this.Identifier()); string version = message.PopFixedString(); if (version == "RELEASE63-201211141113-913728051") { session.Revision = Revision.RELEASE63_201211141113_913728051; } else if (version == "PRODUCTION-201601012205-226667486") { session.Revision = Revision.PRODUCTION_201601012205_226667486; } else if (version == "PRODUCTION-201611291003-338511768") { session.Revision = Revision.PRODUCTION_201611291003_338511768; } else { session.Stop("New crypto, revision not supported"); } } else { session.Stop("New crypto, unable to find revision"); } } else { if (Skylight.ExternalFlashPolicyFileRequestPortEnabled) //If the emulator just booted the policy file may have fallen here, lets just send it { if (packet[0] == 60) { string data = Encoding.ASCII.GetString(packet); //decode and figure it out if (data == "<policy-file-request/>\0") //yes! it is privacy policy request, send response { session.SendData(DetectRevisionHandler.XmlPolicy); if (!MonoUtils.IsMonoRunning) { session.Stop("Policy privacy file request response"); } else { session.ClosePending = true; } } } } session.Stop("Unable to revision"); } } return(false); } finally { if (!session.Disconnected && session.GetDataHandler(DetectRevisionHandler.Identifier_) == null) { session.EnableDecodeHandlers(); session.HandleData(packet); } } }
private void LetUserIn() { //if (this.Revision == Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) //{ // ServerMessage weirdKeys = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); // weirdKeys.Init(r26Outgoing.SomeKeysMaybe); // weirdKeys.AppendString("QBHIIIKHJIPAIQAdd-MM-yyyy"); // weirdKeys.AppendString("SAHPB/client"); // weirdKeys.AppendString("QBH"); // this.SendMessage(weirdKeys); //} //send effects if (this.Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.AvaiblityStatus).Handle()); } this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.AuthOk).Handle()); this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.Fuserights).Handle(new ValueHolder().AddValue("Session", this))); this.SendMessage(new NewbieIdentityComposerHandler(false)); //Removes all the anonying shit if (this.GetHabbo().HasPermission("acc_supporttool")) { this.SendMessage(Skylight.GetGame().GetModerationToolManager().SerializeModTool(this)); } if (this.Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.ShowNotifications).Handle()); } if (this.Habbo.NewbieStatus == 0) { Room newbieRoom = Skylight.GetGame().GetRoomManager().NewbieRooms.Count > 0 ? Skylight.GetGame().GetRoomManager().CreateNewbieRoom(this, Skylight.GetGame().GetRoomManager().NewbieRooms.Keys.ElementAt(RandomUtilies.GetRandom(0, Skylight.GetGame().GetRoomManager().NewbieRooms.Count - 1))) : null; if (newbieRoom != null) { using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { dbClient.AddParamWithValue("userId", this.Habbo.ID); dbClient.AddParamWithValue("roomId", newbieRoom.ID); dbClient.ExecuteQuery("UPDATE users SET newbie_status = '1', " + (this.Habbo.HomeRoom == 0 ? "home_room = @roomId, " : "") + "newbie_room = @roomId WHERE id = @userId LIMIT 1"); } this.Habbo.NewbieStatus = 1; if (this.Habbo.HomeRoom == 0) { this.Habbo.HomeRoom = newbieRoom.ID; } this.Habbo.NewbieRoom = newbieRoom.ID; } else { //no welcome room, no shit :( using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { dbClient.AddParamWithValue("userId", this.Habbo.ID); dbClient.ExecuteQuery("UPDATE users SET newbie_status = '2' WHERE id = @userId LIMIT 1"); } this.Habbo.NewbieStatus = 2; } } if (this.Revision >= Revision.RELEASE63_201211141113_913728051) { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.HomeRoom).Handle(new ValueHolder().AddValue("HomeRoom", this.Habbo.HomeRoom).AddValue("ForwardID", this.Habbo.NewbieStatus == 1 ? this.Habbo.NewbieRoom : this.Habbo.HomeRoom))); } else { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.HomeRoom).Handle(new ValueHolder().AddValue("HomeRoom", this.Habbo.NewbieStatus == 1 ? this.Habbo.NewbieRoom : this.Habbo.HomeRoom))); } if (this.Revision > Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169) { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.FavouriteRooms).Handle(new ValueHolder().AddValue("Max", 50).AddValue("FavouriteRooms", this.Habbo.FavouriteRooms))); } if (this.GetHabbo().CanReceiveActivityBonus()) { this.GetHabbo().ReceiveActivityBonus(); } if (!string.IsNullOrEmpty(ServerConfiguration.MOTD)) { this.SendNotif(ServerConfiguration.MOTD, 2); } foreach (KeyValuePair <int, string> data in Skylight.GetGame().GetPermissionManager().GetBadges()) { if (!string.IsNullOrEmpty(data.Value)) { if (this.GetHabbo().Rank >= data.Key) { this.GetHabbo().GetBadgeManager().AddBadge(data.Value, 0, true); } else { this.GetHabbo().GetBadgeManager().RemoveBadge(data.Value); } } } this.GetHabbo().CheckDailyStuff(false); //daily respect, regular visitor this.GetHabbo().CheckHappyHour(); //happy hour achievement this.GetHabbo().GetUserAchievements().CheckAchievement("RegistrationDuration"); this.GetHabbo().GetUserAchievements().CheckAchievement("OnlineTime"); this.GetHabbo().GetUserAchievements().CheckAchievement("HCMember"); this.GetHabbo().GetUserAchievements().CheckAchievement("VIPMember"); this.GetHabbo().GetUserAchievements().CheckAchievement("Tags"); this.GetHabbo().GetUserAchievements().CheckAchievement("GuideEnrollmentLifetime"); this.GetHabbo().GetUserAchievements().CheckAchievement("GuideOnDutyPresence"); if (this.GetHabbo().MailConfirmed) { Skylight.GetGame().GetAchievementManager().AddAchievement(this, "EmailVerification", 1); } foreach (uint roomId in this.GetHabbo().UserRooms) { Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(roomId); if (room != null) { room.EquestrianTrackHost(0); room.FootballGoalHost(0); room.RoomHost(0); } } if (this.Revision >= Revision.RELEASE63_201211141113_913728051) { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.UserPerks).Handle(new ValueHolder("Session", this))); } if (this.Revision >= Revision.PRODUCTION_201601012205_226667486) { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NewNavigatorMetaData).Handle()); this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NewNavigatorLiftedRooms).Handle()); this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NewNavigatorSavedSearches).Handle()); this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NewNavigatorEventCategories).Handle()); } }
public void SendNotifWithLink(string message, string link) { this.SendMessage(BasicUtilies.GetRevisionPacketManager(this.Revision).GetOutgoing(OutgoingPacketsEnum.NotifFromMod).Handle(new ValueHolder("Message", message, "Link", link))); }
public void AddItem(GameClient session, Item item, int amount, string extraData, bool newFurni, bool queueBytes = false) { if (queueBytes) { session.GetHabbo().GetInventoryManager().SetQueueBytes(true); } List <uint> newFloorItems = new List <uint>(); List <uint> newWallItems = new List <uint>(); List <uint> newPets = new List <uint>(); switch (item.Type) { case "i": //wall item { switch (item.InteractionType.ToLower()) { case "dimmer": default: { foreach (uint itemId_ in DatabaseUtils.CreateItems(session.GetHabbo().ID, item, extraData, amount)) { newWallItems.Add(itemId_); session.GetHabbo().GetInventoryManager().AddInventoryItemToHand(new InventoryItem(itemId_, item.ID, extraData)); } } break; } } break; case "s": //floor item { switch (item.InteractionType.ToLower()) { case "pet": { string[] data = extraData.Split('\n'); string petName = data[0]; string petRace = data[1]; string petColor = data[2]; double timestamp = TimeUtilies.GetUnixTimestamp(); foreach (uint petId in DatabaseUtils.CreatePets(session.GetHabbo().ID, petName, petRace, petColor, int.Parse(item.ItemName.Split('t')[1]), timestamp, amount)) { newPets.Add(petId); Pet pet = new Pet(petId, session.GetHabbo().ID, int.Parse(item.ItemName.Split('t')[1]), petName, petRace, petColor, 0, 120, 100, 0, timestamp); session.GetHabbo().GetInventoryManager().AddPet(pet); session.GetHabbo().Pets.Add(petId, pet); } } break; case "teleport": default: { foreach (uint itemId_ in DatabaseUtils.CreateItems(session.GetHabbo().ID, item, extraData, amount)) { newFloorItems.Add(itemId_); session.GetHabbo().GetInventoryManager().AddInventoryItemToHand(new InventoryItem(itemId_, item.ID, extraData)); } } break; } } break; case "h": { double hcLenghtInSecounds = (2678400.0 * amount); string clubType = "habbo_club"; if (item.ItemName.StartsWith("DEAL_VIP")) //bought vip days { clubType = "habbo_vip"; if (!session.GetHabbo().IsVIP() && session.GetHabbo().IsHC()) //is upgrade { hcLenghtInSecounds += session.GetHabbo().GetSubscriptionManager().TryGetSubscription("habbo_club", false, true).SecoundsLeft() / 1.67; session.GetHabbo().GetSubscriptionManager().EndSubscription("habbo_club"); //R.I.P. HC } Skylight.GetGame().GetAchievementManager().AddAchievement(session, "HCMember", 1); Skylight.GetGame().GetAchievementManager().AddAchievement(session, "VIPMember", 1); session.GetHabbo().GetUserAchievements().CheckAchievement("HCMember"); session.GetHabbo().GetUserAchievements().CheckAchievement("VIPMember"); } else //bought hc days { if (session.GetHabbo().IsVIP() && !session.GetHabbo().IsHC()) //is downgrade { hcLenghtInSecounds += session.GetHabbo().GetSubscriptionManager().TryGetSubscription("habbo_vip", false, true).SecoundsLeft() * 1.67; session.GetHabbo().GetSubscriptionManager().EndSubscription("habbo_vip"); //R.I.P. VIP } Skylight.GetGame().GetAchievementManager().AddAchievement(session, "HCMember", 1); session.GetHabbo().GetUserAchievements().CheckAchievement("HCMember"); } session.GetHabbo().GetSubscriptionManager().AddSubscription(clubType, hcLenghtInSecounds); session.SendMessage(OutgoingPacketsEnum.ClubMembership, new ValueHolder("Session", session, "ClubType", clubType)); session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.Fuserights).Handle(new ValueHolder().AddValue("Session", session))); break; } default: { session.SendNotif("Invalid item type... (" + item.Type + ") Please don't try buy this item again!"); break; } } if (newPets.Count > 0) { session.GetHabbo().GetUserAchievements().CheckAchievement("PetOwner"); } session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.NewItems).Handle(new ValueHolder("Floors", newFloorItems, "Walls", newWallItems, "Pets", newPets))); if (queueBytes) { session.GetHabbo().GetInventoryManager().SetQueueBytes(false); } }
public void BuyItem(GameClient session, int pageId, uint itemId, string extraData, int amountMultiplayer, bool asGift, string receiverUsername = "", string giftMessage = "", int giftSpriteId = 0, int giftBoxId = 0, int giftRibbonId = 0) { CatalogPage page = this.GetCatalogPage(pageId); if (page != null && page.Visible & page.Enabled && page.MinRank <= session.GetHabbo().Rank) { CatalogItem item = page.GetItem(itemId); if (item != null) { if (item.IsDeal) { if (amountMultiplayer > 1) { session.SendNotif("You can't buy multiple deals at once!"); return; } } Tuple <Item, int>[] products = item.GetItems(); uint giftReceiverId = 0; if (asGift) { foreach (Tuple <Item, int> data in products) { if (!data.Item1.AllowGift) { return; } } giftReceiverId = Skylight.GetGame().GetGameClientManager().GetIDByUsername(receiverUsername); if (giftReceiverId == 0) //not valid user { ServerMessage receiverNotFound = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); receiverNotFound.Init(r63aOutgoing.GiftReceiverNotFound); session.SendMessage(receiverNotFound); return; } } if (amountMultiplayer > 1 && products[0].Item2 * amountMultiplayer > 100) { session.SendNotif("You can't buy more then 100 at once with the buy command"); return; } int finalCredits = item.CostCredits * amountMultiplayer; int finalPixels = item.CostActivityPoints * amountMultiplayer; if (asGift && giftSpriteId > 0) //special gifts costs one credit more { finalCredits++; } bool noCredits = false; bool noActivityPoints = false; if (session.GetHabbo().Credits < finalCredits) { noCredits = true; } if (session.GetHabbo().TryGetActivityPoints(item.ActivityPointsType) < finalPixels) { noActivityPoints = true; } if (noCredits || noActivityPoints) { ServerMessage noEnoughtCash = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108); noEnoughtCash.Init(r63aOutgoing.NoEnoughtCash); noEnoughtCash.AppendBoolean(noCredits); noEnoughtCash.AppendBoolean(noActivityPoints); session.SendMessage(noEnoughtCash); } else { if (asGift) { foreach (Tuple <Item, int> data in products) { if (data.Item1.Type == "e") { session.SendNotif("You can not send this item as a gift."); return; } } } if (!item.IsDeal) { switch (products[0].Item1.InteractionType.ToLower()) { case "pet": { string[] data = extraData.Split('\n'); string petName = data[0]; int petRace = int.Parse(data[1]); string color = data[2]; Regex regex = new Regex(@"^[A-Z0-9_-]+$", RegexOptions.IgnoreCase); if (petName.Length >= 2 && petName.Length <= 16 && regex.IsMatch(petName) && !TextUtilies.HaveBlacklistedWords(petName)) { //buy } else { return; } if (color.Length != 6) { return; } break; } case "roomeffect": { extraData = TextUtilies.DoubleWithDotDecimal(double.Parse(extraData)); } break; case "postit": { extraData = "FFFF33"; //if you leave extra data empty same result, but for sure } break; case "dimmer": { extraData = "1,1,1,#000000,255"; //current mode } break; case "trophy": { extraData = session.GetHabbo().ID.ToString() + (char)9 + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + (char)9 + TextUtilies.FilterString(extraData, false, true); } break; default: { extraData = ""; break; } } } if (finalCredits > 0) { session.GetHabbo().Credits -= finalCredits; session.GetHabbo().UpdateCredits(true); } if (finalPixels > 0) { session.GetHabbo().RemoveActivityPoints(item.ActivityPointsType, finalPixels); session.GetHabbo().UpdateActivityPoints(item.ActivityPointsType, true); } session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.BuyInfo).Handle(new ValueHolder("Item", item, "Products", products, "Credits", finalCredits, "Pixels", finalPixels))); if (asGift) { Item gift = this.GetGiftLook(giftSpriteId); using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { string giftData = TextUtilies.FilterString(giftMessage, false, true) + (char)9 + session.GetHabbo().ID + (char)9 + giftBoxId + (char)9 + giftRibbonId; dbClient.AddParamWithValue("giftData", giftData); dbClient.AddParamWithValue("receiverId", giftReceiverId); dbClient.AddParamWithValue("giftBaseItem", gift.ID); uint giftItemId = (uint)dbClient.ExecuteQuery("INSERT INTO items(user_id, base_item, extra_data) VALUES(@receiverId, @giftBaseItem, @giftData)"); string baseItems = ""; string amounts = ""; foreach (Tuple <Item, int> data in products) { if (baseItems.Length > 0) { baseItems += ","; amounts += ","; } baseItems += data.Item1.ID; amounts += data.Item2 * amountMultiplayer; } dbClient.AddParamWithValue("itemId", giftItemId); dbClient.AddParamWithValue("baseItems", baseItems); dbClient.AddParamWithValue("amounts", amounts); dbClient.AddParamWithValue("extraData", extraData); dbClient.ExecuteQuery("INSERT INTO items_presents(item_id, base_ids, amounts, extra_data) VALUES(@itemId, @baseItems, @amounts, @extraData)"); GameClient receiver = Skylight.GetGame().GetGameClientManager().GetGameClientById(giftReceiverId); if (receiver != null) { if (giftReceiverId != session.GetHabbo().ID) //do achievement progress { receiver.GetHabbo().GetUserStats().GiftsReceived++; receiver.GetHabbo().GetUserAchievements().CheckAchievement("GiftReceiver"); } receiver.GetHabbo().GetInventoryManager().AddItem(giftItemId, gift.ID, giftData, false); //add it to inventory first session.SendMessage(BasicUtilies.GetRevisionPacketManager(session.Revision).GetOutgoing(OutgoingPacketsEnum.UnseenItem).Handle(new ValueHolder("Type", 1, "ID", giftItemId))); //receiver one item in this case the gift //receiver.GetHabbo().GetInventoryManager().UpdateInventoryItems(true); //update inv } else { if (giftReceiverId != session.GetHabbo().ID) //do achievement progress { dbClient.ExecuteQuery("UPDATE user_stats SET gifts_received = gifts_received + 1 WHERE user_id = @receiverId LIMIT 1"); } } } if (giftReceiverId != session.GetHabbo().ID) //do achievement progress { session.GetHabbo().GetUserStats().GiftsGived++; session.GetHabbo().GetUserAchievements().CheckAchievement("GiftGiver"); } } else { session.GetHabbo().GetInventoryManager().SetQueueBytes(true); foreach (Tuple <Item, int> data in products) { this.AddItem(session, data.Item1, data.Item2 * amountMultiplayer, extraData, true, false); } session.GetHabbo().GetInventoryManager().SetQueueBytes(false); } } } } }
public ServerMessage BadgePointLimits(Revision revision) { return(BasicUtilies.GetRevisionPacketManager(revision).GetOutgoing(OutgoingPacketsEnum.BadgePointLimits).Handle(new ValueHolder().AddValue("Achievements", this.Achievements.Values.ToList()))); }
public PacketManager GetPacketManager() { return(BasicUtilies.GetRevisionPacketManager(this.Revision)); }