mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-04-22 11:59:35 +08:00
728 lines
34 KiB
C#
728 lines
34 KiB
C#
using System.Text;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Microsoft.Extensions.Logging;
|
||
using Milimoe.FunGame.Core.Api.Utility;
|
||
using Milimoe.FunGame.Core.Entity;
|
||
using Milimoe.FunGame.Core.Library.Constant;
|
||
using Oshima.Core.Configs;
|
||
using Oshima.Core.Models;
|
||
using Oshima.Core.Utils;
|
||
using Oshima.FunGame.OshimaModules.Skills;
|
||
|
||
namespace Oshima.Core.Controllers
|
||
{
|
||
[ApiController]
|
||
[Route("[controller]")]
|
||
public class FunGameController(ILogger<UserDailyController> logger) : ControllerBase
|
||
{
|
||
private readonly ILogger<UserDailyController> _logger = logger;
|
||
private const string noSaved = "你还没有创建存档!请发送【创建存档】创建。";
|
||
|
||
[HttpGet("test")]
|
||
public List<string> GetTest([FromQuery] bool? isweb = null, [FromQuery] bool? isteam = null, [FromQuery] bool? showall = null)
|
||
{
|
||
bool web = isweb ?? true;
|
||
bool team = isteam ?? false;
|
||
bool all = showall ?? false;
|
||
return FunGameSimulation.StartGame(false, web, team, all);
|
||
}
|
||
|
||
[HttpGet("stats")]
|
||
public string GetStats([FromQuery] int? id = null)
|
||
{
|
||
if (id != null && id > 0 && id <= FunGameService.Characters.Count)
|
||
{
|
||
Character character = FunGameService.Characters[Convert.ToInt32(id) - 1];
|
||
if (FunGameSimulation.CharacterStatistics.TryGetValue(character, out CharacterStatistics? stats) && stats != null)
|
||
{
|
||
StringBuilder builder = new();
|
||
|
||
builder.AppendLine(character.ToString());
|
||
builder.AppendLine($"总计造成伤害:{stats.TotalDamage:0.##} / 场均:{stats.AvgDamage:0.##}");
|
||
builder.AppendLine($"总计造成物理伤害:{stats.TotalPhysicalDamage:0.##} / 场均:{stats.AvgPhysicalDamage:0.##}");
|
||
builder.AppendLine($"总计造成魔法伤害:{stats.TotalMagicDamage:0.##} / 场均:{stats.AvgMagicDamage:0.##}");
|
||
builder.AppendLine($"总计造成真实伤害:{stats.TotalRealDamage:0.##} / 场均:{stats.AvgRealDamage:0.##}");
|
||
builder.AppendLine($"总计承受伤害:{stats.TotalTakenDamage:0.##} / 场均:{stats.AvgTakenDamage:0.##}");
|
||
builder.AppendLine($"总计承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 场均:{stats.AvgTakenPhysicalDamage:0.##}");
|
||
builder.AppendLine($"总计承受魔法伤害:{stats.TotalTakenMagicDamage:0.##} / 场均:{stats.AvgTakenMagicDamage:0.##}");
|
||
builder.AppendLine($"总计承受真实伤害:{stats.TotalTakenRealDamage:0.##} / 场均:{stats.AvgTakenRealDamage:0.##}");
|
||
builder.AppendLine($"总计存活回合数:{stats.LiveRound} / 场均:{stats.AvgLiveRound}");
|
||
builder.AppendLine($"总计行动回合数:{stats.ActionTurn} / 场均:{stats.AvgActionTurn}");
|
||
builder.AppendLine($"总计存活时长:{stats.LiveTime:0.##} / 场均:{stats.AvgLiveTime:0.##}");
|
||
builder.AppendLine($"总计赚取金钱:{stats.TotalEarnedMoney} / 场均:{stats.AvgEarnedMoney}");
|
||
builder.AppendLine($"每回合伤害:{stats.DamagePerRound:0.##}");
|
||
builder.AppendLine($"每行动回合伤害:{stats.DamagePerTurn:0.##}");
|
||
builder.AppendLine($"每秒伤害:{stats.DamagePerSecond:0.##}");
|
||
builder.AppendLine($"总计击杀数:{stats.Kills}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Kills / stats.Plays:0.##}" : ""));
|
||
builder.AppendLine($"总计死亡数:{stats.Deaths}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Deaths / stats.Plays:0.##}" : ""));
|
||
builder.AppendLine($"总计助攻数:{stats.Assists}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Assists / stats.Plays:0.##}" : ""));
|
||
builder.AppendLine($"总计首杀数:{stats.FirstKills}" + (stats.Plays != 0 ? $" / 首杀率:{(double)stats.FirstKills / stats.Plays * 100:0.##}%" : ""));
|
||
builder.AppendLine($"总计首死数:{stats.FirstDeaths}" + (stats.Plays != 0 ? $" / 首死率:{(double)stats.FirstDeaths / stats.Plays * 100:0.##}%" : ""));
|
||
builder.AppendLine($"总计参赛数:{stats.Plays}");
|
||
builder.AppendLine($"总计冠军数:{stats.Wins}");
|
||
builder.AppendLine($"总计前三数:{stats.Top3s}");
|
||
builder.AppendLine($"总计败场数:{stats.Loses}");
|
||
|
||
List<string> names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.MVPs).Select(kv => kv.Key.GetName())];
|
||
builder.AppendLine($"MVP次数:{stats.MVPs}(#{names.IndexOf(character.GetName()) + 1})");
|
||
|
||
names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())];
|
||
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%(#{names.IndexOf(character.GetName()) + 1})");
|
||
builder.AppendLine($"前三率:{stats.Top3rates * 100:0.##}%");
|
||
|
||
names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())];
|
||
builder.AppendLine($"技术得分:{stats.Rating:0.0#}(#{names.IndexOf(character.GetName()) + 1})");
|
||
|
||
builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank:0.##}");
|
||
|
||
return NetworkUtility.JsonSerialize(builder.ToString());
|
||
}
|
||
}
|
||
return NetworkUtility.JsonSerialize("");
|
||
}
|
||
|
||
[HttpGet("teamstats")]
|
||
public string GetTeamStats([FromQuery] int? id = null)
|
||
{
|
||
if (id != null && id > 0 && id <= FunGameService.Characters.Count)
|
||
{
|
||
Character character = FunGameService.Characters[Convert.ToInt32(id) - 1];
|
||
if (FunGameSimulation.TeamCharacterStatistics.TryGetValue(character, out CharacterStatistics? stats) && stats != null)
|
||
{
|
||
StringBuilder builder = new();
|
||
|
||
builder.AppendLine(character.ToString());
|
||
builder.AppendLine($"总计造成伤害:{stats.TotalDamage:0.##} / 场均:{stats.AvgDamage:0.##}");
|
||
builder.AppendLine($"总计造成物理伤害:{stats.TotalPhysicalDamage:0.##} / 场均:{stats.AvgPhysicalDamage:0.##}");
|
||
builder.AppendLine($"总计造成魔法伤害:{stats.TotalMagicDamage:0.##} / 场均:{stats.AvgMagicDamage:0.##}");
|
||
builder.AppendLine($"总计造成真实伤害:{stats.TotalRealDamage:0.##} / 场均:{stats.AvgRealDamage:0.##}");
|
||
builder.AppendLine($"总计承受伤害:{stats.TotalTakenDamage:0.##} / 场均:{stats.AvgTakenDamage:0.##}");
|
||
builder.AppendLine($"总计承受物理伤害:{stats.TotalTakenPhysicalDamage:0.##} / 场均:{stats.AvgTakenPhysicalDamage:0.##}");
|
||
builder.AppendLine($"总计承受魔法伤害:{stats.TotalTakenMagicDamage:0.##} / 场均:{stats.AvgTakenMagicDamage:0.##}");
|
||
builder.AppendLine($"总计承受真实伤害:{stats.TotalTakenRealDamage:0.##} / 场均:{stats.AvgTakenRealDamage:0.##}");
|
||
builder.AppendLine($"总计存活回合数:{stats.LiveRound} / 场均:{stats.AvgLiveRound}");
|
||
builder.AppendLine($"总计行动回合数:{stats.ActionTurn} / 场均:{stats.AvgActionTurn}");
|
||
builder.AppendLine($"总计存活时长:{stats.LiveTime:0.##} / 场均:{stats.AvgLiveTime:0.##}");
|
||
builder.AppendLine($"总计赚取金钱:{stats.TotalEarnedMoney} / 场均:{stats.AvgEarnedMoney}");
|
||
builder.AppendLine($"每回合伤害:{stats.DamagePerRound:0.##}");
|
||
builder.AppendLine($"每行动回合伤害:{stats.DamagePerTurn:0.##}");
|
||
builder.AppendLine($"每秒伤害:{stats.DamagePerSecond:0.##}");
|
||
builder.AppendLine($"总计击杀数:{stats.Kills}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Kills / stats.Plays:0.##}" : ""));
|
||
builder.AppendLine($"总计死亡数:{stats.Deaths}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Deaths / stats.Plays:0.##}" : ""));
|
||
builder.AppendLine($"击杀死亡比:{(stats.Deaths == 0 ? stats.Kills : ((double)stats.Kills / stats.Deaths)):0.##}");
|
||
builder.AppendLine($"总计助攻数:{stats.Assists}" + (stats.Plays != 0 ? $" / 场均:{(double)stats.Assists / stats.Plays:0.##}" : ""));
|
||
builder.AppendLine($"总计首杀数:{stats.FirstKills}" + (stats.Plays != 0 ? $" / 首杀率:{(double)stats.FirstKills / stats.Plays * 100:0.##}%" : ""));
|
||
builder.AppendLine($"总计首死数:{stats.FirstDeaths}" + (stats.Plays != 0 ? $" / 首死率:{(double)stats.FirstDeaths / stats.Plays * 100:0.##}%" : ""));
|
||
builder.AppendLine($"总计参赛数:{stats.Plays}");
|
||
builder.AppendLine($"总计胜场数:{stats.Wins}");
|
||
builder.AppendLine($"总计败场数:{stats.Loses}");
|
||
|
||
List<string> names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.MVPs).Select(kv => kv.Key.GetName())];
|
||
builder.AppendLine($"MVP次数:{stats.MVPs}(#{names.IndexOf(character.GetName()) + 1})");
|
||
names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())];
|
||
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%(#{names.IndexOf(character.GetName()) + 1})");
|
||
names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())];
|
||
builder.AppendLine($"技术得分:{stats.Rating:0.0#}(#{names.IndexOf(character.GetName()) + 1})");
|
||
|
||
return NetworkUtility.JsonSerialize(builder.ToString());
|
||
}
|
||
}
|
||
return NetworkUtility.JsonSerialize("");
|
||
}
|
||
|
||
[HttpGet("winraterank")]
|
||
public string GetWinrateRank([FromQuery] bool? isteam = null)
|
||
{
|
||
bool team = isteam ?? false;
|
||
if (team)
|
||
{
|
||
List<string> strings = [];
|
||
IEnumerable<Character> ratings = FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key);
|
||
foreach (Character character in ratings)
|
||
{
|
||
StringBuilder builder = new();
|
||
CharacterStatistics stats = FunGameSimulation.TeamCharacterStatistics[character];
|
||
builder.AppendLine(character.ToString());
|
||
builder.AppendLine($"总计参赛数:{stats.Plays}");
|
||
builder.AppendLine($"总计冠军数:{stats.Wins}");
|
||
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%");
|
||
builder.AppendLine($"技术得分:{stats.Rating:0.0#}");
|
||
builder.AppendLine($"MVP次数:{stats.MVPs}");
|
||
strings.Add(builder.ToString());
|
||
}
|
||
return NetworkUtility.JsonSerialize(strings);
|
||
}
|
||
else
|
||
{
|
||
List<string> strings = [];
|
||
IEnumerable<Character> ratings = FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key);
|
||
foreach (Character character in ratings)
|
||
{
|
||
StringBuilder builder = new();
|
||
CharacterStatistics stats = FunGameSimulation.CharacterStatistics[character];
|
||
builder.AppendLine(character.ToString());
|
||
builder.AppendLine($"总计参赛数:{stats.Plays}");
|
||
builder.AppendLine($"总计冠军数:{stats.Wins}");
|
||
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%");
|
||
builder.AppendLine($"前三率:{stats.Top3rates * 100:0.##}%");
|
||
builder.AppendLine($"技术得分:{stats.Rating:0.0#}");
|
||
builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank:0.##}");
|
||
builder.AppendLine($"MVP次数:{stats.MVPs}");
|
||
strings.Add(builder.ToString());
|
||
}
|
||
return NetworkUtility.JsonSerialize(strings);
|
||
}
|
||
}
|
||
|
||
[HttpGet("ratingrank")]
|
||
public string GetRatingRank([FromQuery] bool? isteam = null)
|
||
{
|
||
bool team = isteam ?? false;
|
||
if (team)
|
||
{
|
||
List<string> strings = [];
|
||
IEnumerable<Character> ratings = FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key);
|
||
foreach (Character character in ratings)
|
||
{
|
||
StringBuilder builder = new();
|
||
CharacterStatistics stats = FunGameSimulation.TeamCharacterStatistics[character];
|
||
builder.AppendLine(character.ToString());
|
||
builder.AppendLine($"总计参赛数:{stats.Plays}");
|
||
builder.AppendLine($"总计冠军数:{stats.Wins}");
|
||
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%");
|
||
builder.AppendLine($"技术得分:{stats.Rating:0.0#}");
|
||
builder.AppendLine($"MVP次数:{stats.MVPs}");
|
||
strings.Add(builder.ToString());
|
||
}
|
||
return NetworkUtility.JsonSerialize(strings);
|
||
}
|
||
else
|
||
{
|
||
List<string> strings = [];
|
||
IEnumerable<Character> ratings = FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key);
|
||
foreach (Character character in ratings)
|
||
{
|
||
StringBuilder builder = new();
|
||
CharacterStatistics stats = FunGameSimulation.CharacterStatistics[character];
|
||
builder.AppendLine(character.ToString());
|
||
builder.AppendLine($"总计参赛数:{stats.Plays}");
|
||
builder.AppendLine($"总计冠军数:{stats.Wins}");
|
||
builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%");
|
||
builder.AppendLine($"前三率:{stats.Top3rates * 100:0.##}%");
|
||
builder.AppendLine($"技术得分:{stats.Rating:0.0#}");
|
||
builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank:0.##}");
|
||
builder.AppendLine($"MVP次数:{stats.MVPs}");
|
||
strings.Add(builder.ToString());
|
||
}
|
||
return NetworkUtility.JsonSerialize(strings);
|
||
}
|
||
}
|
||
|
||
[HttpGet("cjs")]
|
||
public string GetCharacterIntroduce([FromQuery] int? id = null)
|
||
{
|
||
if (id != null && id > 0 && id <= FunGameService.Characters.Count)
|
||
{
|
||
Character c = FunGameService.Characters[Convert.ToInt32(id) - 1].Copy();
|
||
c.Level = General.GameplayEquilibriumConstant.MaxLevel;
|
||
c.NormalAttack.Level = General.GameplayEquilibriumConstant.MaxNormalAttackLevel;
|
||
|
||
if (id == 1)
|
||
{
|
||
Skill META马 = new META马(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(META马);
|
||
|
||
Skill 力量爆发 = new 力量爆发(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxMagicLevel
|
||
};
|
||
c.Skills.Add(力量爆发);
|
||
}
|
||
|
||
if (id == 2)
|
||
{
|
||
Skill 心灵之火 = new 心灵之火(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(心灵之火);
|
||
|
||
Skill 天赐之力 = new 天赐之力(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(天赐之力);
|
||
}
|
||
|
||
if (id == 3)
|
||
{
|
||
Skill 魔法震荡 = new 魔法震荡(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(魔法震荡);
|
||
|
||
Skill 魔法涌流 = new 魔法涌流(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(魔法涌流);
|
||
}
|
||
|
||
if (id == 4)
|
||
{
|
||
Skill 灵能反射 = new 灵能反射(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(灵能反射);
|
||
|
||
Skill 三重叠加 = new 三重叠加(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(三重叠加);
|
||
}
|
||
|
||
if (id == 5)
|
||
{
|
||
Skill 智慧与力量 = new 智慧与力量(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(智慧与力量);
|
||
|
||
Skill 变幻之心 = new 变幻之心(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(变幻之心);
|
||
}
|
||
|
||
if (id == 6)
|
||
{
|
||
Skill 致命打击 = new 致命打击(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(致命打击);
|
||
|
||
Skill 精准打击 = new 精准打击(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(精准打击);
|
||
}
|
||
|
||
if (id == 7)
|
||
{
|
||
Skill 毁灭之势 = new 毁灭之势(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(毁灭之势);
|
||
|
||
Skill 绝对领域 = new 绝对领域(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(绝对领域);
|
||
}
|
||
|
||
if (id == 8)
|
||
{
|
||
Skill 枯竭打击 = new 枯竭打击(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(枯竭打击);
|
||
|
||
Skill 能量毁灭 = new 能量毁灭(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(能量毁灭);
|
||
}
|
||
|
||
if (id == 9)
|
||
{
|
||
Skill 玻璃大炮 = new 玻璃大炮(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(玻璃大炮);
|
||
|
||
Skill 迅捷之势 = new 迅捷之势(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(迅捷之势);
|
||
}
|
||
|
||
if (id == 10)
|
||
{
|
||
Skill 累积之压 = new 累积之压(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(累积之压);
|
||
|
||
Skill 嗜血本能 = new 嗜血本能(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(嗜血本能);
|
||
}
|
||
|
||
if (id == 11)
|
||
{
|
||
Skill 敏捷之刃 = new 敏捷之刃(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(敏捷之刃);
|
||
|
||
Skill 平衡强化 = new 平衡强化(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(平衡强化);
|
||
}
|
||
|
||
if (id == 12)
|
||
{
|
||
Skill 弱者猎手 = new 弱者猎手(c)
|
||
{
|
||
Level = 1
|
||
};
|
||
c.Skills.Add(弱者猎手);
|
||
|
||
Skill 血之狂欢 = new 血之狂欢(c)
|
||
{
|
||
Level = General.GameplayEquilibriumConstant.MaxSkillLevel
|
||
};
|
||
c.Skills.Add(血之狂欢);
|
||
}
|
||
|
||
return NetworkUtility.JsonSerialize(c.GetInfo().Trim());
|
||
}
|
||
return NetworkUtility.JsonSerialize("");
|
||
}
|
||
|
||
[HttpGet("cjn")]
|
||
public string GetSkillInfo([FromQuery] long? id = null)
|
||
{
|
||
IEnumerable<Skill> skills = FunGameService.Skills.Union(FunGameService.Magics);
|
||
if (id != null && FunGameService.Characters.Count > 1)
|
||
{
|
||
List<string> msg = [];
|
||
Character c = FunGameService.Characters[1].Copy();
|
||
Skill? s = skills.Where(s => s.Id == id).FirstOrDefault()?.Copy();
|
||
if (s != null)
|
||
{
|
||
s.Character = c;
|
||
msg.Add($"技能展示的属性基于演示角色:[ {c} ]");
|
||
msg.Add(c.ToStringWithLevel() + "\r\n" + s.ToString());
|
||
s.Level++; ;
|
||
msg.Add(c.ToStringWithLevel() + "\r\n" + s.ToString());
|
||
c.Level = General.GameplayEquilibriumConstant.MaxLevel;
|
||
s.Level = s.IsMagic ? General.GameplayEquilibriumConstant.MaxMagicLevel : General.GameplayEquilibriumConstant.MaxSkillLevel;
|
||
msg.Add(c.ToStringWithLevel() + "\r\n" + s.ToString());
|
||
}
|
||
|
||
return NetworkUtility.JsonSerialize(string.Join("\r\n\r\n", msg));
|
||
}
|
||
return NetworkUtility.JsonSerialize("");
|
||
}
|
||
|
||
[HttpGet("cwp")]
|
||
public string GetItemInfo([FromQuery] long? id = null)
|
||
{
|
||
IEnumerable<Item> items = FunGameService.Equipment;
|
||
if (id != null)
|
||
{
|
||
List<string> msg = [];
|
||
Item? i = items.Where(i => i.Id == id).FirstOrDefault()?.Copy();
|
||
if (i != null)
|
||
{
|
||
i.SetLevel(1);
|
||
msg.Add(i.ToString(false, true));
|
||
}
|
||
|
||
return NetworkUtility.JsonSerialize(string.Join("\r\n\r\n", msg));
|
||
}
|
||
return NetworkUtility.JsonSerialize("");
|
||
}
|
||
|
||
[HttpGet("mfk")]
|
||
public string GenerateMagicCard()
|
||
{
|
||
Item i = FunGameService.GenerateMagicCard();
|
||
return NetworkUtility.JsonSerialize(i.ToString(false, true));
|
||
}
|
||
|
||
[HttpGet("mfkb")]
|
||
public string GenerateMagicCardPack()
|
||
{
|
||
Item? i = FunGameService.GenerateMagicCardPack(3);
|
||
if (i != null)
|
||
{
|
||
return NetworkUtility.JsonSerialize(i.ToString(false, true));
|
||
}
|
||
return NetworkUtility.JsonSerialize("");
|
||
}
|
||
|
||
[HttpPost("cjcd")]
|
||
public string CreateSaved([FromQuery] long? qq = null, [FromQuery] string? name = null)
|
||
{
|
||
long userid = qq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
|
||
string username = name ?? "Unknown";
|
||
|
||
PluginConfig pc = new("saved", userid.ToString());
|
||
pc.LoadConfig();
|
||
|
||
if (pc.Count == 0)
|
||
{
|
||
User user = Factory.GetUser(userid, username, DateTime.Now, DateTime.Now, userid + "@qq.com", username);
|
||
user.Inventory.Credits = 100;
|
||
pc.Add("user", user);
|
||
pc.SaveConfig();
|
||
return NetworkUtility.JsonSerialize($"创建存档成功!你的用户名是【{username}】。");
|
||
}
|
||
else
|
||
{
|
||
return NetworkUtility.JsonSerialize("你已经创建过存档!");
|
||
}
|
||
}
|
||
|
||
[HttpPost("ckkc")]
|
||
public string GetInventoryInfo([FromQuery] long? qq = null)
|
||
{
|
||
long userid = qq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
|
||
|
||
PluginConfig pc = new("saved", userid.ToString());
|
||
pc.LoadConfig();
|
||
|
||
if (pc.Count > 0)
|
||
{
|
||
User user = FunGameService.GetUser(pc);
|
||
|
||
return NetworkUtility.JsonSerialize(user.Inventory.ToString(false));
|
||
}
|
||
else
|
||
{
|
||
return NetworkUtility.JsonSerialize(noSaved);
|
||
}
|
||
}
|
||
|
||
[HttpPost("ckkc2")]
|
||
public List<string> GetInventoryInfo2([FromQuery] long? qq = null, [FromQuery] int? page = null)
|
||
{
|
||
long userid = qq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
|
||
int showPage = page ?? 1;
|
||
if (showPage <= 0) showPage = 1;
|
||
|
||
PluginConfig pc = new("saved", userid.ToString());
|
||
pc.LoadConfig();
|
||
|
||
List<string> list = [];
|
||
if (pc.Count > 0)
|
||
{
|
||
User user = FunGameService.GetUser(pc);
|
||
list.Add($"☆★☆ {user.Inventory.Name} ☆★☆");
|
||
list.Add($"{General.GameplayEquilibriumConstant.InGameCurrency}:{user.Inventory.Credits:0.00}");
|
||
list.Add($"{General.GameplayEquilibriumConstant.InGameMaterial}:{user.Inventory.Materials:0.00}");
|
||
List<Character> characters = [.. user.Inventory.Characters];
|
||
List<Item> items = [.. user.Inventory.Items];
|
||
int total = characters.Count + items.Count;
|
||
int maxPage = (int)Math.Ceiling((double)total / 10);
|
||
if (showPage <= maxPage)
|
||
{
|
||
List<object> inventory = [.. characters, .. items];
|
||
Dictionary<int, object> dict = inventory.Select((obj, index) => new { Index = index + 1, Value = obj }).ToDictionary(k => k.Index, v => v.Value);
|
||
List<int> seq = [.. FunGameService.GetPage(dict.Keys, showPage, 10)];
|
||
bool showCharacter = true;
|
||
bool showItem = true;
|
||
int characterCount = 0;
|
||
int itemCount = 0;
|
||
|
||
int characterSequence = characters.Take((showPage - 1) * 10).Count();
|
||
int itemSequence = items.Take((showPage - 1) * 10).Count() - characterSequence;
|
||
if (showPage > 1) itemSequence++;
|
||
|
||
foreach (int index in seq)
|
||
{
|
||
object obj = dict[index];
|
||
string str = "";
|
||
if (obj is Character character)
|
||
{
|
||
characterCount++;
|
||
if (showCharacter)
|
||
{
|
||
showCharacter = false;
|
||
list.Add("======= 角色 =======");
|
||
}
|
||
str = $"{characterSequence + characterCount}. {character.ToStringWithLevelWithOutUser()}";
|
||
}
|
||
if (obj is Item item)
|
||
{
|
||
itemCount++;
|
||
if (showItem)
|
||
{
|
||
showItem = false;
|
||
list.Add("======= 物品 =======");
|
||
}
|
||
str = $"{itemSequence + itemCount}. [{ItemSet.GetQualityTypeName(item.QualityType)}|{ItemSet.GetItemTypeName(item.ItemType)}] {item.Name}\r\n";
|
||
str += $"{item.ToStringInventory(false).Trim()}";
|
||
}
|
||
list.Add(str);
|
||
}
|
||
|
||
list.Add($"页数:{showPage} / {maxPage}");
|
||
}
|
||
else
|
||
{
|
||
list.Add($"没有这么多页!当前总页数为 {maxPage},但你请求的是第 {showPage} 页。");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
list.Add(noSaved);
|
||
}
|
||
return list;
|
||
}
|
||
|
||
[HttpPost("ck")]
|
||
public string DrawCards([FromQuery] long? qq = null)
|
||
{
|
||
long userid = qq ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11));
|
||
|
||
PluginConfig pc = new("saved", userid.ToString());
|
||
pc.LoadConfig();
|
||
|
||
if (pc.Count > 0)
|
||
{
|
||
User user = FunGameService.GetUser(pc);
|
||
|
||
int reduce = 1;
|
||
if (user.Inventory.Credits > 0)
|
||
{
|
||
user.Inventory.Credits -= reduce;
|
||
}
|
||
else
|
||
{
|
||
return NetworkUtility.JsonSerialize($"你的{General.GameplayEquilibriumConstant.InGameCurrency}不足 {reduce} 呢,无法抽卡!");
|
||
}
|
||
|
||
double dice = Random.Shared.NextDouble();
|
||
if (dice > 0.8)
|
||
{
|
||
string msg = $"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameCurrency},恭喜你抽到了:";
|
||
int r = Random.Shared.Next(7);
|
||
switch (r)
|
||
{
|
||
case 1:
|
||
Item[] 武器 = FunGameService.Equipment.Where(i => i.Id.ToString().StartsWith("11")).ToArray();
|
||
Item a = 武器[Random.Shared.Next(武器.Length)].Copy();
|
||
user.Inventory.Items.Add(a);
|
||
msg += ItemSet.GetQualityTypeName(a.QualityType) + ItemSet.GetItemTypeName(a.ItemType) + "【" + a.Name + "】!\r\n" + a.Description;
|
||
break;
|
||
|
||
case 2:
|
||
Item[] 防具 = FunGameService.Equipment.Where(i => i.Id.ToString().StartsWith("12")).ToArray();
|
||
Item b = 防具[Random.Shared.Next(防具.Length)].Copy();
|
||
user.Inventory.Items.Add(b);
|
||
msg += ItemSet.GetQualityTypeName(b.QualityType) + ItemSet.GetItemTypeName(b.ItemType) + "【" + b.Name + "】!\r\n" + b.Description;
|
||
break;
|
||
|
||
case 3:
|
||
Item[] 鞋子 = FunGameService.Equipment.Where(i => i.Id.ToString().StartsWith("13")).ToArray();
|
||
Item c = 鞋子[Random.Shared.Next(鞋子.Length)].Copy();
|
||
user.Inventory.Items.Add(c);
|
||
msg += ItemSet.GetQualityTypeName(c.QualityType) + ItemSet.GetItemTypeName(c.ItemType) + "【" + c.Name + "】!\r\n" + c.Description;
|
||
break;
|
||
|
||
case 4:
|
||
Item[] 饰品 = FunGameService.Equipment.Where(i => i.Id.ToString().StartsWith("14")).ToArray();
|
||
Item d = 饰品[Random.Shared.Next(饰品.Length)].Copy();
|
||
user.Inventory.Items.Add(d);
|
||
msg += ItemSet.GetQualityTypeName(d.QualityType) + ItemSet.GetItemTypeName(d.ItemType) + "【" + d.Name + "】!\r\n" + d.Description;
|
||
break;
|
||
|
||
case 5:
|
||
Character character = FunGameService.Characters[Random.Shared.Next(FunGameService.Characters.Count)].Copy();
|
||
if (user.Inventory.Characters.Any(c => c.Id == character.Id))
|
||
{
|
||
user.Inventory.Materials += 50;
|
||
msg += "【" + character.ToStringWithOutUser() + "】!\r\n但是你已经拥有此角色,转换为【50】" + General.GameplayEquilibriumConstant.InGameMaterial + "!";
|
||
}
|
||
else
|
||
{
|
||
user.Inventory.Characters.Add(character);
|
||
msg += "【" + character.ToStringWithOutUser() + "】!\r\n输入【查角色" + character.Id + "】可以获取此角色完整信息。";
|
||
}
|
||
break;
|
||
|
||
case 6:
|
||
Item mfk = FunGameService.GenerateMagicCard();
|
||
user.Inventory.Items.Add(mfk);
|
||
msg += ItemSet.GetQualityTypeName(mfk.QualityType) + ItemSet.GetItemTypeName(mfk.ItemType) + "【" + mfk.Name + "】!\r\n" + mfk.Description;
|
||
break;
|
||
|
||
case 0:
|
||
default:
|
||
Item? mfkb = FunGameService.GenerateMagicCardPack(3);
|
||
if (mfkb != null)
|
||
{
|
||
mfkb.IsTradable = false;
|
||
mfkb.NextTradableTime = DateTimeUtility.GetTradableTime();
|
||
user.Inventory.Items.Add(mfkb);
|
||
msg += ItemSet.GetQualityTypeName(mfkb.QualityType) + ItemSet.GetItemTypeName(mfkb.ItemType) + "【" + mfkb.Name + "】!\r\n" + mfkb.Description;
|
||
}
|
||
break;
|
||
}
|
||
pc.Add("user", user);
|
||
pc.SaveConfig();
|
||
return NetworkUtility.JsonSerialize(msg);
|
||
}
|
||
else
|
||
{
|
||
pc.SaveConfig();
|
||
return NetworkUtility.JsonSerialize($"消耗 {reduce} {General.GameplayEquilibriumConstant.InGameCurrency},你什么也没抽中……");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return NetworkUtility.JsonSerialize(noSaved);
|
||
}
|
||
}
|
||
|
||
[HttpGet("reload")]
|
||
public string Relaod([FromQuery] long? master = null)
|
||
{
|
||
if (master != null && master == GeneralSettings.Master)
|
||
{
|
||
FunGameService.Reload();
|
||
FunGameSimulation.InitFunGame();
|
||
return NetworkUtility.JsonSerialize("FunGame已重新加载。");
|
||
}
|
||
return NetworkUtility.JsonSerialize("提供的参数不正确。");
|
||
}
|
||
|
||
[HttpPost("post")]
|
||
public string PostName([FromBody] string name)
|
||
{
|
||
return NetworkUtility.JsonSerialize($"Your Name received successfully: {name}.");
|
||
}
|
||
|
||
[HttpPost("bind")]
|
||
public string Post([FromBody] BindQQ b)
|
||
{
|
||
return NetworkUtility.JsonSerialize("绑定失败,请稍后再试。");
|
||
}
|
||
}
|
||
}
|