fix: the server will reupgrade when new player register

This commit is contained in:
Somebody
2025-05-01 18:04:14 +08:00
parent 8cd8a47364
commit f874671e24
3 changed files with 18 additions and 3 deletions

View File

@@ -3,6 +3,7 @@
public static class GameConstants
{
public const string GAME_VERSION = "3.2.0";
public const string AvatarDbVersion = "20250430";
public const int GameVersionInt = 3200;
public const int MAX_STAMINA = 300;
public const int MAX_STAMINA_RESERVE = 2400;

View File

@@ -164,6 +164,8 @@ public class PlayerInstance(PlayerData data)
Uid = Data.Uid;
ActivityManager = new ActivityManager(this);
AvatarManager = new AvatarManager(this);
AvatarManager.AvatarData.DatabaseVersion = GameConstants.AvatarDbVersion;
LineupManager = new LineupManager(this);
InventoryManager = new InventoryManager(this);
BattleManager = new BattleManager(this);
@@ -326,12 +328,13 @@ public class PlayerInstance(PlayerData data)
public async ValueTask ChangeAvatarPathType(int baseAvatarId, MultiPathAvatarTypeEnum type)
{
FormalAvatarInfo avatar;
if (baseAvatarId == 8001)
{
var id = (int)((int)type + Data.CurrentGender - 1);
if (Data.CurBasicType == id) return;
Data.CurBasicType = id;
var avatar = AvatarManager!.GetHero()!;
avatar = AvatarManager!.GetHero()!;
// Set avatar path
avatar.AvatarId = id;
avatar.ValidateHero(Data.CurrentGender);
@@ -343,7 +346,7 @@ public class PlayerInstance(PlayerData data)
}
else
{
var avatar = AvatarManager!.GetFormalAvatar(baseAvatarId)!;
avatar = AvatarManager!.GetFormalAvatar(baseAvatarId)!;
avatar.AvatarId = (int)type;
avatar.SetCurSp(0, LineupManager!.GetCurLineup()!.IsExtraLineup());
// Save new skill tree
@@ -351,6 +354,15 @@ public class PlayerInstance(PlayerData data)
await SendPacket(new PacketAvatarPathChangedNotify((uint)avatar.AvatarId, (MultiPathAvatarType)type));
await SendPacket(new PacketPlayerSyncScNotify(avatar));
}
// check if avatar is in scene
if (SceneInstance != null)
{
var avatarScene = SceneInstance.AvatarInfo.Values.FirstOrDefault(x => x.AvatarInfo.BaseAvatarId == baseAvatarId);
if (avatarScene == null) return;
await avatarScene.ClearAllBuff();
}
}
public async ValueTask ChangeAvatarSkin(int avatarId, int skinId)

View File

@@ -287,7 +287,7 @@ public class EntryPoint
var updated = false;
foreach (var avatarData in DatabaseHelper.GetAllInstanceFromMap<AvatarData>()!)
{
if (avatarData.DatabaseVersion == "20250430") continue;
if (avatarData.DatabaseVersion == GameConstants.AvatarDbVersion) continue;
foreach (var avatar in avatarData.Avatars)
{
@@ -308,6 +308,8 @@ public class EntryPoint
foreach (var info in avatar.PathInfoes)
{
if (info.Value.PathId == 0)
info.Value.PathId = info.Key;
formalAvatar.PathInfos.Add(info.Key, new PathInfo(info.Value.PathId)
{
PathId = info.Value.PathId,