Beispiel #1
0
        public void interactWithDice(int itemID, uint sessionID, bool spinDice)
        {
            floorItem pItem = this.getFloorItem(itemID);
            if (pItem != null && pItem.Definition.Behaviour.isDice) // Valid item
            {
                roomUser pUser = this.getRoomUser(sessionID);
                if (pUser == null || !tilesTouch(pItem.X, pItem.Y, pUser.X, pUser.Y))
                    return; // Invalid position of room user and dice item
                pUser = null;

                serverMessage Message = new serverMessage(90); // "AZ"
                Message.Append(itemID);
                itemID *= 38;

                int randomNumber = 0;
                if (spinDice) // New spin
                {
                    this.sendMessage(Message); // Start spin animation for clients

                    // Generate random number
                    randomNumber = new Random(DateTime.Now.Millisecond).Next(1, 7); // 1-6
                    itemID += randomNumber;
                }

                Message.Append(" " + itemID.ToString()); // Append 'new' item ID
                if (spinDice) // New spin, send delayed message
                    this.sendMessage(Message.ToString(), 1000);
                else // Send message immediately
                    this.sendMessage(Message);

                pItem.customData = randomNumber.ToString(); // Set custom data
                pItem.requiresUpdate = true; // Request update of dice customdata
            }
        }
