public static bool CreatePlayer(UIPlayerBuildCtrl __instance) { if (Pathea.PeGameMgr.IsMulti) { if (__instance.actionOk) { __instance.actionOk = false; __instance.Invoke("ResetActionOK", 2.0f); var name = Traverse.Create(__instance).Field("mNameInput").Property("text").GetValue <string>(); if (!string.IsNullOrEmpty(name)) { if (GameClientLobby.Self.myRoles.Any(r => r.deletedFlag == 0 && r.name == name)) { MessageBox_N.ShowOkBox(PELocalization.GetString(ErrorMessage.NAME_HAS_EXISTED)); return(false); } var playerModel = Traverse.Create(__instance).Field("mCurrent").GetValue <PlayerModel>(); byte[] appearData = playerModel.mAppearData.Serialize(); byte[] nudeData = playerModel.mNude.Serialize(); var steamId = SteamFriendPrcMgr.Instance.GetMyInfo()._SteamID.m_SteamID; var roleId = (steamId.GetHashCode() ^ name.GetHashCode()) % 13000000; var role = new CustomData.RoleInfo() { appearData = appearData, nudeData = nudeData, name = name, sex = (byte)(int)Traverse.Create(__instance).Property("Sex").GetValue(), steamId = steamId, roleID = roleId }; GameClientLobby.Self.myRoles.Add(role); GameClientLobby.Self.myRolesExisted.Add(role); PatchUtils.SaveMultiplayerData(); MLPlayerInfo.Instance.SetSelectedRole(role.name); PeSceneCtrl.Instance.GotoMultiRoleScene(); return(false); } } } return(true); }
public static bool BtnOKOnClick(UIMLoginControl __instance) { __instance.BtnOK?.Invoke(); var roleId = MLPlayerInfo.Instance.GetRoleInfo(Traverse.Create(__instance).Field("deleteRoleIndex").GetValue <int>()).mRoleInfo.roleID; CustomData.RoleInfo role = GameClientLobby.Self.myRoles.Find(it => it.roleID == roleId); role.deletedFlag = 1; GameClientLobby.Self.myRolesExisted.Remove(role); GameClientLobby.Self.myRolesDeleted.Clear(); GameClientLobby.Self.myRolesDeleted.Add(role); MLPlayerInfo.Instance.DeleteRole(roleId); PatchUtils.SaveMultiplayerData(); return(false); }
public static void LoadMultiplayerData() { var path = Path.Combine(GameConfig.GetUserDataPath(), "PlanetExplorers/MultiplayerCharacter"); if (!Directory.Exists(path)) { return; } GameClientLobby.Self.myRoles = new List <CustomData.RoleInfo>(); GameClientLobby.Self.myRolesExisted = new List <CustomData.RoleInfo>(); foreach (var file in Directory.GetFiles(path)) { using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { if (fs.Length > 0) { byte[] buff = new byte[fs.Length]; fs.Read(buff, 0, buff.Length); var customData = new CustomCharactor.CustomData(); customData.Deserialize(buff); var steamId = SteamFriendPrcMgr.Instance.GetMyInfo()._SteamID.m_SteamID; var roleId = (steamId.GetHashCode() ^ customData.charactorName.GetHashCode()) % 13000000; var role = new CustomData.RoleInfo() { appearData = customData.appearData.Serialize(), nudeData = customData.nudeAvatarData.Serialize(), name = customData.charactorName, sex = (byte)(int)customData.sex, steamId = steamId, roleID = roleId }; GameClientLobby.Self.myRoles.Add(role); GameClientLobby.Self.myRolesExisted.Add(role); } } } }