public void Dispose() { if (Map != null) { Map.Instance.RemoveClient(Client); } if (SearchingArena) { ArenaProvider.Instance.OnClientDisconnected(Client); } if (IsFighting) { FighterInstance.OnDisconnect(); } if (PlayerTradeInstance != null) { PlayerTradeInstance.Abort(); } if (PartyMember != null) { PartyMember.Party.QuitParty(Client); } if (DungeonPartyProvider.Instance.GetDPCByCharacterId(this.Id) != null) { DungeonPartyProvider.Instance.RemoveCharacter(this); } Client.Character.Look.UnsetAura(); Record.Look = Look.ConvertToString(); SaveTask.UpdateElement(Record); SaveTask.UpdateElement(StatsRecord); Inventory.InitializeForSaveTask(); }
public void LeaveExchange() { switch (ExchangeType) { case ExchangeTypeEnum.PLAYER_TRADE: if (PlayerTradeInstance != null) { PlayerTradeInstance.CancelExchange(); } break; case ExchangeTypeEnum.CRAFT: if (CraftInstance != null) { CraftInstance.CancelExchange(); } break; case ExchangeTypeEnum.BIDHOUSE_SELL: if (BidShopInstance != null) { BidShopInstance.CancelExchange(); } break; case ExchangeTypeEnum.BIDHOUSE_BUY: if (BidShopInstance != null) { BidShopInstance.CancelExchange(); } break; case ExchangeTypeEnum.STORAGE: if (BankInstance != null) { BankInstance.CancelExchange(); } break; case ExchangeTypeEnum.RUNES_TRADE: if (SmithMagicInstance != null) { SmithMagicInstance.CancelExchange(); } break; case ExchangeTypeEnum.NPC_SHOP: if (NpcShopExchange != null) { NpcShopExchange.CancelExchange(); } break; } Client.Send(new ExchangeLeaveMessage((sbyte)DialogTypeEnum.DIALOG_EXCHANGE, true)); ExchangeType = null; }