diff --git a/OshimaModules/Items/GiftBox/礼包.cs b/OshimaModules/Items/GiftBox/礼包.cs index 3dd7b8e..f8a0077 100644 --- a/OshimaModules/Items/GiftBox/礼包.cs +++ b/OshimaModules/Items/GiftBox/礼包.cs @@ -157,6 +157,29 @@ namespace Oshima.FunGame.OshimaModules.Items } } + public class 魔法卡礼包 : Item, 礼包.GiftBox + { + public override long Id => (long)GiftBoxID.魔法卡礼包; + public override string Name => "魔法卡礼包"; + public override string Description => Skills.Active?.Description ?? ""; + public override QualityType QualityType => _type; + public int Count => _count; + public Dictionary Gifts { get; set; } = []; + private readonly QualityType _type = QualityType.White; + private readonly int _count = 1; + + public 魔法卡礼包(QualityType type = QualityType.White, int count = 1, User? user = null, int remainUseTimes = 1) : base(ItemType.GiftBox) + { + _type = type; + _count = count; + User = user; + 礼包.Init(this, new() + { + { "与礼包同品质、随机属性、随机魔法技能的魔法卡", count } + }, remainUseTimes); + } + } + public class 礼包技能 : Skill { public override long Id => (long)ItemActiveID.礼包; diff --git a/OshimaModules/Items/ItemID.cs b/OshimaModules/Items/ItemID.cs index fa18081..e798305 100644 --- a/OshimaModules/Items/ItemID.cs +++ b/OshimaModules/Items/ItemID.cs @@ -47,6 +47,7 @@ 年夜饭 = 20001, 蛇年大吉 = 20002, 新春快乐 = 20003, - 毕业礼包 = 20004 + 毕业礼包 = 20004, + 魔法卡礼包 = 20005 } } diff --git a/OshimaModules/Modules/ItemModule.cs b/OshimaModules/Modules/ItemModule.cs index 5eca2b8..b70b967 100644 --- a/OshimaModules/Modules/ItemModule.cs +++ b/OshimaModules/Modules/ItemModule.cs @@ -66,6 +66,7 @@ namespace Oshima.FunGame.OshimaModules (long)GiftBoxID.蛇年大吉 => new 蛇年大吉(), (long)GiftBoxID.新春快乐 => new 新春快乐(), (long)GiftBoxID.毕业礼包 => new 毕业礼包(), + (long)GiftBoxID.魔法卡礼包 => new 魔法卡礼包(), _ => null, }; }; diff --git a/OshimaServers/AnonymousServer.cs b/OshimaServers/AnonymousServer.cs index bad64e1..43d02ae 100644 --- a/OshimaServers/AnonymousServer.cs +++ b/OshimaServers/AnonymousServer.cs @@ -110,6 +110,8 @@ namespace Oshima.FunGame.OshimaServers { Controller.WriteLine("已重置所有人的今日运势"); Daily.ClearDaily(); + // 刷新活动缓存 + FunGameService.GetEventCenter(); }); TaskScheduler.Shared.AddTask("上九", new TimeSpan(9, 0, 0), () => { @@ -213,7 +215,7 @@ namespace Oshima.FunGame.OshimaServers Task.Run(() => { // 刷新每天登录 - FunGameService.FirstLoginDailyNotice.Clear(); + FunGameService.UserNotice.Clear(); string directoryPath = $@"{AppDomain.CurrentDomain.BaseDirectory}configs/saved"; if (Directory.Exists(directoryPath)) { @@ -229,12 +231,19 @@ namespace Oshima.FunGame.OshimaServers Controller.WriteLine("刷新每天登录"); } }); + // 刷新活动缓存 + FunGameService.GetEventCenter(); }); TaskScheduler.Shared.AddRecurringTask("刷新boss", TimeSpan.FromHours(1), () => { FunGameService.GenerateBoss(); Controller.WriteLine("刷新boss"); }, true); + TaskScheduler.Shared.AddRecurringTask("刷新活动缓存", TimeSpan.FromHours(4), () => + { + FunGameService.GetEventCenter(); + Controller.WriteLine("刷新活动缓存"); + }, true); } /// diff --git a/OshimaServers/Service/FunGameOrderList.cs b/OshimaServers/Service/FunGameOrderList.cs new file mode 100644 index 0000000..b650d9c --- /dev/null +++ b/OshimaServers/Service/FunGameOrderList.cs @@ -0,0 +1,110 @@ +namespace Oshima.FunGame.OshimaServers.Service +{ + public class FunGameOrderList + { + public static Dictionary ArchiveHelp { get; } = new() { + {"创建存档", "创建存档,生成随机一个自建角色"}, + {"还原存档", "没有后悔药"}, + {"我的存档", "查看账号/存档信息"}, + }; + + public static Dictionary CharacterHelp { get; } = new() { + {"我角色 [序号]", "查看角色简略信息(默认1)"}, + {"我的角色 [序号]", "查看角色详细信息(默认1)"}, + {"设置主战 <序号>", "将指定角色设置为主战"}, + {"我的主战", "查看当前主战角色"}, + {"装备 <角色序号> <物品序号>", "装备指定物品给角色"}, + {"取消装备 <角色序号> <装备槽序号>", "卸下角色装备(槽位1-6)"}, + {"清空小队", "清空所有小队成员"}, + {"角色升级 [序号]", "提升角色等级"}, + {"角色突破 [序号]", "突破等级限制"}, + {"突破信息 [序号]", "查看突破需求"}, + {"角色重随", "重新随机角色属性"}, + {"角色改名", "修改角色名字"}, + {"开启练级 [角色序号]", "启动练级模式"}, + {"练级结算", "收取练级奖励"}, + {"练级信息", "查看练级进度"}, + {"我的状态", "查看主战角色状态"}, + {"我的小队", "查看小队角色名单"}, + {"设置小队 <{序号...}>", "设置小队角色(1-4个参数)"}, + {"小队添加 <序号>", "将角色加入小队"}, + {"小队移除 <序号>", "将角色移出小队"}, + {"小队状态", "查看小队所有角色状态"}, + {"生命之泉", "使用金币回复角色状态"}, + }; + + public static Dictionary ItemHelp { get; } = new() { + {"我的库存 [页码]", "显示所有库存(角色+物品)"}, + {"我的库存 <类型> [页码]", "按类型查看库存(卡包/武器/防具等)"}, + {"分类库存 <索引> [页码]", "按索引分类查看物品"}, + {"物品库存 [页码]", "显示库存中所有物品"}, + {"角色库存 [页码]", "显示库存中所有角色"}, + {"我的物品 <序号>", "查看指定物品详细信息"}, + {"抽卡/十连抽卡", "金币抽卡(1000/次)"}, + {"材料抽卡/材料十连抽卡", "材料抽卡(5/次)"}, + {"兑换金币 <材料数>", "1材料=200金币"}, + {"使用 <名称> <数量> [角色] [角色序号]", "使用物品(可指定角色)"}, + {"使用 <序号> [角色] [角色序号]", "使用物品(可指定角色)"}, + {"使用魔法卡 <物品序号> <卡包序号>", "使用指定魔法卡"}, + {"合成魔法卡 <{序号...}>", "3张魔法卡合成(空格隔开)"}, + {"分解物品 <{序号...}>", "分解指定物品"}, + {"分解 <名称> <数量>", "分解指定数量物品"}, + {"品质分解 <品质索引>", "按品质分解(0-6)"}, + }; + + public static Dictionary BattleHelp { get; } = new() { + {"决斗 <对方UID/昵称>", "和对方切磋(简化版)"}, + {"完整决斗 <对方UID/昵称>", "和对方切磋(完整版)"}, + {"小队决斗 <对方UID/昵称>", "小队切磋"}, + {"查询boss [序号]", "查看boss信息(默认列表)"}, + {"讨伐boss <序号>", "主战角色讨伐指定boss"}, + {"小队讨伐boss <序号>", "小队讨伐指定boss"}, + }; + + public static Dictionary QuestHelp { get; } = new() { + {"任务列表", "查看今日任务列表"}, + {"做任务 <序号>", "开始指定任务"}, + {"任务信息", "查看进行中任务详情"}, + {"任务结算", "结算进行中的任务"}, + {"世界地图", "查看当前地图"}, + {"主城", "查看主城信息"}, + {"查地区 <序号>", "查看指定地区信息"}, + {"探索 <序号>", "主战角色探索指定地区"}, + {"小队探索 <序号>", "小队探索指定地区(4*单人消耗和奖励)"}, + }; + + public static Dictionary ClubHelp { get; } = new() { + {"我的社团", "查看社团信息"}, + {"加入社团 <编号>", "申请加入社团"}, + {"退出社团", "退出当前社团"}, + {"创建社团 <前缀>", "创建一个公开社团,若指令中包含私密一词,将创建私密社团\r\n社团前缀:3-4个字符,允许:英文字母和数字、部分特殊字符"}, + {"查看社团成员", "查看社团成员列表"}, + {"查看社团管理", "查看管理员列表"}, + {"查看申请人列表", "查看申请加入的玩家列表"}, + {"解散社团", "解散当前社团"}, + {"社团批准 <@对方>", "批准加入申请"}, + {"社团拒绝 <@对方>", "拒绝加入申请"}, + {"社团踢出 <@对方>", "踢出社团成员"}, + {"社团转让 <@对方>", "转让社团所有权"}, + {"社团设置 <设置项> <{参数...}>", "修改社团设置"}, + }; + + public static Dictionary ActivityHelp { get; } = new() { + {"签到", "每日签到奖励"}, + {"活动中心", "查看当前活动"}, + {"查活动 <编号>", "查看指定活动详情"}, + {"做活动任务 <活动序号> <任务序号>", "开始指定活动任务"}, + }; + + public static Dictionary StoreHelp { get; } = new() { + {"每日商店", "查看每日商店商品"}, + {"商店查看 <序号>", "查看指定商品详情"}, + {"商店购买 <序号>", "购买指定商品"}, + }; + + public static IEnumerable> GetPage(Dictionary dict, int page, int pageSize = 10) + { + return dict.Skip((page - 1) * pageSize).Take(pageSize); + } + } +} diff --git a/OshimaServers/Service/FunGameService.cs b/OshimaServers/Service/FunGameService.cs index 1002fde..8608342 100644 --- a/OshimaServers/Service/FunGameService.cs +++ b/OshimaServers/Service/FunGameService.cs @@ -14,7 +14,8 @@ namespace Oshima.FunGame.OshimaServers.Service { public class FunGameService { - public static Dictionary> FirstLoginDailyNotice { get; } = []; + public static HashSet Activities { get; } = []; + public static Dictionary> UserNotice { get; } = []; public static Dictionary Bosses { get; } = []; public static ServerPluginLoader? ServerPluginLoader { get; set; } = null; public static WebAPIPluginLoader? WebAPIPluginLoader { get; set; } = null; @@ -51,7 +52,7 @@ namespace Oshima.FunGame.OshimaServers.Service FunGameConstant.Items.AddRange(exItems.Values.Where(i => (int)i.ItemType > 4)); FunGameConstant.Items.AddRange([new 小经验书(), new 中经验书(), new 大经验书(), new 升华之印(), new 流光之印(), new 永恒之印(), new 技能卷轴(), new 智慧之果(), new 奥术符文(), new 混沌之核(), new 小回复药(), new 中回复药(), new 大回复药(), new 魔力填充剂1(), new 魔力填充剂2(), new 魔力填充剂3(), new 能量饮料1(), new 能量饮料2(), new 能量饮料3(), new 年夜饭(), new 蛇年大吉(), new 新春快乐(), new 毕业礼包(), - new 复苏药1(), new 复苏药2(), new 复苏药3(), new 全回复药() + new 复苏药1(), new 复苏药2(), new 复苏药3(), new 全回复药(), new 魔法卡礼包() ]); FunGameConstant.AllItems.AddRange(FunGameConstant.Equipment); @@ -592,12 +593,22 @@ namespace Oshima.FunGame.OshimaServers.Service if (!pc.TryGetValue("logon", out object? value) || (value is bool logon && !logon)) { pc.Add("logon", true); - FirstLoginDailyNotice[user.Id] = ["欢迎回到筽祀牻大陆!请发送【帮助】获取更多玩法指令哦~"]; + AddNotice(user.Id, "欢迎回到筽祀牻大陆!请发送【帮助】获取更多玩法指令哦~"); + AddNotice(user.Id, GetEvents()); } return user; } + public static void AddNotice(long userId, params string[] notices) + { + if (UserNotice.TryGetValue(userId, out List? list) && list != null) + { + list.AddRange(notices); + } + else UserNotice[userId] = [.. notices]; + } + public static IEnumerable GetPage(IEnumerable list, int showPage, int pageSize) { return [.. list.Skip((showPage - 1) * pageSize).Take(pageSize)]; @@ -1134,7 +1145,20 @@ namespace Oshima.FunGame.OshimaServers.Service msg = ""; if (item.ItemType == ItemType.GiftBox) { - if (item is 礼包.GiftBox box && box.Gifts.Count > 0) + if (item is 魔法卡礼包 cardBox) + { + List cards = []; + for (int i = 0; i< cardBox.Count; i++) + { + Item newItem = GenerateMagicCard(item.QualityType); + SetSellAndTradeTime(newItem); + newItem.User = user; + user.Inventory.Items.Add(newItem); + cards.Add(newItem.ToStringInventory(false)); + } + msg = "打开礼包成功!获得了以下物品:\r\n" + string.Join("\r\n", cards); + } + else if (item is 礼包.GiftBox box && box.Gifts.Count > 0) { foreach (string name in box.Gifts.Keys) { @@ -1861,5 +1885,90 @@ namespace Oshima.FunGame.OshimaServers.Service } await Task.CompletedTask; } + + public static string GetEventCenter() + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + if (activities.Count == 0) + { + return "当前没有任何活动,敬请期待。"; + } + Activities.Clear(); + foreach (Activity activity in activities.Values) + { + Activities.Add(activity); + } + StringBuilder builder = new(); + builder.AppendLine("★☆★ 活动中心 ★☆★"); + + ActivityState[] status = [ActivityState.InProgress, ActivityState.Upcoming, ActivityState.Future, ActivityState.Ended]; + foreach (ActivityState state in status) + { + IEnumerable filteredActivities = activities.Values.Where(a => a.Status == state); + if (filteredActivities.Any()) + { + builder.AppendLine($"【{CommonSet.GetActivityStatus(state)}】"); + builder.AppendLine($"{string.Join("\r\n", filteredActivities.Select(a => a.GetIdName() + $"({a.GetTimeString(false)})"))}"); + } + } + + builder.AppendLine("请使用【查活动+活动序号】指令查询活动详细信息。"); + + return builder.ToString().Trim(); + } + + public static string GetEvents(ActivityState status = ActivityState.InProgress) + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + IEnumerable filteredActivities = activities.Values.Where(a => a.Status == status); + if (!filteredActivities.Any()) + { + return $"当前没有任何{CommonSet.GetActivityStatus(status)}的活动,敬请期待。"; + } + return $"★☆★ {CommonSet.GetActivityStatus(status)}活动列表 ★☆★\r\n" + + $"{string.Join("\r\n", filteredActivities.Select(a => a.GetIdName() + $"({a.GetTimeString(false)})"))}\r\n" + + $"请使用【查活动+活动序号】指令查询活动详细信息。"; + } + + public static string GetEvent(long id) + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + if (activities.Values.FirstOrDefault(a => a.Id == id) is Activity activity) + { + return $"{activity}"; + } + return "该活动不存在。"; + } + + public static string AddEvent(Activity activity) + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + activity.UpdateState(); + activities.Add(activity.Id.ToString(), activity); + activities.SaveConfig(); + return "该活动已添加!"; + } + + public static string RemoveEvent(Activity activity) + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + activities.Remove(activity.Id.ToString()); + activities.SaveConfig(); + return "该活动已删除!"; + } + + public static string GetSquadInfo(IEnumerable inventory, HashSet squadIds) + { + Character[] squad = [.. inventory.Where(c => squadIds.Contains(c.Id))]; + Dictionary characters = inventory + .Select((character, index) => new { character, index }) + .ToDictionary(x => x.character, x => x.index + 1); + return $"{(squad.Length > 0 ? string.Join("\r\n", squad.Select(c => $"#{characters[c]}. {c}")) : "空")}"; + } } } diff --git a/OshimaWebAPI/Controllers/ActivityController.cs b/OshimaWebAPI/Controllers/ActivityController.cs new file mode 100644 index 0000000..9cf44b8 --- /dev/null +++ b/OshimaWebAPI/Controllers/ActivityController.cs @@ -0,0 +1,194 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Entity; + +namespace Oshima.FunGame.WebAPI.Controllers +{ + [ApiController] + [Route("[controller]")] + public class ActivityController(ILogger logger) : ControllerBase + { + private readonly ILogger _logger = logger; + + [HttpGet] + public IActionResult GetActivity() + { + try + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + if (activities.Count == 0) + { + return Ok("当前没有任何活动,敬请期待。"); + } + return Ok($"★☆★ 当前活动列表 ★☆★\r\n{string.Join("\r\n", activities.Values.Select(a => a.GetIdName()))}"); + } + catch (Exception e) + { + _logger.LogError(e, "Error: "); + return StatusCode(500, "获取活动信息时发生错误,请检查日志。"); + } + } + + [HttpGet("{id}")] + public IActionResult GetActivity(long id) + { + try + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + if (activities.Get(id.ToString()) is Activity activity) + { + return Ok($"{activity}"); + } + return NotFound($"活动编号 {id} 不存在。"); + } + catch (Exception e) + { + _logger.LogError(e, "Error: "); + return StatusCode(500, "获取活动信息时发生错误,请检查日志。"); + } + } + + [HttpPut("{id}")] + public IActionResult UpdateActivity(long id, [FromBody] Activity? activity = null) + { + try + { + if (activity is null || activity.Id != id) + { + return BadRequest("活动更新失败,活动 ID 与请求体 ID 不匹配或请求体格式错误。"); + } + + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + activities.Add(activity.Id.ToString(), activity); + activities.SaveConfig(); + + return Ok($"活动 {activity.GetIdName()} 更新成功。"); + } + catch (Exception e) + { + _logger.LogError(e, "Error: "); + return StatusCode(500, "更新活动时发生错误,请检查日志。"); + } + } + + [HttpDelete("{id}")] + public IActionResult RemoveActivity(long id) + { + try + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + if (activities.Count > 0) + { + activities.Remove(id.ToString()); + activities.SaveConfig(); + return Ok($"活动编号 {id} 已删除。"); + } + return NotFound($"活动编号 {id} 不存在。"); + } + catch (Exception e) + { + _logger.LogError(e, "Error: "); + return StatusCode(500, "删除活动时发生错误,请检查日志。"); + } + } + + [HttpGet("{id}/{questId}")] + public IActionResult GetQuest(long id, long questId) + { + try + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + Activity? activity = activities.Values.FirstOrDefault(a => a.Id == id); + if (activity != null) + { + if (activity.Quests.FirstOrDefault(q => q.Id == questId) is Quest quest) + { + return Ok($"该任务属于活动【{activity.Name}】,详情:\r\n{quest}"); + } + else + { + return NotFound($"任务编号 {questId} 不存在。"); + } + } + return NotFound($"活动编号 {id} 不存在。"); + } + catch (Exception e) + { + _logger.LogError(e, "Error: "); + return StatusCode(500, "获取任务信息时发生错误,请检查日志。"); + } + } + + [HttpPut("{id}/{questId}")] + public IActionResult UpdateQuest(long id, long questId, [FromBody] Quest? quest = null) + { + try + { + if (quest is null || quest.Id != questId) + { + return BadRequest("任务更新失败,任务 ID 与请求体 ID 不匹配或请求体格式错误。"); + } + + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + Activity? activity = activities.Values.FirstOrDefault(a => a.Id == id); + if (activity != null) + { + if (activity.Quests.FirstOrDefault(q => q.Id == quest.Id) is Quest current) + { + activity.Quests.Remove(quest); + } + activity.Quests.Add(quest); + activities.Add(activity.Id.ToString(), activity); + activities.SaveConfig(); + return Ok($"任务 {quest.GetIdName()}(属于活动【{activity.Name}】)更新成功。"); + } + + return NotFound($"活动编号 {id} 不存在。"); + } + catch (Exception e) + { + _logger.LogError(e, "Error: "); + return StatusCode(500, "更新任务时发生错误,请检查日志。"); + } + } + + [HttpDelete("{id}/{questId}")] + public IActionResult RemoveQuest(long id, long questId) + { + try + { + EntityModuleConfig activities = new("activities", "activities"); + activities.LoadConfig(); + Activity? activity = activities.Values.FirstOrDefault(a => a.Id == id); + if (activity != null) + { + if (activity.Quests.FirstOrDefault(q => q.Id == questId) is Quest quest) + { + activity.Quests.Remove(quest); + activities.Add(activity.Id.ToString(), activity); + activities.SaveConfig(); + + return Ok($"任务 {quest} 删除成功。"); + } + else + { + return NotFound($"任务编号 {questId} 不存在。"); + } + } + return NotFound($"活动编号 {id} 不存在。"); + } + catch (Exception e) + { + _logger.LogError(e, "Error: "); + return StatusCode(500, "删除任务时发生错误,请检查日志。"); + } + } + } +} diff --git a/OshimaWebAPI/Controllers/FunGameController.cs b/OshimaWebAPI/Controllers/FunGameController.cs index ed0cd69..3c66b05 100644 --- a/OshimaWebAPI/Controllers/FunGameController.cs +++ b/OshimaWebAPI/Controllers/FunGameController.cs @@ -28,6 +28,7 @@ namespace Oshima.FunGame.WebAPI.Controllers private const int drawCardReduce_Material = 5; private const string noSaved = "你还没有创建存档!请发送【创建存档】创建。"; private const string refused = "暂时无法使用此指令。"; + private const string busy = "服务器繁忙,请稍后再试。"; [AllowAnonymous] [HttpGet("test")] @@ -78,6 +79,7 @@ namespace Oshima.FunGame.WebAPI.Controllers builder.AppendLine($"每秒伤害:{stats.DamagePerSecond:0.##}"); builder.AppendLine($"总计击杀数:{stats.Kills}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Kills / stats.Plays:0.##}" : "")); builder.AppendLine($"总计死亡数:{stats.Deaths}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Deaths / stats.Plays:0.##}" : "")); + builder.AppendLine($"击杀死亡比:{(stats.Deaths == 0 ? stats.Kills : ((double)stats.Kills / stats.Deaths)):0.##}"); builder.AppendLine($"总计助攻数:{stats.Assists}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Assists / stats.Plays:0.##}" : "")); builder.AppendLine($"总计首杀数:{stats.FirstKills}" + (stats.Plays != 0 ? $" / 首杀率:{(double)stats.FirstKills / stats.Plays * 100:0.##}%" : "")); builder.AppendLine($"总计首死数:{stats.FirstDeaths}" + (stats.Plays != 0 ? $" / 首死率:{(double)stats.FirstDeaths / stats.Plays * 100:0.##}%" : "")); @@ -98,10 +100,10 @@ namespace Oshima.FunGame.WebAPI.Controllers builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank:0.##}"); - return NetworkUtility.JsonSerialize(builder.ToString()); + return builder.ToString(); } } - return NetworkUtility.JsonSerialize(""); + return ""; } [AllowAnonymous] @@ -151,10 +153,10 @@ namespace Oshima.FunGame.WebAPI.Controllers names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())]; builder.AppendLine($"技术得分:{stats.Rating:0.0#}(#{names.IndexOf(character.GetName()) + 1})"); - return NetworkUtility.JsonSerialize(builder.ToString()); + return builder.ToString(); } } - return NetworkUtility.JsonSerialize(""); + return ""; } [AllowAnonymous] @@ -204,7 +206,7 @@ namespace Oshima.FunGame.WebAPI.Controllers [AllowAnonymous] [HttpGet("ratingrank")] - public string GetRatingRank([FromQuery] bool? isteam = null) + public List GetRatingRank([FromQuery] bool? isteam = null) { bool team = isteam ?? false; if (team) @@ -223,7 +225,7 @@ namespace Oshima.FunGame.WebAPI.Controllers builder.AppendLine($"MVP次数:{stats.MVPs}"); strings.Add(builder.ToString()); } - return NetworkUtility.JsonSerialize(strings); + return strings; } else { @@ -243,7 +245,7 @@ namespace Oshima.FunGame.WebAPI.Controllers builder.AppendLine($"MVP次数:{stats.MVPs}"); strings.Add(builder.ToString()); } - return NetworkUtility.JsonSerialize(strings); + return strings; } } @@ -258,9 +260,9 @@ namespace Oshima.FunGame.WebAPI.Controllers c.NormalAttack.Level = General.GameplayEquilibriumConstant.MaxNormalAttackLevel; FunGameService.AddCharacterSkills(c, 1, General.GameplayEquilibriumConstant.MaxSkillLevel, General.GameplayEquilibriumConstant.MaxSuperSkillLevel); - return NetworkUtility.JsonSerialize(c.GetInfo().Trim()); + return c.GetInfo().Trim(); } - return NetworkUtility.JsonSerialize(""); + return ""; } [AllowAnonymous] @@ -297,11 +299,11 @@ namespace Oshima.FunGame.WebAPI.Controllers skill.Level = skill.IsMagic ? General.GameplayEquilibriumConstant.MaxMagicLevel : General.GameplayEquilibriumConstant.MaxSkillLevel; msg.Add(character.ToStringWithLevel() + "\r\n" + skill.ToString()); - return NetworkUtility.JsonSerialize(string.Join("\r\n", msg)); + return string.Join("\r\n", msg); } } - return NetworkUtility.JsonSerialize(""); + return ""; } [AllowAnonymous] @@ -338,11 +340,11 @@ namespace Oshima.FunGame.WebAPI.Controllers skill.Level = skill.IsMagic ? General.GameplayEquilibriumConstant.MaxMagicLevel : General.GameplayEquilibriumConstant.MaxSkillLevel; msg.Add(character.ToStringWithLevel() + "\r\n" + skill.ToString()); - return NetworkUtility.JsonSerialize(string.Join("\r\n", msg)); + return string.Join("\r\n", msg); } } - return NetworkUtility.JsonSerialize(""); + return ""; } [AllowAnonymous] @@ -375,10 +377,10 @@ namespace Oshima.FunGame.WebAPI.Controllers item.SetLevel(1); msg.Add(item.ToString(false, true)); - return NetworkUtility.JsonSerialize(string.Join("\r\n", msg)); + return string.Join("\r\n", msg); } } - return NetworkUtility.JsonSerialize(""); + return ""; } [AllowAnonymous] @@ -411,10 +413,10 @@ namespace Oshima.FunGame.WebAPI.Controllers item.SetLevel(1); msg.Add(item.ToString(false, true)); - return NetworkUtility.JsonSerialize(string.Join("\r\n", msg)); + return string.Join("\r\n", msg); } } - return NetworkUtility.JsonSerialize(""); + return ""; } [AllowAnonymous] @@ -422,7 +424,7 @@ namespace Oshima.FunGame.WebAPI.Controllers public string GenerateMagicCard() { Item i = FunGameService.GenerateMagicCard(); - return NetworkUtility.JsonSerialize(i.ToString(false, true)); + return i.ToString(false, true); } [AllowAnonymous] @@ -432,9 +434,9 @@ namespace Oshima.FunGame.WebAPI.Controllers Item? i = FunGameService.GenerateMagicCardPack(3); if (i != null) { - return NetworkUtility.JsonSerialize(i.ToString(false, true)); + return i.ToString(false, true); } - return NetworkUtility.JsonSerialize(""); + return ""; } [HttpPost("createsaved")] @@ -449,13 +451,13 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (name.Trim() == "") { - return NetworkUtility.JsonSerialize("未提供接入ID!"); + return "未提供接入ID!"; } Logger.LogInformation("[Reg] 接入ID:{name}", name); sqlHelper.ExecuteDataSet(FunGameService.Select_CheckAutoKey(sqlHelper, name)); if (sqlHelper.Success) { - return NetworkUtility.JsonSerialize("你已经创建过存档!"); + return "你已经创建过存档!"; } string password = name.Encrypt(name); sqlHelper.NewTransaction(); @@ -476,11 +478,11 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.LoadConfig(); pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"创建存档成功!你的昵称是【{username}】。"); + return $"创建存档成功!你的昵称是【{username}】。"; } else { - return NetworkUtility.JsonSerialize("无法处理注册,创建存档失败!"); + return "无法处理注册,创建存档失败!"; } } else @@ -493,7 +495,7 @@ namespace Oshima.FunGame.WebAPI.Controllers sqlHelper.Rollback(); Logger.LogError(e, "Error: "); } - return NetworkUtility.JsonSerialize("无法处理注册,创建存档失败!"); + return "无法处理注册,创建存档失败!"; } else if (uid != null && uid != 0) { @@ -508,14 +510,14 @@ namespace Oshima.FunGame.WebAPI.Controllers FunGameConstant.UserIdAndUsername[uid.Value] = user; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"创建存档成功!你的昵称是【{username}】。"); + return $"创建存档成功!你的昵称是【{username}】。"; } else { - return NetworkUtility.JsonSerialize("你已经创建过存档!"); + return "你已经创建过存档!"; } } - return NetworkUtility.JsonSerialize("创建存档失败!"); + return "创建存档失败!"; } [HttpPost("restoresaved")] @@ -537,13 +539,13 @@ namespace Oshima.FunGame.WebAPI.Controllers // user.LastTime = DateTime.Now; // pc.Add("user", user); // pc.SaveConfig(); - // return NetworkUtility.JsonSerialize($"你的存档已还原成功。"); + // return $"你的存档已还原成功。"; //} //else //{ - // return NetworkUtility.JsonSerialize(noSaved); + // return noSaved; //} - return NetworkUtility.JsonSerialize($"无法还原用户 {uid} 的存档,此功能维护中。"); + return $"无法还原用户 {uid} 的存档,此功能维护中。"; } [HttpPost("showsaved")] @@ -597,11 +599,11 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(builder.ToString().Trim()); + return builder.ToString().Trim(); } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -624,7 +626,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {reduce} 呢,无法改名!"); + return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {reduce} 呢,无法改名!"; } user.Username = FunGameService.GenerateRandomChineseUserName(); @@ -642,11 +644,11 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameCurrency},你的新昵称是【{user.Username}】"); + return $"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameCurrency},你的新昵称是【{user.Username}】"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -704,7 +706,7 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.SaveConfig(); emc.Clear(); emc.SaveConfig(); - return NetworkUtility.JsonSerialize($"你已完成重随属性确认,新的自建角色属性如下:\r\n" + + return $"你已完成重随属性确认,新的自建角色属性如下:\r\n" + $"核心属性:{CharacterSet.GetPrimaryAttributeName(oldPA)} => {CharacterSet.GetPrimaryAttributeName(character.PrimaryAttribute)}\r\n" + $"初始生命:{oldHP} => {character.InitialHP}\r\n" + $"初始魔法:{oldMP} => {character.InitialMP}\r\n" + @@ -714,11 +716,11 @@ namespace Oshima.FunGame.WebAPI.Controllers $"初始智力:{oldINT}(+{oldINTG}/Lv)=> {character.InitialINT}(+{character.INTGrowth}/Lv)\r\n" + $"初始速度:{oldSPD} => {character.InitialSPD}\r\n" + $"生命回复:{oldHR} => {character.InitialHR}\r\n" + - $"魔法回复:{oldMR} => {character.InitialMR}\r\n"); + $"魔法回复:{oldMR} => {character.InitialMR}\r\n"; } else { - return NetworkUtility.JsonSerialize($"你还没有获取过重随属性预览!"); + return $"你还没有获取过重随属性预览!"; } } else @@ -732,7 +734,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {reduce} 呢,无法重随自建角色属性!"); + return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {reduce} 呢,无法重随自建角色属性!"; } newCustom = new CustomCharacter(FunGameConstant.CustomCharacterId, ""); FunGameService.SetCharacterPrimaryAttribute(newCustom); @@ -741,7 +743,7 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.SaveConfig(); emc.Add("newCustom", newCustom); emc.SaveConfig(); - return NetworkUtility.JsonSerialize($"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameMaterial},获取到重随属性预览如下:\r\n" + + return $"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameMaterial},获取到重随属性预览如下:\r\n" + $"核心属性:{CharacterSet.GetPrimaryAttributeName(oldPA)} => {CharacterSet.GetPrimaryAttributeName(newCustom.PrimaryAttribute)}\r\n" + $"初始生命:{oldHP} => {newCustom.InitialHP}\r\n" + $"初始魔法:{oldMP} => {newCustom.InitialMP}\r\n" + @@ -752,11 +754,11 @@ namespace Oshima.FunGame.WebAPI.Controllers $"初始速度:{oldSPD} => {newCustom.InitialSPD}\r\n" + $"生命回复:{oldHR} => {newCustom.InitialHR}\r\n" + $"魔法回复:{oldMR} => {newCustom.InitialMR}\r\n" + - $"请发送【确认角色重随】来确认更新,或者发送【取消角色重随】来取消操作。"); + $"请发送【确认角色重随】来确认更新,或者发送【取消角色重随】来取消操作。"; } else if (newCustom.Id == FunGameConstant.CustomCharacterId) { - return NetworkUtility.JsonSerialize($"你已经有一个待确认的重随属性如下:\r\n" + + return $"你已经有一个待确认的重随属性如下:\r\n" + $"核心属性:{CharacterSet.GetPrimaryAttributeName(oldPA)} => {CharacterSet.GetPrimaryAttributeName(newCustom.PrimaryAttribute)}\r\n" + $"初始生命:{oldHP} => {newCustom.InitialHP}\r\n" + $"初始魔法:{oldMP} => {newCustom.InitialMP}\r\n" + @@ -767,22 +769,22 @@ namespace Oshima.FunGame.WebAPI.Controllers $"初始速度:{oldSPD} => {newCustom.InitialSPD}\r\n" + $"生命回复:{oldHR} => {newCustom.InitialHR}\r\n" + $"魔法回复:{oldMR} => {newCustom.InitialMR}\r\n" + - $"请发送【确认角色重随】来确认更新,或者发送【取消角色重随】来取消操作。"); + $"请发送【确认角色重随】来确认更新,或者发送【取消角色重随】来取消操作。"; } else { - return NetworkUtility.JsonSerialize($"重随自建角色属性失败!"); + return $"重随自建角色属性失败!"; } } } else { - return NetworkUtility.JsonSerialize($"你似乎没有自建角色,请发送【生成自建角色】创建!"); + return $"你似乎没有自建角色,请发送【生成自建角色】创建!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -802,16 +804,16 @@ namespace Oshima.FunGame.WebAPI.Controllers { emc.Clear(); emc.SaveConfig(); - return NetworkUtility.JsonSerialize($"已取消角色重随。"); + return $"已取消角色重随。"; } else { - return NetworkUtility.JsonSerialize($"你目前没有待确认的角色重随。"); + return $"你目前没有待确认的角色重随。"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -827,11 +829,11 @@ namespace Oshima.FunGame.WebAPI.Controllers { User user = FunGameService.GetUser(pc); - return NetworkUtility.JsonSerialize(user.Inventory.ToString(false)); + return user.Inventory.ToString(false); } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -1207,7 +1209,7 @@ namespace Oshima.FunGame.WebAPI.Controllers User user = FunGameService.GetUser(pc); if (user.Inventory.Characters.Any(c => c.Id == FunGameConstant.CustomCharacterId)) { - return NetworkUtility.JsonSerialize($"你已经拥有一个自建角色【{user.Username}】,无法再创建!"); + return $"你已经拥有一个自建角色【{user.Username}】,无法再创建!"; } else { @@ -1215,12 +1217,12 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"恭喜你成功创建了一个自建角色【{user.Username}】,请查看你的角色库存!"); + return $"恭喜你成功创建了一个自建角色【{user.Username}】,请查看你的角色库存!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -1243,7 +1245,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {reduce} 呢,无法抽卡!"); + return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {reduce} 呢,无法抽卡!"; } double dice = Random.Shared.NextDouble(); @@ -1253,17 +1255,17 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameCurrency},你什么也没抽中……"); + return $"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameCurrency},你什么也没抽中……"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -1334,7 +1336,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {reduce} 呢,无法抽卡!"); + return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {reduce} 呢,无法抽卡!"; } double dice = Random.Shared.NextDouble(); @@ -1344,17 +1346,17 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameMaterial},你什么也没抽中……"); + return $"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameMaterial},你什么也没抽中……"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -1429,16 +1431,16 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"兑换成功!你消耗了 {reduce} {General.GameplayEquilibriumConstant.InGameMaterial},增加了 {reward} {General.GameplayEquilibriumConstant.InGameCurrency}!"); + return $"兑换成功!你消耗了 {reduce} {General.GameplayEquilibriumConstant.InGameMaterial},增加了 {reward} {General.GameplayEquilibriumConstant.InGameCurrency}!"; } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {reduce},最低消耗 10 {General.GameplayEquilibriumConstant.InGameMaterial}兑换 2000 {General.GameplayEquilibriumConstant.InGameCurrency}!"); + return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {reduce},最低消耗 10 {General.GameplayEquilibriumConstant.InGameMaterial}兑换 2000 {General.GameplayEquilibriumConstant.InGameCurrency}!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -1462,9 +1464,9 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (isSimple) { - return NetworkUtility.JsonSerialize($"这是你的主战角色简略信息:\r\n{user.Inventory.MainCharacter.GetSimpleInfo(showEXP: true).Trim()}"); + return $"这是你的主战角色简略信息:\r\n{user.Inventory.MainCharacter.GetSimpleInfo(showEXP: true).Trim()}"; } - return NetworkUtility.JsonSerialize($"这是你的主战角色详细信息:\r\n{user.Inventory.MainCharacter.GetInfo().Trim()}"); + return $"这是你的主战角色详细信息:\r\n{user.Inventory.MainCharacter.GetInfo().Trim()}"; } else { @@ -1473,24 +1475,25 @@ namespace Oshima.FunGame.WebAPI.Controllers Character character = user.Inventory.Characters.ToList()[cIndex - 1]; if (isSimple) { - return NetworkUtility.JsonSerialize($"这是你库存中序号为 {cIndex} 的角色简略信息:\r\n{character.GetSimpleInfo(showEXP: true).Trim()}"); + return $"这是你库存中序号为 {cIndex} 的角色简略信息:\r\n{character.GetSimpleInfo(showEXP: true).Trim()}"; } - return NetworkUtility.JsonSerialize($"这是你库存中序号为 {cIndex} 的角色详细信息:\r\n{character.GetInfo().Trim()}"); + return $"这是你库存中序号为 {cIndex} 的角色详细信息:\r\n{character.GetInfo().Trim()}"; } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -1511,29 +1514,30 @@ namespace Oshima.FunGame.WebAPI.Controllers if (cIndex == 0) { - return NetworkUtility.JsonSerialize($"这是你的主战角色技能信息:\r\n{user.Inventory.MainCharacter.GetSkillInfo().Trim()}"); + return $"这是你的主战角色技能信息:\r\n{user.Inventory.MainCharacter.GetSkillInfo().Trim()}"; } else { if (cIndex > 0 && cIndex <= user.Inventory.Characters.Count) { Character character = user.Inventory.Characters.ToList()[cIndex - 1]; - return NetworkUtility.JsonSerialize($"这是你库存中序号为 {cIndex} 的角色技能信息:\r\n{character.GetSkillInfo().Trim()}"); + return $"这是你库存中序号为 {cIndex} 的角色技能信息:\r\n{character.GetSkillInfo().Trim()}"; } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -1554,29 +1558,30 @@ namespace Oshima.FunGame.WebAPI.Controllers if (cIndex == 0) { - return NetworkUtility.JsonSerialize($"这是你的主战角色装备物品信息:\r\n{user.Inventory.MainCharacter.GetItemInfo(showEXP: true).Trim()}"); + return $"这是你的主战角色装备物品信息:\r\n{user.Inventory.MainCharacter.GetItemInfo(showEXP: true).Trim()}"; } else { if (cIndex > 0 && cIndex <= user.Inventory.Characters.Count) { Character character = user.Inventory.Characters.ToList()[cIndex - 1]; - return NetworkUtility.JsonSerialize($"这是你库存中序号为 {cIndex} 的角色装备物品信息:\r\n{character.GetItemInfo(showEXP: true).Trim()}"); + return $"这是你库存中序号为 {cIndex} 的角色装备物品信息:\r\n{character.GetItemInfo(showEXP: true).Trim()}"; } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -1598,21 +1603,22 @@ namespace Oshima.FunGame.WebAPI.Controllers if (itemIndex > 0 && itemIndex <= user.Inventory.Items.Count) { Item item = user.Inventory.Items.ToList()[itemIndex - 1]; - return NetworkUtility.JsonSerialize($"这是你库存中序号为 {itemIndex} 的物品详细信息:\r\n{item.ToStringInventory(true).Trim()}"); + return $"这是你库存中序号为 {itemIndex} 的物品详细信息:\r\n{item.ToStringInventory(true).Trim()}"; } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的物品!"); + return $"没有找到与这个序号相对应的物品!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -1643,7 +1649,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你库存中没有任何名为【{itemName}】的物品!"); + return $"你库存中没有任何名为【{itemName}】的物品!"; } int total = items.Count; @@ -1704,26 +1710,27 @@ namespace Oshima.FunGame.WebAPI.Controllers } str += $"可出售数量:{itemsSellable.Count()},可交易数量:{itemsTradable.Count()})\r\n"; str += $"页数:{showPage} / {maxPage}"; - return NetworkUtility.JsonSerialize(str.Trim()); + return str.Trim(); } else { - return NetworkUtility.JsonSerialize($"你库存中没有任何名为【{itemName}】的物品!"); + return $"你库存中没有任何名为【{itemName}】的物品!"; } } else { - return NetworkUtility.JsonSerialize($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"); + return $"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -1751,45 +1758,46 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (itemIndex > 0 && itemIndex <= user.Inventory.Items.Count) { item = user.Inventory.Items.ToList()[itemIndex - 1]; if ((int)item.ItemType < (int)ItemType.MagicCardPack || (int)item.ItemType > (int)ItemType.Accessory) { - return NetworkUtility.JsonSerialize($"这个物品无法被装备!"); + return $"这个物品无法被装备!"; } else if (item.Character != null) { - return NetworkUtility.JsonSerialize($"这个物品无法被装备![ {item.Character.ToStringWithLevelWithOutUser()} ] 已装备此物品。"); + return $"这个物品无法被装备![ {item.Character.ToStringWithLevelWithOutUser()} ] 已装备此物品。"; } } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的物品!"); + return $"没有找到与这个序号相对应的物品!"; } if (character != null && item != null && character.Equip(item)) { user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"装备{ItemSet.GetQualityTypeName(item.QualityType)}{ItemSet.GetItemTypeName(item.ItemType)}【{item.Name}】成功!" + - $"({ItemSet.GetEquipSlotTypeName(item.EquipSlotType)}栏位)\r\n物品描述:{item.Description}"); + return $"装备{ItemSet.GetQualityTypeName(item.QualityType)}{ItemSet.GetItemTypeName(item.ItemType)}【{item.Name}】成功!" + + $"({ItemSet.GetEquipSlotTypeName(item.EquipSlotType)}栏位)\r\n物品描述:{item.Description}"; } else { - return NetworkUtility.JsonSerialize($"装备失败!可能是角色、物品不存在或者其他原因。"); + return $"装备失败!可能是角色、物品不存在或者其他原因。"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -1820,23 +1828,24 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"取消装备{ItemSet.GetQualityTypeName(item.QualityType)}{ItemSet.GetItemTypeName(item.ItemType)}【{item.Name}】成功!({ItemSet.GetEquipSlotTypeName(type)}栏位)"); + return $"取消装备{ItemSet.GetQualityTypeName(item.QualityType)}{ItemSet.GetItemTypeName(item.ItemType)}【{item.Name}】成功!({ItemSet.GetEquipSlotTypeName(type)}栏位)"; } - else return NetworkUtility.JsonSerialize($"取消装备失败!角色并没有装备{ItemSet.GetEquipSlotTypeName(type)},或者库存中不存在此物品!"); + else return $"取消装备失败!角色并没有装备{ItemSet.GetEquipSlotTypeName(type)},或者库存中不存在此物品!"; } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -1894,7 +1903,8 @@ namespace Oshima.FunGame.WebAPI.Controllers } catch (Exception e) { - return [e.ToString()]; + Logger.LogError(e, "Error: "); + return [busy]; } } @@ -1916,7 +1926,8 @@ namespace Oshima.FunGame.WebAPI.Controllers } catch (Exception e) { - return [e.ToString()]; + Logger.LogError(e, "Error: "); + return [busy]; } } @@ -1992,7 +2003,8 @@ namespace Oshima.FunGame.WebAPI.Controllers } catch (Exception e) { - return [e.ToString()]; + Logger.LogError(e, "Error: "); + return [busy]; } } @@ -2014,7 +2026,8 @@ namespace Oshima.FunGame.WebAPI.Controllers } catch (Exception e) { - return [e.ToString()]; + Logger.LogError(e, "Error: "); + return [busy]; } } @@ -2043,7 +2056,7 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (item.RemainUseTimes <= 0) { - return NetworkUtility.JsonSerialize("此物品剩余使用次数为0,无法使用!"); + return "此物品剩余使用次数为0,无法使用!"; } List targets = []; @@ -2062,26 +2075,27 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.SaveConfig(); } - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize($"这个物品无法使用!"); + return $"这个物品无法使用!"; } } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的物品!"); + return $"没有找到与这个序号相对应的物品!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2095,7 +2109,7 @@ namespace Oshima.FunGame.WebAPI.Controllers int useCount = count ?? 0; if (useCount <= 0) { - return NetworkUtility.JsonSerialize("数量必须大于0!"); + return "数量必须大于0!"; } List charactersIndex = characters?.ToList() ?? []; @@ -2109,7 +2123,7 @@ namespace Oshima.FunGame.WebAPI.Controllers IEnumerable items = user.Inventory.Items.Where(i => i.Name == name && i.Character is null && i.ItemType != ItemType.MagicCard); if (!items.Any()) { - return NetworkUtility.JsonSerialize($"库存中不存在名称为【{name}】的物品!如果是魔法卡,请用【使用魔法卡】指令。"); + return $"库存中不存在名称为【{name}】的物品!如果是魔法卡,请用【使用魔法卡】指令。"; } if (items.Count() >= useCount) @@ -2139,21 +2153,22 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.SaveConfig(); } - return NetworkUtility.JsonSerialize($"成功使用 {useCount} 件物品!\r\n" + string.Join("\r\n", msgs.Count > 30 ? msgs.Take(30) : msgs)); + return $"成功使用 {useCount} 件物品!\r\n" + string.Join("\r\n", msgs.Count > 30 ? msgs.Take(30) : msgs); } else { - return NetworkUtility.JsonSerialize("此物品的可使用数量小于你想要使用的数量!"); + return "此物品的可使用数量小于你想要使用的数量!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2182,7 +2197,7 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (item.RemainUseTimes <= 0) { - return NetworkUtility.JsonSerialize("此物品剩余使用次数为0,无法使用!"); + return "此物品剩余使用次数为0,无法使用!"; } string msg = ""; @@ -2201,17 +2216,17 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"库存中没有找到此角色对应的魔法卡包!"); + return $"库存中没有找到此角色对应的魔法卡包!"; } } else { - return NetworkUtility.JsonSerialize($"这个角色没有装备魔法卡包,无法对其使用魔法卡!"); + return $"这个角色没有装备魔法卡包,无法对其使用魔法卡!"; } } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } } else @@ -2225,38 +2240,39 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"与目标序号相对应的物品不是魔法卡包!"); + return $"与目标序号相对应的物品不是魔法卡包!"; } } else { - return NetworkUtility.JsonSerialize($"没有找到与目标序号相对应的物品!"); + return $"没有找到与目标序号相对应的物品!"; } } user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize($"这个物品不是魔法卡!"); + return $"这个物品不是魔法卡!"; } } else { - return NetworkUtility.JsonSerialize($"没有找到与目标序号相对应的物品!"); + return $"没有找到与目标序号相对应的物品!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2283,12 +2299,12 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (character.Level == General.GameplayEquilibriumConstant.MaxLevel) { - return NetworkUtility.JsonSerialize($"该角色等级已满,无需再升级!"); + return $"该角色等级已满,无需再升级!"; } int originalLevel = character.Level; @@ -2316,16 +2332,17 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2348,20 +2365,20 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (character.LevelBreak + 1 == General.GameplayEquilibriumConstant.LevelBreakList.Count) { - return NetworkUtility.JsonSerialize($"该角色已完成全部的突破阶段,无需再突破!"); + return $"该角色已完成全部的突破阶段,无需再突破!"; } - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}" + - $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1)); + return $"角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}" + + $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1); } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -2387,12 +2404,12 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (character.LevelBreak + 1 == General.GameplayEquilibriumConstant.LevelBreakList.Count) { - return NetworkUtility.JsonSerialize($"该角色已完成全部的突破阶段,无需再突破!"); + return $"该角色已完成全部的突破阶段,无需再突破!"; } int originalBreak = character.LevelBreak; @@ -2410,7 +2427,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足突破条件!"); + return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足突破条件!"; } } else @@ -2428,7 +2445,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的物品【{key}】数量不足 {needCount} 呢,不满足突破条件!"); + return $"你的物品【{key}】数量不足 {needCount} 呢,不满足突破条件!"; } } } @@ -2439,28 +2456,29 @@ namespace Oshima.FunGame.WebAPI.Controllers if (originalBreak == character.LevelBreak) { - return NetworkUtility.JsonSerialize($"突破失败!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" + - $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1)); + return $"突破失败!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" + + $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1); } else { user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"突破成功!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" + + return $"突破成功!角色 [ {character} ] 目前突破进度:{character.LevelBreak + 1}/{General.GameplayEquilibriumConstant.LevelBreakList.Count}。" + $"{(character.LevelBreak + 1 == General.GameplayEquilibriumConstant.LevelBreakList.Count ? "\r\n该角色已完成全部的突破阶段,恭喜!" : - $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1))}"); + $"\r\n该角色下一个等级突破阶段在 {General.GameplayEquilibriumConstant.LevelBreakList.ToArray()[character.LevelBreak + 1]} 级,所需材料:\r\n" + FunGameService.GetLevelBreakNeedy(character.LevelBreak + 1))}"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2472,7 +2490,7 @@ namespace Oshima.FunGame.WebAPI.Controllers int itemCount = count ?? 0; if (itemCount <= 0) { - return NetworkUtility.JsonSerialize("数量必须大于0!"); + return "数量必须大于0!"; } long targetid = target ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11)); @@ -2552,26 +2570,26 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"此物品不存在!"); + return $"此物品不存在!"; } pc2.Add("user", user2); pc2.SaveConfig(); } else { - return NetworkUtility.JsonSerialize($"目标 UID 不存在!"); + return $"目标 UID 不存在!"; } } else { - return NetworkUtility.JsonSerialize($"你没有权限使用此指令!"); + return $"你没有权限使用此指令!"; } - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -2625,16 +2643,17 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.SaveConfig(); } - return NetworkUtility.JsonSerialize($"分解完毕!分解 {ids.Length} 件,成功 {successCount} 件,得到了 {totalGained} {General.GameplayEquilibriumConstant.InGameMaterial}!"); + return $"分解完毕!分解 {ids.Length} 件,成功 {successCount} 件,得到了 {totalGained} {General.GameplayEquilibriumConstant.InGameMaterial}!"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2648,7 +2667,7 @@ namespace Oshima.FunGame.WebAPI.Controllers int useCount = count ?? 0; if (useCount <= 0) { - return NetworkUtility.JsonSerialize("数量必须大于0!"); + return "数量必须大于0!"; } PluginConfig pc = new("saved", userid.ToString()); @@ -2661,7 +2680,7 @@ namespace Oshima.FunGame.WebAPI.Controllers IEnumerable items = user.Inventory.Items.Where(i => i.Name == name && i.Character is null); if (!items.Any()) { - return NetworkUtility.JsonSerialize($"库存中不存在名称为【{name}】的物品!"); + return $"库存中不存在名称为【{name}】的物品!"; } if (items.Count() >= useCount) @@ -2696,21 +2715,22 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.SaveConfig(); } - return NetworkUtility.JsonSerialize($"分解完毕!分解 {useCount} 件物品,成功 {successCount} 件,得到了 {totalGained} {General.GameplayEquilibriumConstant.InGameMaterial}!"); + return $"分解完毕!分解 {useCount} 件物品,成功 {successCount} 件,得到了 {totalGained} {General.GameplayEquilibriumConstant.InGameMaterial}!"; } else { - return NetworkUtility.JsonSerialize("此物品的可分解数量小于你想要分解的数量!"); + return "此物品的可分解数量小于你想要分解的数量!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2724,7 +2744,7 @@ namespace Oshima.FunGame.WebAPI.Controllers if (qType < 0 || qType > (int)QualityType.Gold) { - return NetworkUtility.JsonSerialize($"品质序号输入错误!"); + return $"品质序号输入错误!"; } PluginConfig pc = new("saved", userid.ToString()); @@ -2738,7 +2758,7 @@ namespace Oshima.FunGame.WebAPI.Controllers IEnumerable items = user.Inventory.Items.Where(i => (int)i.QualityType == qType && i.Character is null); if (!items.Any()) { - return NetworkUtility.JsonSerialize($"库存中{qualityName}物品数量为零!"); + return $"库存中{qualityName}物品数量为零!"; } List msgs = []; @@ -2771,16 +2791,17 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.SaveConfig(); } - return NetworkUtility.JsonSerialize($"分解完毕!成功分解 {successCount} 件{qualityName}物品,得到了 {totalGained} {General.GameplayEquilibriumConstant.InGameMaterial}!"); + return $"分解完毕!成功分解 {successCount} 件{qualityName}物品,得到了 {totalGained} {General.GameplayEquilibriumConstant.InGameMaterial}!"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2812,12 +2833,12 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"此物品不是魔法卡或者使用次数为0:{itemIndex}. {item.Name}"); + return $"此物品不是魔法卡或者使用次数为0:{itemIndex}. {item.Name}"; } } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的物品:{itemIndex}"); + return $"没有找到与这个序号相对应的物品:{itemIndex}"; } } if (mfks.Count >= 3) @@ -2834,26 +2855,27 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"合成魔法卡包成功!获得魔法卡包:\r\n{item.ToStringInventory(true)}"); + return $"合成魔法卡包成功!获得魔法卡包:\r\n{item.ToStringInventory(true)}"; } else { - return NetworkUtility.JsonSerialize($"合成魔法卡包失败!"); + return $"合成魔法卡包失败!"; } } else { - return NetworkUtility.JsonSerialize($"选用的魔法卡不足 3 张,请重新选择!"); + return $"选用的魔法卡不足 3 张,请重新选择!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2879,23 +2901,24 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } user.Inventory.MainCharacter = character; user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"设置主战角色成功:{character}"); + return $"设置主战角色成功:{character}"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2921,28 +2944,29 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (user.Inventory.Training.Count > 0) { - return NetworkUtility.JsonSerialize($"你已经有角色在练级中,请使用【练级结算】指令结束并获取奖励:{user.Inventory.Training.First()}!"); + return $"你已经有角色在练级中,请使用【练级结算】指令结束并获取奖励:{user.Inventory.Training.First()}!"; } user.Inventory.Training[character.Id] = DateTime.Now; user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"角色 [{character}] 开始练级,请过一段时间后进行【练级结算】,时间越长奖励越丰盛!练级时间上限 1440 分钟(24小时),超时将不会再产生收益,请按时领取奖励!"); + return $"角色 [{character}] 开始练级,请过一段时间后进行【练级结算】,时间越长奖励越丰盛!练级时间上限 1440 分钟(24小时),超时将不会再产生收益,请按时领取奖励!"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -2962,7 +2986,7 @@ namespace Oshima.FunGame.WebAPI.Controllers if (user.Inventory.Training.Count == 0) { - return NetworkUtility.JsonSerialize($"你目前没有角色在练级中,请使用【开启练级+角色序号】指令进行练级。"); + return $"你目前没有角色在练级中,请使用【开启练级+角色序号】指令进行练级。"; } long cid = user.Inventory.Training.Keys.First(); @@ -3002,21 +3026,22 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 练级结束,{msg}"); + return $"角色 [ {character} ] 练级结束,{msg}"; } else { - return NetworkUtility.JsonSerialize($"你目前没有角色在练级中,也可能是库存信息获取异常,请稍后再试。"); + return $"你目前没有角色在练级中,也可能是库存信息获取异常,请稍后再试。"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3036,7 +3061,7 @@ namespace Oshima.FunGame.WebAPI.Controllers if (user.Inventory.Training.Count == 0) { - return NetworkUtility.JsonSerialize($"你目前没有角色在练级中,请使用【开启练级+角色序号】指令进行练级。"); + return $"你目前没有角色在练级中,请使用【开启练级+角色序号】指令进行练级。"; } long cid = user.Inventory.Training.Keys.First(); @@ -3048,21 +3073,22 @@ namespace Oshima.FunGame.WebAPI.Controllers TimeSpan diff = now - time; string msg = FunGameService.GetTrainingInfo(diff, true, out int totalExperience, out int smallBookCount, out int mediumBookCount, out int largeBookCount); - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 正在练级中,{msg}\r\n确认无误后请输入【练级结算】领取奖励!"); + return $"角色 [ {character} ] 正在练级中,{msg}\r\n确认无误后请输入【练级结算】领取奖励!"; } else { - return NetworkUtility.JsonSerialize($"你目前没有角色在练级中,也可能是库存信息获取异常,请稍后再试。"); + return $"你目前没有角色在练级中,也可能是库存信息获取异常,请稍后再试。"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3086,7 +3112,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (character.Skills.FirstOrDefault(s => s.Name == skillName) is Skill skill) @@ -3095,22 +3121,22 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (skill.Level + 1 == General.GameplayEquilibriumConstant.MaxSkillLevel) { - return NetworkUtility.JsonSerialize($"此技能【{skill.Name}】已经升至满级!"); + return $"此技能【{skill.Name}】已经升至满级!"; } - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 的【{skill.Name}】技能等级:{skill.Level} / {General.GameplayEquilibriumConstant.MaxSkillLevel}" + - $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetSkillLevelUpNeedy(skill.Level + 1)); + return $"角色 [ {character} ] 的【{skill.Name}】技能等级:{skill.Level} / {General.GameplayEquilibriumConstant.MaxSkillLevel}" + + $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetSkillLevelUpNeedy(skill.Level + 1); } - return NetworkUtility.JsonSerialize($"此技能无法升级!"); + return $"此技能无法升级!"; } else { - return NetworkUtility.JsonSerialize($"此角色没有【{skillName}】技能!"); + return $"此角色没有【{skillName}】技能!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -3137,7 +3163,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (character.Skills.FirstOrDefault(s => s.Name == skillName) is Skill skill) @@ -3148,7 +3174,7 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (skill.Level == General.GameplayEquilibriumConstant.MaxSkillLevel) { - return NetworkUtility.JsonSerialize($"此技能【{skill.Name}】已经升至满级!"); + return $"此技能【{skill.Name}】已经升至满级!"; } if (FunGameConstant.SkillLevelUpList.TryGetValue(skill.Level + 1, out Dictionary? needy) && needy != null && needy.Count > 0) @@ -3160,14 +3186,14 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (character.Level < needCount) { - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 等级不足 {needCount} 级,无法{isStudy}此技能!"); + return $"角色 [ {character} ] 等级不足 {needCount} 级,无法{isStudy}此技能!"; } } else if (key == "角色突破进度") { if (character.LevelBreak + 1 < needCount) { - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法{isStudy}此技能!"); + return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法{isStudy}此技能!"; } } else if (key == General.GameplayEquilibriumConstant.InGameCurrency) @@ -3178,7 +3204,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足{isStudy}条件!"); + return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足{isStudy}条件!"; } } else if (key == General.GameplayEquilibriumConstant.InGameMaterial) @@ -3189,7 +3215,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足{isStudy}条件!"); + return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足{isStudy}条件!"; } } else @@ -3207,7 +3233,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的物品【{key}】数量不足 {needCount} 呢,不满足{isStudy}条件!"); + return $"你的物品【{key}】数量不足 {needCount} 呢,不满足{isStudy}条件!"; } } } @@ -3231,27 +3257,28 @@ namespace Oshima.FunGame.WebAPI.Controllers msg += $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetSkillLevelUpNeedy(skill.Level + 1); } - return NetworkUtility.JsonSerialize(msg); + return msg; } - return NetworkUtility.JsonSerialize($"{isStudy}技能失败!角色 [ {character} ] 的【{skill.Name}】技能当前等级:{skill.Level}/{General.GameplayEquilibriumConstant.MaxSkillLevel}" + - $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetSkillLevelUpNeedy(skill.Level + 1)); + return $"{isStudy}技能失败!角色 [ {character} ] 的【{skill.Name}】技能当前等级:{skill.Level}/{General.GameplayEquilibriumConstant.MaxSkillLevel}" + + $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetSkillLevelUpNeedy(skill.Level + 1); } - return NetworkUtility.JsonSerialize($"此技能无法{isStudy}!"); + return $"此技能无法{isStudy}!"; } else { - return NetworkUtility.JsonSerialize($"此角色没有【{skillName}】技能!"); + return $"此角色没有【{skillName}】技能!"; } } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3274,21 +3301,21 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } NormalAttack na = character.NormalAttack; if (na.Level + 1 == General.GameplayEquilibriumConstant.MaxNormalAttackLevel) { - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 的【{na.Name}】已经升至满级!"); + return $"角色 [ {character} ] 的【{na.Name}】已经升至满级!"; } - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 的【{na.Name}】等级:{na.Level} / {General.GameplayEquilibriumConstant.MaxNormalAttackLevel}" + - $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetNormalAttackLevelUpNeedy(na.Level + 1)); + return $"角色 [ {character} ] 的【{na.Name}】等级:{na.Level} / {General.GameplayEquilibriumConstant.MaxNormalAttackLevel}" + + $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetNormalAttackLevelUpNeedy(na.Level + 1); } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -3314,13 +3341,13 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } NormalAttack na = character.NormalAttack; if (na.Level == General.GameplayEquilibriumConstant.MaxNormalAttackLevel) { - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 的【{na.Name}】已经升至满级!"); + return $"角色 [ {character} ] 的【{na.Name}】已经升至满级!"; } if (FunGameConstant.NormalAttackLevelUpList.TryGetValue(na.Level + 1, out Dictionary? needy) && needy != null && needy.Count > 0) @@ -3332,14 +3359,14 @@ namespace Oshima.FunGame.WebAPI.Controllers { if (character.Level < needCount) { - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 等级不足 {needCount} 级,无法升级此技能!"); + return $"角色 [ {character} ] 等级不足 {needCount} 级,无法升级此技能!"; } } else if (key == "角色突破进度") { if (character.LevelBreak + 1 < needCount) { - return NetworkUtility.JsonSerialize($"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法升级此技能!"); + return $"角色 [ {character} ] 等级突破进度不足 {needCount} 等阶,无法升级此技能!"; } } else if (key == General.GameplayEquilibriumConstant.InGameCurrency) @@ -3350,7 +3377,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足升级条件!"); + return $"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {needCount} 呢,不满足升级条件!"; } } else if (key == General.GameplayEquilibriumConstant.InGameMaterial) @@ -3361,7 +3388,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足升级条件!"); + return $"你的{General.GameplayEquilibriumConstant.InGameMaterial}不足 {needCount} 呢,不满足升级条件!"; } } else @@ -3379,7 +3406,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你的物品【{key}】数量不足 {needCount} 呢,不满足升级条件!"); + return $"你的物品【{key}】数量不足 {needCount} 呢,不满足升级条件!"; } } } @@ -3403,20 +3430,21 @@ namespace Oshima.FunGame.WebAPI.Controllers msg += $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetNormalAttackLevelUpNeedy(na.Level + 1); } - return NetworkUtility.JsonSerialize(msg); + return msg; } - return NetworkUtility.JsonSerialize($"升级{na.Name}失败!角色 [ {character} ] 的【{na.Name}】当前等级:{na.Level}/{General.GameplayEquilibriumConstant.MaxNormalAttackLevel}" + - $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetSkillLevelUpNeedy(na.Level + 1)); + return $"升级{na.Name}失败!角色 [ {character} ] 的【{na.Name}】当前等级:{na.Level}/{General.GameplayEquilibriumConstant.MaxNormalAttackLevel}" + + $"\r\n下一级所需升级材料:\r\n" + FunGameService.GetSkillLevelUpNeedy(na.Level + 1); } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3528,35 +3556,34 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (user.Inventory.Squad.Count >= 4) { - return NetworkUtility.JsonSerialize($"小队人数已满 4 人,无法继续添加角色!当前小队角色如下:\r\n" + - string.Join("\r\n", user.Inventory.Characters.Where(c => user.Inventory.Squad.Contains(c.Id)))); + return $"小队人数已满 4 人,无法继续添加角色!当前小队角色如下:\r\n{FunGameService.GetSquadInfo(user.Inventory.Characters, user.Inventory.Squad)}"; } if (user.Inventory.Squad.Contains(character.Id)) { - return NetworkUtility.JsonSerialize($"此角色已经在小队中了!"); + return $"此角色已经在小队中了!"; } user.Inventory.Squad.Add(character.Id); user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"添加小队角色成功:{character}\r\n当前小队角色如下:\r\n" + - string.Join("\r\n", user.Inventory.Characters.Where(c => user.Inventory.Squad.Contains(c.Id)))); + return $"添加小队角色成功:{character}\r\n当前小队角色如下:\r\n{FunGameService.GetSquadInfo(user.Inventory.Characters, user.Inventory.Squad)}"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3582,29 +3609,29 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有找到与这个序号相对应的角色!"); + return $"没有找到与这个序号相对应的角色!"; } if (!user.Inventory.Squad.Contains(character.Id)) { - return NetworkUtility.JsonSerialize($"此角色不在小队中!"); + return $"此角色不在小队中!"; } user.Inventory.Squad.Remove(character.Id); user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"移除小队角色成功:{character}\r\n当前小队角色如下:\r\n" + - string.Join("\r\n", user.Inventory.Characters.Where(c => user.Inventory.Squad.Contains(c.Id)))); + return $"移除小队角色成功:{character}\r\n当前小队角色如下:\r\n{FunGameService.GetSquadInfo(user.Inventory.Characters, user.Inventory.Squad)}"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3633,7 +3660,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"设置失败:没有找到与序号 {characterIndex} 相对应的角色!"); + return $"设置失败:没有找到与序号 {characterIndex} 相对应的角色!"; } user.Inventory.Squad.Add(character.Id); } @@ -3641,17 +3668,17 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"设置小队成员成功!当前小队角色如下:\r\n" + - string.Join("\r\n", user.Inventory.Characters.Where(c => user.Inventory.Squad.Contains(c.Id)))); + return $"设置小队成员成功!当前小队角色如下:\r\n{FunGameService.GetSquadInfo(user.Inventory.Characters, user.Inventory.Squad)}"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3674,16 +3701,17 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize($"清空小队成员成功!"); + return $"清空小队成员成功!"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3700,17 +3728,17 @@ namespace Oshima.FunGame.WebAPI.Controllers if (pc.Count > 0) { User user = FunGameService.GetUser(pc); - return NetworkUtility.JsonSerialize($"你的当前小队角色如下:\r\n" + - string.Join("\r\n", user.Inventory.Characters.Where(c => user.Inventory.Squad.Contains(c.Id)))); + return $"你的当前小队角色如下:\r\n{FunGameService.GetSquadInfo(user.Inventory.Characters, user.Inventory.Squad)}"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } catch (Exception e) { - return NetworkUtility.JsonSerialize(e.ToString()); + Logger.LogError(e, "Error: "); + return busy; } } @@ -3735,8 +3763,7 @@ namespace Oshima.FunGame.WebAPI.Controllers if (squad.All(c => c.HP < c.MaxHP * 0.1)) { return [$"小队角色均重伤未愈,当前生命值低于 10%,请先等待生命值自动回复或重组小队!\r\n" + - "当前小队角色如下:\r\n" + - string.Join("\r\n", user.Inventory.Characters.Where(c => user.Inventory.Squad.Contains(c.Id)))]; + $"当前小队角色如下:\r\n{FunGameService.GetSquadInfo(user.Inventory.Characters, user.Inventory.Squad)}"]; } Character boss2 = CharacterBuilder.Build(boss, false, true, null, FunGameConstant.AllItems, FunGameConstant.AllSkills, false); @@ -3796,11 +3823,11 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -3833,11 +3860,11 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -3862,7 +3889,7 @@ namespace Oshima.FunGame.WebAPI.Controllers IEnumerable workingQuests = quests.Values.Where(q => q.QuestType != QuestType.Progressive && q.Status == QuestState.InProgress); if (workingQuests.Any()) { - msgs.Add($"你正在进行任务【{string.Join(",【", workingQuests.Select(q => q.Name))}】,无法开始新任务!\r\n{quest}"); + msgs.Add($"你正在进行任务【{string.Join(",【", workingQuests.Select(q => q.Name))}】,无法开始新任务!\r\n请使用【任务列表】指令来检查你的任务列表!"); } else if (quest.Status == QuestState.Completed) { @@ -3938,11 +3965,11 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.SaveConfig(); } - return NetworkUtility.JsonSerialize("任务结算已完成,请查看你的任务列表!"); + return "任务结算已完成,请查看你的任务列表!"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -3974,11 +4001,11 @@ namespace Oshima.FunGame.WebAPI.Controllers msg = user.Inventory.MainCharacter.GetSimpleInfo(true, false, false, true); } - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4013,8 +4040,8 @@ namespace Oshima.FunGame.WebAPI.Controllers if (sign) { - return NetworkUtility.JsonSerialize($"你今天已经签过到了哦!" + - (lastTime != DateTime.MinValue ? $"\r\n你上一次签到时间:{lastTime.ToString(General.GeneralDateTimeFormatChinese)},连续签到:{days} 天。" : "")); + return $"你今天已经签过到了哦!" + + (lastTime != DateTime.MinValue ? $"\r\n你上一次签到时间:{lastTime.ToString(General.GeneralDateTimeFormatChinese)},连续签到:{days} 天。" : ""); } string msg = FunGameService.GetSignInResult(user, days); @@ -4024,11 +4051,11 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("days", days + 1); pc.Add("lastTime", newLastTime); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg + "\r\n>>> 请发送【帮助】来获取更多玩法指令!<<<"); + return msg + "\r\n>>> 请发送【帮助】来获取更多玩法指令!<<<"; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4046,7 +4073,7 @@ namespace Oshima.FunGame.WebAPI.Controllers User user = FunGameService.GetUser(pc); if (pc.TryGetValue("club", out object? value) && long.TryParse(value.ToString(), out long userClub) && userClub != 0) { - return NetworkUtility.JsonSerialize($"你需要先退出当前社团才可以加入新社团。"); + return $"你需要先退出当前社团才可以加入新社团。"; } EntityModuleConfig emc = new("clubs", clubid.ToString()); @@ -4054,12 +4081,12 @@ namespace Oshima.FunGame.WebAPI.Controllers Club? club = emc.Get("club"); if (club is null) { - return NetworkUtility.JsonSerialize($"不存在编号为 {clubid} 的社团!"); + return $"不存在编号为 {clubid} 的社团!"; } if (!club.IsPublic) { - return NetworkUtility.JsonSerialize($"社团 [ {club.Name} ] 未公开,只能通过邀请加入。"); + return $"社团 [ {club.Name} ] 未公开,只能通过邀请加入。"; } string msg = ""; @@ -4083,11 +4110,11 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4110,7 +4137,7 @@ namespace Oshima.FunGame.WebAPI.Controllers if (clubid == 0) { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } EntityModuleConfig emc = new("clubs", clubid.ToString()); @@ -4118,17 +4145,17 @@ namespace Oshima.FunGame.WebAPI.Controllers Club? club = emc.Get("club"); if (club is null) { - return NetworkUtility.JsonSerialize($"不存在编号为 {clubid} 的社团!"); + return $"不存在编号为 {clubid} 的社团!"; } if (club.Master?.Id == userid) { - return NetworkUtility.JsonSerialize($"你是社团的社长,不能退出社团,请转让社长或【解散社团】!"); + return $"你是社团的社长,不能退出社团,请转让社长或【解散社团】!"; } if (!club.Members.Remove(userid)) { - return NetworkUtility.JsonSerialize($"你不是此社团的成员,请联系管理员处理。"); + return $"你不是此社团的成员,请联系管理员处理。"; } club.MemberJoinTime.Remove(userid); @@ -4140,11 +4167,11 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.Add("club", 0); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4163,13 +4190,13 @@ namespace Oshima.FunGame.WebAPI.Controllers User user = FunGameService.GetUser(pc); if (pc.TryGetValue("club", out object? value) && long.TryParse(value.ToString(), out long userClub) && userClub != 0) { - return NetworkUtility.JsonSerialize($"你需要先退出当前社团才可以创建新社团。"); + return $"你需要先退出当前社团才可以创建新社团。"; } string pattern = @"^[a-zA-Z-_=+*%#^~.?!;:'"",]{3,4}$"; if (!Regex.IsMatch(clubPrefix, pattern)) { - return NetworkUtility.JsonSerialize($"社团的前缀只能包含总共3-4个英文字母和数字、允许的特殊字符,此前缀不满足条件。"); + return $"社团的前缀只能包含总共3-4个英文字母和数字、允许的特殊字符,此前缀不满足条件。"; } HashSet clubids = []; @@ -4217,11 +4244,11 @@ namespace Oshima.FunGame.WebAPI.Controllers pc.Add("user", user); pc.Add("club", clubid); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4284,11 +4311,11 @@ namespace Oshima.FunGame.WebAPI.Controllers msg = $"你目前还没有加入任何社团。"; } - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4352,7 +4379,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - NetworkUtility.JsonSerialize($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"); + builer.Append($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"); } break; case 2: @@ -4380,7 +4407,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - NetworkUtility.JsonSerialize($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"); + builer.Append($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"); } } else @@ -4422,7 +4449,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - NetworkUtility.JsonSerialize($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"); + builer.Append($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。"); } break; } @@ -4434,11 +4461,11 @@ namespace Oshima.FunGame.WebAPI.Controllers msg = $"你目前还没有加入任何社团。"; } - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4461,7 +4488,7 @@ namespace Oshima.FunGame.WebAPI.Controllers if (clubid == 0) { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } EntityModuleConfig emc = new("clubs", clubid.ToString()); @@ -4469,12 +4496,12 @@ namespace Oshima.FunGame.WebAPI.Controllers Club? club = emc.Get("club"); if (club is null) { - return NetworkUtility.JsonSerialize($"不存在编号为 {clubid} 的社团!"); + return $"不存在编号为 {clubid} 的社团!"; } if (club.Master?.Id != userid) { - return NetworkUtility.JsonSerialize($"你不是社团的社长,没有权限使用此指令!"); + return $"你不是社团的社长,没有权限使用此指令!"; } string msg; @@ -4511,11 +4538,11 @@ namespace Oshima.FunGame.WebAPI.Controllers { msg = $"解散社团 [ {club.Name} ] 失败,请联系服务器管理员处理!"; } - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4541,7 +4568,7 @@ namespace Oshima.FunGame.WebAPI.Controllers Club? club = emc.Get("club"); if (club is null) { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } if (club.Master?.Id == userid || club.Admins.ContainsKey(userid)) @@ -4583,32 +4610,32 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"对方并没有申请此社团!"); + return $"对方并没有申请此社团!"; } } else { - return NetworkUtility.JsonSerialize($"对方似乎还没创建存档呢!"); + return $"对方似乎还没创建存档呢!"; } } else { - return NetworkUtility.JsonSerialize($"你没有权限审批申请人!"); + return $"你没有权限审批申请人!"; } } else { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4633,7 +4660,7 @@ namespace Oshima.FunGame.WebAPI.Controllers Club? club = emc.Get("club"); if (club is null) { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } if (club.Master?.Id == userid || club.Admins.ContainsKey(userid)) @@ -4662,37 +4689,37 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"对方并不在此社团中,无法踢出!"); + return $"对方并不在此社团中,无法踢出!"; } } else { - return NetworkUtility.JsonSerialize($"对方似乎还没创建存档呢!"); + return $"对方似乎还没创建存档呢!"; } } else { - return NetworkUtility.JsonSerialize($"你没有权限踢出管理员!"); + return $"你没有权限踢出管理员!"; } } else { - return NetworkUtility.JsonSerialize($"你没有权限踢出成员!"); + return $"你没有权限踢出成员!"; } } else { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4718,7 +4745,7 @@ namespace Oshima.FunGame.WebAPI.Controllers Club? club = emc.Get("club"); if (club is null) { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } bool isMaster = club.Master?.Id == userid; @@ -4731,7 +4758,7 @@ namespace Oshima.FunGame.WebAPI.Controllers case "name": if (!isMaster) { - return NetworkUtility.JsonSerialize("只有社长可以修改社团名称!"); + return "只有社长可以修改社团名称!"; } if (values.Length > 0) { @@ -4740,17 +4767,17 @@ namespace Oshima.FunGame.WebAPI.Controllers club.Name = values[0]; msg = "修改成功,新的社团名称是:" + club.Name; } - else return NetworkUtility.JsonSerialize("社团名称只能包含2至15个字符!"); + else return "社团名称只能包含2至15个字符!"; } else { - return NetworkUtility.JsonSerialize("请提供新的社团名称!"); + return "请提供新的社团名称!"; } break; case "prefix": if (!isMaster) { - return NetworkUtility.JsonSerialize("只有社长可以修改社团前缀!"); + return "只有社长可以修改社团前缀!"; } string pattern = @"^[a-zA-Z0-9-_=+*%#^~.?!;:'"",]{3,4}$"; if (values.Length > 0) @@ -4758,14 +4785,14 @@ namespace Oshima.FunGame.WebAPI.Controllers string clubPrefix = values[0]; if (!Regex.IsMatch(clubPrefix, pattern)) { - return NetworkUtility.JsonSerialize($"社团的前缀只能包含总共3-4个英文字母和数字、允许的特殊字符,此前缀不满足条件。"); + return $"社团的前缀只能包含总共3-4个英文字母和数字、允许的特殊字符,此前缀不满足条件。"; } club.Prefix = clubPrefix; msg = "修改成功,新的社团前缀是:" + club.Prefix; } else { - return NetworkUtility.JsonSerialize("请提供新的社团前缀!"); + return "请提供新的社团前缀!"; } break; case "description": @@ -4777,7 +4804,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize("请提供新的社团描述!"); + return "请提供新的社团描述!"; } break; case "isneedapproval": @@ -4788,7 +4815,7 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize("请提供正确的布尔值(true 或 false)来设置加入是否需要批准!"); + return "请提供正确的布尔值(true 或 false)来设置加入是否需要批准!"; } break; case "ispublic": @@ -4799,13 +4826,13 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize("请提供正确的布尔值(true 或 false)来设置社团是否公开/私密!"); + return "请提供正确的布尔值(true 或 false)来设置社团是否公开/私密!"; } break; case "setadmin": if (!isMaster) { - return NetworkUtility.JsonSerialize("只有社长可以设置社团管理员!"); + return "只有社长可以设置社团管理员!"; } if (values.Length > 0 && long.TryParse(values[0], out long id) && club.Members.ContainsKey(id) && FunGameConstant.UserIdAndUsername.TryGetValue(id, out User? user2) && user2 != null) { @@ -4814,13 +4841,13 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize("指定的用户不是此社团的成员!"); + return "指定的用户不是此社团的成员!"; } break; case "setnotadmin": if (!isMaster) { - return NetworkUtility.JsonSerialize("只有社长可以取消社团管理员!"); + return "只有社长可以取消社团管理员!"; } if (values.Length > 0 && long.TryParse(values[0], out id) && club.Members.ContainsKey(id) && FunGameConstant.UserIdAndUsername.TryGetValue(id, out user2) && user2 != null) { @@ -4835,13 +4862,13 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize("指定的用户不是此社团的成员!"); + return "指定的用户不是此社团的成员!"; } break; case "setmaster": if (!isMaster) { - return NetworkUtility.JsonSerialize("只有社长可以转让社团!"); + return "只有社长可以转让社团!"; } if (values.Length > 0 && long.TryParse(values[0], out id) && club.Members.ContainsKey(id) && FunGameConstant.UserIdAndUsername.TryGetValue(id, out user2) && user2 != null) { @@ -4852,11 +4879,11 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize("指定的用户不是此社团的成员!"); + return "指定的用户不是此社团的成员!"; } break; default: - return NetworkUtility.JsonSerialize("未知的社团设置项,设置失败。"); + return "未知的社团设置项,设置失败。"; } emc.Add("club", club); @@ -4864,22 +4891,22 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"你没有权限修改社团设置!"); + return $"你没有权限修改社团设置!"; } } else { - return NetworkUtility.JsonSerialize($"你当前没有加入任何社团!"); + return $"你当前没有加入任何社团!"; } user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4902,7 +4929,7 @@ namespace Oshima.FunGame.WebAPI.Controllers FunGameService.ServerPluginLoader?.OnBeforeOpenStoreEvent(user, e); if (e.Cancel) { - return NetworkUtility.JsonSerialize(refused + (e.EventMsg != "" ? $"原因:{e.EventMsg}" : "")); + return refused + (e.EventMsg != "" ? $"原因:{e.EventMsg}" : ""); } EntityModuleConfig store = new("stores", userid.ToString()); @@ -4917,11 +4944,11 @@ namespace Oshima.FunGame.WebAPI.Controllers e.EventMsg = $"{user.Username}访问每日商店成功"; FunGameService.ServerPluginLoader?.OnAfterOpenStoreEvent(user, e); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -4933,7 +4960,7 @@ namespace Oshima.FunGame.WebAPI.Controllers int buycount = count ?? 1; if (buycount <= 0) { - return NetworkUtility.JsonSerialize("数量必须大于0!"); + return "数量必须大于0!"; } PluginConfig pc = new("saved", userid.ToString()); @@ -4956,13 +4983,13 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有对应编号的商品!"); + return $"没有对应编号的商品!"; } } else { - return NetworkUtility.JsonSerialize($"商品列表为空,请使用【每日商店】指令来获取商品列表!"); + return $"商品列表为空,请使用【每日商店】指令来获取商品列表!"; } store.Add("daily", daily); @@ -4970,11 +4997,11 @@ namespace Oshima.FunGame.WebAPI.Controllers user.LastTime = DateTime.Now; pc.Add("user", user); pc.SaveConfig(); - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } @@ -5016,25 +5043,25 @@ namespace Oshima.FunGame.WebAPI.Controllers } else { - return NetworkUtility.JsonSerialize($"没有对应编号的物品!"); + return $"没有对应编号的物品!"; } } else { - return NetworkUtility.JsonSerialize($"商品列表不存在,请刷新!"); + return $"商品列表不存在,请刷新!"; } - return NetworkUtility.JsonSerialize(msg); + return msg; } else { - return NetworkUtility.JsonSerialize(noSaved); + return noSaved; } } [HttpPost("creategiftbox")] - public string CreateGiftBox([FromQuery] long? uid = null, [FromQuery] string? name = null, [FromQuery] bool? checkRepeat = null) + public string CreateGiftBox([FromQuery] long? uid = null, [FromQuery] string? name = null, [FromQuery] bool? checkRepeat = null, [FromQuery] int? maxRepeat = null) { long userid = uid ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11)); string itemName = name ?? ""; @@ -5059,10 +5086,14 @@ namespace Oshima.FunGame.WebAPI.Controllers list = [.. tempList]; } - if (list.Contains(user.Id)) + if ((maxRepeat is null || maxRepeat == 0) && list.Contains(user.Id)) { return $"你已经领取过这个礼包【{itemName}】啦,不能重复领取哦!"; } + else if (list.Count(id => id == user.Id) >= maxRepeat) + { + return $"礼包【{itemName}】的领取次数已经达到上限 {maxRepeat} 次,无法继续领取了!"; + } list.Add(user.Id); pc2.Add(itemName, list); @@ -5267,6 +5298,46 @@ namespace Oshima.FunGame.WebAPI.Controllers } } + [HttpGet("getevents")] + public string GetEvents([FromQuery] long? id = null) + { + if (id != null) + { + return FunGameService.GetEvent(id.Value); + } + else + { + return FunGameService.GetEventCenter(); + } + } + + [HttpPost("performevent")] + public string PerformEvent([FromQuery] long? uid = null, [FromQuery] long? aid = null, [FromQuery] long? qid = null) + { + long userid = uid ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11)); + long activityid = aid ?? 0; + long questid = qid ?? 0; + + PluginConfig pc = new("saved", userid.ToString()); + pc.LoadConfig(); + + string msg = ""; + if (pc.Count > 0) + { + User user = FunGameService.GetUser(pc); + + user.LastTime = DateTime.Now; + pc.Add("user", user); + pc.SaveConfig(); + + return msg; + } + else + { + return noSaved; + } + } + [HttpPost("template")] public string Template([FromQuery] long? uid = null) { diff --git a/OshimaWebAPI/Services/RainBOTService.cs b/OshimaWebAPI/Services/RainBOTService.cs index 5858268..749f7a2 100644 --- a/OshimaWebAPI/Services/RainBOTService.cs +++ b/OshimaWebAPI/Services/RainBOTService.cs @@ -1,9 +1,11 @@ -using System.Text.RegularExpressions; +using System.Text; +using System.Text.RegularExpressions; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; using Oshima.Core.Configs; using Oshima.FunGame.OshimaServers.Service; using Oshima.FunGame.WebAPI.Constant; @@ -42,13 +44,35 @@ namespace Oshima.FunGame.WebAPI.Services content = content.Trim(); await Service.SendC2CMessageAsync(msg.OpenId, content, msgType, media, msg.Id, msgSeq); } - if (msg.FunGameUID > 0 && FunGameService.FirstLoginDailyNotice.TryGetValue(msg.FunGameUID, out List? msgs) && msgs != null) + if (msg.FunGameUID > 0 && FunGameService.UserNotice.TryGetValue(msg.FunGameUID, out List? msgs) && msgs != null) { - FunGameService.FirstLoginDailyNotice.Remove(msg.FunGameUID); + FunGameService.UserNotice.Remove(msg.FunGameUID); await SendAsync(msg, "每日登录提醒", string.Join("\r\n", msgs), msgType, media, 5); } } + private async Task SendHelp(IBotMessage e, Dictionary helpDict, string helpName, int currentPage) + { + int pageSize = 15; + int totalPages = (helpDict.Count + pageSize - 1) / pageSize; + + StringBuilder result = new($"《筽祀牻》{helpName}指令(第 {currentPage}/{totalPages} 页)\n"); + + int index = (currentPage - 1) * pageSize + 1; + foreach ((string cmd, string desc) in FunGameOrderList.GetPage(helpDict, currentPage, pageSize)) + { + result.AppendLine($"{index}. {cmd}{(desc != "" ? ":" + desc : "")}"); + index++; + } + + if (currentPage < totalPages) + { + result.AppendLine($"发送【{helpName}{currentPage + 1}】查看下一页"); + } + + await SendAsync(e, "筽祀牻", result.ToString()); + } + public async Task Handler(IBotMessage e) { bool result = true; @@ -98,7 +122,7 @@ namespace Oshima.FunGame.WebAPI.Services // string msg = ""; // if (long.TryParse(detail, out temp_qq)) // { - // msg = NetworkUtility.JsonDeserialize(QQController.Bind(new(openid, temp_qq))) ?? ""; + // msg = QQController.Bind(new(openid, temp_qq)); // } // else // { @@ -115,127 +139,76 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "查询服务器启动时间") { - string msg = NetworkUtility.JsonDeserialize(TestController.GetLastLoginTime()) ?? ""; + string msg = TestController.GetLastLoginTime(); await SendAsync(e, "查询服务器启动时间", msg); return true; } if (e.Detail.StartsWith("查询任务计划")) { - string msg = NetworkUtility.JsonDeserialize(TestController.GetTaskScheduler(e.Detail.Replace("查询任务计划", ""))) ?? ""; + string msg = TestController.GetTaskScheduler(e.Detail.Replace("查询任务计划", "")); await SendAsync(e, "查询任务计划", msg); return true; } - if (e.Detail == "帮助" || e.Detail == "帮助1") + // 指令处理 + if (e.Detail == "帮助") { - await SendAsync(e, "筽祀牻", @"《筽祀牻》游戏指令列表(第 1 / 7 页) -1、创建存档:创建存档,生成随机一个自建角色(序号固定为1) -2、我的库存/我的背包/查看库存 [页码]:显示所有角色、物品库存,每个角色和物品都有一个专属序号 -3、我的库存 <物品类型> [页码]:卡包/武器/防具/鞋子/饰品/消耗品/魔法卡等... -4、分类库存 <物品索引> [页码]:物品索引从0开始,同上... -5、物品库存 [页码]:显示所有角色 -* 上述三指令会将物品按品质倒序和数量倒序排序,整合物品序号和数量显示物品库存 -6、角色库存 [页码]:显示所有角色 -7、我角色 [角色序号]:查看指定序号角色的简略信息,缺省为1 -8、我的角色 [角色序号]:查看指定序号角色的详细信息,缺省为1 -9、角色重随:重新随机自建角色的属性,需要花材料 -10、我的物品 <物品序号>:查看指定序号物品的详细信息 -11、设置主战 <角色序号>:将指定序号角色设置为主战 -发送【帮助2】查看第 2 页"); + await SendAsync(e, "筽祀牻", @$"欢迎使用《筽祀牻》游戏指令帮助系统! +核心库版本号:{FunGameInfo.FunGame_Version} +《筽祀牻》是一款奇幻冒险回合制角色扮演游戏。 +在游戏中,你可以和其他角色组成小队,收集物品,在数十个独具风格的地区中冒险并战斗。 +因游戏内容、指令较多,我们将按游戏模块对指令分类,请输入以下指令查看具体分类的帮助内容: +1、存档帮助 +2、角色帮助 +3、物品帮助 +4、战斗帮助 +5、任务帮助 +6、社团帮助 +7、活动帮助 +8、商店帮助 +在指令后面加数字即可跳转指定的页码,感谢游玩《筽祀牻》。"); } - if (e.Detail == "帮助2") + if (e.Detail.StartsWith("存档帮助")) { - await SendAsync(e, "筽祀牻", @"《筽祀牻》游戏指令列表(第 2 / 7 页) -12、装备 <角色序号> <物品序号>:装备指定物品给指定角色 -13、取消装备 <角色序号> <装备槽序号>:卸下角色指定装备槽上的物品 -* 装备槽序号从1开始,卡包/武器/防具/鞋子/饰品1/饰品2 -14、角色改名:修改名字,需要金币 -15、抽卡/十连抽卡:2000金币一次,还有材料抽卡/材料十连抽卡,10材料1次 -16、开启练级 [角色序号]:让指定角色启动练级模式,缺省为1 -17、练级结算:收取奖励,最多累计24小时的收益 -18、练级信息:查看当前进度 -19、角色升级 [角色序号]:升到不能升为止 -20、角色突破 [角色序号]:每10/20/30/40/50/60级都要突破才可以继续升级 -21、突破信息 [角色序号]:查看下一次突破信息 -发送【帮助3】查看第 3 页"); + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.ArchiveHelp, "存档帮助", page); } - - if (e.Detail == "帮助3") + else if (e.Detail.StartsWith("角色帮助")) { - await SendAsync(e, "筽祀牻", @"《筽祀牻》游戏指令列表(第 3 / 7 页) -22、普攻升级 [角色序号]:升级普攻等级 -23、查看普攻升级 [角色序号]:查看下一次普攻升级信息 -23、技能升级 <角色序号> <技能名称>:升级技能等级 -24、查看技能升级 <角色序号> <技能名称>:查看下一次技能升级信息 -25、使用 <物品名称> <数量> [角色] [角色序号] -26、使用 <物品序号> [角色] [角色序号] -27、使用魔法卡 <魔法卡序号> <魔法卡包序号> -28、合成魔法卡 <{物品序号...}>:要3张魔法卡,空格隔开 -29、分解物品 <{物品序号...}> -30、分解 <物品名称> <数量> -31、品质分解 <品质索引>:从0开始,普通/优秀/稀有/史诗/传说/神话/不朽 -32、决斗/完整决斗 <@对方>//<昵称>:和对方切磋 -发送【帮助4】查看第 4 页"); + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.CharacterHelp, "角色帮助", page); } - - if (e.Detail == "帮助4") + else if (e.Detail.StartsWith("物品帮助")) { - await SendAsync(e, "筽祀牻", @"《筽祀牻》游戏指令列表(第 4 / 7 页) -33、兑换金币 <材料数>:1材料=200金币 -34、还原存档:没有后悔药 -35、我的主战:查看当前主战角色 -36、我的小队:查看小队角色名单 -37、我的存档:查看账号/存档信息 -38、设置小队 <{角色序号...}>:设置小队角色(1-4个参数) -39、小队决斗/小队完整决斗 <@对方>//<昵称>:用小队和对方切磋 -40、查询boss [boss序号]:查看指定序号boss的详细信息,缺省为boss名称列表 -41、讨伐/小队讨伐boss -42、签到:每日签到 -发送【帮助5】查看第 5 页"); + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.ItemHelp, "物品帮助", page); } - - if (e.Detail == "帮助5") + else if (e.Detail.StartsWith("战斗帮助")) { - await SendAsync(e, "筽祀牻", @"《筽祀牻》游戏指令列表(第 5 / 7 页) -43:任务列表:查看今日任务列表 -44:开始任务/做任务 <任务序号> -45、任务信息:查看进行中任务的详细信息 -46、任务结算:对进行中的任务进行结算 -47、我的状态:查看主战角色状态 -48、小队状态/我的小队状态:查看小队所有角色的状态 -49、小队添加 <角色序号>:将角色加入小队 -50、小队移除 <角色序号>:将角色移出小队 -51、清空小队 -发送【帮助6】查看第 6 页"); + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.BattleHelp, "战斗帮助", page); } - - if (e.Detail == "帮助6") + else if (e.Detail.StartsWith("任务帮助")) { - await SendAsync(e, "筽祀牻", @"《筽祀牻》游戏指令列表(第 6 / 7 页) -52、我的社团:查看社团信息 -53、加入社团 <社团编号>:申请加入社团 -54、退出社团 -55、创建社团 <社团前缀>:创建一个公开社团,若指令中包含私密一词,将创建私密社团 -社团前缀:3-4个字符,允许:英文字母和数字、部分特殊字符 -56、查看社团成员/查看社团管理/查看申请人列表:查看对应列表 -57、解散社团 -58、社团批准 <@对方>//// <{参数...}> -发送【帮助7】查看第 7 页"); + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.QuestHelp, "任务帮助", page); } - - if (e.Detail == "帮助7") + else if (e.Detail.StartsWith("社团帮助")) { - await SendAsync(e, "筽祀牻", @"《筽祀牻》游戏指令列表(第 7 / 7 页) -63、每日商店 -64、商店查看 <商品序号> -65、商店购买 <商品序号> -66、"); + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.ClubHelp, "社团帮助", page); + } + else if (e.Detail.StartsWith("活动帮助")) + { + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.ActivityHelp, "活动帮助", page); + } + else if (e.Detail.StartsWith("商店帮助")) + { + int page = e.Detail.Length > 4 && int.TryParse(e.Detail[4..], out int p) ? p : 1; + await SendHelp(e, FunGameOrderList.StoreHelp, "商店帮助", page); } if (e.Detail.StartsWith("FunGame模拟", StringComparison.CurrentCultureIgnoreCase)) @@ -403,7 +376,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查数据", "").Trim(); if (int.TryParse(detail, out int id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.GetStats(id)) ?? ""; + string msg = Controller.GetStats(id); if (msg != "") { await SendAsync(e, "查数据", msg); @@ -417,7 +390,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查团队数据", "").Trim(); if (int.TryParse(detail, out int id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.GetTeamStats(id)) ?? ""; + string msg = Controller.GetTeamStats(id); if (msg != "") { await SendAsync(e, "查团队数据", msg); @@ -451,7 +424,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查角色", "").Trim(); if (int.TryParse(detail, out int id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterInfo(id)) ?? ""; + string msg = Controller.GetCharacterInfo(id); if (msg != "") { await SendAsync(e, "查角色", msg); @@ -465,7 +438,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查技能", "").Trim(); if (int.TryParse(detail, out int id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.GetSkillInfo(uid, id)) ?? ""; + string msg = Controller.GetSkillInfo(uid, id); if (msg != "") { await SendAsync(e, "查技能", msg); @@ -473,7 +446,7 @@ namespace Oshima.FunGame.WebAPI.Services } else { - string msg = NetworkUtility.JsonDeserialize(Controller.GetSkillInfo_Name(uid, detail)) ?? ""; + string msg = Controller.GetSkillInfo_Name(uid, detail); if (msg != "") { await SendAsync(e, "查技能", msg); @@ -487,7 +460,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查物品", "").Trim(); if (int.TryParse(detail, out int id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.GetItemInfo(uid, id)) ?? ""; + string msg = Controller.GetItemInfo(uid, id); if (msg != "") { await SendAsync(e, "查物品", msg); @@ -495,7 +468,7 @@ namespace Oshima.FunGame.WebAPI.Services } else { - string msg = NetworkUtility.JsonDeserialize(Controller.GetItemInfo_Name(uid, detail)) ?? ""; + string msg = Controller.GetItemInfo_Name(uid, detail); if (msg != "") { await SendAsync(e, "查物品", msg); @@ -524,7 +497,7 @@ namespace Oshima.FunGame.WebAPI.Services if (count > 0) { - string msg = NetworkUtility.JsonDeserialize(Controller.CreateItem(uid, name, count, userid)) ?? ""; + string msg = Controller.CreateItem(uid, name, count, userid); if (msg != "") { await SendAsync(e, "熟圣之力", msg); @@ -540,7 +513,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "生成魔法卡包") { - string msg = NetworkUtility.JsonDeserialize(Controller.GenerateMagicCardPack()) ?? ""; + string msg = Controller.GenerateMagicCardPack(); if (msg != "") { await SendAsync(e, "生成魔法卡包", msg); @@ -549,7 +522,7 @@ namespace Oshima.FunGame.WebAPI.Services } else if (e.Detail == "生成魔法卡") { - string msg = NetworkUtility.JsonDeserialize(Controller.GenerateMagicCard()) ?? ""; + string msg = Controller.GenerateMagicCard(); if (msg != "") { await SendAsync(e, "生成魔法卡", msg); @@ -559,7 +532,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "创建存档") { - string msg = NetworkUtility.JsonDeserialize(Controller.CreateSaved(name: openid)) ?? ""; + string msg = Controller.CreateSaved(name: openid); if (msg != "") { await SendAsync(e, "创建存档", "\r\n" + msg); @@ -569,7 +542,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "我的存档") { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowSaved(uid)) ?? ""; + string msg = Controller.ShowSaved(uid); if (msg != "") { await SendAsync(e, "我的存档", "\r\n" + msg); @@ -579,7 +552,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "我的主战") { - string msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterInfoFromInventory(uid, 0)) ?? ""; + string msg = Controller.GetCharacterInfoFromInventory(uid, 0); if (msg != "") { await SendAsync(e, "我的主战", "\r\n" + msg); @@ -589,7 +562,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "我的状态") { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowMainCharacterOrSquadStatus(uid)) ?? ""; + string msg = Controller.ShowMainCharacterOrSquadStatus(uid); if (msg != "") { await SendAsync(e, "我的状态", "\r\n" + msg); @@ -599,7 +572,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "小队状态" || e.Detail == "我的小队状态") { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowMainCharacterOrSquadStatus(uid, true)) ?? ""; + string msg = Controller.ShowMainCharacterOrSquadStatus(uid, true); if (msg != "") { await SendAsync(e, "我的小队状态", "\r\n" + msg); @@ -609,7 +582,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "我的小队") { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowSquad(uid)) ?? ""; + string msg = Controller.ShowSquad(uid); if (msg != "") { await SendAsync(e, "我的小队", "\r\n" + msg); @@ -619,7 +592,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "清空小队") { - string msg = NetworkUtility.JsonDeserialize(Controller.ClearSquad(uid)) ?? ""; + string msg = Controller.ClearSquad(uid); if (msg != "") { await SendAsync(e, "清空小队", "\r\n" + msg); @@ -629,7 +602,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "还原存档") { - string msg = NetworkUtility.JsonDeserialize(Controller.RestoreSaved(uid)) ?? ""; + string msg = Controller.RestoreSaved(uid); if (msg != "") { await SendAsync(e, "还原存档", "\r\n" + msg); @@ -639,7 +612,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "生成自建角色") { - string msg = NetworkUtility.JsonDeserialize(Controller.NewCustomCharacter(uid)) ?? ""; + string msg = Controller.NewCustomCharacter(uid); if (msg != "") { await SendAsync(e, "抽卡", "\r\n" + msg); @@ -649,7 +622,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "角色改名") { - string msg = NetworkUtility.JsonDeserialize(Controller.ReName(uid)) ?? ""; + string msg = Controller.ReName(uid); if (msg != "") { await SendAsync(e, "改名", "\r\n" + msg); @@ -659,7 +632,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "角色重随") { - string msg = NetworkUtility.JsonDeserialize(Controller.RandomCustomCharacter(uid, false)) ?? ""; + string msg = Controller.RandomCustomCharacter(uid, false); if (msg != "") { await SendAsync(e, "角色重随", "\r\n" + msg); @@ -669,7 +642,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "确认角色重随") { - string msg = NetworkUtility.JsonDeserialize(Controller.RandomCustomCharacter(uid, true)) ?? ""; + string msg = Controller.RandomCustomCharacter(uid, true); if (msg != "") { await SendAsync(e, "角色重随", "\r\n" + msg); @@ -679,7 +652,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "取消角色重随") { - string msg = NetworkUtility.JsonDeserialize(Controller.CancelRandomCustomCharacter(uid)) ?? ""; + string msg = Controller.CancelRandomCustomCharacter(uid); if (msg != "") { await SendAsync(e, "角色重随", "\r\n" + msg); @@ -689,7 +662,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "抽卡") { - string msg = NetworkUtility.JsonDeserialize(Controller.DrawCard(uid)) ?? ""; + string msg = Controller.DrawCard(uid); if (msg != "") { await SendAsync(e, "抽卡", "\r\n" + msg); @@ -709,7 +682,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "材料抽卡") { - string msg = NetworkUtility.JsonDeserialize(Controller.DrawCard_Material(uid)) ?? ""; + string msg = Controller.DrawCard_Material(uid); if (msg != "") { await SendAsync(e, "材料抽卡", "\r\n" + msg); @@ -827,11 +800,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int seq)) { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterInfoFromInventory(uid, seq, true)) ?? ""; + msg = Controller.GetCharacterInfoFromInventory(uid, seq, true); } else { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterInfoFromInventory(uid, 1, true)) ?? ""; + msg = Controller.GetCharacterInfoFromInventory(uid, 1, true); } if (msg != "") { @@ -846,11 +819,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int seq)) { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterInfoFromInventory(uid, seq, false)) ?? ""; + msg = Controller.GetCharacterInfoFromInventory(uid, seq, false); } else { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterInfoFromInventory(uid, 1, false)) ?? ""; + msg = Controller.GetCharacterInfoFromInventory(uid, 1, false); } if (msg != "") { @@ -865,11 +838,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int seq)) { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterSkills(uid, seq)) ?? ""; + msg = Controller.GetCharacterSkills(uid, seq); } else { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterSkills(uid, 1)) ?? ""; + msg = Controller.GetCharacterSkills(uid, 1); } if (msg != "") { @@ -884,11 +857,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int seq)) { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterItems(uid, seq)) ?? ""; + msg = Controller.GetCharacterItems(uid, seq); } else { - msg = NetworkUtility.JsonDeserialize(Controller.GetCharacterItems(uid, 1)) ?? ""; + msg = Controller.GetCharacterItems(uid, 1); } if (msg != "") { @@ -903,11 +876,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int cid)) { - msg = NetworkUtility.JsonDeserialize(Controller.SetMain(uid, cid)) ?? ""; + msg = Controller.SetMain(uid, cid); } else { - msg = NetworkUtility.JsonDeserialize(Controller.SetMain(uid, 1)) ?? ""; + msg = Controller.SetMain(uid, 1); } if (msg != "") { @@ -922,11 +895,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int cid)) { - msg = NetworkUtility.JsonDeserialize(Controller.StartTraining(uid, cid)) ?? ""; + msg = Controller.StartTraining(uid, cid); } else { - msg = NetworkUtility.JsonDeserialize(Controller.StartTraining(uid, 1)) ?? ""; + msg = Controller.StartTraining(uid, 1); } if (msg != "") { @@ -937,7 +910,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "练级信息") { - string msg = NetworkUtility.JsonDeserialize(Controller.GetTrainingInfo(uid)) ?? ""; + string msg = Controller.GetTrainingInfo(uid); if (msg != "") { await SendAsync(e, "练级信息", "\r\n" + msg); @@ -947,7 +920,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "练级结算") { - string msg = NetworkUtility.JsonDeserialize(Controller.StopTraining(uid)) ?? ""; + string msg = Controller.StopTraining(uid); if (msg != "") { await SendAsync(e, "练级结算", "\r\n" + msg); @@ -957,7 +930,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "任务列表") { - string msg = NetworkUtility.JsonDeserialize(Controller.CheckQuestList(uid)) ?? ""; + string msg = Controller.CheckQuestList(uid); if (msg != "") { await SendAsync(e, "任务列表", "\r\n" + msg); @@ -967,7 +940,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "任务信息") { - string msg = NetworkUtility.JsonDeserialize(Controller.CheckWorkingQuest(uid)) ?? ""; + string msg = Controller.CheckWorkingQuest(uid); if (msg != "") { await SendAsync(e, "任务信息", "\r\n" + msg); @@ -977,7 +950,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "任务结算") { - string msg = NetworkUtility.JsonDeserialize(Controller.SettleQuest(uid)) ?? ""; + string msg = Controller.SettleQuest(uid); if (msg != "") { await SendAsync(e, "任务结算", "\r\n" + msg); @@ -987,7 +960,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "签到") { - string msg = NetworkUtility.JsonDeserialize(Controller.SignIn(uid)) ?? ""; + string msg = Controller.SignIn(uid); if (msg != "") { await SendAsync(e, "签到", "\r\n" + msg); @@ -1017,14 +990,14 @@ namespace Oshima.FunGame.WebAPI.Services string msg; if (int.TryParse(detail, out int index)) { - msg = NetworkUtility.JsonDeserialize(Controller.GetItemInfoFromInventory(uid, index)) ?? ""; + msg = Controller.GetItemInfoFromInventory(uid, index); if (msg != "") { await SendAsync(e, "查库存物品", msg); return result; } } - msg = NetworkUtility.JsonDeserialize(Controller.GetItemInfoFromInventory_Name(uid, detail)) ?? ""; + msg = Controller.GetItemInfoFromInventory_Name(uid, detail); if (msg != "") { await SendAsync(e, "查库存物品", msg); @@ -1037,7 +1010,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("兑换金币", "").Trim(); if (int.TryParse(detail, out int materials)) { - string msg = NetworkUtility.JsonDeserialize(Controller.ExchangeCredits(uid, materials)) ?? ""; + string msg = Controller.ExchangeCredits(uid, materials); if (msg != "") { await SendAsync(e, "兑换金币", msg); @@ -1055,7 +1028,7 @@ namespace Oshima.FunGame.WebAPI.Services { if (c != -1 && i != -1) { - string msg = NetworkUtility.JsonDeserialize(Controller.UnEquipItem(uid, c, i)) ?? ""; + string msg = Controller.UnEquipItem(uid, c, i); if (msg != "") { await SendAsync(e, "取消装备", msg); @@ -1074,7 +1047,7 @@ namespace Oshima.FunGame.WebAPI.Services { if (c != -1 && i != -1) { - string msg = NetworkUtility.JsonDeserialize(Controller.EquipItem(uid, c, i)) ?? ""; + string msg = Controller.EquipItem(uid, c, i); if (msg != "") { await SendAsync(e, "装备", msg); @@ -1094,7 +1067,7 @@ namespace Oshima.FunGame.WebAPI.Services string s = strings[1].Trim(); if (c != -1 && s != "") { - string msg = NetworkUtility.JsonDeserialize(Controller.GetSkillLevelUpNeedy(uid, c, s)) ?? ""; + string msg = Controller.GetSkillLevelUpNeedy(uid, c, s); if (msg != "") { await SendAsync(e, "查看技能升级", msg); @@ -1114,7 +1087,7 @@ namespace Oshima.FunGame.WebAPI.Services string s = strings[1].Trim(); if (c != -1 && s != "") { - string msg = NetworkUtility.JsonDeserialize(Controller.SkillLevelUp(uid, c, s)) ?? ""; + string msg = Controller.SkillLevelUp(uid, c, s); if (msg != "") { await SendAsync(e, "技能升级", msg); @@ -1133,7 +1106,7 @@ namespace Oshima.FunGame.WebAPI.Services { if (id1 != -1 && id2 != -1 && id3 != -1) { - string msg = NetworkUtility.JsonDeserialize(Controller.ConflateMagicCardPack(uid, [id1, id2, id3])) ?? ""; + string msg = Controller.ConflateMagicCardPack(uid, [id1, id2, id3]); if (msg != "") { await SendAsync(e, "合成魔法卡", msg); @@ -1149,11 +1122,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int cid)) { - msg = NetworkUtility.JsonDeserialize(Controller.CharacterLevelUp(uid, cid)) ?? ""; + msg = Controller.CharacterLevelUp(uid, cid); } else { - msg = NetworkUtility.JsonDeserialize(Controller.CharacterLevelUp(uid, 1)) ?? ""; + msg = Controller.CharacterLevelUp(uid, 1); } if (msg != "") { @@ -1168,11 +1141,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int cid)) { - msg = NetworkUtility.JsonDeserialize(Controller.GetNormalAttackLevelUpNeedy(uid, cid)) ?? ""; + msg = Controller.GetNormalAttackLevelUpNeedy(uid, cid); } else { - msg = NetworkUtility.JsonDeserialize(Controller.GetNormalAttackLevelUpNeedy(uid, 1)) ?? ""; + msg = Controller.GetNormalAttackLevelUpNeedy(uid, 1); } if (msg != "") { @@ -1187,11 +1160,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int cid)) { - msg = NetworkUtility.JsonDeserialize(Controller.NormalAttackLevelUp(uid, cid)) ?? ""; + msg = Controller.NormalAttackLevelUp(uid, cid); } else { - msg = NetworkUtility.JsonDeserialize(Controller.NormalAttackLevelUp(uid, 1)) ?? ""; + msg = Controller.NormalAttackLevelUp(uid, 1); } if (msg != "") { @@ -1206,11 +1179,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int cid)) { - msg = NetworkUtility.JsonDeserialize(Controller.CharacterLevelBreak(uid, cid)) ?? ""; + msg = Controller.CharacterLevelBreak(uid, cid); } else { - msg = NetworkUtility.JsonDeserialize(Controller.CharacterLevelBreak(uid, 1)) ?? ""; + msg = Controller.CharacterLevelBreak(uid, 1); } if (msg != "") { @@ -1225,11 +1198,11 @@ namespace Oshima.FunGame.WebAPI.Services string msg = ""; if (int.TryParse(detail, out int cid)) { - msg = NetworkUtility.JsonDeserialize(Controller.GetLevelBreakNeedy(uid, cid)) ?? ""; + msg = Controller.GetLevelBreakNeedy(uid, cid); } else { - msg = NetworkUtility.JsonDeserialize(Controller.GetLevelBreakNeedy(uid, 1)) ?? ""; + msg = Controller.GetLevelBreakNeedy(uid, 1); } if (msg != "") { @@ -1254,7 +1227,7 @@ namespace Oshima.FunGame.WebAPI.Services { if (id > 0 && id2 > 0) { - string msg = NetworkUtility.JsonDeserialize(Controller.UseItem3(uid, id, id2, isCharacter)) ?? ""; + string msg = Controller.UseItem3(uid, id, id2, isCharacter); if (msg != "") { await SendAsync(e, "使用魔法卡", msg); @@ -1275,7 +1248,7 @@ namespace Oshima.FunGame.WebAPI.Services { string characterIdsString = match.Groups["characterIds"].Value; int[] characterIds = characterIdsString != "" ? [.. characterIdsString.Split(chars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).Select(int.Parse)] : [1]; - string msg = NetworkUtility.JsonDeserialize(Controller.UseItem2(uid, itemName, count, characterIds)) ?? ""; + string msg = Controller.UseItem2(uid, itemName, count, characterIds); if (msg != "") { await SendAsync(e, "使用", msg); @@ -1292,7 +1265,7 @@ namespace Oshima.FunGame.WebAPI.Services { string characterIdsString = match.Groups["characterIds"].Value; int[] characterIds = characterIdsString != "" ? [.. characterIdsString.Split(chars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).Select(int.Parse)] : [1]; - string msg = NetworkUtility.JsonDeserialize(Controller.UseItem(uid, itemId, characterIds)) ?? ""; + string msg = Controller.UseItem(uid, itemId, characterIds); if (msg != "") { await SendAsync(e, "使用", msg); @@ -1308,7 +1281,7 @@ namespace Oshima.FunGame.WebAPI.Services string itemName = match.Groups["itemName"].Value.Trim(); if (int.TryParse(match.Groups["count"].Value, out int count)) { - string msg = NetworkUtility.JsonDeserialize(Controller.UseItem2(uid, itemName, count)) ?? ""; + string msg = Controller.UseItem2(uid, itemName, count); if (msg != "") { await SendAsync(e, "使用", msg); @@ -1323,7 +1296,7 @@ namespace Oshima.FunGame.WebAPI.Services { if (int.TryParse(match.Groups["itemId"].Value, out int itemId)) { - string msg = NetworkUtility.JsonDeserialize(Controller.UseItem(uid, itemId)) ?? ""; + string msg = Controller.UseItem(uid, itemId); if (msg != "") { await SendAsync(e, "使用", msg); @@ -1349,7 +1322,7 @@ namespace Oshima.FunGame.WebAPI.Services ids.Add(id); } } - string msg = NetworkUtility.JsonDeserialize(Controller.DecomposeItem(uid, [.. ids])) ?? ""; + string msg = Controller.DecomposeItem(uid, [.. ids]); if (msg != "") { await SendAsync(e, "分解物品", msg); @@ -1368,7 +1341,7 @@ namespace Oshima.FunGame.WebAPI.Services string itemName = match.Groups["itemName"].Value.Trim(); if (int.TryParse(match.Groups["count"].Value, out int count)) { - string msg = NetworkUtility.JsonDeserialize(Controller.DecomposeItem2(uid, itemName, count)) ?? ""; + string msg = Controller.DecomposeItem2(uid, itemName, count); if (msg != "") { await SendAsync(e, "分解", msg); @@ -1384,7 +1357,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("品质分解", "").Trim(); if (int.TryParse(detail, out int q)) { - string msg = NetworkUtility.JsonDeserialize(Controller.DecomposeItem3(uid, q)) ?? ""; + string msg = Controller.DecomposeItem3(uid, q); if (msg != "") { await SendAsync(e, "品质分解", msg); @@ -1409,7 +1382,7 @@ namespace Oshima.FunGame.WebAPI.Services { userid = temp; } - string msg = NetworkUtility.JsonDeserialize(Controller.CreateItem(uid, name, count, userid)) ?? ""; + string msg = Controller.CreateItem(uid, name, count, userid); if (msg != "") { await SendAsync(e, "熟圣之力", msg); @@ -1733,7 +1706,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("小队添加", "").Trim(); if (int.TryParse(detail, out int c)) { - string msg = NetworkUtility.JsonDeserialize(Controller.AddSquad(uid, c)) ?? ""; + string msg = Controller.AddSquad(uid, c); if (msg != "") { await SendAsync(e, "小队", msg); @@ -1747,7 +1720,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("小队移除", "").Trim(); if (int.TryParse(detail, out int c)) { - string msg = NetworkUtility.JsonDeserialize(Controller.RemoveSquad(uid, c)) ?? ""; + string msg = Controller.RemoveSquad(uid, c); if (msg != "") { await SendAsync(e, "小队", msg); @@ -1768,7 +1741,7 @@ namespace Oshima.FunGame.WebAPI.Services cindexs.Add(c); } } - string msg = NetworkUtility.JsonDeserialize(Controller.SetSquad(uid, [.. cindexs])) ?? ""; + string msg = Controller.SetSquad(uid, [.. cindexs]); if (msg != "") { await SendAsync(e, "小队", msg); @@ -1781,7 +1754,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("加入社团", "").Trim(); if (int.TryParse(detail, out int c)) { - string msg = NetworkUtility.JsonDeserialize(Controller.JoinClub(uid, c)) ?? ""; + string msg = Controller.JoinClub(uid, c); if (msg != "") { await SendAsync(e, "社团", msg); @@ -1799,7 +1772,7 @@ namespace Oshima.FunGame.WebAPI.Services isPublic = false; } detail = detail.Replace("私密", "").Trim(); - string msg = NetworkUtility.JsonDeserialize(Controller.CreateClub(uid, isPublic, detail)) ?? ""; + string msg = Controller.CreateClub(uid, isPublic, detail); if (msg != "") { await SendAsync(e, "社团", msg); @@ -1809,7 +1782,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "退出社团") { - string msg = NetworkUtility.JsonDeserialize(Controller.QuitClub(uid)) ?? ""; + string msg = Controller.QuitClub(uid); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1819,7 +1792,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "我的社团") { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowClubInfo(uid)) ?? ""; + string msg = Controller.ShowClubInfo(uid); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1829,7 +1802,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "解散社团") { - string msg = NetworkUtility.JsonDeserialize(Controller.DisbandClub(uid)) ?? ""; + string msg = Controller.DisbandClub(uid); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1842,7 +1815,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查看社团成员", "").Trim(); if (int.TryParse(detail, out int page) && page > 0) { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowClubMemberList(uid, 0, page)) ?? ""; + string msg = Controller.ShowClubMemberList(uid, 0, page); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1850,7 +1823,7 @@ namespace Oshima.FunGame.WebAPI.Services } else { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowClubMemberList(uid, 0, 1)) ?? ""; + string msg = Controller.ShowClubMemberList(uid, 0, 1); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1864,7 +1837,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查看社团管理", "").Trim(); if (int.TryParse(detail, out int page) && page > 0) { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowClubMemberList(uid, 1, page)) ?? ""; + string msg = Controller.ShowClubMemberList(uid, 1, page); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1872,7 +1845,7 @@ namespace Oshima.FunGame.WebAPI.Services } else { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowClubMemberList(uid, 1, 1)) ?? ""; + string msg = Controller.ShowClubMemberList(uid, 1, 1); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1886,7 +1859,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("查看申请人列表", "").Trim(); if (int.TryParse(detail, out int page) && page > 0) { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowClubMemberList(uid, 2, page)) ?? ""; + string msg = Controller.ShowClubMemberList(uid, 2, page); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1894,7 +1867,7 @@ namespace Oshima.FunGame.WebAPI.Services } else { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowClubMemberList(uid, 2, 1)) ?? ""; + string msg = Controller.ShowClubMemberList(uid, 2, 1); if (msg != "") { await SendAsync(e, "社团", "\r\n" + msg); @@ -1908,7 +1881,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("社团批准", "").Replace("@", "").Trim(); if (long.TryParse(detail, out long id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.ApproveClub(uid, id, true)) ?? ""; + string msg = Controller.ApproveClub(uid, id, true); if (msg != "") { await SendAsync(e, "社团", msg); @@ -1922,7 +1895,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("社团拒绝", "").Replace("@", "").Trim(); if (long.TryParse(detail, out long id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.ApproveClub(uid, id, false)) ?? ""; + string msg = Controller.ApproveClub(uid, id, false); if (msg != "") { await SendAsync(e, "社团", msg); @@ -1936,7 +1909,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("社团踢出", "").Replace("@", "").Trim(); if (long.TryParse(detail, out long id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.KickClub(uid, id)) ?? ""; + string msg = Controller.KickClub(uid, id); if (msg != "") { await SendAsync(e, "社团", msg); @@ -1968,7 +1941,7 @@ namespace Oshima.FunGame.WebAPI.Services { args = [.. strings[1..]]; } - string msg = NetworkUtility.JsonDeserialize(Controller.ChangeClub(uid, part, [.. args])) ?? ""; + string msg = Controller.ChangeClub(uid, part, [.. args]); if (msg != "") { await SendAsync(e, "社团", msg); @@ -1981,7 +1954,7 @@ namespace Oshima.FunGame.WebAPI.Services { string detail = e.Detail.Replace("社团转让", "").Replace("@", "").Trim(); List args = [detail]; - string msg = NetworkUtility.JsonDeserialize(Controller.ChangeClub(uid, "setmaster", [.. args])) ?? ""; + string msg = Controller.ChangeClub(uid, "setmaster", [.. args]); if (msg != "") { await SendAsync(e, "社团", msg); @@ -1991,7 +1964,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "每日商店") { - string msg = NetworkUtility.JsonDeserialize(Controller.ShowDailyStore(uid)) ?? ""; + string msg = Controller.ShowDailyStore(uid); if (msg != "") { await SendAsync(e, "商店", "\r\n" + msg); @@ -2010,7 +1983,7 @@ namespace Oshima.FunGame.WebAPI.Services { count = temp; } - string msg = NetworkUtility.JsonDeserialize(Controller.DailyStoreBuy(uid, id, count)) ?? ""; + string msg = Controller.DailyStoreBuy(uid, id, count); if (msg != "") { await SendAsync(e, "商店购买", msg); @@ -2024,7 +1997,7 @@ namespace Oshima.FunGame.WebAPI.Services string detail = e.Detail.Replace("商店查看", "").Trim(); if (int.TryParse(detail, out int id)) { - string msg = NetworkUtility.JsonDeserialize(Controller.DailyStoreShowInfo(uid, id)) ?? ""; + string msg = Controller.DailyStoreShowInfo(uid, id); if (msg != "") { await SendAsync(e, "商店", msg); @@ -2079,7 +2052,7 @@ namespace Oshima.FunGame.WebAPI.Services return result; } - if (e.Detail.StartsWith("探索", StringComparison.CurrentCultureIgnoreCase) || e.Detail.StartsWith("前往", StringComparison.CurrentCultureIgnoreCase)) + if (e.Detail.StartsWith("探索") || e.Detail.StartsWith("前往")) { string detail = e.Detail.Replace("探索", "").Replace("前往", "").Trim(); string msg = ""; @@ -2106,7 +2079,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "毕业礼包") { - string msg = Controller.CreateGiftBox(uid, "毕业礼包"); + string msg = Controller.CreateGiftBox(uid, "毕业礼包", true, 2); if (msg != "") { await SendAsync(e, "毕业礼包", string.Join("\r\n", msg)); @@ -2114,6 +2087,31 @@ namespace Oshima.FunGame.WebAPI.Services return result; } + if (e.Detail == "活动" || e.Detail == "活动中心") + { + string msg = Controller.GetEvents(); + if (msg != "") + { + await SendAsync(e, "活动中心", string.Join("\r\n", msg)); + } + return result; + } + + if (e.Detail.StartsWith("查活动")) + { + string detail = e.Detail.Replace("查活动", "").Trim(); + string msg = ""; + if (int.TryParse(detail, out int eid)) + { + msg = Controller.GetEvents(eid); + if (msg.Trim() != "") + { + await SendAsync(e, "查活动", msg); + } + } + return result; + } + if (uid == GeneralSettings.Master && e.Detail.StartsWith("重载FunGame", StringComparison.CurrentCultureIgnoreCase)) { string msg = Controller.Relaod(uid);