From 78e2cb095acb02af896c5e89da10cd494126c790 Mon Sep 17 00:00:00 2001 From: milimoe Date: Mon, 17 Nov 2025 23:02:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=8D=E6=AC=A1=E4=BF=AE=E5=A4=8D=E5=B8=82?= =?UTF-8?q?=E5=9C=BA=E5=88=86=E9=A1=B5BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OshimaCore/OSMCore.cs | 6 +- OshimaServers/Service/FunGameService.cs | 22 +++---- OshimaWebAPI/Controllers/FunGameController.cs | 58 ++++++++++++++++++- OshimaWebAPI/Services/RainBOTService.cs | 47 +++++++++++++++ 4 files changed, 116 insertions(+), 17 deletions(-) diff --git a/OshimaCore/OSMCore.cs b/OshimaCore/OSMCore.cs index fa4cf0a..e662ced 100644 --- a/OshimaCore/OSMCore.cs +++ b/OshimaCore/OSMCore.cs @@ -6,10 +6,10 @@ namespace Oshima.Core { public class OSMCore { - public const string version = "v1.0"; - public const string version2 = "Rebirth"; + public const string version = "v2.0"; + public const string version2 = "Release"; - public static string Info => $"OSM Core {version} {version2}\r\nAuthor: Milimoe\r\nBuilt on {GetBuiltTime(Assembly.GetExecutingAssembly().Location)}\r\nSee: https://github.com/milimoe"; + public static string Info => $"OSM Core {version} {version2}\r\nAuthor: Milimoe\r\nBuilt at {GetBuiltTime(Assembly.GetExecutingAssembly().Location)}\r\nSee: https://github.com/milimoe"; public static string GetBuiltTime(string dll_name) { diff --git a/OshimaServers/Service/FunGameService.cs b/OshimaServers/Service/FunGameService.cs index 5195a53..4312679 100644 --- a/OshimaServers/Service/FunGameService.cs +++ b/OshimaServers/Service/FunGameService.cs @@ -1331,7 +1331,7 @@ namespace Oshima.FunGame.OshimaServers.Service { for (int i = 0; i < box.Gifts[name]; i++) { - AddItemToUserInventory(user, currentItem, toExploreCache: false, toActivitiesCache: false); + AddItemToUserInventory(user, currentItem, copyLevel: item.ItemType == ItemType.MagicCard, toExploreCache: false, toActivitiesCache: false); } } } @@ -2006,7 +2006,7 @@ namespace Oshima.FunGame.OshimaServers.Service { if (FunGameConstant.AllItems.FirstOrDefault(i => i.Name == item.Name) != null) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } } @@ -2984,7 +2984,7 @@ namespace Oshima.FunGame.OshimaServers.Service { for (int i = 0; i < model.Awards[name]; i++) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } } @@ -3879,7 +3879,7 @@ namespace Oshima.FunGame.OshimaServers.Service regionItems.Add($"{award} 个{item.Name}(来自{region.Name})"); for (int j = 0; j < award; j++) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } builder.AppendLine($"{string.Join("、", regionItems)}!"); @@ -3906,7 +3906,7 @@ namespace Oshima.FunGame.OshimaServers.Service characterLevelBreakItems.Add($"{award} 个{item.Name}"); for (int j = 0; j < award; j++) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } builder.AppendLine($"{string.Join("、", characterLevelBreakItems)}!"); @@ -3933,7 +3933,7 @@ namespace Oshima.FunGame.OshimaServers.Service skillLevelUpItems.Add($"{award} 个{item.Name}"); for (int j = 0; j < award; j++) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } builder.AppendLine($"{string.Join("、", skillLevelUpItems)}!"); @@ -4104,7 +4104,7 @@ namespace Oshima.FunGame.OshimaServers.Service regionItems.Add($"{award} 个{item.Name}(来自{region.Name})"); for (int j = 0; j < award; j++) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } builder.AppendLine($"{string.Join("、", regionItems)}!"); @@ -4131,7 +4131,7 @@ namespace Oshima.FunGame.OshimaServers.Service characterLevelBreakItems.Add($"{award} 个{item.Name}"); for (int j = 0; j < award; j++) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } builder.AppendLine($"{string.Join("、", characterLevelBreakItems)}!"); @@ -4158,7 +4158,7 @@ namespace Oshima.FunGame.OshimaServers.Service skillLevelUpItems.Add($"{award} 个{item.Name}"); for (int j = 0; j < award; j++) { - AddItemToUserInventory(user, item); + AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard); } } builder.AppendLine($"{string.Join("、", skillLevelUpItems)}!"); @@ -4435,9 +4435,9 @@ namespace Oshima.FunGame.OshimaServers.Service if (page <= 0) page = 1; IEnumerable marketItems = market.MarketItems.Values; if (showListed) marketItems = marketItems.Where(g => g.Status == MarketItemState.Listed); - int maxPage = market.MarketItems.Values.MaxPage(8); + int maxPage = marketItems.MaxPage(8); if (page > maxPage) page = maxPage; - marketItems = market.MarketItems.Values.GetPage(page, 8); + marketItems = marketItems.GetPage(page, 8); StringBuilder builder = new(); diff --git a/OshimaWebAPI/Controllers/FunGameController.cs b/OshimaWebAPI/Controllers/FunGameController.cs index da9125a..8e7a740 100644 --- a/OshimaWebAPI/Controllers/FunGameController.cs +++ b/OshimaWebAPI/Controllers/FunGameController.cs @@ -7486,9 +7486,61 @@ namespace Oshima.FunGame.WebAPI.Controllers { msg += FunGameService.GetMarketItemInfo(marketItem, true, user) + "\r\n"; } - msg += $"页数:{page} / {maxPage},使用【市场+页码】快速跳转指定页面。"; + msg += $"页数:{page} / {maxPage},使用【我的市场+页码】快速跳转指定页面。"; } - else msg += "你还没有上架过任何物品。"; + else msg += "你在近三天内还未上架过任何物品。"; + + FunGameService.ReleaseMarketSemaphoreSlim(); + FunGameService.SetUserConfigAndReleaseSemaphoreSlim(userid, pc, user); + + return msg.Trim(); + } + else + { + FunGameService.ReleaseUserSemaphoreSlim(userid); + return noSaved; + } + } + catch (Exception e) + { + FunGameService.ReleaseMarketSemaphoreSlim(); + FunGameService.ReleaseUserSemaphoreSlim(userid); + if (Logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Error)) Logger.LogError(e, "Error: {e}", e); + return busy; + } + } + + [HttpPost("marketshowlistmybuys")] + public string MarketShowListMyBuys([FromQuery] long userid = -1, [FromQuery] int page = 0) + { + try + { + PluginConfig pc = FunGameService.GetUserConfig(userid, out _); + + if (pc.Count > 0) + { + User user = FunGameService.GetUser(pc); + + FunGameService.GetMarketSemaphoreSlim(); + + EntityModuleConfig emc = new("markets", "general"); + emc.LoadConfig(); + Market market = emc.Get("dokyo") ?? new("铎京集市"); + string msg = "☆--- 我的市场购买记录 ---☆\r\n"; + MarketItem[] marketItems = [.. market.MarketItems.Values.Where(m => m.Buyers.Contains(userid))]; + if (marketItems.Length > 0) + { + if (page <= 0) page = 1; + int maxPage = marketItems.MaxPage(8); + if (page > maxPage) page = maxPage; + marketItems = [.. marketItems.GetPage(page, 8)]; + foreach (MarketItem marketItem in marketItems) + { + msg += FunGameService.GetMarketItemInfo(marketItem, true, user) + "\r\n"; + } + msg += $"页数:{page} / {maxPage},使用【我的购买+页码】快速跳转指定页面。"; + } + else msg += "你在近三天内还未购买过任何物品。"; FunGameService.ReleaseMarketSemaphoreSlim(); FunGameService.SetUserConfigAndReleaseSemaphoreSlim(userid, pc, user); @@ -7590,7 +7642,7 @@ namespace Oshima.FunGame.WebAPI.Controllers double fee = amount * 0.15; double net = amount - fee; user2.Inventory.Credits += net; - FunGameService.AddNotice(userid2, $"【市场通知】你售出了 {count} 件{item.Name}!净收入 {net:0.##} {General.GameplayEquilibriumConstant.InGameCurrency};市场收取手续费 {fee:0.##} {General.GameplayEquilibriumConstant.InGameCurrency}。"); + FunGameService.AddNotice(userid2, $"【市场通知】你售出了 {count} 件{item.Name}([{ItemSet.GetQualityTypeName(item.Item.QualityType)}|{ItemSet.GetItemTypeName(item.Item.ItemType)}] {item.Item.Name})!净收入 {net:0.##} {General.GameplayEquilibriumConstant.InGameCurrency};市场收取手续费 {fee:0.##} {General.GameplayEquilibriumConstant.InGameCurrency}。"); FunGameService.SetUserConfigButNotRelease(userid2, pc2, user2, false); } FunGameService.ReleaseUserSemaphoreSlim(userid2); diff --git a/OshimaWebAPI/Services/RainBOTService.cs b/OshimaWebAPI/Services/RainBOTService.cs index 3fdabf8..76d1f13 100644 --- a/OshimaWebAPI/Services/RainBOTService.cs +++ b/OshimaWebAPI/Services/RainBOTService.cs @@ -2782,6 +2782,10 @@ namespace Oshima.FunGame.WebAPI.Services await SendAsync(e, "挑战金币秘境", msg); } } + else + { + await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数(1-5)"); + } return result; } @@ -2797,6 +2801,10 @@ namespace Oshima.FunGame.WebAPI.Services await SendAsync(e, "挑战钻石秘境", msg); } } + else + { + await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数(1-5)"); + } return result; } @@ -2812,6 +2820,10 @@ namespace Oshima.FunGame.WebAPI.Services await SendAsync(e, "挑战经验秘境", msg); } } + else + { + await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数(1-5)"); + } return result; } @@ -2827,6 +2839,10 @@ namespace Oshima.FunGame.WebAPI.Services await SendAsync(e, "挑战地区秘境", msg); } } + else + { + await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数(1-5)"); + } return result; } @@ -2842,6 +2858,10 @@ namespace Oshima.FunGame.WebAPI.Services await SendAsync(e, "挑战突破秘境", msg); } } + else + { + await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数(1-5)"); + } return result; } @@ -2857,6 +2877,10 @@ namespace Oshima.FunGame.WebAPI.Services await SendAsync(e, "挑战技能秘境", msg); } } + else + { + await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数(1-5)"); + } return result; } @@ -2872,6 +2896,10 @@ namespace Oshima.FunGame.WebAPI.Services await SendAsync(e, "挑战魔法卡秘境", msg); } } + else + { + await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数(1-5)"); + } return result; } @@ -3204,6 +3232,25 @@ namespace Oshima.FunGame.WebAPI.Services return result; } + if (e.Detail.StartsWith("我的购买")) + { + string detail = e.Detail.Replace("我的购买", "").Trim(); + string msg = ""; + if (int.TryParse(detail, out int page)) + { + msg = Controller.MarketShowListMyBuys(uid, page); + } + else + { + msg = Controller.MarketShowListMyBuys(uid, 1); + } + if (msg.Trim() != "") + { + await SendAsync(e, "我的购买", msg); + } + return result; + } + if (e.Detail.StartsWith("市场")) { string detail = e.Detail.Replace("市场", "").Trim();