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); } }
protected override void DoTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.WiredFurniActionEvent); message.AddBoolean(false); message.AddInt32(0); message.AddInt32(0); message.AddInt32(Item.GetBaseItem().SpriteId); message.AddUInt32(Item.Id); if (Item.wiredHandler != null) { Kick handler = (Kick)Item.wiredHandler; message.AddString(handler.message); } else { message.AddString(string.Empty); } message.AddInt32(0); message.AddInt32(0); message.AddInt32(7); message.AddInt32(0); message.AddInt32(0); message.AddString(string.Empty); Session.SendMessage(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)); }
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); }
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 void GetList(GameClient Session, ClientMessage Message) { Session.SendMessage(AchievementListComposer.Compose(Session, Achievements.Values.ToList())); }
private static void GetSongData(GameClient Session, ClientMessage Message) { int Amount = Message.PopWiredInt32(); List<SongData> Songs = new List<SongData>(); for (int i = 0; i < Amount; i++) { SongData Song = GetSong(Message.PopWiredUInt()); if (Song == null) continue; Songs.Add(Song); } Session.SendMessage(JukeboxComposer.Compose(Songs)); }
internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null || Item == null) return; if (!UserHasRights) return; switch (Item.GetBaseItem().InteractionType) { // TO-REVIEW #region Triggers case InteractionType.triggerwalkonfurni: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggergamestart: { ServerMessage Message = new ServerMessage(650); Message.AppendInt32(0); Message.AppendInt32(5); Message.AppendInt32(0); Message.AppendInt32(Item.GetBaseItem().SpriteId); Message.AppendInt32((int)Item.Id); Message.AppendStringWithBreak("HHPBH"); Session.SendMessage(Message); /* ServerMessage message = new ServerMessage( ); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message);*/ break; } case InteractionType.triggerroomenter: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(7); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggergameend: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggertimer: { int Counter1; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id "); dbClient.addParameter("id", (int)Item.Id); Counter1 = dbClient.getInteger(); } ServerMessage Message = new ServerMessage(650); Message.AppendInt32(0); Message.AppendInt32(5); Message.AppendInt32(0); Message.AppendInt32(Item.GetBaseItem().SpriteId); Message.AppendInt32((int)Item.Id); Message.AppendInt32(1); Message.AppendInt32(Counter1); Message.AppendStringWithBreak("IKH"); Message.AppendInt32(1); Message.AppendInt32(Counter1); Message.AppendStringWithBreak("IKH"); Session.SendMessage(Message); break; } case InteractionType.triggerwalkofffurni: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggeronusersay: { string Word = ""; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id "); dbClient.addParameter("id", (int)Item.Id); Word = dbClient.getString(); } ServerMessage Message = new ServerMessage(650); Message.AppendInt32(0); Message.AppendInt32(5); Message.AppendInt32(0); Message.AppendInt32(Item.GetBaseItem().SpriteId); Message.AppendInt32((int)Item.Id); Message.AppendStringWithBreak(Word); Session.SendMessage(Message); break; } case InteractionType.triggerscoreachieved: { int Counter1; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id "); dbClient.addParameter("id", (int)Item.Id); Counter1 = dbClient.getInteger(); } ServerMessage Message = new ServerMessage(650); Message.AppendInt32(0); Message.AppendInt32(5); Message.AppendInt32(0); Message.AppendInt32(Item.GetBaseItem().SpriteId); Message.AppendInt32((int)Item.Id); Message.AppendInt32(1); Message.AppendInt32(Counter1); Message.AppendStringWithBreak("HRBH"); Message.AppendInt32(1); Message.AppendInt32(Counter1); Message.AppendStringWithBreak("HRBH"); Session.SendMessage(Message); /* ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(true); message.AppendInt32(100); message.AppendBoolean(false); message.AppendInt32(10); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); * */ break; } case InteractionType.triggerrepeater: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(true); message.AppendInt32(10); message.AppendBoolean(false); message.AppendInt32(6); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggerstatechanged: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } #endregion #region Effects case InteractionType.actionposreset: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(true); message.AppendUInt(Item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); Session.SendMessage(message); break; } case InteractionType.actiongivescore: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendInt32(2); message.AppendInt32(5); message.AppendBoolean(true); message.AppendBoolean(false); message.AppendInt32(6); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionresettimer: { int Counter1; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id "); dbClient.addParameter("id", (int)Item.Id); Counter1 = dbClient.getInteger(); } if (Counter1 != 0) { ServerMessage Message = new ServerMessage(651); Message.AppendInt32(0); Message.AppendInt32(5); Message.AppendInt32(0); Message.AppendInt32(Item.GetBaseItem().SpriteId); Message.AppendInt32((int)Item.Id); #region TimeOn if (Counter1 == 1) { Message.AppendStringWithBreak("HHIIH"); Message.AppendStringWithBreak("HHIIH"); } else if (Counter1 == 2) { Message.AppendStringWithBreak("HHIJH"); Message.AppendStringWithBreak("HHIJH"); } else if (Counter1 == 3) { Message.AppendStringWithBreak("HHIKH"); Message.AppendStringWithBreak("HHIKH"); } else if (Counter1 == 4) { Message.AppendStringWithBreak("HHIPAH"); Message.AppendStringWithBreak("HHIPAH"); } else if (Counter1 == 5) { Message.AppendStringWithBreak("HHIQAH"); Message.AppendStringWithBreak("HHIQAH"); } else if (Counter1 == 6) { Message.AppendStringWithBreak("HHIRAH"); Message.AppendStringWithBreak("HHIRAH"); } else if (Counter1 == 7) { Message.AppendStringWithBreak("HHISAH"); Message.AppendStringWithBreak("HHISAH"); } else if (Counter1 == 8) { Message.AppendStringWithBreak("HHIPBH"); Message.AppendStringWithBreak("HHIPBH"); } else if (Counter1 == 9) { Message.AppendStringWithBreak("HHIQBH"); Message.AppendStringWithBreak("HHIQBH"); } else if (Counter1 == 10) { Message.AppendStringWithBreak("HHIRBH"); Message.AppendStringWithBreak("HHIRBH"); } else if (Counter1 == 11) { Message.AppendStringWithBreak("HHISBH"); Message.AppendStringWithBreak("HHISBH"); } else if (Counter1 == 12) { Message.AppendStringWithBreak("HHIPCH"); Message.AppendStringWithBreak("HHIPCH"); } else if (Counter1 == 13) { Message.AppendStringWithBreak("HHIQCH"); Message.AppendStringWithBreak("HHIQCH"); } else if (Counter1 == 14) { Message.AppendStringWithBreak("HHIRCH"); Message.AppendStringWithBreak("HHIRCH"); } else if (Counter1 == 15) { Message.AppendStringWithBreak("HHISCH"); Message.AppendStringWithBreak("HHISCH"); } else if (Counter1 == 16) { Message.AppendStringWithBreak("HHIPDH"); Message.AppendStringWithBreak("HHIPDH"); } else if (Counter1 == 17) { Message.AppendStringWithBreak("HHIQDH"); Message.AppendStringWithBreak("HHIQDH"); } else if (Counter1 == 18) { Message.AppendStringWithBreak("HHIRDHH"); Message.AppendStringWithBreak("HHIRDHH"); } else if (Counter1 == 19) { Message.AppendStringWithBreak("HHISDH"); Message.AppendStringWithBreak("HHISDH"); } else if (Counter1 == 20) { Message.AppendStringWithBreak("HHIPEH"); Message.AppendStringWithBreak("HHIPEH"); } else Message.AppendStringWithBreak("HHIHH"); Message.AppendStringWithBreak("HHIHH"); #endregion Session.SendMessage(Message); } else { ServerMessage Message = new ServerMessage(651); Message.AppendInt32(0); Message.AppendInt32(5); Message.AppendInt32(0); Message.AppendInt32(Item.GetBaseItem().SpriteId); Message.AppendInt32((int)Item.Id); Message.AppendStringWithBreak("HHIHH"); Message.AppendStringWithBreak("HHIHH"); Session.SendMessage(Message); } break; } case InteractionType.actiontogglestate: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionshowmessage: // Terminada Sabagaça { string MSGto = ""; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id "); dbClient.addParameter("id", (int)Item.Id); MSGto = dbClient.getString(); } ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendInt32((int)Item.Id); message.AppendStringWithBreak(MSGto); // 100% message.AppendStringWithBreak("HHSAHH"); Session.SendMessage(message); break; } case InteractionType.actionteleportto: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(5); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionmoverotate: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendInt32(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(4); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } #endregion #region Add-ons case InteractionType.specialrandom: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.specialunseen: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } #endregion #region Conditions case InteractionType.conditiontimelessthan: case InteractionType.conditiontimemorethan: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(true); message.AppendUInt(Item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); //message.AppendBoolean(false); //message.AppendBoolean(false); //message.AppendInt32(7); //message.AppendBoolean(false); //message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditionfurnishaveusers: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(true); message.AppendBoolean(false); message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditionstatepos: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(true); message.AppendBoolean(false); message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditiontriggeronfurni: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); Session.SendMessage(message); break; } //Unknown: //2 radio + 5 selct #endregion } }
internal void AddUserToRoom(GameClient Session, bool Spectator) { if (userCount >= room.UsersMax && Session.GetHabbo().Rank < 2) { ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.CantConnectMessageEvent); message.AddInt32(1); Session.SendMessage(message); message = PacketHandelingManager.GetRecycledItem(OutputCode.CloseConnectionMessageEvent); Session.SendMessage(message); return; } RoomUser user = new RoomUser(Session.GetHabbo().Id, Session.GetHabbo().Username, room.RoomId, primaryPrivateUserID++, room, Spectator); if (user == null || user.GetClient() == null) return; // added 01/10/15 user.userID = Session.GetHabbo().Id; string username = Session.GetHabbo().Username; uint userID = user.userID; if (usersByUsername.ContainsKey(username.ToLower())) usersByUsername.Remove(username.ToLower()); if (usersByUserID.ContainsKey(userID)) usersByUserID.Remove(userID); usersByUsername.Add(Session.GetHabbo().Username.ToLower(), user); usersByUserID.Add(Session.GetHabbo().Id, user); user.InternalRoomID = AddRoomUser(user); Session.GetHabbo().CurrentRoomId = room.RoomId; if (user.GetClient().GetHabbo().Rank == 3) user.GetClient().GetHabboDataContainer().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(178); }
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 void GetCurrentQuest(GameClient Session, ClientMessage Message) { if (!Session.GetHabbo().InRoom) return; Quest UserQuest = GetQuest(Session.GetHabbo().LastCompleted); Quest NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1); if (NextQuest == null) return; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ", 0)"); dbClient.runFastQuery("UPDATE users SET currentquestid = " + NextQuest.Id + " WHERE id = " + Session.GetHabbo().Id); } Session.GetHabbo().CurrentQuestId = NextQuest.Id; GetList(Session, null); Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest)); }
internal void GetList(GameClient Session, ClientMessage Message) { Session.SendMessage(QuestListComposer.Compose(Session, quests.Values.ToList(), (Message != null))); }
internal void SerializeRights(GameClient session) { if (CheckRights(session, true)) { ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.YouAreControllerMessageEvent); message.AddInt32(4); session.SendMessage(message); message = PacketHandelingManager.GetRecycledItem(OutputCode.YouAreOwnerMessageEvent); session.SendMessage(message); } else if (CheckRights(session)) { ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.YouAreControllerMessageEvent); message.AddInt32(1); session.SendMessage(message); } }
internal void SerializeRoomLayout(GameClient session) { ServerMessage message; if (Wallpaper != "0.0") { message = PacketHandelingManager.GetRecycledItem(OutputCode.RoomPropertyMessageEvent); message.AddString("wallpaper"); message.AddString(Wallpaper); session.SendMessage(message); } if (Floor != "0.0") { message = PacketHandelingManager.GetRecycledItem(OutputCode.RoomPropertyMessageEvent); message.AddString("floor"); message.AddString(Floor); session.SendMessage(message); } message = PacketHandelingManager.GetRecycledItem(OutputCode.RoomPropertyMessageEvent); message.AddString("landscape"); message.AddString(Landscape); session.SendMessage(message); }
internal void GiveBadge(int ID, string Badge, Boolean InDatabase, GameClient Session) { if (HasBadge(Badge)) return; if (InDatabase) { using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("INSERT INTO `user_badges` (user_id,badge_id,badge_slot) VALUES (" + UserId + ",@badge," + 0 + ")"); dbClient.addParameter("badge", Badge); dbClient.runQuery(); } } Badges.Add(new Badge(Badge, 0)); Session.SendMessage(Serialize()); UnseenBadge(ID, 1); }
protected override void DoTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if(UserHasRights) Session.SendMessage(ConditionPacketBuilder.GenerateMessage(Item)); }
internal void SerializeOpenTickets(GameClient client, uint userID) { foreach (SupportTicket ticket in Tickets) { if (ticket.Status == TicketStatus.OPEN || (ticket.Status == TicketStatus.PICKED && ticket.ModeratorId == userID)) client.SendMessage(ticket.Serialize()); } }
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.PopWiredInt32()); // 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, TakenItem.songID.ToString(), true, true); Session.SendMessage(JukeboxComposer.Compose(Session)); Session.SendMessage(JukeboxComposer.Compose(Instance.GetRoomMusicController().PlaylistCapacity, Instance.GetRoomMusicController().Playlist.Values.ToList())); }
internal void RemoveUserFromRoom(GameClient Session, Boolean NotifyClient, Boolean NotifyKick) { try { if (Session == null) return; if (Session.GetHabbo() == null) return; if (room == null) return; if (Session.GetHabboDataContainer().GetAvatarEffectsInventoryComponent() != null) Session.GetHabboDataContainer().GetAvatarEffectsInventoryComponent().OnRoomExit(); using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) dbClient.runFastQuery("UPDATE user_roomvisits SET exit_timestamp = '" + ButterflyEnvironment.GetUnixTimestamp() + "' WHERE room_id = '" + room.RoomId + "' AND user_id = '" + Session.GetHabbo().Id + "' ORDER BY entry_timestamp DESC LIMIT 1"); RoomUser User = GetRoomUserByHabbo(Session.GetHabbo().Id); if (NotifyClient) { if (NotifyKick) { ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.GenericErrorEvent); message.AddInt32(4008); Session.SendMessage(message); } ServerMessage message2 = PacketHandelingManager.GetRecycledItem(OutputCode.CloseConnectionMessageEvent); Session.SendMessage(message2); } if (User != null) { RemoveRoomUser(User); if (Session.GetHabbo() != null) { if (!User.IsSpectator) { if (User.CurrentItemEffect != ItemEffectType.None) { User.GetClient().GetHabboDataContainer().GetAvatarEffectsInventoryComponent().CurrentEffect = -1; } if (Session.GetHabbo() != null) { if (room.HasActiveTrade(Session.GetHabbo().Id)) room.TryStopTrade(Session.GetHabbo().Id); Session.GetHabbo().CurrentRoomId = 0; if (Session.GetHabboDataContainer().GetChatMessenger() != null) Session.GetHabboDataContainer().GetChatMessenger().OnStatusChanged(true); } DateTime Start = DateTime.Now; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { TimeSpan TimeUsed1 = DateTime.Now - Start; if (Session.GetHabbo() != null) dbClient.runFastQuery("UPDATE user_roomvisits SET exit_timestamp = '" + ButterflyEnvironment.GetUnixTimestamp() + "' WHERE room_id = '" + room.RoomId + "' AND user_id = '" + Session.GetHabbo().Id + "' ORDER BY exit_timestamp DESC LIMIT 1"); } } } usersByUserID.Remove(User.userID); if (Session.GetHabbo() != null) usersByUsername.Remove(Session.GetHabbo().Username.ToLower()); onGlobalMessageBroadcast -= User.SendMessage; User.Dispose(); } } catch (Exception e) { Logging.LogCriticalException("Error during removing user from room:" + e.ToString()); } }
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 = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == Database_Manager.Database.DatabaseType.MySQL) dbClient.setQuery("REPLACE INTO user_achievement VALUES (" + Session.GetHabbo().Id + ", @group, " + NewLevel + ", " + NewProgress + ")"); else { dbClient.setQuery("IF EXISTS (SELECT userid FROM user_achievement WHERE userid = " + Session.GetHabbo().Id + " AND group = @group) " + " UPDATE user_achievement SET level = " + NewLevel + ", progress = " + NewProgress + " WHERE userid = " + Session.GetHabbo().Id + " AND group = @group " + "ELSE" + " INSERT 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 = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == Database_Manager.Database.DatabaseType.MySQL) dbClient.setQuery("REPLACE INTO user_achievement VALUES (" + Session.GetHabbo().Id + ", @group, " + NewLevel + ", " + NewProgress + ")"); else { dbClient.setQuery("IF EXISTS (SELECT userid FROM user_achievement WHERE userid = " + Session.GetHabbo().Id + " AND group = @group) " + " UPDATE user_achievement SET level = " + NewLevel + ", progress = " + NewProgress + " WHERE userid = " + Session.GetHabbo().Id + " AND group = @group " + "ELSE" + " INSERT 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 void SerializeRoomRating(GameClient session) { ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.RoomRatingEvent); message.AddInt32(Score); message.AddBoolean(!(session.GetHabbo().RatedRooms.Contains(RoomId) || CheckRights(session, true))); session.SendMessage(message); }
internal void SerializeOpenTickets(GameClient client, uint userID) { ServerMessage Response = PacketHandelingManager.GetRecycledItem(OutputCode.IssueInfoMessageEvent); foreach (SupportTicket ticket in Tickets) { if (ticket.Status == TicketStatus.OPEN || (ticket.Status == TicketStatus.PICKED && ticket.ModeratorId == userID)) client.SendMessage(ticket.Serialize(Response)); } }
internal void ActivateQuest(GameClient Session, ClientMessage Message) { Quest Quest = GetQuest(Message.ReadUInt()); if (Quest == null) return; using (IQueryAdapter dbClient = ButterflyEnvironment.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)); }
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())); }
internal void CancelQuest(GameClient Session, ClientMessage Message) { Quest Quest = GetQuest(Session.GetHabbo().CurrentQuestId); if (Quest == null) return; Session.GetHabbo().CurrentQuestId = 0; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("DELETE FROM user_quests WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id = " + Quest.Id); dbClient.runFastQuery("UPDATE users SET currentquestid = " + Session.GetHabbo().CurrentQuestId + " WHERE id = " + Session.GetHabbo().Id); } GetList(Session, null); Session.SendMessage(QuestAbortedComposer.Compose()); }
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)); }
void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Item.ExtraData.Contains(Convert.ToChar(5).ToString())) { String[] Stuff = Item.ExtraData.Split(Convert.ToChar(5)); Session.GetHabbo().Gender = Stuff[0].ToUpper(); Dictionary<String, String> NewFig = new Dictionary<String, String>(); NewFig.Clear(); foreach (String Man in Stuff[1].Split('.')) { foreach (String Fig in Session.GetHabbo().Look.Split('.')) { if (Fig.Split('-')[0] == Man.Split('-')[0]) { if (NewFig.ContainsKey(Fig.Split('-')[0]) && !NewFig.ContainsValue(Man)) { NewFig.Remove(Fig.Split('-')[0]); NewFig.Add(Fig.Split('-')[0], Man); } else if (!NewFig.ContainsKey(Fig.Split('-')[0]) && !NewFig.ContainsValue(Man)) { NewFig.Add(Fig.Split('-')[0], Man); } } else { if (!NewFig.ContainsKey(Fig.Split('-')[0])) { NewFig.Add(Fig.Split('-')[0], Fig); } } } } string Final = ""; foreach (String Str in NewFig.Values) { Final += Str + "."; } Session.GetHabbo().Look = Final.TrimEnd('.'); using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("UPDATE users SET look = @look, gender = @gender WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1"); dbClient.addParameter("look", Session.GetHabbo().Look); dbClient.addParameter("gender", Session.GetHabbo().Gender); dbClient.runQuery(); } ServerMessage message = PacketHandelingManager.GetRecycledItem(OutputCode.UserChangeMessageEvent); message.AddInt32(-1); message.AddString(Session.GetHabbo().Look); message.AddString(Session.GetHabbo().Gender.ToLower()); message.AddString(Session.GetHabbo().Motto); message.AddInt32(Session.GetHabbo().AchievementPoints); Session.SendMessage(message); RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); ServerMessage RoomUpdate = PacketHandelingManager.GetRecycledItem(OutputCode.UserChangeMessageEvent); RoomUpdate.AddInt32(User.VirtualId); RoomUpdate.AddString(Session.GetHabbo().Look); RoomUpdate.AddString(Session.GetHabbo().Gender.ToLower()); RoomUpdate.AddString(Session.GetHabbo().Motto); RoomUpdate.AddInt32(Session.GetHabbo().AchievementPoints); Session.GetHabbo().CurrentRoom.SendMessage(RoomUpdate); } }
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())); }
internal void GetCurrentQuest(GameClient Session, ClientMessage Message) { if (!Session.GetHabbo().InRoom) { return; } Quest UserQuest = GetQuest(Session.GetHabbo().LastCompleted); Quest NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1); if (NextQuest == 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 + ", " + NextQuest.Id + ", 0)"); else dbClient.runFastQuery("IF NOT EXISTS (SELECT user_id FROM user_quests WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id = " + NextQuest.Id + ") " + "INSERT INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ", 0)"); dbClient.runFastQuery("UPDATE users SET currentquestid = " + NextQuest.Id + " WHERE id = " + Session.GetHabbo().Id); } Session.GetHabbo().CurrentQuestId = NextQuest.Id; GetList(Session, null); Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest)); //Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest)); }
private static void GetDisks(GameClient Session, ClientMessage Message) { Session.SendMessage(JukeboxComposer.Compose(Session)); }