feat: only show tracking mission when /mission running

This commit is contained in:
redleaf1221
2025-01-17 18:41:24 +08:00
parent 10531e0cb1
commit cb5228a14a
3 changed files with 34 additions and 12 deletions

View File

@@ -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<SubMissionInfo> 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<int, List<int>> 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<int, List<int>> runningMissionMap = [];
runningMissionMap[mission.Data.TrackingMainMissionId] = missionMap[mission.Data.TrackingMainMissionId];
await ShowMissionList(mission, runningMissionMap, arg);
}
await Task.CompletedTask;
}
public async ValueTask ShowMissionList(MissionManager mission, Dictionary<int, List<int>> missionMap, CommandArg arg)
{
var possibleStuckIds = new List<int>();
var morePossibleStuckIds = new List<int>();
@@ -124,8 +144,6 @@ public class CommandMission : ICommand
await arg.SendMsg(sb.ToString());
}
await Task.CompletedTask;
}
[CommandMethod("0 reaccept")]

View File

@@ -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 <UID>";
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 => "等级设定成功!";
}

View File

@@ -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 <item ID> l<level> x<amount> r<rank>";
public string Usage => "Usage: /give [item ID] l<level> x<amount> r<rank>";
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-missionplease find sub-mission id in handbook\n" +
"Use 'finishmain [MainMissionID]' to finish certain main missionplease 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 =>