再次修复市场分页BUG

This commit is contained in:
milimoe 2025-11-17 23:02:45 +08:00
parent 7b64ec028a
commit 78e2cb095a
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
4 changed files with 116 additions and 17 deletions

View File

@ -6,10 +6,10 @@ namespace Oshima.Core
{ {
public class OSMCore public class OSMCore
{ {
public const string version = "v1.0"; public const string version = "v2.0";
public const string version2 = "Rebirth"; 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) public static string GetBuiltTime(string dll_name)
{ {

View File

@ -1331,7 +1331,7 @@ namespace Oshima.FunGame.OshimaServers.Service
{ {
for (int i = 0; i < box.Gifts[name]; i++) 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) 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++) 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}"); regionItems.Add($"{award} 个{item.Name}(来自{region.Name}");
for (int j = 0; j < award; j++) for (int j = 0; j < award; j++)
{ {
AddItemToUserInventory(user, item); AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard);
} }
} }
builder.AppendLine($"{string.Join("", regionItems)}"); builder.AppendLine($"{string.Join("", regionItems)}");
@ -3906,7 +3906,7 @@ namespace Oshima.FunGame.OshimaServers.Service
characterLevelBreakItems.Add($"{award} 个{item.Name}"); characterLevelBreakItems.Add($"{award} 个{item.Name}");
for (int j = 0; j < award; j++) for (int j = 0; j < award; j++)
{ {
AddItemToUserInventory(user, item); AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard);
} }
} }
builder.AppendLine($"{string.Join("", characterLevelBreakItems)}"); builder.AppendLine($"{string.Join("", characterLevelBreakItems)}");
@ -3933,7 +3933,7 @@ namespace Oshima.FunGame.OshimaServers.Service
skillLevelUpItems.Add($"{award} 个{item.Name}"); skillLevelUpItems.Add($"{award} 个{item.Name}");
for (int j = 0; j < award; j++) for (int j = 0; j < award; j++)
{ {
AddItemToUserInventory(user, item); AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard);
} }
} }
builder.AppendLine($"{string.Join("", skillLevelUpItems)}"); builder.AppendLine($"{string.Join("", skillLevelUpItems)}");
@ -4104,7 +4104,7 @@ namespace Oshima.FunGame.OshimaServers.Service
regionItems.Add($"{award} 个{item.Name}(来自{region.Name}"); regionItems.Add($"{award} 个{item.Name}(来自{region.Name}");
for (int j = 0; j < award; j++) for (int j = 0; j < award; j++)
{ {
AddItemToUserInventory(user, item); AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard);
} }
} }
builder.AppendLine($"{string.Join("", regionItems)}"); builder.AppendLine($"{string.Join("", regionItems)}");
@ -4131,7 +4131,7 @@ namespace Oshima.FunGame.OshimaServers.Service
characterLevelBreakItems.Add($"{award} 个{item.Name}"); characterLevelBreakItems.Add($"{award} 个{item.Name}");
for (int j = 0; j < award; j++) for (int j = 0; j < award; j++)
{ {
AddItemToUserInventory(user, item); AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard);
} }
} }
builder.AppendLine($"{string.Join("", characterLevelBreakItems)}"); builder.AppendLine($"{string.Join("", characterLevelBreakItems)}");
@ -4158,7 +4158,7 @@ namespace Oshima.FunGame.OshimaServers.Service
skillLevelUpItems.Add($"{award} 个{item.Name}"); skillLevelUpItems.Add($"{award} 个{item.Name}");
for (int j = 0; j < award; j++) for (int j = 0; j < award; j++)
{ {
AddItemToUserInventory(user, item); AddItemToUserInventory(user, item, copyLevel: item.ItemType == ItemType.MagicCard);
} }
} }
builder.AppendLine($"{string.Join("", skillLevelUpItems)}"); builder.AppendLine($"{string.Join("", skillLevelUpItems)}");
@ -4435,9 +4435,9 @@ namespace Oshima.FunGame.OshimaServers.Service
if (page <= 0) page = 1; if (page <= 0) page = 1;
IEnumerable<MarketItem> marketItems = market.MarketItems.Values; IEnumerable<MarketItem> marketItems = market.MarketItems.Values;
if (showListed) marketItems = marketItems.Where(g => g.Status == MarketItemState.Listed); 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; if (page > maxPage) page = maxPage;
marketItems = market.MarketItems.Values.GetPage(page, 8); marketItems = marketItems.GetPage(page, 8);
StringBuilder builder = new(); StringBuilder builder = new();

