using System; using System.Threading; using System.Collections; using Holo.Managers; using Holo.Virtual.Rooms; namespace Holo.Virtual.Users { /// /// Represents a virtual user in a virtual room. /// public class virtualRoomUser { /// /// The database ID of the user. /// internal int userID; /// /// The ID of the virtual room where the user is in. /// internal int roomID; /// /// The ID of the user in the virtual room. /// internal int roomUID; /// /// The X position of the user in the virtual room. /// internal int X; /// /// The Y position of the user in the virtual room. /// internal int Y; /// /// The height of the user in the virtual room. /// internal double H; /// /// The rotation of the user's head in the virtual room. /// internal byte Z1; /// /// The rotation of the user's body in the virtual room. /// internal byte Z2; /// /// The X position where the user wants to walk to. If not walking, -1. /// internal int goalX; /// /// The Y position where the user wants to walk to. If not walking, -1. /// internal int goalY; /// /// Specifies if the user can walk. /// internal bool walkLock; /// /// Specifies if the user is on his way of leaving the room after clicking the door. /// internal bool walkDoor; /// /// Guestroom only. Specifies if the user has voted on the guestroom already. /// internal bool hasVoted; /// The room user ID (rUID) of the virtual user where this virtual user is currently trading items with. If not trading, then this value is -1. /// internal int _tradePartnerRoomUID = -1; /// /// Swimming pools only. Specifies the swimming pool outfit. /// internal string SwimOutfit; /// Swimming pools only. Specifies the swimming pool outfit. /// internal string swimOutfit; /// /// Gamelobbies only. Specifies the amount of gamepoints that this user has for the game in the current gamelobby. /// internal int gamePoints; /// /// The parent virtual user of this room user. /// internal virtualUser User; /// /// The status manager of this room user. /// internal virtualRoomUserStatusManager statusManager; /// /// Indicates if the room user is currently typing a chat message. /// internal bool isTyping; /// /// Turn the pettransform on or off. /// internal bool petTransform; /// /// Indicates if the room user is able to use the special teleport cast, which allows him to teleport around the room. /// internal bool SPECIAL_TELEPORTABLE; private delegate void walkSleepPointer(); /// /// Initializes a virtual room user. /// /// The database ID of the virtual user of this room user object. /// The database ID of the room where the room user is in. /// The ID that identifies the room user in the virtual room. /// The parent vittual user of this room user. /// The status manager of this room user. internal virtualRoomUser(int userID, int roomID, int roomUID, virtualUser User, virtualRoomUserStatusManager statusManager) { this.userID = userID; this.roomID = roomID; this.roomUID = roomUID; this.User = User; this.statusManager = statusManager; } /// /// The virtualRoom object that represents the room where this room user is in. /// internal virtualRoom Room { get { return roomManager.getRoom(roomID); } } /// /// Refreshes the status of this room user in the virtual room. /// internal void Refresh() { Room.Refresh(this); } /// /// Returns the details string for this room user, containing username etc. /// internal string detailsString { get { string petTransformAdd = ""; string petTransformFigure = User._Figure; if (petTransform) { petTransformAdd = "7ui1"; petTransformFigure = "1 004 98A1C5"; } string s = "i:" + roomUID + Convert.ToChar(13) + "a:" + userID + Convert.ToChar(13) + "n:" + petTransformAdd + User._Username + Convert.ToChar(13) + "f:" + petTransformFigure + Convert.ToChar(13) + "l:" + X + " " + Y + " " + H + Convert.ToChar(13); if (User._Mission != "") { s += "c:" + User._Mission + Convert.ToChar(13); } if (User._nowBadge != "") { s += "b:" + User._nowBadge + Convert.ToChar(13); } if (SwimOutfit != "") { s += "p:" + SwimOutfit + Convert.ToChar(13); } if (swimOutfit != "") { s += "p:" + swimOutfit + Convert.ToChar(13); } if (User._groupID > 0) { s += "g:" + User._groupID + Convert.ToChar(13) + "t:" + User._groupMemberRank + Convert.ToChar(13); } return s; } } // [NEW] v26 Badges - fink i found a fix! :) /* * string petTransformAdd = ""; string petTransformFigure = User._Figure; string userName = DB.runRead("SELECT name FROM users WHERE id = '" + userID + "'"); string userMotto = DB.runRead("SELECT mission FROM users WHERE id = '" + userID + "'"); string userSex = DB.runRead("SELECT sex FROM users WHERE id = '" + userID + "'"); if (DB.checkExists("SELECT * FROM users_badgescur WHERE userid = '" + userID + "'") == false) { DB.runQuery("INSERT INTO users_badgescur(userid,badge1,badge2,badge3,badge4,badge5) VALUES ('" + userID + "','','','','','')"); } string Badge1 = DB.runRead("SELECT badge1 FROM users_badgescur WHERE userid = '" + userID + "'"); string Badge2 = DB.runRead("SELECT badge2 FROM users_badgescur WHERE userid = '" + userID + "'"); string Badge3 = DB.runRead("SELECT badge3 FROM users_badgescur WHERE userid = '" + userID + "'"); string Badge4 = DB.runRead("SELECT badge4 FROM users_badgescur WHERE userid = '" + userID + "'"); string Badge5 = DB.runRead("SELECT badge5 FROM users_badgescur WHERE userid = '" + userID + "'"); string s = "i:" + roomUID + Convert.ToChar(13) + "a:" + userID + Convert.ToChar(13) + "n:" + petTransformAdd + User._Username + Convert.ToChar(13) + "f:" + petTransformFigure + Convert.ToChar(13) + "l:" + X + " " + Y + " " + H + Convert.ToChar(13) + "c:" + userMotto + Convert.ToChar(13) + "s:" + userSex + Convert.ToChar(13) + "b:"; if (Badge1 != "") { s += "1:" + Badge1 + ","; } if (Badge2 != "") { s += "2:" + Badge2 + ","; } if (Badge3 != "") { s += "3:" + Badge3 + ","; } if (Badge4 != "") { s += "4:" + Badge4 + ","; } if (Badge5 != "") { s += "5:" + Badge5; } if (SwimOutfit != "") { s += Convert.ToChar(13) + "p:" + SwimOutfit; } if (User._groupID > 0) { s += Convert.ToChar(13) + "g:" + User._groupID + Convert.ToChar(13) + "t:" + (int)User._groupMemberRank; } return s; * internal string detailsString { get { if (User._isInvisible == false) { if (User.imitateEnabled) { try { if (userManager.containsUser(User.imitateID)) { // see if the user is online for their info virtualUser Target = userManager.getUser(User.imitateID); string i = "i:" + roomUID + Convert.ToChar(13) + "a:" + userID + Convert.ToChar(13) + "n:" + Target._Username + Convert.ToChar(13) + "f:" + Target._Figure + Convert.ToChar(13) + "l:" + X + " " + Y + " " + H + Convert.ToChar(13); if (Target._Mission != "") { i += "c:" + Target._Mission + Convert.ToChar(13); } if (Target._Badge != "") { i += "b:" + Target._Badge + Convert.ToChar(13); } if (Target.roomUser.swimOutfit != "") { i += "p:" + Target.roomUser.swimOutfit + Convert.ToChar(13); } if (Target._groupID > 0) { i += "g:" + Target._groupID + Convert.ToChar(13) + "t:" + (int)Target._groupMemberRank + Convert.ToChar(13); } return i; } else { // if not, use their database info string[] Target = DB.runReadRow("SELECT name,figure,mission,figure_swim FROM users WHERE id = '" + User.imitateID + "'"); string TargetBadge = ""; if (DB.checkExists("SELECT badgeid FROM users_badges WHERE userid = '" + User.imitateID + "' AND iscurrent = '1'")) TargetBadge = DB.runRead("SELECT badgeid FROM users_badges WHERE userid = '" + User.imitateID + "' AND iscurrent = '1'"); string i = "i:" + roomUID + Convert.ToChar(13) + "a:" + userID + Convert.ToChar(13) + "n:" + Target[0] + Convert.ToChar(13) + "f:" + Target[1] + Convert.ToChar(13) + "l:" + X + " " + Y + " " + H + Convert.ToChar(13); if (Target[2] != "") { i += "c:" + Target[2] + Convert.ToChar(13); } if (TargetBadge != "") { i += "b:" + TargetBadge + Convert.ToChar(13); } if (Target[3] != "") { i += "p:" + Target[3] + Convert.ToChar(13); } return i; } } catch { return ""; } }} } }*/ }} /// /// Returns the action string for this room user, containing position, movements, statuses etc. /// internal string statusString { get { return roomUID + " " + X + "," + Y + "," + H.ToString().Replace(",",".") + "," + Z1 + "," + Z2 + "/" + statusManager.ToString(); } }