public async Task NpcAction(NpcCommandAction commandAction) { var result = await DoCommand(async() => { var playerId = _account.PlayerId; var command = new NpcActionCommand(playerId, commandAction.NpcId, commandAction.Action.ScriptId, commandAction.Action.CommandId, commandAction.Action.Name, commandAction.Action.Message); await _bus.SendCommand(command); }); }
public async Task NpcAction(NpcCommandAction commandAction) { var result = await DoCommand(async() => { var playerId = _account.PlayerId; var npcId = commandAction.NpcId; var commandId = commandAction.Action.CommandId; var commandName = commandAction.Action.Name; var input = commandAction.Action.Message; var scriptId = commandAction.Action.ScriptId; if (scriptId > 0) { var command = new NpcScriptCommand(playerId, commandAction.NpcId, commandAction.Action.ScriptId, commandAction.Action.CommandId, commandAction.Action.Message); await _bus.SendCommand(command); } else { NpcActionEnum actionEnum; if (Enum.TryParse(commandName, out actionEnum)) { switch (actionEnum) { case NpcActionEnum.切磋: await _bus.SendCommand(new FightWithNpcCommand(playerId, commandAction.NpcId)); break; case NpcActionEnum.杀死: await _bus.SendCommand(new KillNpcCommand(playerId, commandAction.NpcId)); break; case NpcActionEnum.给予: await _bus.SendCommand(new GiveToNpcCommand(playerId, commandAction.NpcId)); break; } } } }); }