mirror of
https://github.com/raphaelcheung/zircon-legend-server.git
synced 2026-10-20 08:33:02 +08:00
b1a3e406d6
本次提交实现了服务端 WebApi 管理后台,支持账号、角色、物品、地图、怪物、NPC、技能、基础属性等游戏数据的可视化管理,权限分级,配置热更新等。前端新增 settings.html 服务器设置页面,支持分组配置、即时/重启生效区分、保存/重置等操作,UI 统一,支持主题切换。docker-compose.yml 增加 WebApi 端口映射及 Dockerfile 构建配置。极大提升了服务端的可运维性和可视化管理能力。
114 lines
3.7 KiB
C#
114 lines
3.7 KiB
C#
using System.Threading;
|
|
using System.Runtime;
|
|
using Library;
|
|
using Server.Envir;
|
|
using Server.WebApi;
|
|
using System.Reflection;
|
|
|
|
ConfigReader.Load();
|
|
|
|
string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
|
|
|
|
|
|
|
Console.WriteLine($"皓石传奇三 v{version}");
|
|
Console.WriteLine($"免费开源的传奇三,开源技术交流进QQ群 915941142");
|
|
Console.WriteLine($"客户端更新路径:{Config.ClientPath}");
|
|
Console.WriteLine($"地图文件路径:{Config.MapPath}");
|
|
|
|
if (Config.ConnectionLimit <= 0 || Config.ConnectionLimit >= 65534)
|
|
{
|
|
Config.ConnectionLimit = 200;
|
|
Console.WriteLine($"[最大连接数量限制] 配置了无效值,恢复默认值 {Config.ConnectionLimit}...");
|
|
}
|
|
|
|
Console.WriteLine($"最大连接数量限制:{Config.ConnectionLimit}");
|
|
|
|
if (Config.武器重置等待分钟 < 0)
|
|
{
|
|
Config.武器重置等待分钟 = 24 * 60;
|
|
Console.WriteLine($"[武器重置等待分钟] 配置了无效值,恢复默认值 {Config.武器重置等待分钟} ...");
|
|
}
|
|
|
|
if (Config.挖出的黑铁矿最小纯度 < 0 )
|
|
{
|
|
Config.挖出的黑铁矿最小纯度 = 25;
|
|
Console.WriteLine($"[挖出的黑铁矿最小纯度] 设置了无效值,恢复默认值 {Config.挖出的黑铁矿最小纯度} ...");
|
|
}
|
|
|
|
if (Config.挖出的黑铁矿最大纯度 < Config.挖出的黑铁矿最小纯度)
|
|
{
|
|
Config.挖出的黑铁矿最大纯度 = Config.挖出的黑铁矿最小纯度;
|
|
Console.WriteLine($"[挖出的黑铁矿最大纯度] 设置了无效值,恢复默认值 {Config.挖出的黑铁矿最大纯度}...");
|
|
}
|
|
|
|
if (Config.技能最高等级 < 0)
|
|
{
|
|
Config.技能最高等级 = 3;
|
|
Console.WriteLine($"[技能最高等级] 设置了无效值,恢复默认值 {Config.技能最高等级} ...");
|
|
}
|
|
|
|
if (Config.数据清理间隔分钟 < 0)
|
|
{
|
|
Config.数据清理间隔分钟 = 0;
|
|
Console.WriteLine($"[内存垃圾回收间隔多少分钟] 设置了无效值,恢复默认值 {Config.数据清理间隔分钟} ...");
|
|
}
|
|
|
|
if (Config.武器重置时每多少点属性保留一点 <= 0)
|
|
{
|
|
Config.武器重置时每多少点属性保留一点 = 10;
|
|
Console.WriteLine($"[武器重置时每多少点属性保留一点] 设置了无效值,恢复默认值 {Config.武器重置时每多少点属性保留一点} ...");
|
|
}
|
|
|
|
if (Config.武器重置冷却分钟 < 0)
|
|
{
|
|
Config.武器重置冷却分钟 = 1440;
|
|
Console.WriteLine($"[武器重置冷却分钟] 设置了无效值,恢复默认值 {Config.武器重置冷却分钟} ...");
|
|
}
|
|
|
|
if (Config.判断敏感词最大跳几个字符 < 0)
|
|
{
|
|
Config.判断敏感词最大跳几个字符 = 2;
|
|
Console.WriteLine($"[判断敏感词最大跳几个字符] 设置了无效值,恢复默认值 {Config.判断敏感词最大跳几个字符} ...");
|
|
}
|
|
|
|
if (Config.宠物不追击距离玩家多少格以外的敌人 <= 0)
|
|
{
|
|
Config.宠物不追击距离玩家多少格以外的敌人 = 10;
|
|
Console.WriteLine($"[宠物不追击距离玩家多少格以外的敌人] 设置了无效值,恢复默认值 {Config.宠物不追击距离玩家多少格以外的敌人} ...");
|
|
}
|
|
|
|
GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency;
|
|
|
|
bool stop = false;
|
|
bool running = true;
|
|
|
|
Task.Run(() =>
|
|
{
|
|
stop = false;
|
|
while (running)
|
|
{
|
|
while (SEnvir.DisplayLogs.TryDequeue(out string? log))
|
|
{
|
|
if (log != null) Console.WriteLine(log);
|
|
}
|
|
|
|
Thread.Sleep(100);
|
|
}
|
|
|
|
stop = true;
|
|
});
|
|
|
|
SEnvir.LoadBlock();
|
|
SEnvir.LoadClientHash();
|
|
var log = SEnvir.LoadRebirthInfo();
|
|
if (!string.IsNullOrEmpty(log)) SEnvir.Log(log);
|
|
|
|
// Start WebAPI server (must be before StartServer because EnvirLoop blocks)
|
|
WebApiStartup.Start();
|
|
|
|
SEnvir.StartServer();
|
|
|
|
while(!stop) Thread.Sleep(100);
|
|
|
|
//ConfigReader.Save(); |