修复一些BUG

This commit is contained in:
milimoe 2025-06-28 02:57:59 +08:00
parent f382f0e583
commit ff010370fc
Signed by: milimoe
GPG Key ID: 9554D37E4B8991D0
4 changed files with 76 additions and 57 deletions

View File

@ -162,15 +162,14 @@ namespace Oshima.FunGame.OshimaModules.Items
public override long Id => (long)GiftBoxID.; public override long Id => (long)GiftBoxID.;
public override string Name => "魔法卡礼包"; public override string Name => "魔法卡礼包";
public override string Description => Skills.Active?.Description ?? ""; public override string Description => Skills.Active?.Description ?? "";
public override QualityType QualityType => _type;
public int Count => _count; public int Count => _count;
public Dictionary<string, int> Gifts { get; set; } = []; public Dictionary<string, int> Gifts { get; set; } = [];
private readonly QualityType _type = QualityType.White;
private readonly int _count = 1; private readonly int _count = 1;
public (QualityType type = QualityType.White, int count = 1, User? user = null, int remainUseTimes = 1) : base(ItemType.GiftBox) public (QualityType type = QualityType.White, int count = 1, User? user = null, int remainUseTimes = 1) : base(ItemType.GiftBox)
{ {
_type = type; QualityType = type;
Others.Add("QualityType", (int)type);
_count = count; _count = count;
User = user; User = user;
.Init(this, new() .Init(this, new()
@ -178,6 +177,14 @@ namespace Oshima.FunGame.OshimaModules.Items
{ "与礼包同品质、随机属性、随机魔法技能的魔法卡", count } { "与礼包同品质、随机属性、随机魔法技能的魔法卡", count }
}, remainUseTimes); }, remainUseTimes);
} }
protected override void AfterCopy()
{
if (Others.TryGetValue("QualityType", out object? value) && int.TryParse(value.ToString(), out int qualityType))
{
QualityType = (QualityType)qualityType;
}
}
} }
public class : Skill public class : Skill

View File

