Exemple #1
0
        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 + "#");
        }
Exemple #2
0
 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 + "#");
 }
Exemple #3
0
        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 + "#");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #4
0
        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);
        }