//158 - "SETBADGE": "B^" public void Listener158() { int badgeLen = Base64Encoding.DecodeInt(mPacketBody.Substring(0, 2)); string badge = mPacketBody.Substring(2, badgeLen); if (ArgumentEncoding.decodeInt(mPacketBody.Substring(mPacketBody.Length - 1, 1)) == 1) { if (mUserInfo.Badges.Contains(badge)) { mUserInfo.sBadge = badge; } } else { if (mUserInfo.sBadge == badge) { mUserInfo.sBadge = ""; } } InstanceManager.Game.Users.SetBadge(mUserInfo.userId, mUserInfo.sBadge); mUserInfo = InstanceManager.Game.Users.GetUser(mUserInfo.userId); mMessage.Init(228); //Cd mMessage.appendArgumentInt(mRoomInstance.GetUser(mSessionID).RoomUserID); mMessage.appendString(mUserInfo.sBadge); mMessage.appendChar(2); mRoomInstance.RoomBroadcast(mMessage); }
private string BuildSubCategoryList(RoomCategory category, int userRole) { List <RoomInfo> rooms = InstanceManager.Game.Rooms.GetRoomListByCategory(category.CategoryID); StringBuilder sb = new StringBuilder(); if (category.IsVisible || (category.SystemCategory && InstanceManager.Game.Roles.HasRight(userRole, "fuse_see_system_categories"))) { sb.Append(ArgumentEncoding.encodeInt(category.CategoryID)); sb.Append(ArgumentEncoding.encodeInt(0)); sb.Append(category.CategoryName); sb.Append(Convert.ToChar(2)); int maxUsers = 0; int currentUsers = 0; if (rooms.Count > 0) { foreach (RoomInfo room in rooms) { maxUsers += room.MaxUsers; currentUsers += room.CurrentUsers; } } sb.Append(ArgumentEncoding.encodeInt(currentUsers)); sb.Append(ArgumentEncoding.encodeInt(maxUsers)); sb.Append(ArgumentEncoding.encodeInt(category.ParentCategory)); } return(sb.ToString()); }
public void RoomTalkBroadcast(int sourceX, int sourceY, string chat, int roomUser) { Logging.LogEvent("Chatting to room " + mRoomID.ToString() + ": " + chat, Logging.LogLevel.Debug); foreach (int sessionId in mMemberSessions.Keys) { if (mRoomUsers.ContainsKey(sessionId)) { string currentChat = chat; int xDistance = Math.Abs(sourceX - mRoomUsers[sessionId].CurrentX); int yDistance = Math.Abs(sourceY - mRoomUsers[sessionId].CurrentY); if (xDistance >= 6 || yDistance >= 6) //Garble text { for (int i = 0; i < chat.Length; i++) { if (SpecialMath.RandomNumber(0, 10) > 5 && chat[i] != ' ') { currentChat = currentChat.Replace(chat[i], '.'); } } } if (xDistance < 9 && yDistance < 9) // User can at least partially hear { mMessage.Init(24); //@X mMessage.appendString(ArgumentEncoding.encodeInt(roomUser)); mMessage.appendString(currentChat); mMessage.appendChar(2); InstanceManager.Sessions.GetSession(sessionId).SendMessage(mMessage.ToString(), false); } } } }
public string BuildPrivateCategoryResponse() { StringBuilder sb = new StringBuilder(); int catCount = 0; List <RoomCategory> subcategories = InstanceManager.Game.Rooms.GetSubCategoryList(4); if (subcategories.Count > 0) { foreach (RoomCategory subcat in subcategories) { if (subcat.PlayerCategory) { catCount++; sb.Append(ArgumentEncoding.encodeInt(subcat.CategoryID)); sb.Append(subcat.CategoryName); sb.Append(Convert.ToChar(2)); } } } StringBuilder result = new StringBuilder(ArgumentEncoding.encodeInt(catCount)); result.Append(sb.ToString()); return(result.ToString()); }
//37 - "MESSENGER_ACCEPTBUDDY": "@e" public void Listener37() { int userid = ArgumentEncoding.decodeInt(mPacketBody); InstanceManager.Game.Messenger.AcceptBuddy(mUserInfo.userId, userid); Listener15(); }
//198 - "CHANGECALLCATEGORY": "CF" public void Listener198() { string payload = FuseMessage.getArgument(1, mPacketBody); int callId = ArgumentEncoding.decodeInt(payload); int priority = ArgumentEncoding.decodeInt(mPacketBody.Substring(payload.Length + 2)); InstanceManager.Game.Moderation.UpgradeCFH(callId, priority, mUserInfo); }
//199 - "MESSAGETOCALLER": "CG" public void Listener199() { int callId = ArgumentEncoding.decodeInt(FuseMessage.getArgument(1, mPacketBody)); string message = FuseMessage.getArgument(2, mPacketBody); message = SpecialFiltering.FilterChars("2,9", message); InstanceManager.Game.Moderation.ReplyCallForHelp(callId, message, mUserInfo); }
//155 - "REMOVEALLRIGHTS": "B[" public void Listener155() { int roomId = ArgumentEncoding.decodeInt(mPacketBody); RoomInfo info = InstanceManager.Game.Rooms.GetRoom(roomId); if (mUserInfo.userId == info.RoomOwner) { InstanceManager.Game.Rooms.DeleteAllRights(roomId); } }
private void btnArgEncode_Click(object sender, EventArgs e) { try { txtArgOutput.Text = ArgumentEncoding.encodeInt(int.Parse(txtArgInput.Text)).ToString(); } catch { MessageBox.Show("Invalid input."); } }
//40 - "MESSENGER_REMOVEBUDDY": "@h" public void Listener40() { int userid = ArgumentEncoding.decodeInt(mPacketBody.Substring(1)); InstanceManager.Game.Messenger.DeleteBuddy(mUserInfo.userId, userid); mMessage.Init(138); //BJ mMessage.appendArgumentInt(1); mMessage.appendArgumentInt(userid); SendMessage(mMessage); }
//150 - NAVIGATE": "BV" public void Listener150() { int hideFull = ArgumentEncoding.decodeInt(mPacketBody.Substring(0, 1)); string navId = mPacketBody.Substring(1); navId = navId.Substring(0, navId.Length - 1); int navCat = ArgumentEncoding.decodeInt(navId); mMessage.Init(220); //C\ mMessage.appendString(InstanceManager.Game.Navigator.GetNavigatorResponse(navCat, hideFull, mUserInfo)); SendMessage(mMessage); }
private string BuildRoomResponse(RoomInfo room, UserInfo user, int hideFull) { int categoryType = InstanceManager.Game.Rooms.GetCategory(room.RoomCategory).RoomCategoryType; StringBuilder sb = new StringBuilder(); if (hideFull == 1 && room.CurrentUsers >= room.MaxUsers) { return(""); } if (categoryType == 2) // Guest { sb.Append(ArgumentEncoding.encodeInt(room.RoomID)); sb.Append(room.RoomName); sb.Append(Convert.ToChar(2)); if (room.ShowOwner == 1 || InstanceManager.Game.Roles.HasRight(user.iRole, "fuse_see_all_roomowners")) { sb.Append(InstanceManager.Game.Users.GetUser(room.RoomOwner).sUsername); } else { sb.Append("-"); } sb.Append(Convert.ToChar(2)); sb.Append(room.RoomStatus); sb.Append(Convert.ToChar(2)); sb.Append(ArgumentEncoding.encodeInt(room.CurrentUsers)); sb.Append(ArgumentEncoding.encodeInt(room.MaxUsers)); sb.Append(room.RoomDescription); sb.Append(Convert.ToChar(2)); } if (categoryType == 0) //Public { sb.Append(ArgumentEncoding.encodeInt(room.RoomID)); sb.Append(ArgumentEncoding.encodeInt(1)); sb.Append(room.RoomName); sb.Append(Convert.ToChar(2)); sb.Append(ArgumentEncoding.encodeInt(room.CurrentUsers)); sb.Append(ArgumentEncoding.encodeInt(room.MaxUsers)); sb.Append(ArgumentEncoding.encodeInt(room.RoomCategory)); sb.Append(room.RoomDescription); sb.Append(Convert.ToChar(2)); sb.Append(ArgumentEncoding.encodeInt(room.RoomID)); sb.Append(ArgumentEncoding.encodeInt(0)); sb.Append(room.CCTs); sb.Append(Convert.ToChar(2)); sb.Append(ArgumentEncoding.encodeInt(0)); sb.Append(ArgumentEncoding.encodeInt(1)); } return(sb.ToString()); }
//152 - "GETFLATCAT": "BX" public void Listener152() { int roomId = ArgumentEncoding.decodeInt(mPacketBody); RoomInfo info = InstanceManager.Game.Rooms.GetRoom(roomId); if (info != null) { mMessage.Init(222); //C^ mMessage.appendString(ArgumentEncoding.encodeInt(info.RoomID)); mMessage.appendString(ArgumentEncoding.encodeInt(info.RoomCategory)); SendMessage(mMessage); } }
//38 - "MESSENGER_DECLINEBUDDY": "@f" public void Listener38() { if (ArgumentEncoding.decodeInt(mPacketBody.Substring(1)) == 0) { InstanceManager.Game.Messenger.RejectAllBuddys(mUserInfo.userId); } else { int userid = ArgumentEncoding.decodeInt(mPacketBody.Substring(1)); InstanceManager.Game.Messenger.RejectBuddy(mUserInfo.userId, userid); } }
//154 - "GETSPACENODEUSERS": "BZ" public void Listener154() { int roomId = ArgumentEncoding.decodeInt(mPacketBody); string payload = ""; if (InstanceManager.Game.Rooms.InstanceExists(roomId)) { payload = InstanceManager.Game.Rooms.GetRoomInstance(roomId).UserList; } mMessage.Init(223); //C_ mMessage.appendString(payload); SendMessage(mMessage); }
//153 - "SETFLATCAT": "BY" public void Listener153() { int roomId = ArgumentEncoding.decodeInt(mPacketBody); int catId = ArgumentEncoding.decodeInt(mPacketBody.Substring(ArgumentEncoding.getLength(roomId)) + 1); RoomInfo info = InstanceManager.Game.Rooms.GetRoom(roomId); RoomCategory cat = InstanceManager.Game.Rooms.GetCategory(catId); if (info != null && cat != null) { if (cat.PlayerCategory) { info.RoomCategory = catId; InstanceManager.Game.Rooms.UpdateRoom(info); } } }
public string BuildFloorFurniList() { int furniCount = 0; StringBuilder sb = new StringBuilder(); foreach (FurniInfo info in mFloorFurni) { if (!info.PublicFurni && !info.Flags.InvisibleToClient) { furniCount++; sb.Append(ProcessFloorFurniDefinition(info)); } } return(ArgumentEncoding.encodeInt(furniCount) + sb.ToString()); }
//18 - "ADD_FAVORITE_ROOM": "@S" public void Listener19() { int roomId = ArgumentEncoding.decodeInt(mPacketBody.Substring(1)); List <int> favRooms = InstanceManager.Game.Users.GetFavouriteRooms(mUserInfo.userId); if (favRooms.Count < int.Parse(Users.UserSettings.MaxFavouriteRooms)) { if (!favRooms.Contains(roomId)) { InstanceManager.Game.Users.AddFavouriteRoom(mUserInfo.userId, roomId); } } else { ReportError("nav_error_toomanyfavrooms", false); } }
//55 - "SHOUT": "@w" public void Listener55() { string message = FuseMessage.getArgument(1, mPacketBody); InstanceManager.Game.Misc.ChatFilter.FilterText(ref message, mSessionID, mRoomInstance.RoomInfo.RoomID, false, "shout"); if (message != null && !mRoomInstance.GetUser(mSessionID).SpecialStates.ContainsKey("mute")) { ApplyEmotes(message); mMessage.Init(26); //@Z mMessage.appendString(ArgumentEncoding.encodeInt(mRoomInstance.GetUser(mSessionID).RoomUserID)); mMessage.appendString(message); mMessage.appendChar(2); mRoomInstance.RoomBroadcast(mMessage); mRoomInstance.MakeTalk(mSessionID, message); } }
private void WhisperResponse(string response, long sessionid) { if (sessionid > 0) { int roomId = InstanceManager.Sessions.GetSession(sessionid).mRoomID; if (roomId > 0) { int roomUser = InstanceManager.Game.Rooms.GetRoomInstance(roomId).GetUser(sessionid).RoomUserID; ClientMessage mMessage = new ClientMessage(); mMessage.Init(25); //@Y mMessage.appendString(ArgumentEncoding.encodeInt(roomUser)); mMessage.appendString(response); mMessage.appendChar(2); InstanceManager.Game.Rooms.GetRoomInstance(roomId).SendMessage(mMessage, sessionid); } } }
private string BuildCategoryResponse(RoomCategory category, int hideFull, int roomCount) { StringBuilder sb = new StringBuilder(); sb.Append(ArgumentEncoding.encodeInt(hideFull)); sb.Append(ArgumentEncoding.encodeInt(category.CategoryID)); sb.Append(ArgumentEncoding.encodeInt(category.RoomCategoryType)); sb.Append(category.CategoryName); // Name sb.Append(Convert.ToChar(2)); sb.Append(ArgumentEncoding.encodeInt(0)); sb.Append(ArgumentEncoding.encodeInt(10000)); sb.Append(ArgumentEncoding.encodeInt(category.ParentCategory)); if (category.RoomCategoryType == 2) //Guest { sb.Append(ArgumentEncoding.encodeInt(roomCount)); } return(sb.ToString()); }
private void DoBan() { string banReason = FuseMessage.getArgument(1, mPayload); string banExtra = FuseMessage.getArgument(2, mPayload); string banUser = FuseMessage.getArgument(3, mPayload); string banLast = mPayload.Substring(FuseMessage.getArgumentEnd(3, mPayload)); int banHours = ArgumentEncoding.decodeInt(banLast); bool banIp = ArgumentEncoding.decodeInt(banLast.Substring(ArgumentEncoding.getLength(banHours) + 1)) > 0; bool banMachine = ArgumentEncoding.decodeInt(banLast.Substring(ArgumentEncoding.getLength(banHours))) > 0; long targetSession = InstanceManager.Sessions.GetSessionFromUser(banUser); if (targetSession != -1) { UserInfo user = InstanceManager.Sessions.GetSession(targetSession).mUserInfo; InstanceManager.Game.Moderation.ModeratorBan(null, user.userId, mUserInfo.userId, banReason, banHours, targetSession, mSessionID, banMachine, banIp, banExtra); } }
public string GetFavouriteSearchResult(int userId, int roleId) { List <int> favouriteRooms = InstanceManager.Game.Users.GetFavouriteRooms(userId); UserInfo userInfo = InstanceManager.Game.Users.GetUser(userId); int gRooms = 0; StringBuilder sbGuest = new StringBuilder(); StringBuilder sbPublic = new StringBuilder(); foreach (int roomId in favouriteRooms) { if (InstanceManager.Game.Rooms.RoomExists(roomId)) { RoomInfo info = InstanceManager.Game.Rooms.GetRoom(roomId); int categoryType = InstanceManager.Game.Rooms.GetCategory(info.RoomCategory).RoomCategoryType; if (categoryType == 2) { sbGuest.Append(BuildRoomResponse(info, userInfo, 0)); } if (categoryType == 0) { sbPublic.Append(BuildRoomResponse(info, userInfo, 0)); } if (categoryType == 2) { gRooms++; } } else { InstanceManager.Game.Users.DeleteFavouriteRoom(userId, roomId); } } StringBuilder final = new StringBuilder(); final.Append("H" + "H" + "J" + Convert.ToChar(2) + "HHH"); final.Append(ArgumentEncoding.encodeInt(gRooms)); final.Append(sbGuest.ToString()); final.Append(sbPublic.ToString()); return(final.ToString()); }
//200 - "MODERATIONACTION": "CH" public void Listener200() { int commandCat = ArgumentEncoding.decodeInt(mPacketBody.Substring(0, 1)); int commandId = ArgumentEncoding.decodeInt(mPacketBody.Substring(1, 1)); mPayload = mPacketBody.Substring(2); //User Command if (commandCat == 0) { switch (commandId) { case 0: //Alert DoAlert(); break; case 1: //Kick DoKick(); break; case 2: //Ban DoBan(); break; } } //Room Command if (commandCat == 1) { switch (commandId) { case 0: //Room Alert DoRoomAlert(); break; case 1: //Room Kick DoRoomKick(); break; } } }
//157 - "GETAVAILABLEBADGES": "B]" public void Listener157() { int badgeCount = InstanceManager.Game.Roles.GetBadgeCount(mUserInfo.iRole); mMessage.Init(229); //Ce mMessage.appendString(ArgumentEncoding.encodeInt(badgeCount)); int currentBadge = 0; int currentIt = 0; if (badgeCount > 0) { mUserInfo.Badges = InstanceManager.Game.Roles.GetBadges(mUserInfo.iRole); foreach (string badge in mUserInfo.Badges) { mMessage.appendString(badge); mMessage.appendChar(2); if (badge == mUserInfo.sBadge) { currentBadge = currentIt; } currentIt++; } } mMessage.appendArgumentInt(currentBadge); if (currentBadge > 0) { mMessage.appendArgumentInt(1); } else { mMessage.appendArgumentInt(0); } SendMessage(mMessage); }
//2 - "room_directory": "@B" public void Listener2() { int roomId = InstanceManager.Sessions.GetSession(mSessionID).mRoomID; if (roomId != 0) { InstanceManager.Game.Rooms.GetRoomInstance(roomId).RemoveUser(mSessionID); } int requestType = Base64Encoding.DecodeInt(mPacketBody.Substring(0, 1)); roomId = ArgumentEncoding.decodeInt(mPacketBody.Substring(1)); mMessage.Init(19); //@S SendMessage(mMessage); if (requestType == 1) // Public { enterRoom(roomId, false); } }
private string ProcessFloorFurniDefinition(FurniInfo info) { StringBuilder sb = new StringBuilder(); sb.Append(info.FurniID); sb.Append(Convert.ToChar(2)); sb.Append(info.FurniSprite); sb.Append(Convert.ToChar(2)); sb.Append(ArgumentEncoding.encodeInt(info.PosX)); sb.Append(ArgumentEncoding.encodeInt(info.PosY)); sb.Append(ArgumentEncoding.encodeInt(info.W)); sb.Append(ArgumentEncoding.encodeInt(info.L)); sb.Append(ArgumentEncoding.encodeInt(info.PosRotation)); sb.Append(info.PosZ.ToString().Replace(',', '.')); sb.Append(Convert.ToChar(2)); sb.Append(info.Col); sb.Append(Convert.ToChar(2)); sb.Append(Convert.ToChar(2)); sb.Append(ArgumentEncoding.encodeInt(info.TeleportId)); sb.Append(info.FurniVar); sb.Append(Convert.ToChar(2)); return(sb.ToString()); }
//93 - "DANCE": "A]" public void Listener93() { if (!mRoomInstance.HasUniqueStatus(mSessionID, "sit") && !mRoomInstance.HasUniqueStatus(mSessionID, "lay") && !mRoomInstance.HasUniqueStatus(mSessionID, "swim")) { if (mPacketBody.Length == 0) { mRoomInstance.RemoveUniqueStatuses(mSessionID, ""); ApplyUniqueStatus("dance", 0, null, true, 0, 0, null); } else { if (InstanceManager.Game.Roles.HasRight(mUserInfo.iRole, "fuse_use_club_dance")) { int danceId = ArgumentEncoding.decodeInt(mPacketBody); if (danceId >= 0 && danceId <= 4) { mRoomInstance.RemoveUniqueStatuses(mSessionID, ""); ApplyUniqueStatus("dance", 0, danceId.ToString(), true, 0, 0, null); } } } } }
//56 - "WHISPER": "@x" public void Listener56() { string message = FuseMessage.getArgument(1, mPacketBody); int tSpace = message.IndexOf(" "); string user = message.Substring(0, tSpace); string chat = message.Substring(tSpace + 1); InstanceManager.Game.Misc.ChatFilter.FilterText(ref chat, mSessionID, mRoomInstance.RoomInfo.RoomID, false, "whisper to " + user); if (chat != null && !mRoomInstance.GetUser(mSessionID).SpecialStates.ContainsKey("mute")) { ApplyEmotes(chat); long sender = mRoomInstance.GetUser(mSessionID).SessionID; long receiver = mRoomInstance.GetUser(user).SessionID; mMessage.Init(25); //@Y mMessage.appendString(ArgumentEncoding.encodeInt(mRoomInstance.GetUser(mSessionID).RoomUserID)); mMessage.appendString(chat); mMessage.appendChar(2); mRoomInstance.SendMessage(mMessage, sender); mRoomInstance.SendMessage(mMessage, receiver); mRoomInstance.MakeTalk(mSessionID, chat); } }
//19 - "DEL_FAVORITE_ROOM": "@T" public void Listener20() { int roomId = ArgumentEncoding.decodeInt(mPacketBody.Substring(1)); InstanceManager.Game.Users.DeleteFavouriteRoom(mUserInfo.userId, roomId); }