@ -490,7 +490,7 @@ namespace Oshima.FunGame.OshimaServers.Service
foreach (Item inventoryItem in items) foreach (Item inventoryItem in items)
{ {
Item realItem = inventoryItem.Copy(true, true, true, FunGameConstant.AllItems, FunGameConstant.AllSkills); Item realItem = inventoryItem.Copy(true, true, true, true, FunGameConstant.AllItems, FunGameConstant.AllSkills);
realItem.User = user; realItem.User = user;
user.Inventory.Items.Add(realItem); user.Inventory.Items.Add(realItem);
} }
@ -1154,9 +1154,16 @@ namespace Oshima.FunGame.OshimaServers.Service
SetSellAndTradeTime(newItem); SetSellAndTradeTime(newItem);
newItem.User = user; newItem.User = user;
user.Inventory.Items.Add(newItem); user.Inventory.Items.Add(newItem);
cards.Add(newItem.ToStringInventory(false)); cards.Add($"[{ItemSet.GetQualityTypeName(item.QualityType)}|魔法卡] {newItem.Name}\r\n{newItem.ToStringInventory(false)}");
} }
msg = "打开礼包成功!获得了以下物品:\r\n" + string.Join("\r\n", cards); msg = "打开礼包成功!获得了以下物品:\r\n" + string.Join("\r\n", cards);
item.RemainUseTimes--;
if (item.RemainUseTimes < 0) item.RemainUseTimes = 0;
if (item.RemainUseTimes == 0)
{
user.Inventory.Items.Remove(item);
}
return true;
} }
else if (item is .GiftBox box && box.Gifts.Count > 0) else if (item is .GiftBox box && box.Gifts.Count > 0)
{ {

View File

@ -51,29 +51,29 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
} }
[HttpPut("{id}")] //[HttpPut("{id}")]
public IActionResult UpdateActivity(long id, [FromBody] Activity? activity = null) //public IActionResult UpdateActivity(long id, [FromBody] Activity? activity = null)
{ //{
try // try
{ // {
if (activity is null || activity.Id != id) // if (activity is null || activity.Id != id)
{ // {
return BadRequest("活动更新失败,活动 ID 与请求体 ID 不匹配或请求体格式错误。"); // return BadRequest("活动更新失败,活动 ID 与请求体 ID 不匹配或请求体格式错误。");
} // }
EntityModuleConfig<Activity> activities = new("activities", "activities"); // EntityModuleConfig<Activity> activities = new("activities", "activities");
activities.LoadConfig(); // activities.LoadConfig();
activities.Add(activity.Id.ToString(), activity); // activities.Add(activity.Id.ToString(), activity);
activities.SaveConfig(); // activities.SaveConfig();
return Ok($"活动 {activity.GetIdName()} 更新成功。"); // return Ok($"活动 {activity.GetIdName()} 更新成功。");
} // }
catch (Exception e) // catch (Exception e)
{ // {
_logger.LogError(e, "Error: "); // _logger.LogError(e, "Error: ");
return StatusCode(500, "更新活动时发生错误,请检查日志。"); // return StatusCode(500, "更新活动时发生错误,请检查日志。");
} // }
} //}
[HttpDelete("{id}")] [HttpDelete("{id}")]
public IActionResult RemoveActivity(long id) public IActionResult RemoveActivity(long id)
@ -125,39 +125,39 @@ namespace Oshima.FunGame.WebAPI.Controllers
} }
} }
[HttpPut("{id}/{questId}")] //[HttpPut("{id}/{questId}")]
public IActionResult UpdateQuest(long id, long questId, [FromBody] Quest? quest = null) //public IActionResult UpdateQuest(long id, long questId, [FromBody] Quest? quest = null)
{ //{
try // try
{ // {
if (quest is null || quest.Id != questId) // if (quest is null || quest.Id != questId)
{ // {
return BadRequest("任务更新失败,任务 ID 与请求体 ID 不匹配或请求体格式错误。"); // return BadRequest("任务更新失败,任务 ID 与请求体 ID 不匹配或请求体格式错误。");
} // }
EntityModuleConfig<Activity> activities = new("activities", "activities"); // EntityModuleConfig<Activity> activities = new("activities", "activities");
activities.LoadConfig(); // activities.LoadConfig();
Activity? activity = activities.Values.FirstOrDefault(a => a.Id == id); // Activity? activity = activities.Values.FirstOrDefault(a => a.Id == id);
if (activity != null) // if (activity != null)
{ // {
if (activity.Quests.FirstOrDefault(q => q.Id == quest.Id) is Quest current) // if (activity.Quests.FirstOrDefault(q => q.Id == quest.Id) is Quest current)
{ // {
activity.Quests.Remove(quest); // activity.Quests.Remove(quest);
} // }
activity.Quests.Add(quest); // activity.Quests.Add(quest);
activities.Add(activity.Id.ToString(), activity); // activities.Add(activity.Id.ToString(), activity);
activities.SaveConfig(); // activities.SaveConfig();
return Ok($"任务 {quest.GetIdName()}(属于活动【{activity.Name}】)更新成功。"); // return Ok($"任务 {quest.GetIdName()}(属于活动【{activity.Name}】)更新成功。");
} // }
return NotFound($"活动编号 {id} 不存在。"); // return NotFound($"活动编号 {id} 不存在。");
} // }
catch (Exception e) // catch (Exception e)
{ // {
_logger.LogError(e, "Error: "); // _logger.LogError(e, "Error: ");
return StatusCode(500, "更新任务时发生错误,请检查日志。"); // return StatusCode(500, "更新任务时发生错误,请检查日志。");
} // }
} //}
[HttpDelete("{id}/{questId}")] [HttpDelete("{id}/{questId}")]
public IActionResult RemoveQuest(long id, long questId) public IActionResult RemoveQuest(long id, long questId)

View File

@ -2054,6 +2054,11 @@ namespace Oshima.FunGame.WebAPI.Controllers
item = user.Inventory.Items.ToList()[itemIndex - 1]; item = user.Inventory.Items.ToList()[itemIndex - 1];
if (FunGameConstant.ItemCanUsed.Contains(item.ItemType)) if (FunGameConstant.ItemCanUsed.Contains(item.ItemType))
{ {
if (item.ItemType == ItemType.MagicCard)
{
return "此物品为魔法卡,请使用【使用魔法卡】指令!";
}
if (item.RemainUseTimes <= 0) if (item.RemainUseTimes <= 0)
{ {
return "此物品剩余使用次数为0无法使用"; return "此物品剩余使用次数为0无法使用";