View File

@ -7486,9 +7486,61 @@ namespace Oshima.FunGame.WebAPI.Controllers
{ {
msg += FunGameService.GetMarketItemInfo(marketItem, true, user) + "\r\n"; 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<Market> 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.ReleaseMarketSemaphoreSlim();
FunGameService.SetUserConfigAndReleaseSemaphoreSlim(userid, pc, user); FunGameService.SetUserConfigAndReleaseSemaphoreSlim(userid, pc, user);
@ -7590,7 +7642,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
double fee = amount * 0.15; double fee = amount * 0.15;
double net = amount - fee; double net = amount - fee;
user2.Inventory.Credits += net; 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.SetUserConfigButNotRelease(userid2, pc2, user2, false);
} }
FunGameService.ReleaseUserSemaphoreSlim(userid2); FunGameService.ReleaseUserSemaphoreSlim(userid2);

View File

@ -2782,6 +2782,10 @@ namespace Oshima.FunGame.WebAPI.Services
await SendAsync(e, "挑战金币秘境", msg); await SendAsync(e, "挑战金币秘境", msg);
} }
} }
else
{
await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数1-5");
}
return result; return result;
} }
@ -2797,6 +2801,10 @@ namespace Oshima.FunGame.WebAPI.Services
await SendAsync(e, "挑战钻石秘境", msg); await SendAsync(e, "挑战钻石秘境", msg);
} }
} }
else
{
await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数1-5");
}
return result; return result;
} }
@ -2812,6 +2820,10 @@ namespace Oshima.FunGame.WebAPI.Services
await SendAsync(e, "挑战经验秘境", msg); await SendAsync(e, "挑战经验秘境", msg);
} }
} }
else
{
await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数1-5");
}
return result; return result;
} }
@ -2827,6 +2839,10 @@ namespace Oshima.FunGame.WebAPI.Services
await SendAsync(e, "挑战地区秘境", msg); await SendAsync(e, "挑战地区秘境", msg);
} }
} }
else
{
await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数1-5");
}
return result; return result;
} }
@ -2842,6 +2858,10 @@ namespace Oshima.FunGame.WebAPI.Services
await SendAsync(e, "挑战突破秘境", msg); await SendAsync(e, "挑战突破秘境", msg);
} }
} }
else
{
await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数1-5");
}
return result; return result;
} }
@ -2857,6 +2877,10 @@ namespace Oshima.FunGame.WebAPI.Services
await SendAsync(e, "挑战技能秘境", msg); await SendAsync(e, "挑战技能秘境", msg);
} }
} }
else
{
await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数1-5");
}
return result; return result;
} }
@ -2872,6 +2896,10 @@ namespace Oshima.FunGame.WebAPI.Services
await SendAsync(e, "挑战魔法卡秘境", msg); await SendAsync(e, "挑战魔法卡秘境", msg);
} }
} }
else
{
await SendAsync(e, "挑战秘境", "请在指令后面输入难度系数1-5");
}
return result; return result;
} }
@ -3204,6 +3232,25 @@ namespace Oshima.FunGame.WebAPI.Services
return result; 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("市场")) if (e.Detail.StartsWith("市场"))
{ {
string detail = e.Detail.Replace("市场", "").Trim(); string detail = e.Detail.Replace("市场", "").Trim();