diff --git a/Command/Command/Cmd/CommandMission.cs b/Command/Command/Cmd/CommandMission.cs index 4132de84..eb7d5ae0 100644 --- a/Command/Command/Cmd/CommandMission.cs +++ b/Command/Command/Cmd/CommandMission.cs @@ -1,5 +1,7 @@ using System.Text; +using EggLink.DanhengServer.Data.Config; using EggLink.DanhengServer.Enums.Mission; +using EggLink.DanhengServer.GameServer.Game.Mission; using EggLink.DanhengServer.Internationalization; namespace EggLink.DanhengServer.Command.Command.Cmd; @@ -57,8 +59,8 @@ public class CommandMission : ICommand return; } - var mission = arg.Target!.Player!.MissionManager!; - var runningMissions = mission.GetRunningSubMissionList(); + MissionManager mission = arg.Target!.Player!.MissionManager!; + List runningMissions = mission.GetRunningSubMissionList(); if (runningMissions.Count == 0) { await arg.SendMsg(I18NManager.Translate("Game.Command.Mission.NoRunningMissions")); @@ -68,6 +70,7 @@ public class CommandMission : ICommand await arg.SendMsg(I18NManager.Translate("Game.Command.Mission.RunningMissions")); Dictionary> missionMap = []; + //build missionMap foreach (var m in runningMissions) { if (!missionMap.TryGetValue(m.MainMissionID, out var value)) @@ -78,7 +81,24 @@ public class CommandMission : ICommand value.Add(m.ID); } + + if (arg.BasicArgs.Count == 1 && arg.BasicArgs[0] == "-all") + { + //Show all the missions + await ShowMissionList(mission, missionMap, arg); + } + else + { + //Only show tracking missions + Dictionary> runningMissionMap = []; + runningMissionMap[mission.Data.TrackingMainMissionId] = missionMap[mission.Data.TrackingMainMissionId]; + await ShowMissionList(mission, runningMissionMap, arg); + } + await Task.CompletedTask; + } + public async ValueTask ShowMissionList(MissionManager mission, Dictionary> missionMap, CommandArg arg) + { var possibleStuckIds = new List(); var morePossibleStuckIds = new List(); @@ -124,8 +144,6 @@ public class CommandMission : ICommand await arg.SendMsg(sb.ToString()); } - - await Task.CompletedTask; } [CommandMethod("0 reaccept")] diff --git a/Common/Internationalization/Message/LanguageCHS.cs b/Common/Internationalization/Message/LanguageCHS.cs index e72d95fe..fbf8d6d5 100644 --- a/Common/Internationalization/Message/LanguageCHS.cs +++ b/Common/Internationalization/Message/LanguageCHS.cs @@ -314,11 +314,13 @@ public class MissionTextCHS public string Desc => "管理玩家的任务\n" + "使用 pass 完成当前正在进行的所有任务,此命令易造成严重卡顿,请尽量使用 /mission finish 替代\n" + - "使用 running 获取正在进行的任务以及可能卡住的任务,使用后可能会出现较长任务列表,请注意甄别\n" + - "使用 reaccept 可重新进行指定主任务,请浏览 handbook 来获取主任务ID"; + "使用 finish [子任务ID] 完成指定子任务,请浏览 handbook 来获取子任务ID\n" + + "使用 finishmain [主任务ID] 完成指定主任务,请浏览 handbook 来获取主任务ID\n" + + "使用 running <-all> 获取正在追踪的任务,增加'-all'则显示所有正在进行的任务以及可能卡住的任务,使用后可能会出现较长任务列表,请注意甄别\n" + + "使用 reaccept [主任务ID] 可重新进行指定主任务,请浏览 handbook 来获取主任务ID"; public string Usage => - "用法:/mission pass\n\n用法:/mission finish [子任务ID]\n\n用法:/mission running\n\n用法:/mission reaccept [主任务ID]"; + "用法:/mission pass\n\n用法:/mission finish [子任务ID]\n\n用法:/mission running <-all>\n\n用法:/mission reaccept [主任务ID]\n\n用法:/mission finishmain [主任务ID]"; public string AllMissionsFinished => "所有任务已完成!"; public string AllRunningMissionsFinished => "共 {0} 个进行中的任务已完成!"; @@ -435,7 +437,7 @@ public class RaidTextCHS public class AccountTextCHS { public string Desc => "创建账号\n注意:此命令未经测试,请谨慎使用!"; - public string Usage => "用法:/account create <用户名>"; + public string Usage => "用法:/account create [用户名]"; public string InvalidUid => "无效UID参数!"; public string CreateError => "出现内部错误 {0} "; public string CreateSuccess => "新账号 {0} 创建成功!"; @@ -450,7 +452,7 @@ public class AccountTextCHS public class UnstuckTextCHS { public string Desc => "将玩家传送回默认场景"; - public string Usage => "用法:/unstuck "; + public string Usage => "用法:/unstuck [UID]"; public string UnstuckSuccess => "已成功将该玩家传送回默认场景"; public string UidNotExist => "该UID不存在!"; public string PlayerIsOnline => "该玩家目前在线上!"; @@ -462,7 +464,7 @@ public class UnstuckTextCHS public class SetlevelTextCHS { public string Desc => "设定玩家等级"; - public string Usage => "用法:/setlevel <等级>"; + public string Usage => "用法:/setlevel [等级]"; public string SetlevelSuccess => "等级设定成功!"; } diff --git a/Common/Internationalization/Message/LanguageEN.cs b/Common/Internationalization/Message/LanguageEN.cs index dafd7207..5a1da6a6 100644 --- a/Common/Internationalization/Message/LanguageEN.cs +++ b/Common/Internationalization/Message/LanguageEN.cs @@ -260,7 +260,7 @@ public class AvatarTextEN public class GiveTextEN { public string Desc => "Give player items, item id can be avatar id, but cant set level, talent, rank"; - public string Usage => "Usage: /give l x r"; + public string Usage => "Usage: /give [item ID] l x r"; public string ItemNotFound => "Item not found!"; public string GiveItem => "Gave @{0} {1} item(s) {2}"; } @@ -321,7 +321,9 @@ public class MissionTextEN public string Desc => "Manage player's missions\n" + "Use 'pass' to finish all running mission, this command will cause severe lagging, please use '/mission finish' instead\n" + - "Use 'running' to get the running mission and possible stuck missions, after use, a longer mission list may appear, please note that\n" + + "Use 'finish [SubMissionID]' to finish certain sub-mission,please find sub-mission id in handbook\n" + + "Use 'finishmain [MainMissionID]' to finish certain main mission,please find main mission id in handbook\n" + + "Use 'running <-all>' to get the tracking mission, adding '-all' shows all running mission and possible stuck missions, after use, a longer mission list may appear, please note that\n" + "Use 'reaccept' to re-accept given main mission, please find main mission id in handbook"; public string Usage =>