//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); } } } }
//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); } } } } }
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); }