Ejemplo n.º 1
0
        internal void InitResearchRestrictions()
        {
            // 1.194            MySectorWeatherComponent wc;
            //            WeatherType wt;

            if (bNewResearch)
            {
                MyVisualScriptLogicProvider.ResearchListClear();
                MyVisualScriptLogicProvider.ResearchListWhitelist(false); // set it to be 'black list'
            }

            // TODO: Figure out how to disable game-based progression tree...
            // A: you can't.  combo of editting researchgroups.sbc and MOD API

            //            MyVisualScriptLogicProvider.BlockFunctionalityChanged += FunctionalityChanged;

            NeedsResearch(refinery, TechGroup.Permabanned);
            NeedsResearch(blastFurnace, TechGroup.Permabanned);
            NeedsResearch(blastFurnace, TechGroup.Permabanned);
            NeedsResearch(jumpDrive, TechGroup.Permabanned);
            NeedsResearch(projectorLarge, TechGroup.Permabanned);
            NeedsResearch(projectorSmall, TechGroup.Permabanned);
            NeedsResearch(largeMissileTurret, TechGroup.Rockets);
            NeedsResearch(smallMissileTurret, TechGroup.Rockets);
            NeedsResearch(rocketLauncher, TechGroup.Rockets);
            NeedsResearch(largeRocketLauncher, TechGroup.Rockets);
            NeedsResearch(smallReloadableRocketLauncher, TechGroup.Rockets);
            NeedsResearch(ionThrusterSmallShipSmall, TechGroup.Permabanned);
            NeedsResearch(ionThrusterSmallShipLarge, TechGroup.Permabanned);
            NeedsResearch(ionThrusterLargeShipSmall, TechGroup.Permabanned);
            NeedsResearch(ionThrusterLargeShipLarge, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterSmallShipSmall, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterSmallShipLarge, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterLargeShipSmall, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterLargeShipLarge, TechGroup.Permabanned);
            NeedsResearch(atmoThrusterSmallShipSmall, TechGroup.AtmosphericEngines);
            NeedsResearch(atmoThrusterSmallShipLarge, TechGroup.AtmosphericEngines);
            NeedsResearch(atmoThrusterLargeShipSmall, TechGroup.AtmosphericEngines);
            NeedsResearch(atmoThrusterLargeShipLarge, TechGroup.AtmosphericEngines);
            NeedsResearch(oxygenFarm, TechGroup.OxygenFarm);
            NeedsResearch(oxygenGeneratorLarge, TechGroup.OxygenGenerators);
            NeedsResearch(oxygenGeneratorSmall, TechGroup.OxygenGenerators);
            NeedsResearch(oxygenTankLarge, TechGroup.GasStorage);
            NeedsResearch(oxygenTankSmall, TechGroup.GasStorage);
            NeedsResearch(hydrogenTankLarge, TechGroup.GasStorage);
            NeedsResearch(hydrogenTankSmall, TechGroup.GasStorage);

            //SE 1.194 V33
            NeedsResearch(LargeHydrogenTankSmall, TechGroup.GasStorage);
            NeedsResearch(SmallHydrogenTankSmall, TechGroup.GasStorage);

            NeedsResearch(EngineLarge, TechGroup.GasStorage);
            NeedsResearch(EngineSmall, TechGroup.GasStorage);

            NeedsResearch(WindTurbineLarge, TechGroup.AtmosphericEngines);

            NeedsResearch(SmallGatlingTurret, TechGroup.BasicWeapons);
            NeedsResearch(SmallRocketLauncherReload, TechGroup.BasicWeapons);
            NeedsResearch(InteriorTurret, TechGroup.BasicWeapons);
            NeedsResearch(LargeGatlingTurret, TechGroup.BasicWeapons);
//            NeedsResearch(largeMissileTurret, TechGroup.BasicWeapons);
//            NeedsResearch(smallMissileTurret, TechGroup.BasicWeapons);

            NeedsResearch(SkLarge, TechGroup.Permabanned);
            NeedsResearch(SkSmall, TechGroup.Permabanned);
            NeedsResearch(BasicAssembler, TechGroup.Permabanned);

            var gameVersion = MyAPIGateway.Session.Version;

            // V26.  For SE 1.192
            if ((gameVersion.Major == 1 && gameVersion.Minor >= 192) || gameVersion.Major > 1)
            {
                NeedsResearch(SafeZoneBlock, TechGroup.Permabanned);
                NeedsResearch(StoreBlock, TechGroup.Permabanned);
                NeedsResearch(ContractBlock, TechGroup.Permabanned);

                // V27 SE 1.192 Economy DLC
                NeedsResearch(VendingMachine, TechGroup.Permabanned);
                NeedsResearch(AtmBlock, TechGroup.Permabanned);
            }
            //   For SE 1.193
            if ((gameVersion.Major == 1 && gameVersion.Minor >= 193) || gameVersion.Major > 1)
            {
                NeedsResearch(FoodDispenser, TechGroup.Permabanned);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        internal void InitResearchRestrictions()
        {
            // 1.194            MySectorWeatherComponent wc;
            //            WeatherType wt;

            if (bNewResearch)
            {
                MyVisualScriptLogicProvider.ResearchListClear();
                MyVisualScriptLogicProvider.ResearchListWhitelist(false); // set it to be 'black list'
            }

            // TODO: Figure out how to disable game-based progression tree...
            // A: you can't.  combo of editting researchgroups.sbc and MOD API

            //            MyVisualScriptLogicProvider.BlockFunctionalityChanged += FunctionalityChanged;

            NeedsResearch(refinery, TechGroup.Permabanned);
            NeedsResearch(blastFurnace, TechGroup.Permabanned);
            NeedsResearch(blastFurnace, TechGroup.Permabanned);
            NeedsResearch(jumpDrive, TechGroup.Permabanned);
            NeedsResearch(projectorLarge, TechGroup.Permabanned);
            NeedsResearch(projectorSmall, TechGroup.Permabanned);
            NeedsResearch(largeMissileTurret, TechGroup.Rockets);
            NeedsResearch(smallMissileTurret, TechGroup.Rockets);
            NeedsResearch(rocketLauncher, TechGroup.Rockets);
            NeedsResearch(largeRocketLauncher, TechGroup.Rockets);
            NeedsResearch(smallReloadableRocketLauncher, TechGroup.Rockets);
            NeedsResearch(ionThrusterSmallShipSmall, TechGroup.Permabanned);
            NeedsResearch(ionThrusterSmallShipLarge, TechGroup.Permabanned);
            NeedsResearch(ionThrusterLargeShipSmall, TechGroup.Permabanned);
            NeedsResearch(ionThrusterLargeShipLarge, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterSmallShipSmall, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterSmallShipLarge, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterLargeShipSmall, TechGroup.Permabanned);
            NeedsResearch(hydroThrusterLargeShipLarge, TechGroup.Permabanned);
            NeedsResearch(atmoThrusterSmallShipSmall, TechGroup.AtmosphericEngines);
            NeedsResearch(atmoThrusterSmallShipLarge, TechGroup.AtmosphericEngines);
            NeedsResearch(atmoThrusterLargeShipSmall, TechGroup.AtmosphericEngines);
            NeedsResearch(atmoThrusterLargeShipLarge, TechGroup.AtmosphericEngines);

            NeedsResearch(oxygenFarm, TechGroup.OxygenFarm);
            NeedsResearch(oxygenGeneratorLarge, TechGroup.OxygenGenerators);
            NeedsResearch(oxygenGeneratorSmall, TechGroup.OxygenGenerators);
            NeedsResearch(oxygenTankLarge, TechGroup.GasStorage);
            NeedsResearch(oxygenTankSmall, TechGroup.GasStorage);
            NeedsResearch(hydrogenTankLarge, TechGroup.GasStorage);
            NeedsResearch(hydrogenTankSmall, TechGroup.GasStorage);

            //SE 1.194 V33
            NeedsResearch(LargeHydrogenTankSmall, TechGroup.GasStorage);
            NeedsResearch(SmallHydrogenTankSmall, TechGroup.GasStorage);

            NeedsResearch(EngineLarge, TechGroup.GasStorage);
            NeedsResearch(EngineSmall, TechGroup.GasStorage);

            NeedsResearch(WindTurbineLarge, TechGroup.AtmosphericEngines);

            NeedsResearch(SmallGatlingTurret, TechGroup.BasicWeapons);
            NeedsResearch(SmallRocketLauncherReload, TechGroup.BasicWeapons);
            NeedsResearch(InteriorTurret, TechGroup.BasicWeapons);
            NeedsResearch(LargeGatlingTurret, TechGroup.BasicWeapons);
            //            NeedsResearch(largeMissileTurret, TechGroup.BasicWeapons);
            //            NeedsResearch(smallMissileTurret, TechGroup.BasicWeapons);

            NeedsResearch(SkLarge, TechGroup.Permabanned);
            NeedsResearch(SkSmall, TechGroup.Permabanned);
            NeedsResearch(BasicAssembler, TechGroup.Permabanned);


            var gameVersion = MyAPIGateway.Session.Version;

            if ((gameVersion.Major == 1 && gameVersion.Minor >= 195) || gameVersion.Major > 1)
            {
                // V1.195 DLC
                NeedsResearch(SmallBlockSmallAtmosphericThrustSciFi, TechGroup.AtmosphericEngines);
                NeedsResearch(SmallBlockLargeAtmosphericThrustSciFi, TechGroup.AtmosphericEngines);
                NeedsResearch(LargeBlockSmallAtmosphericThrustSciFi, TechGroup.AtmosphericEngines);
                NeedsResearch(LargeBlockLargeAtmosphericThrustSciFi, TechGroup.AtmosphericEngines);

                NeedsResearch(SmallBlockSmallThrustSciFi, TechGroup.Permabanned);
                NeedsResearch(SmallBlockLargeThrustSciFi, TechGroup.Permabanned);
                NeedsResearch(LargeBlockSmallThrustSciFi, TechGroup.Permabanned);
                NeedsResearch(LargeBlockLargeThrustSciFi, TechGroup.Permabanned);
            }

            // V26.  For SE 1.192
            if ((gameVersion.Major == 1 && gameVersion.Minor >= 192) || gameVersion.Major > 1)
            {
                NeedsResearch(SafeZoneBlock, TechGroup.Permabanned);
                NeedsResearch(StoreBlock, TechGroup.Permabanned);
                NeedsResearch(ContractBlock, TechGroup.Permabanned);

                // V27 SE 1.192 Economy DLC
                NeedsResearch(VendingMachine, TechGroup.Permabanned);
                NeedsResearch(AtmBlock, TechGroup.Permabanned);
            }
            //   For SE 1.193
            if ((gameVersion.Major == 1 && gameVersion.Minor >= 193) || gameVersion.Major > 1)
            {
                NeedsResearch(FoodDispenser, TechGroup.Permabanned);
            }
            //   For SE 1.199
            if ((gameVersion.Major == 1 && gameVersion.Minor >= 199) || gameVersion.Major > 1)
            {
                NeedsResearch(IndustrialRefinery, TechGroup.Permabanned);
//                NeedsResearch(IndustrialAssembler, TechGroup.Permabanned);

                NeedsResearch(IndustrialLGLargeHTruster, TechGroup.Permabanned);
                NeedsResearch(IndustrialLGSmallHTruster, TechGroup.Permabanned);
                NeedsResearch(IndustrialSGLargeHTruster, TechGroup.Permabanned);
                NeedsResearch(IndustrialSGSmallHTruster, TechGroup.Permabanned);

                NeedsResearch(LargeHydrogenTankIndustrial, TechGroup.GasStorage);
            }
            if ((gameVersion.Major == 1 && gameVersion.Minor >= 200) || gameVersion.Major > 1)
            {
                NeedsResearch(LargeBlockLargeCalibreGun, TechGroup.BasicWeapons);
                NeedsResearch(SmallBlockAutocannon, TechGroup.BasicWeapons);
                NeedsResearch(SmallGatlingGunWarfare2, TechGroup.BasicWeapons);

                // encourage engineering
                NeedsResearch(LargeTurretControlBlock, TechGroup.BasicWeapons);
                NeedsResearch(SmallTurretControlBlock, TechGroup.BasicWeapons);


                NeedsResearch(SmallMissileLauncherWarfare2, TechGroup.Rockets);
                NeedsResearch(LargeRailgun, TechGroup.Rockets);
                NeedsResearch(SmallRailgun, TechGroup.Rockets);
                NeedsResearch(SmallMissileLauncherWarfare2, TechGroup.Rockets);

                // new turrets are banned because they might change the balance too much
                NeedsResearch(LargeBlockMediumCalibreTurret, TechGroup.Permabanned);
                NeedsResearch(AutoCannonTurret, TechGroup.Permabanned);
                NeedsResearch(SmallBlockMediumCalibreTurret, TechGroup.Permabanned);

                NeedsResearch(SmallBlockSmallModularThruster, TechGroup.Permabanned);
                NeedsResearch(SmallBlockLargeModularThruster, TechGroup.Permabanned);
                NeedsResearch(LargeBlockSmallModularThruster, TechGroup.Permabanned);
                NeedsResearch(LargeBlockLargeModularThruster, TechGroup.Permabanned);
            }
        }