private static void EventSink_DeleteRequest(DeleteRequestEventArgs e) { NetState state = e.State; int index = e.Index; Account acct = state.Account as Account; if (acct == null) { state.Dispose(); } else if (index < 0 || index >= acct.Length) { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); } else { Mobile m = acct[index]; if (m == null) { state.Send(new DeleteResult(DeleteResultType.CharNotExist)); state.Send(new CharacterListUpdate(acct)); } else if (m.NetState != null) { state.Send(new DeleteResult(DeleteResultType.CharBeingPlayed)); state.Send(new CharacterListUpdate(acct)); } else if (RestrictDeletion && DateTime.UtcNow < (m.CreationTime + DeleteDelay)) { state.Send(new DeleteResult(DeleteResultType.CharTooYoung)); state.Send(new CharacterListUpdate(acct)); } else if (m.IsPlayer() && Region.Find(m.LogoutLocation, m.LogoutMap).GetRegion(typeof(Jail)) != null) //Don't need to check current location, if netstate is null, they're logged out { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); } else { Utility.PushColor(ConsoleColor.Red); Console.WriteLine("Client: {0}: Deleting character {1} (0x{2:X})", state, index, m.Serial.Value); Utility.PopColor(); acct.Comments.Add(new AccountComment("System", String.Format("Character #{0} {1} deleted by {2}", index + 1, m, state))); m.Delete(); state.Send(new CharacterListUpdate(acct)); } } }
private static void EventSink_DeleteRequest(DeleteRequestEventArgs e) { NetState state = e.State; int index = e.Index; Account acct = state.Account as Account; if (acct == null) { state.Dispose(); } else if (index < 0 || index >= acct.Length) { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); } else { Mobile m = acct[index]; if (m == null) { state.Send(new DeleteResult(DeleteResultType.CharNotExist)); state.Send(new CharacterListUpdate(acct)); } else if (m.NetState != null) { state.Send(new DeleteResult(DeleteResultType.CharBeingPlayed)); state.Send(new CharacterListUpdate(acct)); } else if (m.AccessLevel == AccessLevel.Player && RestrictDeletion && m is TeiravonMobile && ((TeiravonMobile)m).HasFeat(TeiravonMobile.Feats.WealthyLineage) && DateTime.Now < (m.CreationTime + TimeSpan.FromDays(14.0))) { state.Send(new DeleteResult(DeleteResultType.CharTooYoung)); state.Send(new CharacterListUpdate(acct)); } else if (m.AccessLevel == AccessLevel.Player && RestrictDeletion && DateTime.Now < (m.CreationTime + DeleteDelay)) { state.Send(new DeleteResult(DeleteResultType.CharTooYoung)); state.Send(new CharacterListUpdate(acct)); } else { Console.WriteLine("Client: {0}: Deleting character {1} (0x{2:X})", state, index, m.Serial.Value); acct.Comments.Add(new AccountComment("System", String.Format("Character #{0} {1} deleted by {2}", index + 1, m, state))); m.Delete(); state.Send(new CharacterListUpdate(acct)); } } }
private static void EventSink_DeleteRequest(DeleteRequestEventArgs e) { GameClient state = e.State; int index = e.Index; Account acct = state.Account as Account; if (acct == null) { state.Dispose(); } else if (index < 0 || index >= acct.Length) { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); } else { Mobile m = acct[index]; if (m == null) { state.Send(new DeleteResult(DeleteResultType.CharNotExist)); state.Send(new CharacterListUpdate(acct)); } else if (m.Client != null) { state.Send(new DeleteResult(DeleteResultType.CharBeingPlayed)); state.Send(new CharacterListUpdate(acct)); } else if (RestrictDeletion && DateTime.Now < (m.CreationTime + DeleteDelay)) { state.Send(new DeleteResult(DeleteResultType.CharTooYoung)); state.Send(new CharacterListUpdate(acct)); } else { Console.WriteLine("Client: {0}: Deleting character {1} (0x{2:X})", state, index, m.Serial.Value); acct.Comments.Add(new AccountComment("System", String.Format("Character #{0} {1} deleted by {2}", index + 1, m, state))); m.Delete(); state.Send(new CharacterListUpdate(acct)); } } }
private static void HandleDeleteRequest(DeleteRequestEventArgs e) { var state = e.State; var index = e.Index; var acct = state.Account as Account; if (acct == null) { return; } var m = acct[index] as PlayerMobile; if (m != null && !m.Deleted && m.GameTime.TotalHours >= 24) { try { BackupState(m, true); } catch { } } }
private static void EventSink_DeleteRequest(DeleteRequestEventArgs e) { NetState state = e.State; int index = e.Index; Account acct = state.Account as Account; IPAddress[] accessList = new IPAddress[] {}; if (acct != null) { accessList = acct.LoginIPs; } if (acct == null) { state.Dispose(); } else if (index < 0 || index >= acct.Length) { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); } else { try { Mobile m = acct[index]; IPAddress ipAddress = state.Address; PlayerMobile pm = null; if (m != null && m.Player) { pm = (PlayerMobile)m; } if (m == null) { state.Send(new DeleteResult(DeleteResultType.CharNotExist)); state.Send(new CharacterListUpdate(acct)); } else if (m.NetState != null) { state.Send(new DeleteResult(DeleteResultType.CharBeingPlayed)); state.Send(new CharacterListUpdate(acct)); } else if (RestrictDeletion && DateTime.Now < (m.CreationTime + DeleteDelay)) { state.Send(new DeleteResult(DeleteResultType.CharTooYoung)); state.Send(new CharacterListUpdate(acct)); } else if (m.AccessLevel == AccessLevel.Player && Region.Find(m.LogoutLocation, m.LogoutMap).GetRegion(typeof(Jail)) != null) //Don't need to check current location, if netstate is null, they're logged out { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); } /* * else if ( (pm != null && !pm.AllowDelete) && !Utility.IPMatchClassC(accessList[0], ipAddress)) * { * Console.WriteLine("Client: {0}: Trying to delete character {1} (0x{2:X})", state, index, m.Serial.Value); * state.Send(new DeleteResult(DeleteResultType.BadRequest)); * state.Send(new CharacterListUpdate(acct)); * }*/ else { Console.WriteLine(@"Client: {0}: Deleting character {1} (0x{2:X})", state, index, m.Serial.Value); acct.Comments.Add(new AccountComment("System", String.Format("Character #{0} {1} deleted by {2}", index + 1, m, state))); m.Delete(); state.Send(new CharacterListUpdate(acct)); } } catch { } } }
private static void EventSink_DeleteRequest(DeleteRequestEventArgs e) { NetState state = e.State; int index = e.Index; Account acct = state.Account as Account; if (acct == null) { state.Dispose(); } else if (index < 0 || index >= 5) { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); } else { Mobile m = acct[index]; if (m == null) { state.Send(new DeleteResult(DeleteResultType.CharNotExist)); state.Send(new CharacterListUpdate(acct)); } else if (m.NetState != null) { state.Send(new DeleteResult(DeleteResultType.CharBeingPlayed)); state.Send(new CharacterListUpdate(acct)); } else if (RestrictDeletion && DateTime.Now < (m.CreationTime + DeleteDelay)) { state.Send(new DeleteResult(DeleteResultType.CharTooYoung)); state.Send(new CharacterListUpdate(acct)); } else { bool bDelete = true; if (m is Server.Mobiles.PlayerMobile) { Server.Mobiles.PlayerMobile pm = (Server.Mobiles.PlayerMobile)m; System.Collections.ArrayList houses = Multis.BaseHouse.GetHouses(pm); if (houses.Count > 0) { if (acct.Count > 1) { Mobile newOwner = null; //find a non-deleted, non-null character on the account for (int i = 0; i < acct.Count; i++) { if (index != i) { if (acct[i] != null) { if (!acct[i].Deleted) { newOwner = acct[i]; } } } } if (newOwner == null) //sanity check, should never happen { System.Console.WriteLine("Sanity check failed: newOwner == null!"); bDelete = false; state.Send(new DeleteResult(DeleteResultType.BadRequest)); } else { for (int i = 0; i < houses.Count; ++i) { if (houses[i] is Server.Multis.BaseHouse) { Server.Multis.BaseHouse house = (Server.Multis.BaseHouse)houses[i]; if (house != null) { if (house.Owner == m) //another sanity check - house.Owner should always be m at this point! { //swap to new owner house.Owner = newOwner; } } } } } } else { //If account only has one character, then refuse to delete the houseowner bDelete = false; state.Send(new DeleteResult(DeleteResultType.BadRequest)); } } } if (bDelete) { Console.WriteLine("Client: {0}: Deleting character {1} (name:{3}) (0x{2:X})", state, index, m.Serial.Value, m.Name); m.Delete(); } state.Send(new CharacterListUpdate(acct)); } } }
public void InvokeDeleteRequest( DeleteRequestEventArgs e ) { if ( DeleteRequest != null ) DeleteRequest( e ); }
private static void EventSink_DeleteRequest( DeleteRequestEventArgs e ) { NetState state = e.State; int index = e.Index; Account acct = state.Account as Account; IPAddress[] accessList = new IPAddress[] {}; if ( acct != null ) accessList = acct.LoginIPs; if ( acct == null ) { state.Dispose(); } else if ( index < 0 || index >= acct.Length ) { state.Send( new DeleteResult( DeleteResultType.BadRequest ) ); state.Send( new CharacterListUpdate( acct ) ); } else { try { Mobile m = acct[index]; IPAddress ipAddress = state.Address; PlayerMobile pm = null; if (m != null && m.Player) pm = (PlayerMobile)m; if (m == null) { state.Send(new DeleteResult(DeleteResultType.CharNotExist)); state.Send(new CharacterListUpdate(acct)); } else if (m.NetState != null) { state.Send(new DeleteResult(DeleteResultType.CharBeingPlayed)); state.Send(new CharacterListUpdate(acct)); } else if (RestrictDeletion && DateTime.Now < (m.CreationTime + DeleteDelay)) { state.Send(new DeleteResult(DeleteResultType.CharTooYoung)); state.Send(new CharacterListUpdate(acct)); } else if (m.AccessLevel == AccessLevel.Player && Region.Find(m.LogoutLocation, m.LogoutMap).GetRegion(typeof (Jail)) != null) //Don't need to check current location, if netstate is null, they're logged out { state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); }/* else if ( (pm != null && !pm.AllowDelete) && !Utility.IPMatchClassC(accessList[0], ipAddress)) { Console.WriteLine("Client: {0}: Trying to delete character {1} (0x{2:X})", state, index, m.Serial.Value); state.Send(new DeleteResult(DeleteResultType.BadRequest)); state.Send(new CharacterListUpdate(acct)); }*/ else { Console.WriteLine(@"Client: {0}: Deleting character {1} (0x{2:X})", state, index, m.Serial.Value); acct.Comments.Add(new AccountComment("System", String.Format("Character #{0} {1} deleted by {2}", index + 1, m, state))); m.Delete(); state.Send(new CharacterListUpdate(acct)); } } catch { } } }
private async void Code_DeleteRequested(object sender, DeleteRequestEventArgs e) { selectedAccount = e.Account; await ConfirmDialog.ShowAsync(); }