Skip to content

Commit e7551ea

Browse files
committed
fix roleid
1 parent d6b30df commit e7551ea

File tree

3 files changed

+25
-26
lines changed

3 files changed

+25
-26
lines changed

PatchUtils.cs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public static void LoadMultiplayerData()
5454
return;
5555
}
5656

57-
var rez = new List<CustomData.RoleInfo>();
57+
GameClientLobby.Self.myRoles = new List<CustomData.RoleInfo>();
58+
GameClientLobby.Self.myRolesExisted = new List<CustomData.RoleInfo>();
5859

5960
foreach (var file in Directory.GetFiles(path))
6061
{
@@ -70,28 +71,24 @@ public static void LoadMultiplayerData()
7071

7172
var steamId = SteamFriendPrcMgr.Instance.GetMyInfo()._SteamID.m_SteamID;
7273

73-
var roleId = steamId.GetHashCode();
74+
var roleId = steamId.GetHashCode() ^ customData.charactorName.GetHashCode();
7475

75-
if (roleId > int.MaxValue - 4)
76-
{
77-
roleId = 1;
78-
}
79-
80-
rez.Add(new CustomData.RoleInfo()
76+
var role = new CustomData.RoleInfo()
8177
{
8278
appearData = customData.appearData.Serialize(),
8379
nudeData = customData.nudeAvatarData.Serialize(),
8480
name = customData.charactorName,
8581
sex = (byte)(int)customData.sex,
8682
steamId = steamId,
87-
roleID = roleId + rez.Count + 1
88-
});
83+
roleID = roleId
84+
};
85+
86+
GameClientLobby.Self.myRoles.Add(role);
87+
GameClientLobby.Self.myRolesExisted.Add(role);
88+
8989
}
9090
}
9191
}
92-
93-
GameClientLobby.Self.myRoles = rez;
94-
GameClientLobby.Self.myRolesExisted = rez;
9592
}
9693
}
9794
}

UIMLoginControl_Patch.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ public static bool EnterLobby(UIMLoginControl __instance)
2020
public static bool BtnOKOnClick(UIMLoginControl __instance)
2121
{
2222
__instance.BtnOK?.Invoke();
23-
var roleId = Traverse.Create(__instance).Field("deleteRoleIndex").GetValue<int>();
2423

25-
CustomData.RoleInfo role = MLPlayerInfo.Instance.GetRoleInfo(__instance.rc.GetSelectedIndex()).mRoleInfo;
24+
var roleId = MLPlayerInfo.Instance.GetRoleInfo(Traverse.Create(__instance).Field("deleteRoleIndex").GetValue<int>()).mRoleInfo.roleID;
25+
26+
CustomData.RoleInfo role = GameClientLobby.Self.myRoles.Find(it => it.roleID == roleId);
2627
role.deletedFlag = 1;
2728
GameClientLobby.Self.myRolesExisted.Remove(role);
2829
GameClientLobby.Self.myRolesDeleted.Clear();

UIPlayerBuildCtrl_Patch.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,42 +14,43 @@ public static bool CreatePlayer(UIPlayerBuildCtrl __instance)
1414
{
1515
if (__instance.actionOk)
1616
{
17+
__instance.actionOk = false;
18+
__instance.Invoke("ResetActionOK", 2.0f);
19+
1720
var name = Traverse.Create(__instance).Field("mNameInput").Property("text").GetValue<string>();
1821

1922
if (!string.IsNullOrEmpty(name))
2023
{
24+
if (GameClientLobby.Self.myRoles.Any(r => r.deletedFlag ==0 && r.name == name))
25+
{
26+
MessageBox_N.ShowOkBox(PELocalization.GetString(ErrorMessage.NAME_HAS_EXISTED));
27+
return false;
28+
}
29+
2130
var playerModel = Traverse.Create(__instance).Field("mCurrent").GetValue<PlayerModel>();
2231
byte[] appearData = playerModel.mAppearData.Serialize();
2332
byte[] nudeData = playerModel.mNude.Serialize();
2433

2534
var steamId = SteamFriendPrcMgr.Instance.GetMyInfo()._SteamID.m_SteamID;
2635

27-
var roleId = steamId.GetHashCode();
28-
29-
if (roleId > int.MaxValue - 4)
30-
{
31-
roleId = 1;
32-
}
36+
var roleId = steamId.GetHashCode() ^ name.GetHashCode();
3337

3438
var role = new CustomData.RoleInfo()
3539
{
3640
appearData = appearData,
3741
nudeData = nudeData,
3842
name = name,
3943
sex = (byte)(int)Traverse.Create(__instance).Property("Sex").GetValue(),
40-
steamId = SteamFriendPrcMgr.Instance.GetMyInfo()._SteamID.m_SteamID,
41-
roleID = roleId + GameClientLobby.Self.myRoles.Where(r => r.deletedFlag != 1).Select(r => r.roleID).DefaultIfEmpty(0).Max() + 1
44+
steamId = steamId,
45+
roleID = roleId
4246
};
4347

4448
GameClientLobby.Self.myRoles.Add(role);
4549
GameClientLobby.Self.myRolesExisted.Add(role);
46-
role.roleID = GameClientLobby.Self.myRoles.Count;
4750

4851
PatchUtils.SaveMultiplayerData();
4952

5053
MLPlayerInfo.Instance.SetSelectedRole(role.name);
51-
MLPlayerInfo.Instance.UpdateScene();
52-
5354

5455
PeSceneCtrl.Instance.GotoMultiRoleScene();
5556

0 commit comments

Comments
 (0)