Exemplo n.º 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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void RefreshTrades(long user1id, long user2id)
        {
            int          roomId   = InstanceManager.Sessions.GetSession(mSessionID).mRoomID;
            RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomId);
            RoomUser     user1    = instance.GetUser(user1id);
            RoomUser     user2    = instance.GetUser(user2id);

            if (roomId > 0)
            {
                if (user1.TradingWith == user2.SessionID && user2.TradingWith == user1.SessionID)
                {
                    SendTradeInfo(user1, user2);
                    SendTradeInfo(user2, user1);
                }
            }
        }
Exemplo n.º 3
0
        //70 - "TRADE_CLOSE": "AF"
        public void Listener70()
        {
            int roomId = InstanceManager.Sessions.GetSession(mSessionID).mRoomID;

            if (roomId > 0)
            {
                RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomId);
                RoomUser     thisUser = instance.GetUser(mSessionID);

                if (thisUser.SpecialStates.ContainsKey("trd"))
                {
                    RoomUser targetUser = instance.GetUser(thisUser.TradingWith);
                    AbortTrade(thisUser.SessionID, targetUser.SessionID);
                }
            }
        }
Exemplo n.º 4
0
        //68 - "TRADE_UNACCEPT": "AD"
        public void Listener68()
        {
            int roomId = InstanceManager.Sessions.GetSession(mSessionID).mRoomID;

            if (roomId > 0)
            {
                RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomId);
                RoomUser     thisUser = instance.GetUser(mSessionID);

                if (thisUser.SpecialStates.ContainsKey("trd"))
                {
                    RoomUser targetUser = instance.GetUser(thisUser.TradingWith);
                    thisUser.TradeAccepted   = false;
                    targetUser.TradeAccepted = false;
                    RefreshTrades(thisUser.SessionID, targetUser.SessionID);
                }
            }
        }
Exemplo n.º 5
0
        //72 - "TRADE_ADDITEM": "AH"
        public void Listener72()
        {
            int roomId = InstanceManager.Sessions.GetSession(mSessionID).mRoomID;
            int itemId = 0;

            if (roomId > 0)
            {
                if (int.TryParse(mPacketBody, out itemId))
                {
                    RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomId);
                    RoomUser     thisUser = instance.GetUser(mSessionID);
                    if (thisUser.SpecialStates.ContainsKey("trd"))
                    {
                        RoomUser targetUser = instance.GetUser(thisUser.TradingWith);


                        if (InstanceManager.Game.Furni.FurniExists(itemId))
                        {
                            FurniInfo furni = InstanceManager.Game.Furni.GetFurni(itemId);

                            if (furni.CanTrade)
                            {
                                if (furni.OwnerID == thisUser.UserInfo.userId && furni.RoomID == 0)
                                {
                                    if (!thisUser.TradeOffer.Contains(furni.FurniID))
                                    {
                                        thisUser.TradeAccepted   = false;
                                        targetUser.TradeAccepted = false;
                                        thisUser.TradeOffer.Add(furni.FurniID);
                                        RefreshTrades(thisUser.SessionID, targetUser.SessionID);
                                    }
                                }
                            }
                            else
                            {
                                mMessage.Init(139); //BK
                                mMessage.appendString(InstanceManager.Game.Externals.GetTextValue("room_cant_trade"));
                                InstanceManager.Sessions.GetSession(thisUser.SessionID).SendMessage(mMessage);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
        public void ExecuteShutup(long sessionToMute)
        {
            int roomId = InstanceManager.Sessions.GetSession(sessionToMute).mRoomID;

            if (roomId > 0)
            {
                RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomId);
                if (!instance.HasUniqueStatus(sessionToMute, "mute"))
                {
                    instance.GetUser(sessionToMute).SpecialStates.Add("mute", new RoomUser.RoomUserStatus("mute", true, "", 0, 0, 0, null, false));
                }
            }
        }
        public void ExecuteRoomShutup(int roomTo, int ignoreUser)
        {
            RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomTo);

            foreach (RoomUser user in instance.Users.Values)
            {
                if (user.UserInfo.userId != ignoreUser)
                {
                    if (!instance.HasUniqueStatus(user.SessionID, "mute"))
                    {
                        instance.GetUser(user.SessionID).SpecialStates.Add("mute", new RoomUser.RoomUserStatus("mute", true, "", 0, 0, 0, null, false));
                    }
                }
            }
        }
Exemplo n.º 8
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);
        }
Exemplo n.º 9
0
        //69 - "TRADE_ACCEPT": "AE"
        public void Listener69()
        {
            int roomId = InstanceManager.Sessions.GetSession(mSessionID).mRoomID;

            if (roomId > 0)
            {
                RoomInstance instance = InstanceManager.Game.Rooms.GetRoomInstance(roomId);
                RoomUser     thisUser = instance.GetUser(mSessionID);

                if (thisUser.SpecialStates.ContainsKey("trd"))
                {
                    thisUser.TradeAccepted = true;
                    RoomUser targetUser = instance.GetUser(thisUser.TradingWith);
                    if (thisUser.TradeAccepted && targetUser.TradeAccepted)
                    {
                        bool isSafe = true;
                        foreach (int itemid in targetUser.TradeOffer)
                        {
                            if (InstanceManager.Game.Furni.GetFurni(itemid).RoomID != 0)
                            {
                                isSafe = false;
                                break;
                            }
                        }

                        foreach (int itemid in thisUser.TradeOffer)
                        {
                            if (InstanceManager.Game.Furni.GetFurni(itemid).RoomID != 0)
                            {
                                isSafe = false;
                                break;
                            }
                        }

                        if (isSafe)
                        {
                            foreach (int itemid in targetUser.TradeOffer)
                            {
                                InstanceManager.Game.Furni.PickupItem(itemid, thisUser.UserInfo.userId);
                            }

                            foreach (int itemid in thisUser.TradeOffer)
                            {
                                InstanceManager.Game.Furni.PickupItem(itemid, targetUser.UserInfo.userId);
                            }

                            AbortTrade(thisUser.SessionID, targetUser.SessionID);
                        }
                        else
                        {
                            thisUser.TradeAccepted   = false;
                            targetUser.TradeAccepted = false;
                            RefreshTrades(thisUser.SessionID, targetUser.SessionID);
                        }
                    }
                    else
                    {
                        RefreshTrades(thisUser.SessionID, targetUser.SessionID);
                    }
                }
            }
        }
Exemplo n.º 10
0
        //52 - "CHAT": "@t"
        public void Listener52()
        {
            string message = FuseMessage.getArgument(1, mPacketBody);

            InstanceManager.Game.Misc.ChatFilter.FilterText(ref message, mSessionID, mRoomInstance.RoomInfo.RoomID, false, "say");
            RoomUser user = mRoomInstance.GetUser(mSessionID);

            if (message != null && !user.SpecialStates.ContainsKey("mute"))
            {
                ApplyEmotes(message);
                mRoomInstance.RoomTalkBroadcast(user.CurrentX, user.CurrentY, message, user.RoomUserID);
                mRoomInstance.MakeTalk(mSessionID, message);
            }
        }