internal static void SellItem(GameClient Session, uint ItemId, int SellingPrice) { UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId); if (Item == null || SellingPrice > 10000 || !CanSellItem(Item)) { Session.GetMessageHandler().GetResponse().Init(610); Session.GetMessageHandler().GetResponse().AppendBoolean(false); Session.GetMessageHandler().GetResponse(); Session.GetMessageHandler().SendResponse(); return; } int Comission = CalculateComissionPrice(SellingPrice); int TotalPrice = SellingPrice + Comission; int ItemType = 1; if (Item.GetBaseItem().Type == 'i') ItemType++; using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("INSERT INTO catalog_marketplace_offers (item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data) VALUES (" + Item.BaseItem + "," + Session.GetHabbo().Id + "," + SellingPrice + "," + TotalPrice + ",@public_name," + Item.GetBaseItem().SpriteId + "," + ItemType + "," + FirewindEnvironment.GetUnixTimestamp() + ",@extra_data)"); dbClient.addParameter("public_name", "NEEDS REPLACMENT HERE"); dbClient.addParameter("extra_data", Item.Data); dbClient.runQuery(); } Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, false); Session.GetHabbo().GetInventoryComponent().RunDBUpdate(); Session.GetMessageHandler().GetResponse().Init(610); Session.GetMessageHandler().GetResponse().AppendBoolean(true); Session.GetMessageHandler().SendResponse(); }
internal bool UserGotAuthorization(GameClient session) { foreach(string subs in clubsAllowed){ if (session.GetHabbo().GetSubscriptionManager().HasSubscription(subs)) return true; } if (minrank == 0) return true; else if (minrank > 0) { if (minrank <= session.GetHabbo().Rank) return true; } else if (minrank < 0) { if (minrank == -1) { if (session.GetHabbo().CurrentRoom.CheckRights(session, false)) return true; } else if (minrank == -2) { if (session.GetHabbo().CurrentRoom.CheckRights(session, true)) return true; } } return false; }
internal static void AlertUser(GameClient ModSession, uint UserId, String Message, Boolean Caution) { GameClient Client = FirewindEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo().Id == ModSession.GetHabbo().Id) { return; } if (Caution && Client.GetHabbo().Rank >= ModSession.GetHabbo().Rank) { ModSession.SendNotif(LanguageLocale.GetValue("moderation.caution.missingrank")); Caution = false; } Client.SendNotif(Message, Caution); if (Caution) { using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE user_info SET cautions = cautions + 1 WHERE user_id = " + UserId + ""); } } }
internal static void GivePixels(GameClient Client, int amount) { Double Timestamp = FirewindEnvironment.GetUnixTimestamp(); Client.GetHabbo().LastActivityPointsUpdate = Timestamp; Client.GetHabbo().ActivityPoints += amount; Client.GetHabbo().UpdateActivityPointsBalance(0); }
public Group CreateGroup(GameClient creator, string name, string description, int roomID, int color1, int color2, List<Tuple<int, int, int>> badgeData) { // We call this method after doing all checks. int groupID; string badgeCode = Group.GenerateBadgeImage(badgeData); string createTime = DateTime.Now.ToString("d-M-yyyy"); using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { // Insert the group dbClient.setQuery("INSERT INTO guild(name,description,badge,users_id,rooms_id,color1,color2,date_created) VALUES(@name,@desc,@badge,@ownerid,@roomid,@color1,@color2,@date)"); dbClient.addParameter("name", name); dbClient.addParameter("desc", description); dbClient.addParameter("ownerid", creator.GetHabbo().Id); dbClient.addParameter("roomid", roomID); dbClient.addParameter("color1", color1); dbClient.addParameter("color2", color2); dbClient.addParameter("badge", badgeCode); dbClient.addParameter("date", createTime); groupID = (int)dbClient.insertQuery(); } Group group = new Group() { ID = groupID, Name = name, Description = description, RoomID = roomID, ColorID1 = color1, ColorID2 = color2, BadgeCode = badgeCode, DateCreated = createTime, }; return group; }
private static void AddToPlaylist(GameClient Session, ClientMessage Message) { Room Instance = Session.GetHabbo().CurrentRoom; if (Instance == null || !Instance.CheckRights(Session, true) || !Instance.GotMusicController() || Instance.GetRoomMusicController().PlaylistSize >= Instance.GetRoomMusicController().PlaylistCapacity) { return; } UserItem DiskUserItem = Session.GetHabbo().GetInventoryComponent().GetItem(Message.ReadUInt32()); if (DiskUserItem == null || DiskUserItem.GetBaseItem().InteractionType != InteractionType.musicdisc) { return; } SongItem item = new SongItem(DiskUserItem); int NewOrder = Instance.GetRoomMusicController().AddDisk(item); if (NewOrder < 0) { return; } Session.GetHabbo().GetInventoryComponent().RemoveItem(item.itemID, true); Session.SendMessage(JukeboxComposer.Compose(Instance.GetRoomMusicController().PlaylistCapacity, Instance.GetRoomMusicController().Playlist.Values.ToList())); }
public Group CreateGroup(GameClient creator, string name, string description, int roomID, int color1, int color2, List<Tuple<int, int, int>> badgeData) { // We call this method after doing all checks. int groupID; //string badgeCode = Group.GenerateBadgeImage(badgeData); string createTime = DateTime.Now.ToString("d-M-yyyy"); using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { // Insert the group dbClient.setQuery("INSERT INTO groups(name,description,badge_data,users_id,rooms_id,color1,color2,date_created) VALUES(@name,@desc,@badge,@ownerid,@roomid,@color1,@color2,@date)"); dbClient.addParameter("name", name); dbClient.addParameter("desc", description); dbClient.addParameter("ownerid", creator.GetHabbo().Id); dbClient.addParameter("roomid", roomID); dbClient.addParameter("color1", color1); dbClient.addParameter("color2", color2); dbClient.addParameter("badge", Group.ConvertBadgeForDatabase(badgeData)); dbClient.addParameter("date", createTime); groupID = (int)dbClient.insertQuery(); // Create membership for owner dbClient.setQuery("INSERT INTO group_memberships VALUES(@id,@groupid,3,1)"); dbClient.addParameter("id", creator.GetHabbo().Id); dbClient.addParameter("groupid", groupID); dbClient.runQuery(); // Update room dbClient.runFastQuery("UPDATE rooms SET groups_id = " + groupID + " WHERE id = " + roomID); } Group group = new Group() { ID = groupID, Name = name, Description = description, RoomID = roomID, ColorID1 = color1, ColorID2 = color2, BadgeData = badgeData, DateCreated = createTime }; group.Members.Add(creator.GetHabbo().Id); string s = group.BadgeCode; return group; }
internal static Boolean NeedsUpdate(GameClient Client) { try { if (Client.GetHabbo() == null) return false; Double PassedMins = (FirewindEnvironment.GetUnixTimestamp() - Client.GetHabbo().LastActivityPointsUpdate) / 60; if (PassedMins >= RCV_EVERY_MINS) return true; } catch (Exception e) { Logging.HandleException(e, "PixelManager.NeedsUpdate"); } return false; }
internal ServerMessage Serialize(GameClient Session) { ServerMessage Message = new ServerMessage(Outgoing.RoomEvent); Message.AppendString(Session.GetHabbo().Id + ""); Message.AppendString(Session.GetHabbo().Username); Message.AppendString(RoomId + ""); Message.AppendInt32(Category); Message.AppendString(Name); Message.AppendString(Description); Message.AppendString(StartTime); Message.AppendInt32(Tags.Count); foreach (string Tag in Tags.ToArray()) { Message.AppendString(Tag); } return Message; }
internal static void BanUser(GameClient ModSession, uint UserId, int Length, String Message) { GameClient Client = FirewindEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo().Id == ModSession.GetHabbo().Id) { return; } if (Client.GetHabbo().Rank >= ModSession.GetHabbo().Rank) { ModSession.SendNotif(LanguageLocale.GetValue("moderation.ban.missingrank")); return; } Double dLength = Length; FirewindEnvironment.GetGame().GetBanManager().BanUser(Client, ModSession.GetHabbo().Username, dLength, Message, false); }
internal static ChatMessage CreateMessage(string message, GameClient user, Room room) { int userID = user.GetHabbo().Id; string username = user.GetHabbo().Username; uint roomID = room.RoomId; string roomName = room.Name; DateTime timeSpoken = DateTime.Now; ChatMessage chatMessage = new ChatMessage(userID, username, roomID, roomName, message, timeSpoken); using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("INSERT into `chatlogs`(`user_id`, `room_id`, `hour`, `minute`, `full_date`, `timestamp`, `message`, `user_name`) VALUES(" + userID + ", " + roomID + ", " + timeSpoken.Hour + ", " + timeSpoken.Minute + ", '" + timeSpoken.ToString() + "', " + FirewindEnvironment.GetUnixTimestamp() + ", @msg, '" + user.GetHabbo().Username + "');"); dbClient.addParameter("msg", message); dbClient.runQuery(); } return chatMessage; }
internal void ActivateQuest(GameClient Session, ClientMessage Message) { Quest Quest = GetQuest(Message.ReadUInt32()); if (Quest == null) { return; } using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + Quest.Id + ", 0)"); dbClient.runFastQuery("UPDATE users SET currentquestid = " + Quest.Id + " WHERE id = " + Session.GetHabbo().Id); } Session.GetHabbo().CurrentQuestId = Quest.Id; GetList(Session, null); Session.SendMessage(QuestStartedComposer.Compose(Session, Quest)); }
public RoomUser(int virtualID, GameClient client, Room room) : base(virtualID, room) { // Base constructor already called this.Client = client; Habbo habbo = client.GetHabbo(); this.ID = habbo.Id; this.Name = habbo.Username; this.Figure = habbo.Look; this.Motto = habbo.Motto; }
internal static void TryRedeemVoucher(GameClient Session, string Code) { if (!IsValidCode(Code)) { ServerMessage Error = new ServerMessage(Outgoing.VoucherRedeemError); Error.AppendRawInt32(0); // 0=invalid code,1=technical issue,3=redeem at webpage Session.SendMessage(Error); return; } int Value = GetVoucherValue(Code); TryDeleteVoucher(Code); Session.GetHabbo().Credits += Value; Session.GetHabbo().UpdateCreditsBalance(); ServerMessage message = new ServerMessage(Outgoing.VoucherRedeemOk); message.AppendString("Credits"); // productName message.AppendString("Awesome"); // productDescription Session.SendMessage(message); }
internal override bool OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null) return false; RoomUser interactingUser = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); Point userCoord = interactingUser.Coordinate; Point ballCoord = Item.Coordinate; int differenceX = userCoord.X - ballCoord.X; int differenceY = userCoord.Y - ballCoord.Y; if (differenceX <= 1 && differenceX >= -1 && differenceY <= 1 && differenceY >= -1) { differenceX = differenceX * 2; differenceY = differenceY * 2; int newX = Item.GetX + differenceX; int newY = Item.GetY + differenceY; Item.GetRoom().GetSoccer().MoveBall(Item, Session, newX, newY); interactingUser.MoveTo(ballCoord); } else //if (differenceX == 2 || differenceY == 2 || differenceY == - 2 || differenceX == -2) { Item.interactingBallUser = Session.GetHabbo().Id; differenceX = differenceX * (-1); differenceY = differenceY * (-1); if (differenceX > 1) differenceX = 1; else if (differenceX < -1) differenceX = -1; if (differenceY > 1) differenceY = 1; else if (differenceY < -1) differenceY = -1; int newX = Item.GetX + differenceX; int newY = Item.GetY + differenceY; interactingUser.MoveTo(new Point(newX, newY)); } return true; }
internal static Habbo getHabboForId(uint UserId) { try { HabboHotel.GameClients.GameClient game = GetGame().GetClientManager().GetClientByUserID(UserId); if (game != null) { Habbo noUser = game.GetHabbo(); if (noUser != null && noUser.Id > 0) { if (usersCached.ContainsKey(UserId)) { usersCached.Remove(UserId); } return(noUser); } } else { if (usersCached.ContainsKey(UserId)) { return(usersCached[UserId]); } else { UserData data = UserDataFactory.GetUserData((int)UserId); Habbo Generated = data.user; if (Generated != null) { Generated.InitInformation(data); usersCached.Add(UserId, Generated); return(Generated); } } } return(null); } catch { return(null); } }
internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements) { ServerMessage Message = new ServerMessage(Outgoing.AchievementList); //436 Message.AppendInt32(Achievements.Count); foreach (Achievement Achievement in Achievements) { UserAchievement UserData = Session.GetHabbo().GetAchievementData(Achievement.GroupName); int TargetLevel = (UserData != null ? UserData.Level + 1 : 1); int TotalLevels = Achievement.Levels.Count; if (TargetLevel > TotalLevels) { TargetLevel = TotalLevels; } AchievementLevel TargetLevelData = Achievement.Levels[TargetLevel]; Message.AppendUInt(Achievement.Id); // Unknown (ID?) Message.AppendInt32(TargetLevel); // Target level Message.AppendString(Achievement.GroupName + TargetLevel); // Target name/desc/badge Message.AppendInt32(TargetLevelData.Requirement); // Progress req/target Message.AppendInt32(TargetLevelData.RewardPixels); // Pixel reward Message.AppendInt32(TargetLevelData.RewardPoints); // Unknown(??) Message.AppendInt32(0); Message.AppendInt32(UserData != null ? UserData.Progress : 0); // Current progress Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false); // Set 100% completed(??) Message.AppendString(Achievement.Category); // Category Message.AppendString(String.Empty); Message.AppendInt32(TotalLevels); // Total amount of levels Message.AppendInt32(0); } Message.AppendBoolean(false); Message.AppendBoolean(false); return Message; }
// PENDING REWRITE internal void BanUser(GameClient Client, string Moderator, Double LengthSeconds, string Reason, Boolean IpBan) { ModerationBanType Type = ModerationBanType.USERNAME; string Var = Client.GetHabbo().Username; string RawVar = "user"; Double Expire = FirewindEnvironment.GetUnixTimestamp() + LengthSeconds; if (IpBan) { Type = ModerationBanType.IP; Var = Client.GetConnection().getIp(); RawVar = "ip"; } ModerationBan ban = new ModerationBan(Type, Var, Reason, Expire); if (ban.Type == ModerationBanType.IP) { if (bannedIPs.ContainsKey(Var)) bannedIPs[Var] = ban; else bannedIPs.Add(Var, ban); } else { if (bannedUsernames.ContainsKey(Var)) bannedUsernames[Var] = ban; else bannedUsernames.Add(Var, ban); } using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("INSERT INTO bans (bantype,value,reason,expire,added_by,added_date) VALUES (@rawvar,@var,@reason,'" + Expire + "',@mod,'" + DateTime.Now.ToLongDateString() + "')"); dbClient.addParameter("rawvar", RawVar); dbClient.addParameter("var", Var); dbClient.addParameter("reason", Reason); dbClient.addParameter("mod", Moderator); dbClient.runQuery(); } if (IpBan) { DataTable UsersAffected = null; using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT id FROM users WHERE ip_last = @var"); dbClient.addParameter("var", Var); UsersAffected = dbClient.getTable(); } if (UsersAffected != null) { using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { foreach (DataRow Row in UsersAffected.Rows) { dbClient.runFastQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = " + Convert.ToUInt32(Row["id"])); } } } BanUser(Client, Moderator, LengthSeconds, Reason, false); } else { using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = " + Client.GetHabbo().Id); } Client.SendBanMessage(LanguageLocale.GetValue("moderation.banned") + " " + Reason); Client.Disconnect(); } }
internal static void SerializeQuest(ServerMessage Message, GameClient Session, Quest Quest, string Category) { int AmountInCat = FirewindEnvironment.GetGame().GetQuestManager().GetAmountOfQuestsInCategory(Category); int Number = Quest == null ? AmountInCat : Quest.Number - 1; int UserProgress = Quest == null ? 0 : Session.GetHabbo().GetQuestProgress(Quest.Id); if (Quest != null && Quest.IsCompleted(UserProgress)) { Number++; } Message.AppendString(Category); Message.AppendInt32(Number); // Quest progress in this cat Message.AppendInt32(AmountInCat); // Total quests in this cat Message.AppendInt32((int)QuestRewardType.Pixels); // Reward type (1 = Snowflakes, 2 = Love hearts, 3 = Pixels, 4 = Seashells, everything else is pixels Message.AppendUInt(Quest == null ? 0 : Quest.Id); // Quest id Message.AppendBoolean(Quest == null ? false : Session.GetHabbo().CurrentQuestId == Quest.Id); // Quest started Message.AppendString(Quest == null ? string.Empty : Quest.ActionName); Message.AppendString(Quest == null ? string.Empty : Quest.DataBit); Message.AppendInt32(Quest == null ? 0 : Quest.Reward); Message.AppendString(Quest == null ? string.Empty : Quest.Name); Message.AppendInt32(UserProgress); // Current progress Message.AppendUInt(Quest == null ? 0 : Quest.GoalData); // Target progress Message.AppendInt32(0); // "Next quest available countdown" in seconds }
internal static ServerMessage Compose(GameClient Session, List<Quest> Quests, bool Send) { Dictionary<string, int> UserQuestGoals = new Dictionary<string, int>(); Dictionary<string, Quest> UserQuests = new Dictionary<string, Quest>(); foreach (Quest Quest in Quests) { if (!UserQuestGoals.ContainsKey(Quest.Category)) { UserQuestGoals.Add(Quest.Category, 1); UserQuests.Add(Quest.Category, null); } if (Quest.Number >= UserQuestGoals[Quest.Category]) { int UserProgress = Session.GetHabbo().GetQuestProgress(Quest.Id); if (Session.GetHabbo().CurrentQuestId != Quest.Id && UserProgress >= Quest.GoalData) { UserQuestGoals[Quest.Category] = Quest.Number + 1; } } } foreach (Quest Quest in Quests) { foreach (KeyValuePair<string, int> Goal in UserQuestGoals) { if (Quest.Category == Goal.Key && Quest.Number == Goal.Value) { UserQuests[Goal.Key] = Quest; break; } } } ServerMessage Message = new ServerMessage(800); Message.AppendInt32(UserQuests.Count); // Active ones first foreach (KeyValuePair<string, Quest> UserQuest in UserQuests) { if (UserQuest.Value == null) { continue; } SerializeQuest(Message, Session, UserQuest.Value, UserQuest.Key); } // Dead ones last foreach (KeyValuePair<string, Quest> UserQuest in UserQuests) { if (UserQuest.Value != null) { continue; } SerializeQuest(Message, Session, UserQuest.Value, UserQuest.Key); } Message.AppendBoolean(Send); return Message; }
private static void RemoveFromPlaylist(GameClient Session, ClientMessage Message) { Room Instance = Session.GetHabbo().CurrentRoom; if (Instance == null || !Instance.GotMusicController() || !Instance.CheckRights(Session, true)) { return; } SongItem TakenItem = Instance.GetRoomMusicController().RemoveDisk(Message.ReadInt32()); // playlist will skip to the next item automatically if it has to if (TakenItem == null) { return; } Session.GetHabbo().GetInventoryComponent().AddNewItem(TakenItem.itemID, TakenItem.baseItem.ItemId, new StringData(TakenItem.songID.ToString()), 0, true, true); Session.SendMessage(JukeboxComposer.Compose(Session)); Session.SendMessage(JukeboxComposer.Compose(Instance.GetRoomMusicController().PlaylistCapacity, Instance.GetRoomMusicController().Playlist.Values.ToList())); }
private void GroupManager_OnLoggedInClient(GameClient client) { // This is called when an user sucessfully authed. Habbo user = client.GetHabbo(); if (user == null || user.Groups.Count == 0) return; client.GetConnection().connectionChanged += GroupManager_connectionChanged; foreach (int groupID in user.Groups) { if (GetGroup(groupID) == null) return; // Add one more count to reference counter if (!_groupReferences.ContainsKey(groupID)) _groupReferences.Add(groupID, 1); else _groupReferences[groupID]++; } }
internal Boolean CheckRights(GameClient Session, bool RequireOwnership) { try { if (Session == null || Session.GetHabbo() == null) return false; if (Session.GetHabbo().Username == Owner) { return true; } if (Session.GetHabbo().HasFuse("fuse_admin") || Session.GetHabbo().HasFuse("fuse_any_room_controller")) { return true; } if (!RequireOwnership) { if (Session.GetHabbo().HasFuse("fuse_any_room_rights")) return true; if (UsersWithRights.Contains(Session.GetHabbo().Id)) return true; if (EveryoneGotRights) return true; } } catch (Exception e) { Logging.HandleException(e, "Room.CheckRights"); } return false; }
internal override bool OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { Room Room = Session.GetHabbo().CurrentRoom; RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); MapStuffData data = (MapStuffData)Item.data; string figure = data.Data["FIGURE"]; string gender = data.Data["GENDER"]; // We gotta keep our skin and headgear! string filteredLook = ""; string[] sp = Session.GetHabbo().Look.Split('.'); foreach (string s in sp) { if ((s.StartsWith("hd") || s.StartsWith("ha") || s.StartsWith("he") || s.StartsWith("fa") || s.StartsWith("ea") || s.StartsWith("hr"))) { filteredLook += s + "."; } } filteredLook += figure; using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("UPDATE users SET gender = @gender, look = @look WHERE id = @id"); dbClient.addParameter("id", Session.GetHabbo().Id); dbClient.addParameter("gender", gender); dbClient.addParameter("look", filteredLook); dbClient.runQuery(); } Session.GetHabbo().Look = filteredLook; Session.GetHabbo().Gender = gender; Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateUserInformation); Session.GetMessageHandler().GetResponse().AppendInt32(-1); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Look); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Gender.ToLower()); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Session.GetHabbo().Motto); Session.GetMessageHandler().GetResponse().AppendInt32(Session.GetHabbo().AchievementPoints); Session.GetMessageHandler().SendResponse(); ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation); RoomUpdate.AppendInt32(User.VirtualId); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower()); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto); RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints); Room.SendMessage(RoomUpdate); return true; }
internal override bool OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null || Session.GetHabbo() == null || Item.InteractingUser > 0) return false; string username = Session.GetHabbo().Username; RoomUser user = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(username); user.GoalX = Item.GetX; user.GoalY = Item.GetY; if (user.team != Team.none) user.throwBallAtGoal = true; //Logging.WriteLine(Request.ToString()); //int oldValue = 0; //if (!string.IsNullOrEmpty((string)Item.data.GetData())) //{ // try // { // oldValue = int.Parse((string)Item.data.GetData()); // } // catch { } //} //if (oldValue == 0) // oldValue = 1000; // //oldValue = 11000; //else // oldValue = 0; //Item.data = new StringData(oldValue.ToString()); //Item.UpdateState(); return true; }
internal int GetRightsLevel(GameClient Session) { try { if (Session == null || Session.GetHabbo() == null) return 0; if (Session.GetHabbo().Username == Owner) { return 4; } if (Session.GetHabbo().HasFuse("fuse_admin") || Session.GetHabbo().HasFuse("fuse_any_room_controller")) { return 4; } if (Session.GetHabbo().HasFuse("fuse_any_room_rights")) return 3; if (UsersWithRights.Contains(Session.GetHabbo().Id)) return 1; if (EveryoneGotRights) return 1; } catch (Exception e) { Logging.HandleException(e, "GetRightsLevel"); } return 0; }
internal bool ProgressUserAchievement(GameClient Session, string AchievementGroup, int ProgressAmount) { if (!Achievements.ContainsKey(AchievementGroup)) { return false; } Achievement AchievementData = null; AchievementData = Achievements[AchievementGroup]; UserAchievement UserData = Session.GetHabbo().GetAchievementData(AchievementGroup); if (UserData == null) { UserData = new UserAchievement(AchievementGroup, 0, 0); Session.GetHabbo().Achievements.Add(AchievementGroup, UserData); } int TotalLevels = AchievementData.Levels.Count; if (UserData != null && UserData.Level == TotalLevels) { return false; // done, no more. } int TargetLevel = (UserData != null ? UserData.Level + 1 : 1); if (TargetLevel > TotalLevels) { TargetLevel = TotalLevels; } AchievementLevel TargetLevelData = AchievementData.Levels[TargetLevel]; int NewProgress = (UserData != null ? UserData.Progress + ProgressAmount : ProgressAmount); int NewLevel = (UserData != null ? UserData.Level : 0); int NewTarget = NewLevel + 1; if (NewTarget > TotalLevels) { NewTarget = TotalLevels; } if (NewProgress >= TargetLevelData.Requirement) { NewLevel++; NewTarget++; int ProgressRemainder = NewProgress - TargetLevelData.Requirement; NewProgress = 0; Session.GetHabbo().GetBadgeComponent().GiveBadge(AchievementGroup + TargetLevel, true); if (NewTarget > TotalLevels) { NewTarget = TotalLevels; } Session.GetHabbo().ActivityPoints += TargetLevelData.RewardPixels; Session.GetHabbo().UpdateActivityPointsBalance(false); Session.SendMessage(AchievementUnlockedComposer.Compose(AchievementData, TargetLevel, TargetLevelData.RewardPoints, TargetLevelData.RewardPixels)); using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("REPLACE INTO user_achievement VALUES (" + Session.GetHabbo().Id + ", @group, " + NewLevel + ", " + NewProgress + ")"); dbClient.addParameter("group", AchievementGroup); dbClient.runQuery(); } UserData.Level = NewLevel; UserData.Progress = NewProgress; Session.GetHabbo().AchievementPoints += TargetLevelData.RewardPoints; Session.GetHabbo().ActivityPoints += TargetLevelData.RewardPixels; Session.GetHabbo().UpdateActivityPointsBalance(false); Session.SendMessage(AchievementScoreUpdateComposer.Compose(Session.GetHabbo().AchievementPoints)); AchievementLevel NewLevelData = AchievementData.Levels[NewTarget]; Session.SendMessage(AchievementProgressComposer.Compose(AchievementData, NewTarget, NewLevelData, TotalLevels, Session.GetHabbo().GetAchievementData(AchievementGroup))); return true; } else { UserData.Level = NewLevel; UserData.Progress = NewProgress; using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("REPLACE INTO user_achievement VALUES (" + Session.GetHabbo().Id + ", @group, " + NewLevel + ", " + NewProgress + ")"); dbClient.addParameter("group", AchievementGroup); dbClient.runQuery(); } Session.SendMessage(AchievementProgressComposer.Compose(AchievementData, TargetLevel, TargetLevelData, TotalLevels, Session.GetHabbo().GetAchievementData(AchievementGroup))); } return false; }
internal static ServerMessage Compose(GameClient Session) { return Session.GetHabbo().GetInventoryComponent().SerializeMusicDiscs(); }
internal void UpdateUser(GameClient client) { this.client = client; if (client != null && client.GetHabbo() != null) currentRoom = client.GetHabbo().CurrentRoom; }
internal override bool OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null) return false; RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return false; } if (User.Coordinate != Item.SquareInFront && User.CanWalk) { User.MoveTo(Item.SquareInFront); return false; } // This check works for some reason if (!Item.GetRoom().GetGameMap().itemCanBePlacedHere(Item.SquareBehind.X, Item.SquareBehind.Y)) { return false; } if (Item.InteractingUser == 0) { Item.InteractingUser = User.HabboId; User.CanWalk = false; if (User.IsWalking && (User.GoalX != Item.SquareInFront.X || User.GoalY != Item.SquareInFront.Y)) { User.ClearMovement(true); } ServerMessage update = new ServerMessage(Outgoing.OneWayDoorStatus); update.AppendUInt(Item.Id); // id update.AppendInt32(1); // status Item.GetRoom().SendMessage(update); User.AllowOverride = true; User.MoveTo(Item.SquareBehind); Item.ReqUpdate(4, true); return true; } return false; }
private static void GetPlaylist(GameClient Session, ClientMessage Message) { Room Instance = Session.GetHabbo().CurrentRoom; if (Instance == null || !Instance.CheckRights(Session, true)) { return; } Session.SendMessage(JukeboxComposer.Compose(Instance.GetRoomMusicController().PlaylistCapacity, Instance.GetRoomMusicController().Playlist.Values.ToList())); }