示例#1
0
        //71 - "TRADE_OPEN": "AG"
        public void Listener71()
        {
            int roomId             = InstanceManager.Sessions.GetSession(mSessionID).mRoomID;
            int targetUserRoomUser = 0;

            if (roomId > 0)
            {
                if (int.TryParse(mPacketBody, out targetUserRoomUser))
                {
                    RoomInstance instance   = InstanceManager.Game.Rooms.GetRoomInstance(roomId);
                    RoomUser     thisUser   = instance.GetUser(mSessionID);
                    RoomUser     targetUser = instance.GetUser(targetUserRoomUser);

                    if (!thisUser.SpecialStates.ContainsKey("trd") && !targetUser.SpecialStates.ContainsKey("trd"))
                    {
                        thisUser.TradingWith     = targetUser.SessionID;
                        targetUser.TradingWith   = thisUser.SessionID;
                        thisUser.TradeOffer      = new List <int>();
                        targetUser.TradeOffer    = new List <int>();
                        thisUser.TradeAccepted   = false;
                        targetUser.TradeAccepted = false;
                        thisUser.SpecialStates.Add("trd", new RoomUser.RoomUserStatus("trd", true, "", 0, 0, 0, null, true));
                        targetUser.SpecialStates.Add("trd", new RoomUser.RoomUserStatus("trd", true, "", 0, 0, 0, null, true));
                        instance.AnnounceUserStatus(thisUser.SessionID, true);
                        instance.AnnounceUserStatus(targetUser.SessionID, true);
                        RefreshTrades(thisUser.SessionID, targetUser.SessionID);
                    }
                }
            }
        }
示例#2
0
        //79 - "LOOKTO": "AO"
        public void Listener79()
        {
            RoomUser user = mRoomInstance.GetUser(mSessionID);

            string[] part = mPacketBody.Split(' ');
            int      x, y;

            if (!user.IsMoving)
            {
                if (part.Length == 2)
                {
                    if (int.TryParse(part[0], out x) && int.TryParse(part[1], out y))
                    {
                        int  newDir     = SpecialMath.WorkDirection(user.CurrentX, user.CurrentY, x, y);
                        bool updateBody = !(newDir == user.BodyDirection + 1 || newDir == user.BodyDirection - 1 || newDir == user.BodyDirection - 7 || newDir == user.BodyDirection + 7);

                        if (!user.SpecialStates.ContainsKey("lay") && !user.SpecialStates.ContainsKey("sit"))
                        {
                            user.HeadDirection = newDir;
                            if (updateBody)
                            {
                                user.BodyDirection = newDir;
                            }
                            mRoomInstance.AnnounceUserStatus(mSessionID, true);
                        }
                        else
                        {
                            if (!updateBody)
                            {
                                user.HeadDirection = newDir;
                            }
                            mRoomInstance.AnnounceUserStatus(mSessionID, true);
                        }
                    }
                }
            }
        }
示例#3
0
        private void AbortTrade(long user1id, long user2id)
        {
            mMessage.Init(110); //An

            int          roomId   = InstanceManager.Sessions.GetSession(mSessionID).mRoomID;
            RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomId);

            RoomUser user1 = instance.GetUser(user1id);
            RoomUser user2 = instance.GetUser(user2id);

            user1.TradingWith   = 0;
            user1.TradeAccepted = false;
            user1.TradeOffer.Clear();

            if (user1.SpecialStates.ContainsKey("trd"))
            {
                user1.SpecialStates.Remove("trd");
            }

            instance.AnnounceUserStatus(user1.SessionID, true);
            InstanceManager.Sessions.InvokeReactorMethod(user1.SessionID, "UpdateHandInvoker");
            InstanceManager.Sessions.GetSession(user1.SessionID).SendMessage(mMessage);

            user2.TradingWith   = 0;
            user2.TradeAccepted = false;
            user2.TradeOffer.Clear();

            if (user2.SpecialStates.ContainsKey("trd"))
            {
                user2.SpecialStates.Remove("trd");
            }

            instance.AnnounceUserStatus(user2.SessionID, true);
            InstanceManager.Sessions.InvokeReactorMethod(user2.SessionID, "UpdateHandInvoker");
            InstanceManager.Sessions.GetSession(user2.SessionID).SendMessage(mMessage);
        }