mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-12-05 00:06:04 +00:00
指令优化、秘境掉落数量调整、文本优化等
This commit is contained in:
parent
83c8e6f1cf
commit
c994bd2054
@ -38,6 +38,7 @@ namespace Oshima.FunGame.OshimaModules.Models
|
||||
public static SemaphoreSlim MarketSemaphoreSlim { get; } = new(1, 1);
|
||||
public static ItemType[] ItemCanUsed => [ItemType.Consumable, ItemType.MagicCard, ItemType.SpecialItem, ItemType.GiftBox, ItemType.Others];
|
||||
public static ItemType[] ItemCanNotDrawCard => [ItemType.Collectible, ItemType.QuestItem, ItemType.GiftBox, ItemType.Others];
|
||||
public static char[] SplitChars => [',', ' ', ',', ';', ';'];
|
||||
|
||||
public static Dictionary<int, Dictionary<string, int>> LevelBreakNeedyList { get; } = new()
|
||||
{
|
||||
|
||||
@ -3811,7 +3811,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
}
|
||||
region ??= FunGameConstant.Regions[Random.Shared.Next(FunGameConstant.Regions.Count)];
|
||||
item ??= region.Crops.ToList()[Random.Shared.Next(region.Crops.Count)];
|
||||
award = Math.Max(1, Random.Shared.Next(1, 4) * difficulty / 2);
|
||||
award = difficulty + Random.Shared.Next(0, 3);
|
||||
regionItems.Add($"{award} 个{item.Name}(来自{region.Name})");
|
||||
for (int j = 0; j < award; j++)
|
||||
{
|
||||
@ -3838,7 +3838,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
}
|
||||
}
|
||||
item ??= FunGameConstant.CharacterLevelBreakItems[Random.Shared.Next(FunGameConstant.CharacterLevelBreakItems.Count)];
|
||||
award = Math.Max(1, Random.Shared.Next(1, 4) * difficulty / Math.Max(2, (int)item.QualityType + 1));
|
||||
award = difficulty + Random.Shared.Next(0, 3);
|
||||
characterLevelBreakItems.Add($"{award} 个{item.Name}");
|
||||
for (int j = 0; j < award; j++)
|
||||
{
|
||||
@ -3865,7 +3865,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
}
|
||||
}
|
||||
item ??= FunGameConstant.SkillLevelUpItems[Random.Shared.Next(FunGameConstant.SkillLevelUpItems.Count)];
|
||||
award = Math.Max(1, Random.Shared.Next(1, 4) * difficulty / Math.Max(2, (int)item.QualityType + 1));
|
||||
award = difficulty + Random.Shared.Next(0, 3);
|
||||
skillLevelUpItems.Add($"{award} 个{item.Name}");
|
||||
for (int j = 0; j < award; j++)
|
||||
{
|
||||
@ -4368,7 +4368,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
{
|
||||
foreach (MarketItem marketItem in MarketItemsValid)
|
||||
{
|
||||
builder.AppendLine(GetMarketItemInfo(marketItem, true, user?.Id ?? 0));
|
||||
builder.AppendLine(GetMarketItemInfo(marketItem, true, user ?? General.UnknownUserInstance));
|
||||
}
|
||||
builder.AppendLine("提示:使用【市场查看+序号】查看商品详细信息,使用【市场购买+序号】购买商品。");
|
||||
}
|
||||
@ -4382,7 +4382,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
public static string GetMarketItemInfo(MarketItem item, bool simply, long visitUser)
|
||||
public static string GetMarketItemInfo(MarketItem item, bool simply, User visitUser)
|
||||
{
|
||||
StringBuilder builder = new();
|
||||
if (simply)
|
||||
@ -4421,7 +4421,7 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
{
|
||||
builder.AppendLine($"商品已售罄");
|
||||
if (item.FinishTime.HasValue) builder.AppendLine($"售罄时间:{item.FinishTime.Value.ToString(General.GeneralDateTimeFormatChinese)}");
|
||||
if (visitUser == item.User && item.Buyers.Count > 0)
|
||||
if (visitUser.Id == item.User && item.Buyers.Count > 0)
|
||||
{
|
||||
HashSet<string> buyers = [];
|
||||
foreach (long buyerid in item.Buyers)
|
||||
@ -4442,7 +4442,9 @@ namespace Oshima.FunGame.OshimaServers.Service
|
||||
if (item.FinishTime.HasValue) builder.AppendLine($"下架时间:{item.FinishTime.Value.ToString(General.GeneralDateTimeFormatChinese)}");
|
||||
}
|
||||
else builder.AppendLine($"剩余库存:{(item.Stock == -1 ? "不限" : item.Stock)}");
|
||||
builder.AppendLine($"☆--- 物品信息 ---☆\r\n{item.Item}");
|
||||
Item newItem = item.Item.Copy();
|
||||
newItem.Character = visitUser.Inventory.MainCharacter;
|
||||
builder.AppendLine($"☆--- 物品信息 ---☆\r\n{newItem.ToString(false, true)}");
|
||||
}
|
||||
return builder.ToString().Trim();
|
||||
}
|
||||
|
||||
@ -2441,6 +2441,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
||||
Dictionary<int, string> itemsMsg = [];
|
||||
|
||||
using SQLHelper? sql = Factory.OpenFactory.GetSQLHelper();
|
||||
Item[] items = [.. user.Inventory.Items];
|
||||
foreach (int itemIndex in itemsIndex)
|
||||
{
|
||||
if (!result)
|
||||
@ -2450,10 +2451,10 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
||||
|
||||
bool subResult = true;
|
||||
Item? item = null;
|
||||
if (itemIndex > 0 && itemIndex <= user.Inventory.Items.Count)
|
||||
if (itemIndex > 0 && itemIndex <= items.Length)
|
||||
{
|
||||
itemsMsg[itemIndex] = "";
|
||||
item = user.Inventory.Items.ToList()[itemIndex - 1];
|
||||
item = items[itemIndex - 1];
|
||||
if (FunGameConstant.ItemCanUsed.Contains(item.ItemType))
|
||||
{
|
||||
if (item.IsLock)
|
||||
@ -2479,7 +2480,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
||||
if (sql != null && SQLService.IsItemInOffers(sql, item.Guid))
|
||||
{
|
||||
FunGameService.ReleaseUserSemaphoreSlim(uid);
|
||||
return $"这个物品 {itemIndex}. {item.Name} 无法使用!因为它正在进行交易,请检查交易报价!";
|
||||
itemsMsg[itemIndex] += $"这个物品 {itemIndex}. {item.Name} 无法使用!因为它正在进行交易,请检查交易报价!\r\n";
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
@ -2531,6 +2532,8 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (msg != "") msg += "\r\n";
|
||||
msg += "使用物品遇到错误,上述使用结果均已回滚,没有消耗也没有获得任何物品。";
|
||||
FunGameService.ReleaseUserSemaphoreSlim(uid);
|
||||
}
|
||||
|
||||
@ -7047,7 +7050,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
||||
{
|
||||
foreach (MarketItem marketItem in marketItems)
|
||||
{
|
||||
msg += FunGameService.GetMarketItemInfo(marketItem, true, userid) + "\r\n";
|
||||
msg += FunGameService.GetMarketItemInfo(marketItem, true, user) + "\r\n";
|
||||
}
|
||||
}
|
||||
else msg += "你还没有上架过任何物品。";
|
||||
@ -7091,7 +7094,7 @@ namespace Oshima.FunGame.WebAPI.Controllers
|
||||
string msg = "";
|
||||
if (market.MarketItems.TryGetValue(itemid, out MarketItem? item) && item != null)
|
||||
{
|
||||
msg = FunGameService.GetMarketItemInfo(item, false, userid);
|
||||
msg = FunGameService.GetMarketItemInfo(item, false, user);
|
||||
}
|
||||
if (msg != "")
|
||||
{
|
||||
|
||||
@ -1482,7 +1482,6 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
if (e.Detail.StartsWith("批量使用"))
|
||||
{
|
||||
string detail = e.Detail.Replace("批量使用", "").Trim();
|
||||
char[] chars = [',', ' ', ',', ';', ';'];
|
||||
string pattern = @"\s*(?:角色\s*(?<characterId>\d+))?\s*(?<itemIds>[\d\s,,;;]+)";
|
||||
Match match = Regex.Match(detail, pattern);
|
||||
if (match.Success)
|
||||
@ -1490,7 +1489,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
string itemIdsString = match.Groups["itemIds"].Value;
|
||||
string characterId = match.Groups["characterId"].Value;
|
||||
int[] characterIds = characterId != "" ? [int.Parse(characterId)] : [1];
|
||||
int[] itemIds = itemIdsString.Split(chars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
|
||||
int[] itemIds = itemIdsString.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
|
||||
if (itemIds.Length > 0)
|
||||
{
|
||||
string msg = Controller.UseItem4(uid, (itemIds, characterIds));
|
||||
@ -1538,7 +1537,6 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
else
|
||||
{
|
||||
string detail = e.Detail.Replace("使用", "").Trim();
|
||||
char[] chars = [',', ' ', ',', ';', ';'];
|
||||
string pattern = @"^\s*(?:(?<itemId>\d+)|(?<itemPart>[^\d\s].*?))(?:\s+(?<countPart>\d+))?(?:\s*角色\s*(?<characterIds>[\d\s,,;;]*))?$";
|
||||
Match match = Regex.Match(detail, pattern);
|
||||
if (match.Success)
|
||||
@ -1547,7 +1545,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
string itemPart = match.Groups["itemPart"].Value.Trim();
|
||||
string countStr = match.Groups["countPart"].Value;
|
||||
string characterIdsString = match.Groups["characterIds"].Value;
|
||||
int[] characterIds = characterIdsString != "" ? [.. characterIdsString.Split(chars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).Select(int.Parse)] : [1];
|
||||
int[] characterIds = characterIdsString != "" ? [.. characterIdsString.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).Select(int.Parse)] : [1];
|
||||
int count = string.IsNullOrEmpty(countStr) ? 1 : int.Parse(countStr);
|
||||
|
||||
if (!string.IsNullOrEmpty(itemId) && int.TryParse(itemId, out int id))
|
||||
@ -1576,7 +1574,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("分解物品", "").Trim();
|
||||
List<int> ids = [];
|
||||
foreach (string str in detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries))
|
||||
foreach (string str in detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
if (int.TryParse(str, out int id))
|
||||
{
|
||||
@ -2015,7 +2013,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
if (e.Detail.StartsWith("设置小队") || e.Detail.StartsWith("重组小队"))
|
||||
{
|
||||
string detail = e.Detail.Replace("设置小队", "").Replace("重组小队", "").Trim();
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> cindexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2386,7 +2384,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
string detail = e.Detail.Replace("探索", "").Replace("前往", "").Trim();
|
||||
string msg = "";
|
||||
string eid = "";
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> cindexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2531,7 +2529,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("上锁", "").Replace("锁定", "").Trim();
|
||||
string msg = "";
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> indexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2555,7 +2553,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("解锁", "").Trim();
|
||||
string msg = "";
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> indexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2688,7 +2686,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("报价添加物品", "").Trim();
|
||||
string msg = "";
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> indexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2716,7 +2714,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("报价添加对方物品", "").Trim();
|
||||
string msg = "";
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> indexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2744,7 +2742,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("报价移除物品", "").Trim();
|
||||
string msg = "";
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> indexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2772,7 +2770,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("报价移除对方物品", "").Trim();
|
||||
string msg = "";
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
List<int> indexs = [];
|
||||
foreach (string s in strings)
|
||||
{
|
||||
@ -2800,7 +2798,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
{
|
||||
string detail = e.Detail.Replace("商店出售", "").Trim();
|
||||
List<int> ids = [];
|
||||
foreach (string str in detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries))
|
||||
foreach (string str in detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
if (int.TryParse(str, out int id))
|
||||
{
|
||||
@ -3067,7 +3065,7 @@ namespace Oshima.FunGame.WebAPI.Services
|
||||
if (e.Detail.StartsWith("市场出售"))
|
||||
{
|
||||
string detail = e.Detail.Replace("市场出售", "").Trim();
|
||||
string[] strings = detail.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
|
||||
if (strings.Length < 2 || !double.TryParse(strings[^1], out double price))
|
||||
{
|
||||
await SendAsync(e, "市场出售", "格式不正确,请使用:市场出售 <{物品序号...}> <价格>。多个物品序号使用空格隔开。");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user