修复一些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 string Name => "魔法卡礼包";
public override string Description => Skills.Active?.Description ?? "";
public override QualityType QualityType => _type;
public int Count => _count;
public Dictionary<string, int> 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;
QualityType = type;
Others.Add("QualityType", (int)type);
_count = count;
User = user;
.Init(this, new()
@ -178,6 +177,14 @@ namespace Oshima.FunGame.OshimaModules.Items
{ "与礼包同品质、随机属性、随机魔法技能的魔法卡", count }
}, 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

View File

@ -490,7 +490,7 @@ namespace Oshima.FunGame.OshimaServers.Service
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;
user.Inventory.Items.Add(realItem);
}
@ -1154,9 +1154,16 @@ namespace Oshima.FunGame.OshimaServers.Service
SetSellAndTradeTime(newItem);
newItem.User = user;
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);
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)
{

View File

@ -51,29 +51,29 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
}
[HttpPut("{id}")]
public IActionResult UpdateActivity(long id, [FromBody] Activity? activity = null)
{
try
{
if (activity is null || activity.Id != id)
{
return BadRequest("活动更新失败,活动 ID 与请求体 ID 不匹配或请求体格式错误。");
}
//[HttpPut("{id}")]
//public IActionResult UpdateActivity(long id, [FromBody] Activity? activity = null)
//{
// try
// {
// if (activity is null || activity.Id != id)
// {
// return BadRequest("活动更新失败,活动 ID 与请求体 ID 不匹配或请求体格式错误。");
// }
EntityModuleConfig<Activity> activities = new("activities", "activities");
activities.LoadConfig();
activities.Add(activity.Id.ToString(), activity);
activities.SaveConfig();
// EntityModuleConfig<Activity> 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, "更新活动时发生错误,请检查日志。");
}
}
// return Ok($"活动 {activity.GetIdName()} 更新成功。");
// }
// catch (Exception e)
// {
// _logger.LogError(e, "Error: ");
// return StatusCode(500, "更新活动时发生错误,请检查日志。");
// }
//}
[HttpDelete("{id}")]
public IActionResult RemoveActivity(long id)
@ -125,39 +125,39 @@ namespace Oshima.FunGame.WebAPI.Controllers
}
}
[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 不匹配或请求体格式错误。");
}
//[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<Activity> 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}】)更新成功。");
}
// EntityModuleConfig<Activity> 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, "更新任务时发生错误,请检查日志。");
}
}
// return NotFound($"活动编号 {id} 不存在。");
// }
// catch (Exception e)
// {
// _logger.LogError(e, "Error: ");
// return StatusCode(500, "更新任务时发生错误,请检查日志。");
// }
//}
[HttpDelete("{id}/{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];
if (FunGameConstant.ItemCanUsed.Contains(item.ItemType))
{
if (item.ItemType == ItemType.MagicCard)
{
return "此物品为魔法卡,请使用【使用魔法卡】指令!";
}
if (item.RemainUseTimes <= 0)
{
return "此物品剩余使用次数为0无法使用";