public override void loadRoomPacket(ConnectedUser user) { int votedCheck = int.Parse(MySQL.runRead("SELECT count(user) FROM room_votes WHERE user='******' AND room='" + RoomID + "'")); if (votedCheck > 0) { user._Room_Voted = true; } else { user._Room_Voted = false; } if (user._UserID == RoomOwner) { user._Room_Voted = true; } FurniturePacket[] Items = new FurniturePacket[furniture.Count]; int i = 0; foreach (Item itm in furniture.Values) { FurniturePacket getf = new FurniturePacket(); getf.I = itm.id; getf.T = itm.tile; getf.S = itm.stacknr; getf.SH = itm.stackheight; getf.H = itm.turn; getf.A = itm.action; getf.F = itm.furni; Items[i] = getf; i++; } RoomLoadDataPacket rd = new RoomLoadDataPacket(); rd.I = RoomID; rd.N = RoomName; rd.D = RoomDescr; rd.O = RoomOwner; rd.ON = RoomOwnerName; rd.Fl = floorType; rd.Wl = wallType; rd.L = lang; rd.B = breed; rd.Do = door; rd.M = RoomSize; rd.R = user._HasRights; rd.H = holes; rd.V = user._Room_Voted; rd.S = score; rd.F = Items; string ItemsData = JsonConvert.SerializeObject(rd); user.sendData("041" + ItemsData + "#"); }
public void vote(string vote, ConnectedUser user) { if (user._UserID != RoomOwner && !user._Room_Voted) { if (vote == "up") { MySQL.runQuery("UPDATE rooms SET score = " + ++score + " WHERE id = '" + RoomID + "'"); } else if (vote == "down") { MySQL.runQuery("UPDATE rooms SET score = " + --score + " WHERE id = '" + RoomID + "'"); } MySQL.runQuery("INSERT INTO room_votes SET user='******', room='" + RoomID + "'"); user._Room_Voted = true; } RoomScorePacket toremove = new RoomScorePacket(); toremove.S = score; string scorePacketString = JsonConvert.SerializeObject(toremove); user.sendData("066" + scorePacketString + "#"); }
public override void doFurni(ConnectedUser user, int id, string tile) { bool inRoom = false; bool donating = false; Item furniData; if (furniture.ContainsKey(id)) { furniData = getItem(id); inRoom = true; } else { string[] data = MySQL.runReadRow("SELECT owner, room, tile, stacknr, stackheight, turn, action, furni, tradeable FROM items WHERE id = '" + id + "'"); furniData = new Item(id, int.Parse(data[0]), int.Parse(data[1]), data[2], int.Parse(data[3]), int.Parse(data[4]), int.Parse(data[5]), int.Parse(data[6]), data[7], int.Parse(data[8])); } CatalogueManager.ItemTemplate furniTemplate = CatalogueManager.getTemplate(furniData.furni); if (user._HasRights) { List<Point> currentTiles; if (furniTemplate.soort != "poster") { currentTiles = getCurrentTiles(furniData, inRoom); } else { currentTiles = new List<Point>(); } if (tile == "inv") { if (RoomOwner == user._UserID || RankManager.containsRight(user._Rank, "always_pickup")) { // check if it's the room, otherwise: remove from hashtable! if (inRoom) { // remove from room furniture.Remove(id); MySQL.runQuery("UPDATE items SET owner='" + user._UserID + "', room='0', tile='" + tile + "', stacknr='1', stackheight='0', turn='1', action='0' WHERE id='" + id + "'"); if (RoomOwner != user._UserID) { MySQL.runQuery("INSERT INTO furni_history SET id='" + id + "', `date`='" + timestamp.get + "', `type`='take', `from`='" + RoomOwner + "', `to`='" + user._UserID + "', credits='0';"); } updateHeightmapping(); FurniturePacket movePacket = new FurniturePacket(); movePacket.I = furniData.id; movePacket.T = tile; movePacket.S = 1; movePacket.SH = 0; movePacket.H = 1; movePacket.A = 0; movePacket.F = furniData.furni; string movePacketString = JsonConvert.SerializeObject(movePacket); user.sendData("047" + movePacketString + "#"); FurnitureRemovePacket removePacket = new FurnitureRemovePacket(); removePacket.I = furniData.id; string removePacketString = JsonConvert.SerializeObject(removePacket); sendDataButNotTo(user, "048" + removePacketString + "#"); // chair stuff if (furniTemplate.soort == "stoel") { StringBuilder sendText = new StringBuilder(); for (int i = 0; i < currentTiles.Count; i++) { Point thisTile = currentTiles[i]; if (_sqUnit[thisTile.X, thisTile.Y] == true) { foreach (ConnectedUser seatUser in _Users.Values) { if (seatUser._Room_X == thisTile.X && seatUser._Room_Y == thisTile.Y) { seatUser._Room_Sit = ""; SetSitPacket setSit = new SetSitPacket(); setSit.I = seatUser._UserID; setSit.S = seatUser._Room_Sit; string SetSitPacket = JsonConvert.SerializeObject(setSit); sendText.Append("080"); sendText.Append(SetSitPacket); sendText.Append("#"); } } } } string sendTextString = sendText.ToString(); if (sendTextString != "") { foreach (ConnectedUser usr in _Users.Values) { usr.sendData(sendTextString); } } } } } } else { if (inRoom || furniData.owner == user._UserID) { // moving or placing in room, not putting in inventory if (!inRoom && furniData.owner == user._UserID && RoomOwner != user._UserID) { donating = true; } if (donating && furniData.tradeable == 0) { // not tradeable user.sendData(user.notify(TextsManager.get("untradeable"), TextsManager.get("notify_default"))); } else { if (furniTemplate.soort != "poster") { int X = int.Parse(tile.Split('_')[0]) - 1; int Y = int.Parse(tile.Split('_')[1]) - 1; string check = furniPlaceable(furniData, new int[] { X, Y }, furniData.turn, furniTemplate.lang, furniTemplate.breed, inRoom, currentTiles); if (check == "free") { furniData.tile = tile; if (!inRoom) { furniture.Add(id, furniData); } else { furniture[id] = furniData; // update hashtable } MySQL.runQuery("UPDATE items SET owner='" + RoomOwner + "', room='" + RoomID + "', tile='" + tile + "' WHERE id='" + id + "'"); if (donating) { MySQL.runQuery("INSERT INTO furni_history SET id='" + id + "', `date`='" + timestamp.get + "', `type`='don', `from`='" + user._UserID + "', `to`='" + RoomOwner + "', credits='0';"); } updateHeightmapping(); FurniturePacket movepacket = new FurniturePacket(); movepacket.I = furniData.id; movepacket.T = furniData.tile; movepacket.S = furniData.stacknr; movepacket.SH = furniData.stackheight; movepacket.H = furniData.turn; movepacket.A = furniData.action; movepacket.F = furniData.furni; string movepacketstring = JsonConvert.SerializeObject(movepacket); foreach (ConnectedUser usr in _Users.Values) { usr.sendData("047" + movepacketstring + "#"); } // chair stuff if (furniTemplate.soort == "stoel" && inRoom) { StringBuilder sendText = new StringBuilder(); for (int i = 0; i < currentTiles.Count; i++) { Point thisTile = currentTiles[i]; if (_sqUnit[thisTile.X, thisTile.Y] == true) { foreach (ConnectedUser seatUser in _Users.Values) { if (seatUser._Room_X == thisTile.X && seatUser._Room_Y == thisTile.Y) { if (_sqState[seatUser._Room_X, seatUser._Room_Y] == squareState.Seat) { seatUser._Room_Dir = _sqRot[seatUser._Room_X, seatUser._Room_Y] * 2; seatUser._Room_Sit = seatUser._Room_Dir.ToString() + "|" + _sqTile[seatUser._Room_X, seatUser._Room_Y]; } else { seatUser._Room_Sit = ""; } SetSitPacket setSit = new SetSitPacket(); setSit.I = seatUser._UserID; setSit.S = seatUser._Room_Sit; string SetSitPacket = JsonConvert.SerializeObject(setSit); sendText.Append("080"); sendText.Append(SetSitPacket); sendText.Append("#"); } } } } string sendTextString = sendText.ToString(); if (sendTextString != "") { foreach (ConnectedUser usr in _Users.Values) { usr.sendData(sendTextString); } } } } } else { if (!inRoom) // only place and pickup poster, don't move them { string coords = tile.Split('@')[0]; int X = int.Parse(coords.Split('|')[0]); int Y = int.Parse(coords.Split('|')[1]); int H = int.Parse(tile.Split('@')[1]); furniData.tile = coords; furniData.turn = H; furniture.Add(id, furniData); MySQL.runQuery("UPDATE items SET owner='" + RoomOwner + "', room='" + RoomID + "', tile='" + coords + "', turn='" + H + "' WHERE id='" + id + "'"); if (donating) { MySQL.runQuery("INSERT INTO furni_history SET id='" + id + "', `date`='" + timestamp.get + "', `type`='don', `from`='" + user._UserID + "', `to`='" + RoomOwner + "', credits='0';"); } FurniturePacket movepacket = new FurniturePacket(); movepacket.I = furniData.id; movepacket.T = furniData.tile; movepacket.S = furniData.stacknr; movepacket.SH = furniData.stackheight; movepacket.H = furniData.turn; movepacket.A = furniData.action; movepacket.F = furniData.furni; string movepacketstring = JsonConvert.SerializeObject(movepacket); foreach (ConnectedUser usr in _Users.Values) { usr.sendData("047" + movepacketstring + "#"); } } } } } } } }
public void sendRoomData2(ConnectedUser User) { string sendText = ""; foreach (ConnectedUser usr in _Users.Values) { AddAvatarPacket avatars = new AddAvatarPacket(); avatars.I = usr._UserID; avatars.U = usr._Username; avatars.M = usr._Mission; avatars.C = usr._Figure; avatars.B = usr._Badge; avatars.D = usr._Drink; avatars.Brb = usr._Brb; avatars.S = usr._Room_Sit; avatars.X = usr._Room_X; avatars.Y = usr._Room_Y; avatars.H = usr._Room_Dir; avatars.F = false; avatars.R = usr._HasRights; string stringavatars = JsonConvert.SerializeObject(avatars); sendText += "056" + stringavatars + "#"; } foreach (RoomBot bot in _Bots.Values) { // TODO: make it have a better id and different id AddAvatarPacket avatars = new AddAvatarPacket(); avatars.I = bot._MyAvatarID; avatars.U = bot._MyName; avatars.M = bot._MyMission; avatars.C = bot._MyFigure; avatars.B = "7"; // bot badge avatars.D = ""; avatars.Brb = 0; avatars.S = bot._Sit; avatars.X = bot._MyX; avatars.Y = bot._MyY; avatars.H = bot._MyZ; avatars.F = false; avatars.R = false; string stringavatars = JsonConvert.SerializeObject(avatars); sendText += "056" + stringavatars + "#"; } sendText += "044" + "#"; User.sendData(sendText); }