private void LockAllResearch() { MyVisualScriptLogicProvider.ResearchListClear(); MyVisualScriptLogicProvider.PlayerResearchClearAll(); foreach (var k in Definitions.Unlocks) { if (MyDefinitionManager.Static.GetDefinitionAny(k) is MyCubeBlockDefinition) { MyVisualScriptLogicProvider.ResearchListAddItem(k); } } }
public override bool Initialize(out MyUpdateOrder order) { order = MyUpdateOrder.NoUpdate; if (NetworkHandlerSystem.IsClient) { if (MyAPIGateway.Session.Player == null) { return(false); } } /* Handle Server side */ if (NetworkHandlerSystem.IsServer) { /* LOAD World Settings */ try { using (var sw = MyAPIGateway.Utilities.ReadFileInWorldStorage(Settings.configFile, typeof(Core))) settings.Load(MyAPIGateway.Utilities.SerializeFromXML <SettingsFile>(sw.ReadToEnd())); } catch (Exception e) { if (e.HResult == -2147024894) // Unable to find the specified file. { settings = settings.CreateDefaults(); } else { MyLog.Default.WriteLine($"Possible Old Settings: {e.Message}"); MyLog.Default.WriteLine($"Possible Old SettingsStack: {e.StackTrace}"); MyLog.Default.Flush(); SettingsFile possibleOldSettings = new SettingsFile(); try { using (var sw = MyAPIGateway.Utilities.ReadFileInWorldStorage(Settings.configFile, typeof(Core))) possibleOldSettings = (SettingsFile)MyAPIGateway.Utilities.SerializeFromXML <Settings>(sw.ReadToEnd()); using (var sw = MyAPIGateway.Utilities.WriteFileInWorldStorage("config.xml.old", typeof(Core))) sw.Write(MyAPIGateway.Utilities.SerializeToXML(possibleOldSettings)); /* Create Defaults then Load and Save Old Settings file */ settings = settings.CreateDefaults(); settings.Load(possibleOldSettings); MyLog.Default.WriteLine("Successfully Loaded Old World Settings:"); } catch (Exception e1) { MyLog.Default.WriteLine($"ERROR Get World Settings: {e1.Message}"); MyLog.Default.WriteLine($"ERROR Get World SettingsStack: {e1.StackTrace}"); MyLog.Default.Flush(); settings = settings.CreateDefaults(); } } } /* Save after loading to add new default settings just incase we added more */ settings.SaveSettings(true); try { var cfg = MyAPIGateway.Utilities.ConfigDedicated; cfg.Load(); ulong steamId; foreach (string id in cfg.Administrators) { if (ulong.TryParse(id, out steamId)) { unlockAllPlayers.Add(steamId, true); MyLog.Default.WriteLine($"Admin Found {steamId}"); } } if (unlockAllPlayers.Count() == 0) { MyLog.Default.WriteLine($"No Admins"); } } catch (Exception e) { MyLog.Default.WriteLine($"Failed to load Server cfg file: {e.Message}"); MyLog.Default.Flush(); } if (settings.AlwaysUnlocked == null) { settings.AlwaysUnlocked = new HashSet <SerializableDefinitionId>(); } MyAPIGateway.Session.DamageSystem.RegisterDestroyHandler(0, DestroyHandler); MyVisualScriptLogicProvider.PlayerResearchClearAll(); PrepareCache(); } /* Setup Client and Server wide communication*/ try { PlayerInit = nhs.Create <long>(null, PlayerJoined, EventOptions.OnlyToServer); SendUnlockNotification = nhs.Create <MyDefinitionId, string, string>(LearnedById, null, EventOptions.OnlyToTarget); } catch (Exception e) { MyLog.Default.WriteLine($"Network Notifications ERROR: {e.StackTrace}"); MyLog.Default.Flush(); } if (NetworkHandlerSystem.IsClient) { try { MyVisualScriptLogicProvider.ResearchListWhitelist(true); MyVisualScriptLogicProvider.PlayerResearchClear(); MyLog.Default.WriteLine($"Check ControlledEntity"); if (MyAPIGateway.Session.Player.Controller.ControlledEntity != null && MyAPIGateway.Session.Player.Controller.ControlledEntity.Entity is IMyCharacter) { MyLog.Default.WriteLine($"InvokeOnGameThread Start"); MyLog.Default.Flush(); MyAPIGateway.Utilities.InvokeOnGameThread(() => { try { MyLog.Default.WriteLine($"Start InitPlayer"); MyLog.Default.Flush(); PlayerInit(MyAPIGateway.Session.Player.PlayerID); } catch (Exception e) { MyLog.Default.WriteLine($"PlayerInit: {e.Message}"); MyLog.Default.Flush(); } }); } else { MyLog.Default.WriteLine($"ControlledEntityChanged"); MyLog.Default.Flush(); MyAPIGateway.Session.Player.Controller.ControlledEntityChanged += Controller_ControlledEntityChanged; } } catch (Exception e) { MyLog.Default.WriteLine($"NetworkHandlerSystem INIT: {e.Message}"); MyLog.Default.Flush(); } } GetAllBlocks(); MyLog.Default.WriteLine($"SUCCESSFUL INIT!"); MyLog.Default.Flush(); return(true); }