public static void p_Warp_c(InPacket lea, Client c) { if (/*c == null || */ lea.Available < 4) { return; } int CharacterID = lea.ReadInt(); Character find = null; foreach (Character findCharacter in MapFactory.AllCharacters) { if (CharacterID == findCharacter.CharacterID) { find = findCharacter; break; } } if (find != null) { Map Map = MapFactory.GetMap(find.MapX, find.MapY); if (Map.Characters.Contains(find)) { Map.Characters.Remove(find); foreach (Character All in Map.Characters) { MapPacket.removeUser(All.Client, CharacterID); } Log.Inform("(P_WARP_C) CharacterID = {0} , MapX = {1} , MapY = {2}", CharacterID, find.MapX, find.MapY); } } }
protected override void Unregister() { try { if (this.Character != null) { if (this.Character.IsFuring) { this.Character.MaxAttack -= this.Character.FuryAttack; this.Character.Attack -= this.Character.FuryAttack; this.Character.MaxMagic -= this.Character.FuryMagic; this.Character.Magic -= this.Character.FuryMagic; this.Character.Defense -= this.Character.FuryDefense; } this.Character.CancelSkill(); CharacterID_List.Remove(this.Character.CharacterID); Map Map = MapFactory.GetMap(this.Character.MapX, this.Character.MapY); Character find = null; foreach (Character findCharacter in MapFactory.AllCharacters) { if (this.Character.CharacterID == findCharacter.CharacterID) { find = findCharacter; break; } } if (find != null) { MapFactory.AllCharacters.Remove(find); } Character find2 = null; foreach (Character findCharacter in Map.Characters) { if (this.Character.CharacterID == findCharacter.CharacterID) { find2 = findCharacter; break; } } if (find2 != null) { Map.Characters.Remove(find2); foreach (Character All in Map.Characters) { MapPacket.removeUser(All.Client, this.Character.CharacterID); } } this.Account.Save(); this.Character.Save(); } GameServer.Clients.Remove(this); Log.Inform("Lost connection from {0}.", this.Title); } catch (Exception e) { Log.Error("Unregister exception from {0}: \n{1}", this.Title, e.ToString()); } }