void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Item.ExtraData != "1" && Item.GetBaseItem().VendingIds.Count >= 1 && Item.InteractingUser == 0 && Session != null) { RoomUser user = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (user == null) return; if (!Gamemap.TilesTouching(user.X, user.Y, Item.GetX, Item.GetY)) { user.MoveTo(Item.SquareInFront); return; } Item.InteractingUser = Session.GetHabbo().Id; //user.ClearMovement(true); user.SetRot(Rotation.Calculate(user.X, user.Y, Item.GetX, Item.GetY), false); Item.ReqUpdate(2, true); Item.ExtraData = "1"; Item.UpdateState(false, true); } }
internal bool UserGotAuthorization(GameClient session) { foreach (string subsciption in this.clubsAllowed) { if (!session.GetHabboDataContainer().GetSubscriptionManager().HasSubscription(subsciption) && subsciption != string.Empty) return false; } 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 = ButterflyEnvironment.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 = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE user_info SET cautions = cautions + 1 WHERE user_id = " + UserId + ""); } } }
internal static void GivePixels(GameClient Client) { Double Timestamp = ButterflyEnvironment.GetUnixTimestamp(); Client.GetHabbo().LastActivityPointsUpdate = Timestamp; Client.GetHabbo().ActivityPoints += RCV_AMOUNT; Client.GetHabbo().UpdateActivityPointsBalance(0); }
internal static void GivePixels(GameClient Client, int amount) { Double Timestamp = ButterflyEnvironment.GetUnixTimestamp(); Client.GetHabbo().LastActivityPointsUpdate = Timestamp; Client.GetHabbo().ActivityPoints += amount; Client.GetHabboDataContainer().UpdateActivityPointsBalance(); }
internal void ProgressUserQuest(GameClient Session, QuestType QuestType, uint EventData = 0) { if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentQuestId <= 0) return; Quest UserQuest = GetQuest(Session.GetHabbo().CurrentQuestId); if (UserQuest == null || UserQuest.GoalType != QuestType) return; int CurrentProgress = Session.GetHabbo().GetQuestProgress(UserQuest.Id); int NewProgress = CurrentProgress; bool PassQuest = false; switch (QuestType) { default: NewProgress++; if (NewProgress >= UserQuest.GoalData) PassQuest = true; break; case QuestType.EXPLORE_FIND_ITEM: if (EventData != UserQuest.GoalData) return; NewProgress = (int)UserQuest.GoalData; PassQuest = true; break; } using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE user_quests SET progress = " + NewProgress + " WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id = " + UserQuest.Id); if (PassQuest) dbClient.runFastQuery("UPDATE users SET currentquestid = 0 WHERE id = " + Session.GetHabbo().Id); } Session.GetHabbo().quests[Session.GetHabbo().CurrentQuestId] = NewProgress; Session.SendMessage(QuestStartedComposer.Compose(Session, UserQuest)); if (PassQuest) { Session.GetHabbo().CurrentQuestId = 0; Session.GetHabbo().LastCompleted = UserQuest.Id; Session.SendMessage(QuestCompletedComposer.Compose(Session, UserQuest)); Session.GetHabbo().ActivityPoints += UserQuest.Reward; Session.GetHabboDataContainer().UpdateActivityPointsBalance(); GetList(Session, null); } }
internal static ChatMessage CreateMessage(string message, GameClient user, Room room) { uint 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); return chatMessage; }
private static void SendChatMessage(GameClient GetClient, string Message, int Type) { ServerMessage TellMsg = PacketHandelingManager.GetRecycledItem(OutputCode.WhisperMessageEvent); TellMsg.AddInt32(GetClient.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(GetClient.GetHabbo().Username).VirtualId); TellMsg.AddString(Message); TellMsg.AddInt32(0); TellMsg.AddInt32(0); TellMsg.AddInt32(Type); TellMsg.AddInt32(0); GetClient.SendMessage(TellMsg); }
void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null || Session.GetHabbo() == null || Item.InteractingUser > 0) return; 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; }
void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null) return; 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)); } }
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.PopWiredUInt()); 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())); }
void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { RoomUser User = null; if (Session != null) User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) return; if (Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y)) { if (Item.ExtraData != "-1") { if (Request == -1) { Item.ExtraData = "0"; Item.UpdateState(); } else { Item.ExtraData = "-1"; Item.UpdateState(false, true); Item.ReqUpdate(4, true); } } } else { User.MoveTo(Item.SquareInFront); } }
internal static void SellItem(GameClient Session, uint ItemId, int SellingPrice) { UserItem item = Session.GetHabboDataContainer().GetInventoryComponent().GetItem(ItemId); if (item == null || SellingPrice > 10000 || !CanSellItem(item)) { ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.MarketplaceMakeOfferResult); message.AddInt32(0); Session.SendMessage(message); } else { int comissionPrice = CalculateComissionPrice(SellingPrice); int totalPrice = SellingPrice + comissionPrice; int itemType = (item.GetBaseItem().Type == 'i') ? 2 : 1; using (IQueryAdapter dbClient = ButterflyEnvironment.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.BaseItemID + "," + Session.GetHabbo().Id + "," + SellingPrice + "," + totalPrice + ",@public_name," + item.GetBaseItem().SpriteId + "," + itemType + "," + ButterflyEnvironment.GetUnixTimestamp() + ",@extra_data)"); dbClient.addParameter("public_name", item.GetBaseItem().PublicName); dbClient.addParameter("extra_data", item.extraData); dbClient.runQuery(); } Session.GetHabboDataContainer().GetInventoryComponent().RemoveItem(ItemId, true); Session.GetHabboDataContainer().GetInventoryComponent().RunDBUpdate(); ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.MarketplaceMakeOfferResult); message.AddInt32(1); Session.SendMessage(message); } }
public AdminRoomUserMessageArgs(GameClient session) { this.session = session; this.RoomUser = null; this.allowsExecution = false; this.Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(session.GetHabbo().CurrentRoomId); if (Room != null) { this.allowsExecution = Room.CheckRights(session, true); this.RoomUser = Room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id); } if (Room == null || RoomUser == null || !allowsExecution) allowsExecution = false; }
internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements) { ServerMessage Message = new ServerMessage(436); //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.AppendStringWithBreak(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(UserData != null ? UserData.Progress : 0); // Current progress Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false); // Set 100% completed(??) Message.AppendStringWithBreak(Achievement.Category); // Category Message.AppendInt32(TotalLevels); // Total amount of levels } return Message; }
void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { RoomUser User = null; if (Session != null) User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) return; if (!Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y)) { return; } int Modes = (Item.GetBaseItem().Modes - 1); if (Modes < 0) { Modes = 0; } if (Session != null) ButterflyEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_SWITCH); if (!UserHasRights) { return; } if (Modes == 0) { return; } int currentMode = 0; int newMode = 0; try { currentMode = int.Parse(Item.ExtraData); } catch // (Exception e) { //Logging.HandleException(e, "InteractorGenericSwitch.OnTrigger"); } if (currentMode <= 0) { newMode = 1; } else if (currentMode >= Modes) { newMode = 0; } else { newMode = currentMode + 1; } Item.ExtraData = newMode.ToString(); Item.UpdateState(); }
internal static void SerializeQuest(ServerMessage Message, GameClient Session, Quest Quest, string Category) { int AmountInCat = ButterflyEnvironment.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.AddString(Category); Message.AddInt32(Number); // Quest progress in this cat Message.AddInt32(AmountInCat); // Total quests in this cat Message.AddInt32((int)QuestRewardType.Pixels); // Reward type (1 = Snowflakes, 2 = Love hearts, 3 = Pixels, 4 = Seashells, everything else is pixels Message.AddUInt32(Quest == null ? 0 : Quest.Id); // Quest id Message.AddBoolean(Quest == null ? false : Session.GetHabbo().CurrentQuestId == Quest.Id); // Quest started Message.AddString(Quest == null ? string.Empty : Quest.ActionName); Message.AddString(Quest == null ? string.Empty : Quest.DataBit); Message.AddInt32(Quest == null ? 0 : Quest.Reward); Message.AddString(Quest == null ? string.Empty : Quest.Name); Message.AddInt32(UserProgress); // Current progress Message.AddUInt32(Quest == null ? 0 : Quest.GoalData); // Target progress Message.AddInt32(0); // "Next quest available countdown" in seconds Message.AddString(string.Empty); //set_kuurna Message.AddString(string.Empty); // MAIN_CHAIN Message.AddBoolean(true); // Euh? }
public bool CanBeTriggered(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { string[] extraData = Item.ExtraData.Split(':'); uint groupID = TextHandling.ParseUInt32(extraData[0]); GroupData group = ButterflyEnvironment.GetGame().GetGroupManager().GetGroup(groupID); return (group != null && group.IsMember(Session.GetHabbo().Id)); }
internal static Boolean NeedsUpdate(GameClient Client) { try { if (Client.GetHabbo() == null) return false; Double PassedMins = (ButterflyEnvironment.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(370); Message.AppendStringWithBreak(Session.GetHabbo().Id + ""); Message.AppendStringWithBreak(Session.GetHabbo().Username); Message.AppendStringWithBreak(RoomId + ""); Message.AppendInt32(Category); Message.AppendStringWithBreak(Name); Message.AppendStringWithBreak(Description); Message.AppendStringWithBreak(StartTime); Message.AppendInt32(Tags.Count); foreach (string Tag in Tags.ToArray()) { Message.AppendStringWithBreak(Tag); } return Message; }
internal static void TryRedeemVoucher(GameClient Session, string Code) { if (!IsValidCode(Code)) { ServerMessage Error = new ServerMessage(213); Error.AppendRawInt32(1); Session.SendMessage(Error); return; } int Value = GetVoucherValue(Code); TryDeleteVoucher(Code); Session.GetHabbo().Credits += Value; Session.GetHabbo().UpdateCreditsBalance(); Session.SendMessage(new ServerMessage(212)); }
internal static void BanUser(GameClient ModSession, uint UserId, int Length, String Message) { GameClient Client = ButterflyEnvironment.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; ButterflyEnvironment.GetGame().GetBanManager().BanUser(Client, ModSession.GetHabbo().Username, dLength, Message, false); }
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 = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == DatabaseType.MSSQL) dbClient.setQuery("INSERT INTO catalog_marketplace_offers (item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data,state) VALUES (" + Item.BaseItem + "," + Session.GetHabbo().Id + "," + SellingPrice + "," + TotalPrice + ",@public_name," + Item.GetBaseItem().SpriteId + "," + ItemType + "," + ButterflyEnvironment.GetUnixTimestamp() + ",@extra_data, '1')"); else 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 + "," + ButterflyEnvironment.GetUnixTimestamp() + ",@extra_data)"); dbClient.addParameter("public_name", Item.GetBaseItem().PublicName); dbClient.addParameter("extra_data", Item.ExtraData); 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(); }
public bool CanBeTriggered(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { RoomUser User = null; if (Session != null) User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) return false; if (Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y)) { return true; } return false; }
void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null) return; RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } if (User.Coordinate != Item.SquareInFront && User.CanWalk) { User.MoveTo(Item.SquareInFront); return; } if (!Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, User.AllowOverride)) { return; } string[] extraData = Item.ExtraData.Split(':'); uint groupID = TextHandling.ParseUInt32(extraData[0]); GroupData group = ButterflyEnvironment.GetGame().GetGroupManager().GetGroup(groupID); if (group == null || !group.IsMember(Session.GetHabbo().Id)) return; 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); } SetExtraData("1", Item); Item.UpdateState(); User.AllowOverride = true; User.MoveTo(Item.Coordinate); Item.ReqUpdate(4, true); } }
void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null) return; RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } if (User.Coordinate != Item.SquareInFront && User.CanWalk) { User.MoveTo(Item.SquareInFront); return; } if (!Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, User.AllowOverride)) { return; } 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); } User.AllowOverride = true; User.MoveTo(Item.Coordinate); Item.ReqUpdate(4, true); } }
internal void ActivateQuest(GameClient Session, ClientMessage Message) { Quest Quest = GetQuest(Message.PopWiredUInt()); if (Quest == null) { return; } using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == Database_Manager.Database.DatabaseType.MySQL) dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + Quest.Id + ", 0)"); else dbClient.runFastQuery("IF NOT EXISTS (SELECT user_id FROM user_quests WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id = " + Quest.Id + ") " + "INSERT 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)); }
internal static void TryRedeemVoucher(GameClient Session, string Code) { if (!IsValidCode(Code)) { ServerMessage Error = PacketHandelingManager.GetRecycledItem(OutputCode.RedeeminvalidcodeErrorMessageComposer); Error.AddString("1"); Session.SendMessage(Error); return; } int Value = GetVoucherValue(Code); TryDeleteVoucher(Code); Session.GetHabbo().Diamonds += Value; Session.GetHabboDataContainer().StoreDiamondsNow(); Session.GetHabboDataContainer().SynchronizeDiamondBalance(); Session.GetHabboDataContainer().UpdateActivityPointsBalance(); ServerMessage Succesfull = PacketHandelingManager.GetRecycledItem(OutputCode.RedeemSuccesfullMessageComposer); Succesfull.AddInt32(0); Session.SendMessage(Succesfull); }
internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements) { ServerMessage Message = PacketHandelingManager.GetRecycledItem(OutputCode.AchievementsEvent); //436 Message.AddInt32(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.AddInt32((int)Achievement.Id); // Unknown (ID?) Message.AddInt32(TargetLevel); // Target level Message.AddString(Achievement.GroupName + TargetLevel); // Target name/desc/badge Message.AddInt32(TargetLevelData.Requirement); // Progress req/target Message.AddInt32(TargetLevelData.RewardPixels); // Pixel reward Message.AddInt32(TargetLevelData.RewardPoints); // Pixel reward Message.AddInt32(0); // Unknown(??) Message.AddInt32(UserData != null ? UserData.Progress : 0); // Current progress Message.AddBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false); // Set 100% completed(??) Message.AddString(Achievement.Category); // Category Message.AddString(string.Empty); // Category Message.AddInt32(TotalLevels); // Total amount of levels Message.AddInt32(0); } Message.AddString(string.Empty); return Message; }
internal static void BanUser(GameClient ModSession, uint UserId, int Length, String Message) { GameClient Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo().Id == ModSession.GetHabbo().Id) { return; } if (Client.GetHabbo().Rank >= ModSession.GetHabbo().Rank) { return; } Double dLength = Length; ButterflyEnvironment.GetGame().GetBanManager().BanUser(Client, ModSession.GetHabbo().Username, dLength, Message, false); }