/// <summary> /// nRunPacket packet /// </summary> /// <param name="nRunPacket"></param> public void NRun(NrunPacket nRunPacket) { IAliveEntity aliveEntity; switch (nRunPacket.VisualType) { case VisualType.Player: aliveEntity = Broadcaster.Instance.GetCharacter(s => s.VisualId == nRunPacket.VisualId); break; case VisualType.Npc: aliveEntity = Session.Character.MapInstance.Npcs.Find(s => s.VisualId == nRunPacket.VisualId); break; default: _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALTYPE_UNKNOWN), nRunPacket.Type); return; } if (aliveEntity == null) { _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST)); return; } _nRunProvider.NRunLaunch(Session, new Tuple <IAliveEntity, NrunPacket>(aliveEntity, nRunPacket)); }
public override Task ExecuteAsync(NrunPacket nRunPacket, ClientSession clientSession) { var forceNull = false; IAliveEntity?aliveEntity; switch (nRunPacket.VisualType) { case VisualType.Player: aliveEntity = Broadcaster.Instance.GetCharacter(s => s.VisualId == nRunPacket.VisualId); break; case VisualType.Npc: aliveEntity = clientSession.Character.MapInstance.Npcs.Find(s => s.VisualId == nRunPacket.VisualId); break; case null: aliveEntity = null; forceNull = true; break; default: _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALTYPE_UNKNOWN), nRunPacket.Type); return(Task.CompletedTask); } if ((aliveEntity == null) && !forceNull) { _logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST)); return(Task.CompletedTask); } _nRunProvider.NRunLaunch(clientSession, new Tuple <IAliveEntity, NrunPacket>(aliveEntity !, nRunPacket)); return(Task.CompletedTask); }