Beispiel #2
0
        /// <summary>
        /// 66 - "AB"
        /// </summary>
        public void FLATPROPBYITEM()
        {
            if (Session.roomInstance.sessionHasRights(Session.ID)) // Permission
            {
                int       itemID = int.Parse(Request.Content.Split('/')[1]);
                stripItem pItem  = Session.itemStripHandler.getHandItem(itemID);
                if (pItem != null && pItem.Definition.Behaviour.isDecoration)
                {
                    Session.itemStripHandler.removeHandItem(itemID, true);

                    int decorationValue = int.Parse(pItem.customData);
                    if (pItem.Definition.Sprite == "wallpaper")
                    {
                        Session.roomInstance.Information.Wallpaper = decorationValue;
                    }
                    else // Floor
                    {
                        Session.roomInstance.Information.Floor = decorationValue;
                    }

                    serverMessage msgUpdate = new serverMessage(46); // "@n"
                    msgUpdate.Append(pItem.Definition.Sprite);
                    msgUpdate.Append("/");
                    msgUpdate.Append(decorationValue);
                    Session.roomInstance.sendMessage(msgUpdate);

                    Session.roomInstance.Information.updateFlatProperties();
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Accepts a buddy request and notifies the sender (if online) and the receiver.
        /// </summary>
        /// <param name="Session">The Woodpecker.Sessions.Session object of the user that accepts the request.</param>
        /// <param name="senderID">The database ID of the user that sent the request.</param>
        public void acceptBuddyRequest(ref Session Session, int senderID)
        {
            Database Database = new Database(false, false);

            Database.addParameterWithValue("userid", Session.User.ID);
            Database.addParameterWithValue("senderid", senderID);
            Database.Open();

            if (Database.findsResult("SELECT userid FROM messenger_buddylist WHERE userid = @senderid AND buddyid = @userid AND accepted = '0' LIMIT 1"))
            {
                Database.runQuery("UPDATE messenger_buddylist SET accepted = '1' WHERE userid = @senderid AND buddyid = @userid LIMIT 1");
                Database.Close();

                serverMessage Message = new serverMessage();
                if (ObjectTree.Game.Users.userIsLoggedIn(senderID)) // Sender is online!
                {
                    Message.Initialize(137);                        // "BI"
                    Message.Append(getBuddy(Session.User.ID).ToString());
                    ObjectTree.Game.Users.trySendGameMessage(senderID, Message);
                }

                Message.Initialize(137); // "BI"
                Message.Append(getBuddy(senderID).ToString());
                Session.gameConnection.sendMessage(Message);
            }
            else
            {
                Database.Close();
            }
        }
Beispiel #4
0
        /// <summary>
        /// Refreshes the session user's credit amount. (message 6: @F)
        /// </summary>
        public void refreshCredits()
        {
            if (this.isHoldingUser)
            {
                serverMessage Message = new serverMessage(6); // "@F"
                Message.Append(this.User.Credits);
                Message.Append(".0");

                this.gameConnection.sendMessage(Message);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Modifies the hand page index with a given mode and sends the current hand page of this user.
        /// </summary>
        /// <param name="szMode">'How-to' modify the hand page index.</param>
        public void sendHandStrip(string szMode)
        {
            if (this.itemStripHandler != null)
            {
                this.itemStripHandler.changeHandStripPage(szMode); // Switch!

                serverMessage Message = new serverMessage(140);    // "BL"
                Message.Append(this.itemStripHandler.getHandItemCasts());
                Message.appendChar(13);
                Message.Append(this.itemStripHandler.handItemCount);

                this.gameConnection.sendMessage(Message);
            }
        }
Beispiel #6
0
        /// <summary>
        /// 86 - "AV"
        /// </summary>
        public void CRYFORHELP()
        {
            string[] args     = Request.getMixedParameters();
            Database Database = new Database(false, false);

            Database.addParameterWithValue("userid", Session.User.ID);
            Database.addParameterWithValue("senderip", Session.ipAddress);
            Database.addParameterWithValue("msg", args[0]);
            Database.addParameterWithValue("roomid", Session.roomID);
            Database.addParameterWithValue("ip", Session.ipAddress);
            Database.addParameterWithValue("sended", DateTime.Now.ToString());
            Database.Open();
            string row  = "";
            string room = "";

            if (Database.Ready)
            {
                Database.runQuery("INSERT INTO callforhelp (id, sended, uid, rid, date, message, send_ip, pickedup, pickedup_person, pickedup_ip, pickedup_date) VALUES ('', @sended, @userid, @roomid, @msg, '" + DateTime.Now.ToString() + "', @senderip, '0', '', '', '')");
                row  = Database.getString("SELECT id FROM `callforhelp` ORDER BY `callforhelp`.`id` DESC LIMIT 1");
                room = Database.getString("SELECT roomname FROM `rooms` WHERE `id` = '" + Session.roomID + "' LIMIT 1");
                Database.Close();
            }

            ArrayList list = Engine.Game.Users.UserFuses("fuse_receive_calls_for_help");

            foreach (int x in list)
            {
                Session S = Engine.Game.Users.getUserSession(x);
                if (S == null)
                {
                    return;
                }
                serverMessage Message = new serverMessage();
                Message.Initialize(148);
                Message.Append(row);
                Message.appendChar(2);
                Message.Append("ISent: ");
                Message.Append(DateTime.Now.ToString());
                Message.appendChar(2);
                Message.Append(Session.User.Username);
                Message.appendChar(2);
                Message.Append(args[0]);
                Message.appendChar(2);
                Message.Append(Specialized.Encoding.wireEncoding.Encode(Session.roomID));
                Message.appendChar(2);
                Message.Append("Room: " + room);
                Message.appendChar(2);
                Message.Append("I");
                Message.appendChar(2);
                Message.Append(Specialized.Encoding.wireEncoding.Encode(Session.roomID));
                S.gameConnection.sendMessage(Message);
            }
        }
Beispiel #7
0
        /// <summary>
        /// Broadcoasts the removal of a wall item to all room users.
        /// </summary>
        /// <param name="itemID">The database ID of the wall item that is removed.</param>
        private void broadcoastWallItemRemoval(int itemID)
        {
            serverMessage Message = new serverMessage(84); // "AT"

            Message.Append(itemID);
            this.sendMessage(Message);
        }
Beispiel #8
0
        /// <summary>
        /// Gets the transactions (credit log) of a user on given user session and sends it to the session's game connection.
        /// </summary>
        /// <param name="Session">The Woodpecker.Sessions.Session object to get the transaction for and to send the message to.</param>
        public void sendTransactions(ref Session Session)
        {
            if (Session.User == null)
            {
                return;
            }

            serverMessage Message  = new serverMessage(209); // "CQ"
            Database      Database = new Database(false, true);

            Database.addParameterWithValue("userid", Session.User.ID);

            Database.Open();
            if (Database.Ready)
            {
                DataTable creditLogData = Database.getTable("SELECT moment,type,activity FROM users_creditlog WHERE userid = @userid LIMIT 50");
                foreach (DataRow dRow in creditLogData.Rows)
                {
                    DateTime Moment = (DateTime)dRow["moment"];
                    Message.appendTabbedValue(Moment.ToString("dd/MM/yyyy"));
                    Message.appendTabbedValue(Moment.ToString("hh:mm"));
                    Message.appendTabbedValue(dRow["activity"].ToString());
                    Message.appendTabbedValue("0");
                    Message.appendTabbedValue("");
                    Message.Append(dRow["type"].ToString());
                    Message.appendChar(13);
                }
            }

            Session.gameConnection.sendMessage(Message);
        }
Beispiel #9
0
        /// <summary>
        /// Broadcoasts the removal of a floor item to all room users.
        /// </summary>
        /// <param name="itemID">The database ID of the floor item that is removed.</param>
        private void broadcoastFloorItemRemoval(int itemID)
        {
            serverMessage Message = new serverMessage(94); // "A^"

            Message.Append(itemID);
            this.sendMessage(Message);
        }
Beispiel #10
0
        /// <summary>
        /// 105 - "Ai"
        /// </summary>
        public void BUY_TICKETS()
        {
            int bundleID         = Request.getNextWiredParameter();
            int ticketsPurchased = (bundleID == 1) ? 2 : 20;

            Users.userInformation recipient =
                Engine.Game.Users.getUserInfo(Request.Content.Substring(3), true);

            if (recipient != null)
            {
                Sessions.Session session = Engine.Game.Users.getUserSession(recipient.ID);
                if (session != null)
                {
                    session.User.Tickets += ticketsPurchased;
                    session.refreshTickets();
                    if (session != this.Session)
                    {
                        serverMessage alert = new serverMessage(139); // "BK"
                        alert.Append($"{this.Session.User.Username} has sent you {ticketsPurchased} tickets.");
                        session.gameConnection.sendMessage(alert);
                    }
                    else
                    {
                        Response.Initialize(139); // "BK"
                        Response.Append("Tickets purchased.");
                        sendResponse();
                    }
                }
                else
                {
                    recipient.Tickets += ticketsPurchased;
                    recipient.updateValueables();
                }
            }
        }
Beispiel #11
0
        /// <summary>
        /// Broadcoasts the state update of a given wall item to all active room users.
        /// </summary>
        /// <param name="pItem">The wallItem instance of the wall item that is updated.</param>
        private void broadcoastWallItemStateUpdate(wallItem pItem)
        {
            serverMessage Message = new serverMessage(85); // "AU"

            Message.Append(pItem.ToString());
            this.sendMessage(Message);
        }
Beispiel #12
0
        public void broadcoastHeightmap()
        {
            serverMessage Message = new serverMessage(31); // "@_"

            Message.Append(this.getClientFloorMap());
            this.sendMessage(Message);
        }
Beispiel #13
0
        /// <summary>
        /// Broacoasts the placement of a wall item to all room users.
        /// </summary>
        /// <param name="pItem">The wallItem instance of the wall item that is placed.</param>
        private void broadcoastWallItemPlacement(wallItem pItem)
        {
            serverMessage Message = new serverMessage(83); // "AS"

            Message.Append(pItem.ToString());
            this.sendMessage(Message);
        }
Beispiel #14
0
        /// <summary>
        /// Sends the key of an error, whose description value is inside the external_texts of the client.
        /// </summary>
        /// <param name="localizedKey">The external_texts key of the error description.</param>
        public void sendLocalizedError(string localizedKey)
        {
            serverMessage Message = new serverMessage(33); // "@a"

            Message.Append(localizedKey);
            this.sendMessage(Message);
        }
Beispiel #15
0
 /// <summary>
 /// 199 - "CG"
 /// </summary>
 public void MESSAGETOCALLER()
 {
     string[] args = Request.getMixedParameters();
     if (Session.User.hasFuseRight("fuse_receive_calls_for_help"))
     {
         Database Database = new Database(false, false);
         Database.addParameterWithValue("id", args[0]);
         Database.addParameterWithValue("msg", args[1]);
         Database.Open();
         if (Database.Ready)
         {
             DataRow dRow = Database.getRow("SELECT * FROM callforhelp WHERE id = @id");
             if (dRow != null)
             {
                 Session S = Engine.Game.Users.getUserSession(Convert.ToInt32(dRow["uid"]));
                 if (S == null)
                 {
                     return;
                 }
                 serverMessage Message = new serverMessage();
                 Message.Initialize(274);
                 Message.Append(args[1]);
                 Message.appendChar(2);
                 S.gameConnection.sendMessage(Message);
                 Database.runQuery("INSERT INTO callforhelp_msg VALUES ('', @id, @msg, '" + Session.User.ID + "', '" + Session.ipAddress + "', '" + DateTime.Now.ToString() + "')");
             }
         }
     }
 }
Beispiel #16
0
        /// <summary>
        /// Makes a room unit (so a room user, a pet, or a bot) visible to all users in the room.
        /// </summary>
        /// <param name="szDetails"></param>
        private void castRoomUnit(string szDetails)
        {
            serverMessage Cast = new serverMessage(28); // "@\"

            Cast.Append(szDetails);
            this.sendMessage(Cast);
        }
Beispiel #17
0
        public bool requestRoomAlert(int userID, int roomID, string Message, string extraInfo)
        {
            if (ObjectTree.Game.Rooms.roomInstanceRunning(roomID))
            {
                serverMessage Alert = new serverMessage(33); // "@a"
                Alert.Append("mod_warn/");
                Alert.Append(Message);

                ObjectTree.Game.Rooms.getRoomInstance(roomID).sendMessage(Alert);

                logModerationAction(userID, "roomalert", roomID, Message, extraInfo);

                return(true);
            }

            return(false);
        }
Beispiel #18
0
        /// <summary>
        /// Sends the available figure parts for this session user.
        /// </summary>
        public void refreshFigureParts()
        {
            serverMessage Message = new serverMessage(8); // "@H"

            Message.Append("[");
            if (this.isHoldingUser && this.User.hasClub) // Can use 'Club' parts
            {
                Message.Append(Configuration.getConfigurationValue("users.figure.parts.club"));
            }
            else
            {
                Message.Append(Configuration.getConfigurationValue("users.figure.parts.default"));
            }
            Message.Append("]");

            this.gameConnection.sendMessage(Message);
        }
Beispiel #19
0
        /// <summary>
        /// Notifies all room users that a given room unit has left the room and releases the map spot for the room user.
        /// </summary>
        /// <param name="roomUnitID">The room unit ID of the room unit that has left the room.</param>
        /// <param name="mapX">The current X position of the room unit on the map.</param>
        /// <param name="mapY">The current Y position of the room unit on the map.</param>
        private void releaseRoomUnit(int roomUnitID, byte mapX, byte mapY)
        {
            serverMessage Message = new serverMessage(29); // "@]"

            Message.Append(roomUnitID);
            this.sendMessage(Message);

            this.gridUnit[mapX, mapY] = false;
        }
Beispiel #20
0
        /// <summary>
        /// Refreshes the session user's game ticket amount. (message 124: A|)
        /// </summary>
        public void refreshTickets()
        {
            if (this.isHoldingUser)
            {
                serverMessage Message = new serverMessage(124); // "A|"
                Message.Append(this.User.Credits);

                this.gameConnection.sendMessage(Message);
            }
        }
Beispiel #21
0
        /// <summary>
        /// Retrieves the FUSE rights for the user on this session and sends it to the client.
        /// </summary>
        public void refreshFuseRights()
        {
            if (this.isHoldingUser)
            {
                serverMessage Message = new serverMessage(2); // "@B"
                Message.Append(Engine.Game.Roles.getRightsForRole(this.User.Role, this.User.hasClub));

                this.gameConnection.sendMessage(Message);
            }
        }
Beispiel #22
0
        public void broadcoastTeleportActivity(int itemID, string Username, bool disappearUser)
        {
            floorItem pItem = this.getFloorItem(itemID);
            if (pItem != null && pItem.Definition.Behaviour.isTeleporter)
            {
                serverMessage Message = new serverMessage();
                if (disappearUser)
                    Message.Initialize(89); // "AY"
                else
                    Message.Initialize(92); // "A\"
                Message.Append(pItem.ID);
                Message.Append("/");
                Message.Append(Username);
                Message.Append("/");
                Message.Append(pItem.Definition.Sprite);

                this.sendMessage(Message);
            }
        }
Beispiel #23
0
        /// <summary>
        /// Refreshes the session user's film amount for the camera. (message 4: @D)
        /// </summary>
        public void refreshFilm()
        {
            if (this.isHoldingUser)
            {
                serverMessage Message = new serverMessage(4); // "@D"
                Message.Append(this.User.Film);

                this.gameConnection.sendMessage(Message);
            }
        }
Beispiel #24
0
        public void interactWithDice(int itemID, uint sessionID, bool spinDice)
        {
            floorItem pItem = this.getFloorItem(itemID);

            if (pItem != null && pItem.Definition.Behaviour.isDice) // Valid item
            {
                roomUser pUser = this.getRoomUser(sessionID);
                if (pUser == null || !tilesTouch(pItem.X, pItem.Y, pUser.X, pUser.Y))
                {
                    return; // Invalid position of room user and dice item
                }
                pUser = null;

                serverMessage Message = new serverMessage(90); // "AZ"
                Message.Append(itemID);
                itemID *= 38;

                int randomNumber = 0;
                if (spinDice)                  // New spin
                {
                    this.sendMessage(Message); // Start spin animation for clients

                    // Generate random number
                    randomNumber = new Random(DateTime.Now.Millisecond).Next(1, 7); // 1-6
                    itemID      += randomNumber;
                }

                Message.Append(" " + itemID.ToString()); // Append 'new' item ID
                if (spinDice)                            // New spin, send delayed message
                {
                    this.sendMessage(Message.ToString(), 1000);
                }
                else // Send message immediately
                {
                    this.sendMessage(Message);
                }

                pItem.customData     = randomNumber.ToString(); // Set custom data
                pItem.requiresUpdate = true;                    // Request update of dice customdata
            }
        }
Beispiel #25
0
        /// <summary>
        /// Refreshes the session user's game ticket amount. (message 124: A|)
        /// </summary>
        public void refreshTickets()
        {
            if (this.isHoldingUser)
            {
                this.User.updateValueables();

                serverMessage Message = new serverMessage(124); // "A|"
                Message.Append(this.User.Tickets);

                this.gameConnection.sendMessage(Message);
            }
        }
Beispiel #26
0
        /// <summary>
        /// Refresh the trade boxes for this session's user and his/her trade partner's session user. Only works when both users are trading.
        /// </summary>
        public void refreshTradeBoxes()
        {
            if (this.itemStripHandler.isTrading)
            {
                Session partnerSession = Engine.Sessions.getSession(this.itemStripHandler.tradePartnerSessionID);
                if (partnerSession == null || !partnerSession.itemStripHandler.isTrading)
                {
                    return;
                }

                string myBox      = itemStripHandler.generateTradeBox(this);
                string partnerBox = itemStripHandler.generateTradeBox(partnerSession);

                serverMessage Message = new serverMessage(108); // "Al"
                Message.Append(myBox);
                Message.Append(partnerBox);
                this.gameConnection.sendMessage(Message);

                Message.Initialize(108); // "Al"
                Message.Append(partnerBox);
                Message.Append(myBox);
                partnerSession.gameConnection.sendMessage(Message);
            }
        }
Beispiel #27
0
        public void broadcoastTeleportActivity(int itemID, string Username, bool disappearUser)
        {
            floorItem pItem = this.getFloorItem(itemID);

            if (pItem != null && pItem.Definition.Behaviour.isTeleporter)
            {
                serverMessage Message = new serverMessage();
                if (disappearUser)
                {
                    Message.Initialize(89); // "AY"
                }
                else
                {
                    Message.Initialize(92); // "A\"
                }
                Message.Append(pItem.ID);
                Message.Append("/");
                Message.Append(Username);
                Message.Append("/");
                Message.Append(pItem.Definition.Sprite);

                this.sendMessage(Message);
            }
        }
Beispiel #28
0
        /// <summary>
        /// Broacoasts the placement of a floor item to all room users.
        /// </summary>
        /// <param name="pItem">The floorItem instance of the wall item that is placed.</param>
        /// <param name="isPlacement">True if this item is new in the room, false otherwise.</param>
        private void broadcoastFloorItemMove(floorItem pItem, bool isPlacement)
        {
            serverMessage Message = new serverMessage();

            if (isPlacement)
            {
                Message.Initialize(93); // "A]"
            }
            else
            {
                Message.Initialize(95); // "A_"
            }
            Message.Append(pItem.ToString());

            this.sendMessage(Message);
        }
Beispiel #29
0
        /// <summary>
        /// Tries to redeem a credit/item voucher for a user session.
        /// </summary>
        /// <param name="Session">The Woodpecker.Sessions.Session object to redeem the voucher with.</param>
        /// <param name="Code">The vouchercode the user entered.</param>
        public void redeemVoucher(ref Session Session, string Code)
        {
            serverMessage Response = new serverMessage();
            Database      Database = new Database(false, false);

            Database.addParameterWithValue("code", Code);

            Database.Open();
            if (Database.Ready)
            {
                DataRow dRow = Database.getRow("SELECT type,value FROM users_vouchers WHERE code = @code AND ISNULL(redeemer_userid)");
                if (dRow != null) // Voucher found
                {
                    // Mark voucher as redeemed
                    Database.addParameterWithValue("userid", Session.User.ID);
                    Database.runQuery("UPDATE users_vouchers SET redeemer_userid = @userid WHERE code = @code");
                    Database.Close();

                    string Type = (string)dRow["type"];
                    if (Type == "credits")
                    {
                        int Credits = int.Parse(dRow["value"].ToString());
                        Session.User.Credits += Credits;
                        Session.User.updateValueables();
                        this.logTransaction(Session.User.ID, "win_voucher", Credits);

                        Session.refreshCredits();
                    }
                    else if (Type == "item")
                    {
                        string[] Items = ((string)dRow["value"]).Split(';');
                    }

                    // Success!
                    Response.Initialize(212); // "CT"
                    Session.gameConnection.sendMessage(Response);
                    return;
                }
                else
                {
                    // Error 1! (not found)
                    Response.Initialize(213); // "CU"
                    Response.Append(1);
                }
                Session.gameConnection.sendMessage(Response);
            }
        }
        private void _launchBird(int[] receiverIDs, messengerMessage pMessage)
        {
            Database Database = new Database(false, false);

            Database.addParameterWithValue("senderid", pMessage.senderID);
            Database.addParameterWithValue("sent", pMessage.Sent);
            Database.addParameterWithValue("body", pMessage.Body);
            Database.Open();
            if (Database.Ready)
            {
                //DateTime now = DateTime.Now;
                //Woodpecker.Core.Logging.Log("Start: " + now.ToString("hh:mm:ss:fff"));
                foreach (int receiverID in receiverIDs)
                {
                    if (Engine.Game.Users.userIsLoggedIn(receiverID)) // Receiver is logged in, retrieve the next message ID, write the message in the database & send it to the receiver
                    {
                        int messageID = Database.getInteger("SELECT MAX(messageid) + 1 FROM messenger_messages WHERE receiverid = '" + receiverID + "' LIMIT 1");
                        Database.runQuery("INSERT INTO messenger_messages(receiverid,messageid,senderid,sent,body) VALUES ('" + receiverID + "','" + messageID + "',@senderid,@sent,@body)");

                        serverMessage Message = new serverMessage(134); // "BF"
                        Message.appendWired(1);
                        pMessage.ID = messageID;
                        Message.Append(pMessage.ToString());
                        Engine.Game.Users.trySendGameMessage(receiverID, Message);
                    }
                    else // Receiver is not online, no need for getting our hands on the next message ID etc
                    {
                        Database.runQuery(
                            "INSERT INTO messenger_messages(receiverid,messageid,senderid,sent,body) " +
                            "SELECT " +
                            "'" + receiverID + "'," +
                            "(MAX(messageid) + 1)," +
                            "@senderid," +
                            "@sent," +
                            "@body " +
                            "FROM messenger_messages WHERE receiverid = '" + receiverID + "' LIMIT 1");
                    }
                }
                //now = DateTime.Now;
                //Woodpecker.Core.Logging.Log("Stop: " + now.ToString("hh:mm:ss:fff"));

                Database.Close();
            }
        }
Beispiel #31
0
        /// <summary>
        /// Broadcoasts the message that a user is waiting for a doorbell response. This message is only broadcoasted to users who have room rights, and True is returned if at least one room user with room rights has received it.
        /// </summary>
        /// <param name="Username">The username of the user.</param>
        public bool castDoorbellUser(string Username)
        {
            bool isHeard = false;

            serverMessage Notify = new serverMessage(91); // "A["

            Notify.Append(Username);

            lock (roomUsers)
            {
                foreach (roomUser lRoomUser in roomUsers.Values)
                {
                    if (lRoomUser.hasRights)
                    {
                        lRoomUser.Session.gameConnection.sendMessage(Notify);
                        isHeard = true;
                    }
                }
            }

            return(isHeard);
        }
Beispiel #32
0
        public static serverMessage CreateVoiceSpeakMessage(string text)
        {
            // 'Speaker'
            floorItem pItem = new floorItem();

            pItem.ID                = int.MaxValue;
            pItem.Rotation          = 0;
            pItem.X                 = 255;
            pItem.Y                 = 255;
            pItem.Z                 = -1f;
            pItem.customData        = "voiceSpeak(\"" + text + "\")";
            pItem.Definition        = new itemDefinition();
            pItem.Definition.Sprite = "spotlight";
            pItem.Definition.Length = 1;
            pItem.Definition.Width  = 1;

            serverMessage msg = new serverMessage(93); // "A]"

            msg.Append(pItem.ToString());

            return(msg);
        }
Beispiel #33
0
 /// <summary>
 /// Broacoasts the placement of a wall item to all room users.
 /// </summary>
 /// <param name="pItem">The wallItem instance of the wall item that is placed.</param>
 private void broadcoastWallItemPlacement(wallItem pItem)
 {
     serverMessage Message = new serverMessage(83); // "AS"
     Message.Append(pItem.ToString());
     this.sendMessage(Message);
 }
Beispiel #34
0
 /// <summary>
 /// Broadcoasts the state update of a given wall item to all active room users.
 /// </summary>
 /// <param name="pItem">The wallItem instance of the wall item that is updated.</param>
 private void broadcoastWallItemStateUpdate(wallItem pItem)
 {
     serverMessage Message = new serverMessage(85); // "AU"
     Message.Append(pItem.ToString());
     this.sendMessage(Message);
 }
Beispiel #35
0
 public void broadcoastHeightmap()
 {
     serverMessage Message = new serverMessage(31); // "@_"
     Message.Append(this.getClientFloorMap());
     this.sendMessage(Message);
 }
Beispiel #36
0
        /// <summary>
        /// Broacoasts the placement of a floor item to all room users.
        /// </summary>
        /// <param name="pItem">The floorItem instance of the wall item that is placed.</param>
        /// <param name="isPlacement">True if this item is new in the room, false otherwise.</param>
        private void broadcoastFloorItemMove(floorItem pItem, bool isPlacement)
        {
            serverMessage Message = new serverMessage();
            if (isPlacement)
                Message.Initialize(93); // "A]"
            else
                Message.Initialize(95); // "A_"
            Message.Append(pItem.ToString());

            this.sendMessage(Message);
        }
Beispiel #37
0
 /// <summary>
 /// Broadcoasts the removal of a floor item to all room users.
 /// </summary>
 /// <param name="itemID">The database ID of the floor item that is removed.</param>
 private void broadcoastFloorItemRemoval(int itemID)
 {
     serverMessage Message = new serverMessage(94); // "A^"
     Message.Append(itemID);
     this.sendMessage(Message);
 }
Beispiel #38
0
 /// <summary>
 /// Broadcoasts the removal of a wall item to all room users.
 /// </summary>
 /// <param name="itemID">The database ID of the wall item that is removed.</param>
 private void broadcoastWallItemRemoval(int itemID)
 {
     serverMessage Message = new serverMessage(84); // "AT"
     Message.Append(itemID);
     this.sendMessage(Message);
 }