mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
Feature: Some Language will be set automatically
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using EggLink.DanhengServer.Data;
|
||||
using EggLink.DanhengServer.Database;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.PlayerSync;
|
||||
using EggLink.DanhengServer.Internationalization;
|
||||
|
||||
@@ -27,7 +26,6 @@ public class CommandSetlevel : ICommand
|
||||
var level = Math.Max(Math.Min(arg.GetInt(0), 70), 1);
|
||||
player.Data.Level = level;
|
||||
player.OnLevelChange();
|
||||
DatabaseHelper.Instance?.UpdateInstance(player.Data);
|
||||
player.Data.Exp = GameData.GetPlayerExpRequired(level);
|
||||
await player.SendPacket(new PacketPlayerSyncScNotify(player.ToProto()));
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using EggLink.DanhengServer.Database;
|
||||
using EggLink.DanhengServer.Database.Gacha;
|
||||
using EggLink.DanhengServer.Database.Gacha;
|
||||
using EggLink.DanhengServer.Enums;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
using GachaInfo = EggLink.DanhengServer.Proto.GachaInfo;
|
||||
@@ -80,8 +79,6 @@ public class BannerConfig
|
||||
}
|
||||
}
|
||||
|
||||
DatabaseHelper.Instance?.UpdateInstance(data);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,14 +34,12 @@ public class AccountData : BaseDatabaseDataHelper
|
||||
public string GenerateDispatchToken()
|
||||
{
|
||||
DispatchToken = Crypto.CreateSessionKey(Uid.ToString());
|
||||
DatabaseHelper.Instance?.UpdateInstance(this);
|
||||
return DispatchToken;
|
||||
}
|
||||
|
||||
public string GenerateComboToken()
|
||||
{
|
||||
ComboToken = Crypto.CreateSessionKey(Uid.ToString());
|
||||
DatabaseHelper.Instance?.UpdateInstance(this);
|
||||
return ComboToken;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using EggLink.DanhengServer.Database.Inventory;
|
||||
using System.Globalization;
|
||||
using EggLink.DanhengServer.Database.Inventory;
|
||||
using EggLink.DanhengServer.Database.Quests;
|
||||
using EggLink.DanhengServer.Internationalization;
|
||||
using EggLink.DanhengServer.Util;
|
||||
@@ -109,7 +110,9 @@ public class DatabaseHelper
|
||||
|
||||
foreach (var instance in GetAllInstance<MissionData>()!) instance.MoveFromOld();
|
||||
|
||||
foreach (var instance in GetAllInstance<InventoryData>()!) UpdateInstance(instance);
|
||||
foreach (var instance in GetAllInstance<InventoryData>()!)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveFromSqlite()
|
||||
@@ -236,14 +239,6 @@ public class DatabaseHelper
|
||||
.Add((instance as BaseDatabaseDataHelper)!); // add to the map
|
||||
}
|
||||
|
||||
public void UpdateInstance<T>(T instance) where T : class, new()
|
||||
{
|
||||
//lock (GetLock((instance as BaseDatabaseDataHelper)!.Uid))
|
||||
//{
|
||||
// sqlSugarScope?.Updateable(instance).ExecuteCommand();
|
||||
//}
|
||||
}
|
||||
|
||||
public void CalcSaveDatabase() // per 5 min
|
||||
{
|
||||
if (LastSaveTick + TimeSpan.TicksPerMinute * 5 > DateTime.UtcNow.Ticks) return;
|
||||
@@ -271,8 +266,9 @@ public class DatabaseHelper
|
||||
}
|
||||
}
|
||||
|
||||
var t = (DateTime.Now - prev).TotalSeconds;
|
||||
logger.Info(I18NManager.Translate("Server.ServerInfo.SaveDatabase",
|
||||
(DateTime.Now - prev).TotalSeconds.ToString()[..4]));
|
||||
Math.Round(t, 2).ToString(CultureInfo.InvariantCulture)));
|
||||
|
||||
ToSaveUidList.Clear();
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public class ItemData
|
||||
{
|
||||
GameData.RelicConfigData.TryGetValue(ItemId, out var config);
|
||||
if (config == null) return;
|
||||
var affixId = GameTools.GetRandomRelicMainAffix(config.MainAffixGroup);
|
||||
var affixId = UtilTools.GetRandomRelicMainAffix(config.MainAffixGroup);
|
||||
MainAffix = affixId;
|
||||
}
|
||||
|
||||
|
||||
@@ -56,8 +56,6 @@ public class LineupInfo
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
DatabaseHelper.Instance?.UpdateInstance(AvatarData!);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -79,8 +77,6 @@ public class LineupInfo
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
DatabaseHelper.Instance?.UpdateInstance(AvatarData!);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -101,8 +97,6 @@ public class LineupInfo
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
DatabaseHelper.Instance?.UpdateInstance(AvatarData!);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -97,8 +97,6 @@ public class MissionData : BaseDatabaseDataHelper
|
||||
else if (main.Value == MissionPhaseEnum.Accept) RunningMainMissionIds.SafeAdd(main.Key);
|
||||
|
||||
MainMissionInfo.Clear();
|
||||
|
||||
DatabaseHelper.Instance!.UpdateInstance(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace EggLink.DanhengServer.Util;
|
||||
|
||||
public static class ConfigManager
|
||||
{
|
||||
public static Logger logger = new("ConfigManager");
|
||||
public static Logger Logger = new("ConfigManager");
|
||||
public static ConfigContainer Config { get; private set; } = new();
|
||||
|
||||
public static void LoadConfig()
|
||||
@@ -13,10 +13,22 @@ public static class ConfigManager
|
||||
var file = new FileInfo("config.json");
|
||||
if (!file.Exists)
|
||||
{
|
||||
logger.Warn("Config file not found, creating a new one");
|
||||
Config = new ConfigContainer();
|
||||
Config.MuipServer.AdminKey = Guid.NewGuid().ToString();
|
||||
logger.Info("Muipserver Admin key: " + Config.MuipServer.AdminKey);
|
||||
Logger.Warn("Config file not found, creating a new one");
|
||||
|
||||
Config = new ConfigContainer
|
||||
{
|
||||
MuipServer =
|
||||
{
|
||||
AdminKey = Guid.NewGuid().ToString()
|
||||
},
|
||||
ServerOption =
|
||||
{
|
||||
Language = UtilTools.GetCurrentLanguage()
|
||||
}
|
||||
};
|
||||
|
||||
Logger.Info("Current Language is " + Config.ServerOption.Language);
|
||||
Logger.Info("Muipserver Admin key: " + Config.MuipServer.AdminKey);
|
||||
SaveConfig();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ namespace EggLink.DanhengServer.Util;
|
||||
|
||||
public class Crypto
|
||||
{
|
||||
private static readonly Random secureRandom = new();
|
||||
public static Logger logger = new("Crypto");
|
||||
private static readonly Random SecureRandom = new();
|
||||
public static Logger Logger = new("Crypto");
|
||||
|
||||
public static void Xor(byte[] packet, byte[] key)
|
||||
{
|
||||
@@ -16,7 +16,7 @@ public class Crypto
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.Error("Crypto error.", e);
|
||||
Logger.Error("Crypto error.", e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ public class Crypto
|
||||
public static string CreateSessionKey(string accountUid)
|
||||
{
|
||||
var random = new byte[64];
|
||||
secureRandom.NextBytes(random);
|
||||
SecureRandom.NextBytes(random);
|
||||
|
||||
var temp = accountUid + "." + DateTime.Now.Ticks + "." + secureRandom;
|
||||
var temp = accountUid + "." + DateTime.Now.Ticks + "." + SecureRandom;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
using EggLink.DanhengServer.Data;
|
||||
|
||||
namespace EggLink.DanhengServer.Util;
|
||||
|
||||
public static class GameTools
|
||||
{
|
||||
public static int GetRandomRelicMainAffix(int GroupId)
|
||||
{
|
||||
GameData.RelicMainAffixData.TryGetValue(GroupId, out var affixes);
|
||||
if (affixes == null) return 0;
|
||||
List<int> affixList = [];
|
||||
foreach (var affix in affixes.Values)
|
||||
if (affix.IsAvailable)
|
||||
affixList.Add(affix.AffixID);
|
||||
if (affixList.Count == 0) return 0;
|
||||
return affixList.RandomElement();
|
||||
}
|
||||
}
|
||||
28
Common/Util/UtilTools.cs
Normal file
28
Common/Util/UtilTools.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System.Globalization;
|
||||
using EggLink.DanhengServer.Data;
|
||||
|
||||
namespace EggLink.DanhengServer.Util;
|
||||
|
||||
public static class UtilTools
|
||||
{
|
||||
public static int GetRandomRelicMainAffix(int groupId)
|
||||
{
|
||||
GameData.RelicMainAffixData.TryGetValue(groupId, out var affixes);
|
||||
if (affixes == null) return 0;
|
||||
List<int> affixList = [];
|
||||
affixList.AddRange(from affix in affixes.Values where affix.IsAvailable select affix.AffixID);
|
||||
return affixList.Count == 0 ? 0 : affixList.RandomElement();
|
||||
}
|
||||
|
||||
public static string GetCurrentLanguage()
|
||||
{
|
||||
var uiCulture = CultureInfo.CurrentUICulture;
|
||||
return uiCulture.Name switch
|
||||
{
|
||||
"zh-CN" => "CHS",
|
||||
"zh-TW" => "CHT",
|
||||
"ja-JP" => "JP",
|
||||
_ => "EN"
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
using EggLink.DanhengServer.Data;
|
||||
using EggLink.DanhengServer.Data.Excel;
|
||||
using EggLink.DanhengServer.Database;
|
||||
using EggLink.DanhengServer.Database.Inventory;
|
||||
using EggLink.DanhengServer.GameServer.Game.Battle.Skill;
|
||||
using EggLink.DanhengServer.GameServer.Game.Player;
|
||||
@@ -347,7 +346,6 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
}
|
||||
}
|
||||
|
||||
DatabaseHelper.Instance?.UpdateInstance(Player.AvatarManager!.AvatarData);
|
||||
await Player.SendPacket(new PacketSyncLineupNotify(lineup));
|
||||
}
|
||||
|
||||
|
||||
@@ -88,8 +88,6 @@ public class ChessRogueManager(PlayerInstance player) : BasePlayerManager(player
|
||||
diceData.Surfaces = surfaceId;
|
||||
}
|
||||
|
||||
DatabaseHelper.Instance!.UpdateInstance(ChessRogueNousData);
|
||||
|
||||
return diceData;
|
||||
}
|
||||
|
||||
@@ -109,7 +107,6 @@ public class ChessRogueManager(PlayerInstance player) : BasePlayerManager(player
|
||||
}
|
||||
|
||||
diceData.Surfaces[index] = surfaceId;
|
||||
DatabaseHelper.Instance!.UpdateInstance(ChessRogueNousData);
|
||||
|
||||
return diceData;
|
||||
}
|
||||
@@ -133,8 +130,6 @@ public class ChessRogueManager(PlayerInstance player) : BasePlayerManager(player
|
||||
|
||||
foreach (var d in dice.SurfaceList) diceData.Surfaces[(int)d.Index] = (int)d.SurfaceId;
|
||||
|
||||
DatabaseHelper.Instance!.UpdateInstance(ChessRogueNousData);
|
||||
|
||||
return diceData;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,9 +62,6 @@ public class FriendManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
target.FriendList.Add(Player.Uid);
|
||||
target.SendApplyList.Remove(Player.Uid);
|
||||
|
||||
DatabaseHelper.Instance!.UpdateInstance(FriendData);
|
||||
DatabaseHelper.Instance!.UpdateInstance(target);
|
||||
|
||||
var targetData = PlayerData.GetPlayerByUid(targetUid)!;
|
||||
var targetPlayer = Listener.GetActiveConnection(targetUid);
|
||||
if (targetPlayer != null)
|
||||
|
||||
@@ -251,7 +251,6 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
}
|
||||
|
||||
if (sync && removedItems.Count > 0) await Player.SendPacket(new PacketPlayerSyncScNotify(removedItems));
|
||||
DatabaseHelper.Instance?.UpdateInstance(Data);
|
||||
return removedItems;
|
||||
}
|
||||
|
||||
@@ -486,8 +485,6 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
var i = (await Player.InventoryManager!.AddItem(item.ItemId, item.Count, false))!;
|
||||
i.Count = item.Count; // return the all thing
|
||||
}
|
||||
|
||||
DatabaseHelper.Instance!.UpdateInstance(Player.InventoryManager!.Data);
|
||||
}
|
||||
|
||||
return items;
|
||||
@@ -796,7 +793,6 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
|
||||
avatarData.Level = curLevel;
|
||||
avatarData.Exp = curExp;
|
||||
DatabaseHelper.Instance!.UpdateInstance(Player.AvatarManager.AvatarData!);
|
||||
// leftover
|
||||
Dictionary<int, ItemData> list = [];
|
||||
var leftover = exp;
|
||||
@@ -904,7 +900,6 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
|
||||
itemData.Level = curLevel;
|
||||
itemData.Exp = curExp;
|
||||
DatabaseHelper.Instance!.UpdateInstance(Data);
|
||||
// leftover
|
||||
Dictionary<int, ItemData> list = [];
|
||||
var leftover = exp;
|
||||
@@ -989,7 +984,6 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
await Player.InventoryManager!.RemoveItem(cost.ItemID, cost.ItemNum);
|
||||
|
||||
equipmentData.Promotion++;
|
||||
DatabaseHelper.Instance!.UpdateInstance(Player.InventoryManager.Data);
|
||||
await Player.SendPacket(new PacketPlayerSyncScNotify(equipmentData));
|
||||
|
||||
return true;
|
||||
@@ -1125,7 +1119,6 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
var avatarData = Player.AvatarManager!.GetAvatar(baseAvatarId);
|
||||
if (avatarData == null) return;
|
||||
avatarData.GetCurPathInfo().Rank++;
|
||||
DatabaseHelper.Instance!.UpdateInstance(Player.AvatarManager.AvatarData!);
|
||||
await Player.SendPacket(new PacketPlayerSyncScNotify(avatarData));
|
||||
}
|
||||
|
||||
@@ -1143,7 +1136,6 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
var itemData = Data.EquipmentItems.Find(x => x.UniqueId == equipmentUniqueId);
|
||||
if (itemData == null) return;
|
||||
itemData.Rank += rank;
|
||||
DatabaseHelper.Instance!.UpdateInstance(Data);
|
||||
await Player.SendPacket(new PacketPlayerSyncScNotify(itemData));
|
||||
}
|
||||
|
||||
|
||||
@@ -124,7 +124,6 @@ public class LineupManager : BasePlayerManager
|
||||
if (GetLineup(lineupIndex)!.BaseAvatars!.Count == 0) return false;
|
||||
LineupData.CurLineup = lineupIndex;
|
||||
LineupData.CurExtraLineup = -1;
|
||||
DatabaseHelper.Instance?.UpdateInstance(LineupData);
|
||||
|
||||
Player.SceneInstance?.SyncLineup();
|
||||
await Player.SendPacket(new PacketSyncLineupNotify(GetCurLineup()!));
|
||||
@@ -138,7 +137,6 @@ public class LineupManager : BasePlayerManager
|
||||
{
|
||||
// reset lineup
|
||||
LineupData.CurExtraLineup = -1;
|
||||
DatabaseHelper.Instance?.UpdateInstance(LineupData);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -281,7 +279,6 @@ public class LineupManager : BasePlayerManager
|
||||
else
|
||||
lineup.BaseAvatars?.RemoveAll(avatar => avatar.BaseAvatarId == avatarId);
|
||||
LineupData.Lineups[lineupIndex] = lineup;
|
||||
DatabaseHelper.Instance?.UpdateInstance(LineupData);
|
||||
|
||||
if (sendPacket)
|
||||
{
|
||||
@@ -354,7 +351,6 @@ public class LineupManager : BasePlayerManager
|
||||
var curLineup = GetCurLineup()!;
|
||||
curLineup.Mp -= count;
|
||||
curLineup.Mp = Math.Min(Math.Max(0, curLineup.Mp), 5);
|
||||
DatabaseHelper.Instance?.UpdateInstance(LineupData);
|
||||
|
||||
await Player.SendPacket(new PacketSceneCastSkillMpUpdateScNotify(castEntityId, curLineup.Mp));
|
||||
}
|
||||
@@ -365,7 +361,6 @@ public class LineupManager : BasePlayerManager
|
||||
var curLineup = GetCurLineup()!;
|
||||
curLineup.Mp += count;
|
||||
curLineup.Mp = Math.Min(Math.Max(0, curLineup.Mp), 5);
|
||||
DatabaseHelper.Instance?.UpdateInstance(LineupData);
|
||||
if (sendPacket)
|
||||
await Player.SendPacket(
|
||||
new PacketSyncLineupNotify(GetCurLineup()!, reason));
|
||||
|
||||
@@ -174,7 +174,6 @@ public class MissionManager : BasePlayerManager
|
||||
Status = MissionStatus.MissionDoing
|
||||
});
|
||||
|
||||
DatabaseHelper.Instance?.UpdateInstance(Data);
|
||||
if (sendPacket) await Player.SendPacket(new PacketPlayerSyncScNotify(sync));
|
||||
Player.SceneInstance!.SyncGroupInfo();
|
||||
if (mission.SubMissionInfo != null)
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace EggLink.DanhengServer.GameServer.Plugin;
|
||||
|
||||
public class PluginManager
|
||||
{
|
||||
private static readonly Logger logger = new("PluginManager");
|
||||
private static readonly Logger Logger = new("PluginManager");
|
||||
public static readonly Dictionary<IPlugin, PluginInfo> Plugins = [];
|
||||
|
||||
public static readonly Dictionary<IPlugin, List<Type>> PluginAssemblies = [];
|
||||
@@ -32,8 +32,7 @@ public class PluginManager
|
||||
Directory.CreateDirectory(ConfigManager.Config.Path.PluginPath);
|
||||
|
||||
var plugins = Directory.GetFiles(ConfigManager.Config.Path.PluginPath, "*.dll");
|
||||
var loaders = new List<PluginLoader>();
|
||||
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
|
||||
AppDomain.CurrentDomain.AssemblyResolve += (_, args) =>
|
||||
{
|
||||
var assemblyName = new AssemblyName(args.Name).Name + ".dll";
|
||||
var assemblyPath = Path.Combine(ConfigManager.Config.Path.PluginPath, assemblyName);
|
||||
@@ -70,18 +69,18 @@ public class PluginManager
|
||||
var pluginInfo = type.GetCustomAttribute<PluginInfo>();
|
||||
if (pluginInfo != null)
|
||||
{
|
||||
logger.Info(
|
||||
Logger.Info(
|
||||
$"Loaded plugin {pluginInfo.Name} v{pluginInfo.Version}: {pluginInfo.Description}");
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Info($"Loaded plugin {plugin}: No plugin info");
|
||||
Logger.Info($"Loaded plugin {plugin}: No plugin info");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Plugins.Values.Any(p => p.Name == pluginInfo.Name))
|
||||
{
|
||||
logger.Error($"Failed to load plugin {plugin}: Plugin already loaded");
|
||||
Logger.Error($"Failed to load plugin {plugin}: Plugin already loaded");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -99,25 +98,23 @@ public class PluginManager
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Error($"Failed to load plugin {plugin}: Plugin instance is null");
|
||||
Logger.Error($"Failed to load plugin {plugin}: Plugin instance is null");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error($"Failed to load plugin {plugin}: {ex.Message}");
|
||||
Logger.Error($"Failed to load plugin {plugin}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
public static void UnloadPlugin(IPlugin plugin)
|
||||
{
|
||||
if (Plugins.TryGetValue(plugin, out var value))
|
||||
{
|
||||
plugin.OnUnload();
|
||||
Plugins.Remove(plugin);
|
||||
PluginAssemblies.Remove(plugin);
|
||||
logger.Info($"Unloaded plugin {value.Name}");
|
||||
}
|
||||
if (!Plugins.TryGetValue(plugin, out var value)) return;
|
||||
plugin.OnUnload();
|
||||
Plugins.Remove(plugin);
|
||||
PluginAssemblies.Remove(plugin);
|
||||
Logger.Info($"Unloaded plugin {value.Name}");
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +122,7 @@ public class PluginManager
|
||||
{
|
||||
foreach (var plugin in Plugins.Keys) UnloadPlugin(plugin);
|
||||
|
||||
logger.Info(I18NManager.Translate("Server.ServerInfo.UnloadedItems", I18NManager.Translate("Word.Plugin")));
|
||||
Logger.Info(I18NManager.Translate("Server.ServerInfo.UnloadedItems", I18NManager.Translate("Word.Plugin")));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using EggLink.DanhengServer.Database;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Phone;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Phone;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
@@ -13,7 +12,6 @@ public class HandlerSelectChatBubbleCsReq : Handler
|
||||
var req = SelectChatBubbleCsReq.Parser.ParseFrom(data);
|
||||
|
||||
connection.Player!.Data.ChatBubble = (int)req.BubbleId;
|
||||
DatabaseHelper.Instance!.UpdateInstance(connection.Player!.Data);
|
||||
|
||||
await connection.SendPacket(new PacketSelectChatBubbleScRsp(req.BubbleId));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using EggLink.DanhengServer.Database;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Phone;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Phone;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
@@ -13,7 +12,6 @@ public class HandlerSelectPhoneThemeCsReq : Handler
|
||||
var req = SelectPhoneThemeCsReq.Parser.ParseFrom(data);
|
||||
|
||||
connection.Player!.Data.PhoneTheme = (int)req.ThemeId;
|
||||
DatabaseHelper.Instance!.UpdateInstance(connection.Player!.Data);
|
||||
|
||||
await connection.SendPacket(new PacketSelectPhoneThemeScRsp(req.ThemeId));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using EggLink.DanhengServer.Database;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Tutorial;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Tutorial;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
@@ -15,7 +14,6 @@ public class HandlerUnlockTutorialCsReq : Handler
|
||||
if (!player.TutorialData!.Tutorials.TryGetValue((int)req.TutorialId, out var _))
|
||||
{
|
||||
player.TutorialData!.Tutorials.Add((int)req.TutorialId, TutorialStatus.TutorialUnlock);
|
||||
DatabaseHelper.Instance?.UpdateInstance(player.TutorialData!);
|
||||
}
|
||||
|
||||
await connection.SendPacket(new PacketUnlockTutorialScRsp(req.TutorialId));
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using EggLink.DanhengServer.Database;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Tutorial;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Tutorial;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
@@ -15,7 +14,6 @@ public class HandlerUnlockTutorialGuideCsReq : Handler
|
||||
if (!player.TutorialGuideData!.Tutorials.TryGetValue((int)req.GroupId, out var _))
|
||||
{
|
||||
player.TutorialGuideData!.Tutorials.Add((int)req.GroupId, TutorialStatus.TutorialUnlock);
|
||||
DatabaseHelper.Instance?.UpdateInstance(player.TutorialGuideData!);
|
||||
}
|
||||
|
||||
await connection.SendPacket(new PacketUnlockTutorialGuideScRsp(req.GroupId));
|
||||
|
||||
@@ -211,7 +211,7 @@ public class EntryPoint
|
||||
|
||||
var elapsed = DateTime.Now - time;
|
||||
Logger.Info(I18NManager.Translate("Server.ServerInfo.ServerStarted",
|
||||
elapsed.TotalSeconds.ToString(CultureInfo.InvariantCulture)[..4]));
|
||||
Math.Round(elapsed.TotalSeconds, 2).ToString(CultureInfo.InvariantCulture)));
|
||||
|
||||
GenerateLogMap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user