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; }
internal void Serialize(ServerMessage Request) { // BDhqu@UMeth0d1322033860 Request.AppendUInt(FromUser); Request.AppendStringWithBreak(mUsername); Request.AppendStringWithBreak(FromUser.ToString()); }
internal void Serialize(ref ServerMessage packet) { packet.AppendInt32(timeSpoken.Hour); packet.AppendInt32(timeSpoken.Minute); packet.AppendUInt(userID); packet.AppendStringWithBreak(username); packet.AppendStringWithBreak(message); }
internal void MoveBall(RoomItem item, GameClient mover, int newX, int newY) { if (item == null || mover == null) return; if (!room.GetGameMap().itemCanBePlacedHere(newX, newY)) return; Point oldRoomCoord = item.Coordinate; bool itemIsOnGameItem = GameItemOverlaps(item); Double NewZ = room.GetGameMap().Model.SqFloorHeight[newX, newY]; ServerMessage Message = new ServerMessage(95); Message.AppendUInt(item.Id); Message.AppendInt32(3508); Message.AppendInt32(item.Coordinate.X); Message.AppendInt32(item.Coordinate.Y); Message.AppendInt32(newX); Message.AppendInt32(newY); Message.AppendInt32(4); Message.AppendStringWithBreak(NewZ.ToString()); Message.AppendStringWithBreak("H11"); Message.AppendInt32(-1); Message.AppendInt32(0); room.SendMessage(Message); ServerMessage mMessage = new ServerMessage(); mMessage.Init(230); // Cf mMessage.AppendInt32(item.Coordinate.X); mMessage.AppendInt32(item.Coordinate.Y); mMessage.AppendInt32(newX); mMessage.AppendInt32(newY); mMessage.AppendInt32(1); mMessage.AppendUInt(item.Id); mMessage.AppendStringWithBreak(item.GetZ.ToString().Replace(',', '.')); mMessage.AppendStringWithBreak(NewZ.ToString().Replace(',', '.')); mMessage.AppendInt32(0); room.SendMessage(mMessage); if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY) return; room.GetRoomItemHandler().SetFloorItem(mover, item, newX, newY, item.Rot, false, false, false, false); if (!itemIsOnGameItem) HandleFootballGameItems(new Point(newX, newY), room.GetRoomUserManager().GetRoomUserByHabbo(mover.GetHabbo().Id)); }
internal static ServerMessage SerializeSearchResults(string Query) { DataTable Results = null; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == Pici.Storage.Database.DatabaseType.MySQL) dbClient.setQuery("SELECT id,title FROM help_topics WHERE title LIKE @query OR body LIKE @query LIMIT 25"); else dbClient.setQuery("SELECT TOP 25 id,title FROM help_topics WHERE title LIKE @query OR body LIKE @query"); dbClient.addParameter("query", Query + "%"); Results = dbClient.getTable(); } // HII[KBCan I pay to be unbanned? ServerMessage Search = new ServerMessage(521); if (Results == null) { Search.AppendBoolean(false); return Search; } Search.AppendInt32(Results.Rows.Count); foreach (DataRow Row in Results.Rows) { Search.AppendUInt(Convert.ToUInt32(Row["id"])); Search.AppendStringWithBreak((string)Row["title"]); } return Search; }
internal static ServerMessage Compose(Achievement Achievement, int Level, int PointReward, int PixelReward) { ServerMessage Message = new ServerMessage(437); Message.AppendUInt(Achievement.Id); // Achievement ID Message.AppendInt32(Level); // Achieved level Message.AppendInt32(144); // Unknown. Random useless number. Message.AppendStringWithBreak(Achievement.GroupName + Level); // Achieved name Message.AppendInt32(PointReward); // Point reward Message.AppendInt32(PixelReward); // Pixel reward Message.AppendInt32(0); // Unknown. Message.AppendInt32(10); // Unknown. Message.AppendInt32(21); // Unknown. (Extra reward?) Message.AppendStringWithBreak(Level > 1 ? Achievement.GroupName + (Level - 1) : string.Empty); Message.AppendStringWithBreak(Achievement.Category); return Message; }
internal static ServerMessage Compose(List<Achievement> Achievements) { ServerMessage Message = new ServerMessage(627); //627 Message.AppendInt32(Achievements.Count); foreach (Achievement Achievement in Achievements) { string DisplayName = Achievement.GroupName; if (DisplayName.StartsWith("ACH_")) { DisplayName = DisplayName.Substring(4); } Message.AppendStringWithBreak(DisplayName); Message.AppendInt32(Achievement.Levels.Count); foreach (AchievementLevel Level in Achievement.Levels.Values) { Message.AppendInt32(Level.Level); Message.AppendInt32(Level.Requirement); } } return Message; }
internal static ServerMessage Compose(Achievement Achievement, int TargetLevel, AchievementLevel TargetLevelData, int TotalLevels, UserAchievement UserData) { ServerMessage Message = new ServerMessage(913); 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; }
internal static ServerMessage SerializeTopic(HelpTopic Topic) { ServerMessage Top = new ServerMessage(520); Top.AppendUInt(Topic.TopicId); Top.AppendStringWithBreak(Topic.Body); return Top; }
public static ServerMessage Compose(List<SongData> Songs) { ServerMessage Message = new ServerMessage(300); Message.AppendInt32(Songs.Count); foreach (SongData Song in Songs) { Message.AppendUInt(Song.Id); Message.AppendStringWithBreak(Song.Name); Message.AppendStringWithBreak(Song.Data); Message.AppendInt32(Song.LengthMiliseconds); Message.AppendStringWithBreak(Song.Artist); } return Message; }
internal void SerializeFloor(ServerMessage Message, Boolean Inventory) { Message.AppendUInt(Id); Message.AppendStringWithBreak(mBaseItem.Type.ToString().ToUpper()); Message.AppendUInt(Id); Message.AppendInt32(GetBaseItem().SpriteId); Message.AppendInt32(1); Message.AppendStringWithBreak(ExtraData); Message.AppendBoolean(GetBaseItem().AllowRecycle); Message.AppendBoolean(GetBaseItem().AllowTrade); Message.AppendBoolean(GetBaseItem().AllowInventoryStack); Message.AppendBoolean(Marketplace.CanSellItem(this)); Message.AppendInt32(-1); Message.AppendStringWithBreak(""); Message.AppendInt32(0); }
internal void Serialize(ServerMessage Message) { try { Message.AppendUInt(Id); Message.AppendStringWithBreak(Name); Message.AppendInt32(CreditsCost); if (CrystalCost > 0) { Message.AppendInt32(CrystalCost); Message.AppendInt32(4); // Hearts } else { Message.AppendInt32(PixelsCost); Message.AppendInt32(0); // Page Type; 0 = nothing, 1 = Snowflakes, 2 = hearts, 3 = ? } Message.AppendInt32(1); Message.AppendStringWithBreak(GetBaseItem().Type.ToString()); Message.AppendInt32(GetBaseItem().SpriteId); if (Name.Contains("wallpaper_single") || Name.Contains("floor_single") || Name.Contains("landscape_single")) { string[] Analyze = Name.Split('_'); Message.AppendStringWithBreak(Analyze[2]); } else if (this.songID > 0 && GetBaseItem().InteractionType == InteractionType.musicdisc) { Message.AppendStringWithBreak(songID.ToString()); } else { Message.AppendStringWithBreak(string.Empty); } Message.AppendInt32(Amount); Message.AppendInt32(-1); Message.AppendInt32(0); } catch { Console.WriteLine("Unable to load furniture item " + Id + ": " + Name); } }
public bool Handle(RoomUser user, Team team, RoomItem item) { if (user != null && !user.IsBot && user.GetClient() != null) { ServerMessage servermsg = new ServerMessage(); servermsg.Init(25); servermsg.AppendInt32(user.VirtualId); servermsg.AppendStringWithBreak(message); servermsg.AppendBoolean(false); user.GetClient().SendMessage(servermsg); handler.OnEvent(itemID); return true; } 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 void Searialize(ServerMessage reply) { reply.AppendUInt(userID); reply.AppendStringWithBreak(username); reply.AppendStringWithBreak(motto); bool Online = (PiciEnvironment.GetGame().GetClientManager().GetClient(userID) != null); reply.AppendBoolean(Online); reply.AppendBoolean(false); reply.AppendStringWithBreak(string.Empty); reply.AppendBoolean(false); reply.AppendStringWithBreak(look); reply.AppendStringWithBreak(last_online); reply.AppendStringWithBreak(string.Empty); }
internal void SendNotif(string Message, Boolean FromHotelManager) { ServerMessage nMessage = new ServerMessage(); if (FromHotelManager) { nMessage.Init(139); } else { nMessage.Init(161); } nMessage.AppendStringWithBreak(Message); GetConnection().SendData(nMessage.GetBytes()); }
internal void SendBanMessage(string Message) { ServerMessage BanMessage = new ServerMessage(35); BanMessage.AppendStringWithBreak(LanguageLocale.GetValue("moderation.banmessage"), 13); BanMessage.AppendStringWithBreak(Message); GetConnection().SendData(BanMessage.GetBytes()); }
internal void UpdateUserStatus(RoomUser User, bool cyclegameitems) { if (User == null) return; bool isBot = User.IsBot; if (isBot) cyclegameitems = false; if (User.Statusses.ContainsKey("lay") || User.Statusses.ContainsKey("sit")) { User.Statusses.Remove("lay"); User.Statusses.Remove("sit"); User.UpdateNeeded = true; } //List<RoomItem> ItemsOnSquare = GetFurniObjects(User.X, User.Y); CoordItemSearch ItemSearch = new CoordItemSearch(room.GetGameMap().CoordinatedItems); List<RoomItem> ItemsOnSquare = ItemSearch.GetAllRoomItemForSquare(User.X, User.Y); double newZ = room.GetGameMap().SqAbsoluteHeight(User.X, User.Y, ItemsOnSquare); if (newZ != User.Z) { User.Z = newZ; if (User.isFlying) User.Z += 4 + (0.5 * Math.Sin(0.7 * User.flyk)); User.UpdateNeeded = true; } DynamicRoomModel Model = room.GetGameMap().Model; if (Model.SqState[User.X, User.Y] == SquareState.SEAT) { if (!User.Statusses.ContainsKey("sit")) { User.Statusses.Add("sit", "1.0"); } User.Z = Model.SqFloorHeight[User.X, User.Y]; if (User.isFlying) User.Z += 4 + (0.5 * Math.Sin(0.7 * User.flyk)); User.RotHead = Model.SqSeatRot[User.X, User.Y]; User.RotBody = Model.SqSeatRot[User.X, User.Y]; User.UpdateNeeded = true; } foreach (RoomItem Item in ItemsOnSquare) { if (cyclegameitems) { Item.UserWalksOnFurni(User); } if (Item.GetBaseItem().IsSeat) { if (!User.Statusses.ContainsKey("sit")) { User.Statusses.Add("sit", TextHandling.GetString(Item.GetBaseItem().Height)); } User.Z = Item.GetZ; if (User.isFlying) User.Z += 4 + (0.5 * Math.Sin(0.7 * User.flyk)); User.RotHead = Item.Rot; User.RotBody = Item.Rot; User.UpdateNeeded = true; } switch (Item.GetBaseItem().InteractionType) { case InteractionType.bed: { if (!User.Statusses.ContainsKey("lay")) { User.Statusses.Add("lay", TextHandling.GetString(Item.GetBaseItem().Height) + " null"); } User.Z = Item.GetZ; if (User.isFlying) User.Z += 4 + (0.2 * 0.5 * Math.Sin(0.7 * User.flyk)); User.RotHead = Item.Rot; User.RotBody = Item.Rot; User.UpdateNeeded = true; break; } case InteractionType.fbgate: { if (cyclegameitems) { if (User.team != Item.team) User.team = Item.team; else if (User.team == Item.team) User.team = Team.none; if (!string.IsNullOrEmpty(Item.Figure)) { //User = GetUserForSquare(Item.Coordinate.X, Item.Coordinate.Y); if (User != null && !User.IsBot) { if (User.Coordinate == Item.Coordinate) { if (User.GetClient().GetHabbo().Gender != Item.Gender && User.GetClient().GetHabbo().Look != Item.Figure) { User.GetClient().GetHabbo().tempGender = User.GetClient().GetHabbo().Gender; User.GetClient().GetHabbo().tempLook = User.GetClient().GetHabbo().Look; User.GetClient().GetHabbo().Gender = Item.Gender; User.GetClient().GetHabbo().Look = Item.Figure; } else { User.GetClient().GetHabbo().Gender = User.GetClient().GetHabbo().tempGender; User.GetClient().GetHabbo().Look = User.GetClient().GetHabbo().tempLook; } ServerMessage RoomUpdate = new ServerMessage(266); RoomUpdate.AppendInt32(User.VirtualId); RoomUpdate.AppendStringWithBreak(User.GetClient().GetHabbo().Look); RoomUpdate.AppendStringWithBreak(User.GetClient().GetHabbo().Gender.ToLower()); RoomUpdate.AppendStringWithBreak(User.GetClient().GetHabbo().Motto); room.SendMessage(RoomUpdate); } } } } break; } //33: Red //34: Green //35: Blue //36: Yellow case InteractionType.banzaigategreen: case InteractionType.banzaigateblue: case InteractionType.banzaigatered: case InteractionType.banzaigateyellow: { if (cyclegameitems) { int effectID = (int)Item.team + 32; AvatarEffectsInventoryComponent efectmanager = User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent(); if (User.team != Item.team) { User.team = Item.team; if (efectmanager.CurrentEffect != effectID) efectmanager.ApplyCustomEffect(effectID); } else { if (efectmanager.CurrentEffect == effectID) efectmanager.ApplyCustomEffect(0); User.team = Team.none; } } break; } case InteractionType.freezeyellowgate: case InteractionType.freezeredgate: case InteractionType.freezegreengate: case InteractionType.freezebluegate: { if (cyclegameitems) { int effectID = (int)Item.team + 39; AvatarEffectsInventoryComponent efectmanager = User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent(); if (User.team != Item.team) { User.team = Item.team; if (efectmanager.CurrentEffect != effectID) efectmanager.ApplyCustomEffect(effectID); } else { if (efectmanager.CurrentEffect == effectID) efectmanager.ApplyCustomEffect(0); User.team = Team.none; } ServerMessage message = new ServerMessage(700); message.AppendBoolean((User.team != Team.none)); User.GetClient().SendMessage(message); } break; } case InteractionType.banzaitele: { room.GetGameItemHandler().onTeleportRoomUserEnter(User, Item); break; } } } if (cyclegameitems) { if (room.GotSoccer()) room.GetSoccer().OnUserWalk(User); if (room.GotBanzai()) room.GetBanzai().OnUserWalk(User); //if (room.GotFreeze()) room.GetFreeze().OnUserWalk(User); } }
internal void RemoveUserFromRoom(GameClient Session, Boolean NotifyClient, Boolean NotifyKick) { try { if (Session == null) return; if (Session.GetHabbo() == null) return; Session.GetHabbo().GetAvatarEffectsInventoryComponent().OnRoomExit(); if (NotifyClient) { if (NotifyKick) { Session.GetMessageHandler().GetResponse().Init(33); Session.GetMessageHandler().GetResponse().AppendInt32(4008); Session.GetMessageHandler().SendResponse(); } Session.GetMessageHandler().GetResponse().Init(18); Session.GetMessageHandler().SendResponse(); } RoomUser User = GetRoomUserByHabbo(Session.GetHabbo().Id); if (User != null) { RemoveRoomUser(User); if (Session.GetHabbo() != null) { if (!User.IsSpectator) { if (User.CurrentItemEffect != ItemEffectType.None) { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect = -1; } //UserMatrix[User.X, User.Y] = false; if (Session.GetHabbo() != null) { if (room.HasActiveTrade(Session.GetHabbo().Id)) room.TryStopTrade(Session.GetHabbo().Id); if (Session.GetHabbo().Username == room.Owner) { if (room.HasOngoingEvent) { room.Event = new RoomEvent(0, null, null, 0, new List<string>()); ServerMessage Message = new ServerMessage(370); Message.AppendStringWithBreak("-1"); room.SendMessage(Message); PiciEnvironment.GetGame().GetRoomManager().GetEventManager().QueueRemoveEvent(room.RoomData, room.Event.Category); } } Session.GetHabbo().CurrentRoomId = 0; if (Session.GetHabbo().GetMessenger() != null) Session.GetHabbo().GetMessenger().OnStatusChanged(true); } //DateTime Start = DateTime.Now; //using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) //{ // //TimeSpan TimeUsed1 = DateTime.Now - Start; // //Logging.LogThreadException("Time used on sys part 2: " + TimeUsed1.Seconds + "s, " + TimeUsed1.Milliseconds + "ms", ""); // //if (Session.GetHabbo() != null) // // dbClient.runFastQuery("UPDATE user_roomvisits SET exit_timestamp = '" + PiciEnvironment.GetUnixTimestamp() + "' WHERE room_id = '" + this.Id + "' AND user_id = '" + Id + "' ORDER BY exit_timestamp DESC LIMIT 1"); // //dbClient.runFastQuery("UPDATE rooms SET users_now = " + UsersNow + " WHERE id = " + Id); // //dbClient.runFastQuery("REPLACE INTO room_active VALUES (" + RoomId + ", " + UsersNow + ")"); // dbClient.runFastQuery("UPDATE room_active SET active_users = " + UsersNow); //} } } usersByUserID.Remove(User.userID); if (Session.GetHabbo() != null) usersByUsername.Remove(Session.GetHabbo().Username.ToLower()); User.Dispose(); } } catch (Exception e) { Logging.LogCriticalException("Error during removing user from room:" + e.ToString()); } }
private void RemoveRoomItem(RoomItem Item) { if (Item.IsWallItem) { ServerMessage Message = new ServerMessage(84); Message.AppendRawUInt(Item.Id); Message.AppendStringWithBreak(""); Message.AppendBoolean(false); room.SendMessage(Message); } else if (Item.IsFloorItem) { ServerMessage Message = new ServerMessage(94); Message.AppendRawUInt(Item.Id); Message.AppendStringWithBreak(""); Message.AppendBoolean(false); room.SendMessage(Message); } if (Item.IsWallItem) mWallItems.Remove(Item.Id); else { room.GetGameMap().RemoveFromMap(Item); mFloorItems.Remove(Item.Id); } RemoveItem(Item); room.GetRoomUserManager().UpdateUserStatusses(); if (WiredHandler.TypeIsWire(Item.GetBaseItem().InteractionType)) { room.GetWiredHandler().RemoveWiredItem(Item.Coordinate); } }
internal ServerMessage UpdateUserOnRoller(RoomUser pUser, Point pNextCoord, uint pRollerID, Double NextZ) { ServerMessage mMessage = new ServerMessage(); mMessage.Init(230); // Cf mMessage.AppendInt32(pUser.X); mMessage.AppendInt32(pUser.Y); mMessage.AppendInt32(pNextCoord.X); mMessage.AppendInt32(pNextCoord.Y); mMessage.AppendInt32(0); mMessage.AppendUInt(pRollerID); mMessage.AppendString("J"); mMessage.AppendInt32(pUser.VirtualId); mMessage.AppendStringWithBreak(TextHandling.GetString(pUser.Z)); mMessage.AppendStringWithBreak(TextHandling.GetString(NextZ)); room.GetGameMap().UpdateUserMovement(new Point(pUser.X, pUser.Y), new Point(pNextCoord.X, pNextCoord.Y), pUser); room.GetGameMap().GameMap[pUser.X, pUser.Y] = 1; pUser.X = pNextCoord.X; pUser.Y = pNextCoord.Y; pUser.Z = NextZ; room.GetGameMap().GameMap[pUser.X, pUser.Y] = 0; return mMessage; }
internal List<RoomItem> RemoveAllFurniture(GameClient Session) { List<RoomItem> ReturnList = new List<RoomItem>(); foreach (RoomItem Item in mFloorItems.Values.ToArray()) { Item.Interactor.OnRemove(Session, Item); ServerMessage Message = new ServerMessage(94); Message.AppendRawUInt(Item.Id); Message.AppendStringWithBreak(""); Message.AppendBoolean(false); room.SendMessage(Message); //mFloorItems.Remove(Item.Id); ReturnList.Add(Item); } foreach (RoomItem Item in mWallItems.Values.ToArray()) { Item.Interactor.OnRemove(Session, Item); ServerMessage Message = new ServerMessage(84); Message.AppendRawUInt(Item.Id); Message.AppendStringWithBreak(""); Message.AppendBoolean(false); room.SendMessage(Message); //mWallItems.Remove(Item.Id); ReturnList.Add(Item); } mWallItems.Clear(); mFloorItems.Clear(); mRemovedItems.Clear(); mMovedItems.Clear(); mAddedItems.Clear(); mRollers.QueueDelegate(new onCycleDoneDelegate(ClearRollers)); using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("DELETE FROM items_rooms WHERE room_id = " + room.RoomId); } room.GetGameMap().GenerateMaps(); room.GetRoomUserManager().UpdateUserStatusses(); if (room.GotWired()) { room.GetWiredHandler().OnPickall(); } return ReturnList; }
private ServerMessage UpdateItemOnRoller(RoomItem pItem, Point NextCoord, uint pRolledID, Double NextZ) { ServerMessage mMessage = new ServerMessage(); mMessage.Init(230); // Cf mMessage.AppendInt32(pItem.GetX); mMessage.AppendInt32(pItem.GetY); mMessage.AppendInt32(NextCoord.X); mMessage.AppendInt32(NextCoord.Y); mMessage.AppendInt32(1); mMessage.AppendUInt(pItem.Id); mMessage.AppendStringWithBreak(TextHandling.GetString(pItem.GetZ)); mMessage.AppendStringWithBreak(TextHandling.GetString(NextZ)); mMessage.AppendUInt(pRolledID); //room.SendMessage(mMessage); //SetFloorItem(null, pItem, NextCoord.X, NextCoord.Y, pItem.Rot, false, true); SetFloorItem(pItem, NextCoord.X, NextCoord.Y, NextZ); return mMessage; }
/* internal bool tryLogin(string AuthTicket) { try { string ip = GetConnection().getIp(); byte errorCode = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode); if (errorCode == 1) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso")); return false; } else if (errorCode == 2) { SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin")); return false; } PiciEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); if (userData.user.Username == null) { SendBanMessage("You have no username."); return false; } string banReason = PiciEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip); if (!string.IsNullOrEmpty(banReason)) { SendBanMessage(banReason); return false; } userData.user.Init(this, userData); QueuedServerMessage response = new QueuedServerMessage(Connection); userData.user.SerializeQuests(ref response); //List<string> Rights = PiciEnvironment.GetGame().GetRoleManager().GetRightsForHabbo(userData.user); GetMessageHandler().GetResponse().Init(2); if (userData.user.HasRight("acc_anyroomowner")) GetMessageHandler().GetResponse().Append(7); else if (userData.user.HasRight("acc_anyroomrights")) GetMessageHandler().GetResponse().Append(5); else if (userData.user.HasRight("acc_supporttool")) GetMessageHandler().GetResponse().Append(4); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip")) GetMessageHandler().GetResponse().AppendInt32(2); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) GetMessageHandler().GetResponse().AppendInt32(1); else GetMessageHandler().GetResponse().AppendInt32(0); GetMessageHandler().SendResponse(); /*foreach (string Right in Rights) { appendingResponse.AppendStringWithBreak(Right); } if (userData.user.HasRight("acc_supporttool")) { SendMessage(PiciEnvironment.GetGame().GetModerationTool().SerializeTool()); PiciEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(this); } SendMessage(userData.user.GetAvatarEffectsInventoryComponent().Serialize()); //GetResponse().Init(290); GetMessageHandler().GetResponse().Init(290); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().GetResponse().AppendBoolean(false); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(3); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(517); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().SendResponse(); //if (PixelManager.NeedsUpdate(this)) // PixelManager.GivePixels(this); if (PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0) { PixelManager.GivePixels(this, PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin); } if (PiciEnvironment.GetGame().GetClientManager().creditsOnLogin > 0) { userData.user.Credits += PiciEnvironment.GetGame().GetClientManager().creditsOnLogin; userData.user.UpdateCreditsBalance(); } if (userData.user.HomeRoom > 0) { GetMessageHandler().GetResponse().Init(455); GetMessageHandler().GetResponse().AppendUInt(userData.user.HomeRoom); GetMessageHandler().SendResponse(); } GetMessageHandler().GetResponse().Init(458); GetMessageHandler().GetResponse().AppendInt32(30); GetMessageHandler().GetResponse().AppendInt32(userData.user.FavoriteRooms.Count); foreach (uint Id in userData.user.FavoriteRooms.ToArray()) { GetMessageHandler().GetResponse().AppendUInt(Id); } GetMessageHandler().SendResponse(); if (!userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true); } else if (userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1"); } if (!userData.user.GetBadgeComponent().HasBadge("Z63")) userData.user.GetBadgeComponent().GiveBadge("Z63", true); ServerMessage alert = new ServerMessage(810); alert.AppendUInt(1); alert.AppendStringWithBreak("Welcome bro!"); SendMessage(alert); return true; } catch (UserDataNotFoundException e) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString()); } catch (Exception e) { Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString()); SendNotifWithScroll("Login error: " + e.ToString()); } return false; } */ internal void SendNotifWithScroll(string message) { ServerMessage notification = new ServerMessage(810); notification.AppendUInt(1); notification.AppendStringWithBreak(message); SendMessage(notification); }
internal ServerMessage SerializeHeightmap() { StringBuilder HeightMap = new StringBuilder(); //Needs cache! for (int y = 0; y < MapSizeY; y++) { for (int x = 0; x < MapSizeX; x++) { if (SqState[x, y] == SquareState.BLOCKED) HeightMap.Append("x"); else if (x == DoorX && y == DoorY) HeightMap.Append(DoorZ.ToString()); else HeightMap.Append(SqFloorHeight[x, y]); } HeightMap.Append(Convert.ToChar(13)); } ServerMessage Message = new ServerMessage(31); Message.AppendStringWithBreak(HeightMap.ToString()); return Message; }
internal bool tryLogin(string AuthTicket) { try { string ip = GetConnection().getIp(); byte errorCode = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode); if (errorCode == 1) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso")); return false; } else if (errorCode == 2) { SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin")); return false; } PiciEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); if (userData.user.Username == null) { SendBanMessage("You have no username."); return false; } string banReason = PiciEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip); if (!string.IsNullOrEmpty(banReason)) { SendBanMessage(banReason); return false; } userData.user.Init(this, userData); QueuedServerMessage response = new QueuedServerMessage(Connection); userData.user.SerializeQuests(ref response); GetMessageHandler().GetResponse().Init(2); if (userData.user.HasRight("acc_anyroomowner")) GetMessageHandler().GetResponse().AppendInt32(7); else if (userData.user.HasRight("acc_anyroomrights")) GetMessageHandler().GetResponse().AppendInt32(5); else if (userData.user.HasRight("acc_supporttool")) GetMessageHandler().GetResponse().AppendInt32(4); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip")) GetMessageHandler().GetResponse().AppendInt32(2); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) GetMessageHandler().GetResponse().AppendInt32(1); else GetMessageHandler().GetResponse().AppendInt32(0); GetMessageHandler().SendResponse(); if (userData.user.HasRight("acc_supporttool")) { SendMessage(PiciEnvironment.GetGame().GetModerationTool().SerializeTool()); PiciEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(this); } SendMessage(userData.user.GetAvatarEffectsInventoryComponent().Serialize()); GetMessageHandler().GetResponse().Init(290); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().GetResponse().AppendBoolean(false); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(3); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(517); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().SendResponse(); //if (PixelManager.NeedsUpdate(this)) // PixelManager.GivePixels(this); if (PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0) { PixelManager.GivePixels(this, PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin); } if (PiciEnvironment.GetGame().GetClientManager().creditsOnLogin > 0) { userData.user.Credits += PiciEnvironment.GetGame().GetClientManager().creditsOnLogin; userData.user.UpdateCreditsBalance(); } if (userData.user.HomeRoom > 0) { GetMessageHandler().GetResponse().Init(455); GetMessageHandler().GetResponse().AppendUInt(userData.user.HomeRoom); GetMessageHandler().SendResponse(); } GetMessageHandler().GetResponse().Init(458); GetMessageHandler().GetResponse().AppendInt32(30); GetMessageHandler().GetResponse().AppendInt32(userData.user.FavoriteRooms.Count); foreach (uint Id in userData.user.FavoriteRooms.ToArray()) { GetMessageHandler().GetResponse().AppendUInt(Id); } GetMessageHandler().SendResponse(); if (!userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true); } else if (userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1"); } if (!userData.user.GetBadgeComponent().HasBadge("Z63")) userData.user.GetBadgeComponent().GiveBadge("Z63", true); if (userData.user.Rank > 5 && !userData.user.GetBadgeComponent().HasBadge("ADM")) userData.user.GetBadgeComponent().GiveBadge("ADM", true); ServerMessage alert = new ServerMessage(810); alert.AppendUInt(1); alert.AppendStringWithBreak(LanguageLocale.welcomeAlert); SendMessage(alert); Logging.WriteLine("[" + Habbo.Username + "] logged in"); return true; } catch (UserDataNotFoundException e) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString()); } catch (Exception e) { Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString()); SendNotifWithScroll("Login error: " + e.ToString()); } return false; }
internal void Serialize(int Rank, ServerMessage Message) { Message.AppendBoolean(Visible); Message.AppendInt32(IconColor); Message.AppendInt32(IconImage); Message.AppendInt32(Id); Message.AppendStringWithBreak(Caption); Message.AppendInt32(PiciEnvironment.GetGame().GetCatalog().GetTreeSize(Rank, Id)); }
internal void copylook() { string copyTarget = Params[1]; bool findResult = false; string gender = null; string figure = null; DataRow dRow; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT gender,look FROM users WHERE username = @username"); dbClient.addParameter("username", copyTarget); dRow = dbClient.getRow(); if (dRow != null) { findResult = true; gender = (string)dRow[0]; figure = (string)dRow[1]; dbClient.setQuery("UPDATE users SET gender = @gender, look = @look WHERE username = @username"); dbClient.addParameter("gender", gender); dbClient.addParameter("look", figure); dbClient.addParameter("username", Session.GetHabbo().Username); dbClient.runQuery(); } } if (findResult) { Session.GetHabbo().Gender = gender; Session.GetHabbo().Look = figure; Session.GetMessageHandler().GetResponse().Init(266); 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().SendResponse(); if (Session.GetHabbo().InRoom) { Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } ServerMessage RoomUpdate = new ServerMessage(266); RoomUpdate.AppendInt32(User.VirtualId); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower()); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto); Room.SendMessage(RoomUpdate); } } }
internal void hotelalert() { string Notice = GetInput(Params).Substring(4); ServerMessage HotelAlert = new ServerMessage(808); HotelAlert.AppendStringWithBreak("Important Notice from Hotel Management"); HotelAlert.AppendStringWithBreak(Notice + "\r\n" + "- " + Session.GetHabbo().Username); PiciEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(HotelAlert); PiciEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "HotelAlert", "Hotel alert [" + Notice + "]"); //PiciEnvironment.messagingBot.SendMassMessage(new PublicMessage(string.Format("[{0}] => [{1}]", Session.GetHabbo().Username, Notice)), true); }
internal override void OnUserSay(Rooms.RoomUser User, string Message) { if (Gamemap.TileDistance(GetRoomUser().X, GetRoomUser().Y, User.X, User.Y) > 8) { return; } BotResponse Response = GetBotData().GetResponse(Message); if (Response == null) { return; } switch (Response.ResponseType.ToLower()) { case "say": GetRoomUser().Chat(null, Response.ResponseText, false); break; case "shout": GetRoomUser().Chat(null, Response.ResponseText, true); break; case "whisper": ServerMessage TellMsg = new ServerMessage(25); TellMsg.AppendInt32(GetRoomUser().VirtualId); TellMsg.AppendStringWithBreak(Response.ResponseText); TellMsg.AppendBoolean(false); User.GetClient().SendMessage(TellMsg); break; } if (Response.ServeId >= 1) { User.CarryItem(Response.ServeId); } }
internal void ChangeLook() { if (Session.GetHabbo().MutantPenalty) { Session.SendNotif("Because of a penalty or restriction on your account, you are not allowed to change your look."); return; } string Gender = Request.PopFixedString().ToUpper(); string Look = PiciEnvironment.FilterInjectionChars(Request.PopFixedString()); if (!AntiMutant.ValidateLook(Look, Gender)) { return; } PiciEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.PROFILE_CHANGE_LOOK); Session.GetHabbo().Look = PiciEnvironment.FilterFigure(Look); Session.GetHabbo().Gender = Gender.ToLower(); using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("UPDATE users SET look = @look, gender = @gender WHERE id = " + Session.GetHabbo().Id); dbClient.addParameter("look", Look); dbClient.addParameter("gender", Gender); dbClient.runQuery(); } PiciEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Session, "ACH_AvatarLooks", 1); Session.GetMessageHandler().GetResponse().Init(266); 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().SendResponse(); if (Session.GetHabbo().InRoom) { Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } ServerMessage RoomUpdate = new ServerMessage(266); RoomUpdate.AppendInt32(User.VirtualId); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Look); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Gender.ToLower()); RoomUpdate.AppendStringWithBreak(Session.GetHabbo().Motto); Room.SendMessage(RoomUpdate); } }