コード例 #1
0
        public void InitializeStorage()
        {
            Echo("Setting up storage..");
            if (useCustomData == true)
            {
                MyIniParseResult iniResult;
                if (!config.TryParse(Me.CustomData, out iniResult))
                {
                    Echo("Try setting useCustomData to false.");
                    throw new Exception(iniResult.ToString());
                }
            }
            else
            {
                config.TryParse(Storage);
            }

            double __RWYHDG = config.Get("LocalizerData", "RWYHDG").ToDouble(-1);

            if (__RWYHDG.Equals(-1))
            {
                config.Set("LocalizerData", "RWYHDG", 0);
                config.Set("LocalizerData", "GPS", "N/A");
                config.Set("GlideSlopeData", "GPS", "N/A");

                if (useCustomData == true)
                {
                    Me.CustomData = config.ToString();
                }
                else
                {
                    Storage = config.ToString();
                }
            }
        }
コード例 #2
0
        public void Main(string argument, UpdateType updateSource)
        {
            bool RecalculateRunwayHeadings = false;

            if (argument == "recalculate")
            {
                RecalculateRunwayHeadings = true;
            }

            if (!SetupComplete)
            {
                Setup();
            }

            // Init storage
            InitializeStorage();


            // Set default data if
            if (!IsDataFormatValid())
            {
                SetDefaultData();
                return;
            }


            // Validate GPS strings.
            bool IsTouchdownZoneAValid = ValidateGPSFormat(config.Get("TouchdownZone", "GPSA").ToString());
            bool IsTouchdownZoneBValid = ValidateGPSFormat(config.Get("TouchdownZone", "GPSB").ToString());

            if (!IsTouchdownZoneAValid || !IsTouchdownZoneBValid)
            {
                throw new Exception("Please enter the runway data or see the guide for help.");
            }

            int RunwayHDGA = config.Get("Runway", "HeadingA").ToInt16();
            int RunwayHDGB = config.Get("Runway", "HeadingB").ToInt16();

            if (RunwayHDGA == -1 || RunwayHDGB == -1 || RecalculateRunwayHeadings)
            {
                FindCockpitBlock();
                DetectRunwayHeadings();
                return;
            }


            // Construct & send message.
            string message = config.ToString();

            IGC.SendBroadcastMessage(antennaChannel, message);
        }
コード例 #3
0
            public void Save(bool prepare = false)
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("LCD", "filter", lcd_filter);

                MyIni.Set("Limit", "default", limit_default);
                if (prepare)
                {
                    MyIni.Set("Limit", "Cobalt", "1000");
                    MyIni.Set("Limit", "Iron", "100000");
                    MyIni.Set("Limit", "Gold", "1000");
                    MyIni.Set("Limit", "Platinum", "1000");
                    MyIni.Set("Limit", "Silver", "1000");
                }
                MyIni.Set("Color", "default", color_default);
                if (prepare)
                {
                    MyIni.Set("Color", "Cobalt", "000,080,080,255");
                    MyIni.Set("Color", "Gold", "255,153,000,255");
                    MyIni.Set("Color", "Ice", "040,130,130,255");
                    MyIni.Set("Color", "Iron", "040,040,040,255");
                    MyIni.Set("Color", "Nickel", "110,080,080,255");
                    MyIni.Set("Color", "Platinum", "120,150,120,255");
                    MyIni.Set("Color", "Silicon", "150,150,150,255");
                    MyIni.Set("Color", "Silver", "120,120,150,255");
                    MyIni.Set("Color", "Stone", "120,040,000,200");
                    MyIni.Set("Color", "Uranium", "040,130,000,200");
                }
                program.Me.CustomData = MyIni.ToString();
            }
コード例 #4
0
        public void Save()
        {
            var ini = new MyIni();

            m_instance.onSave(ini);
            Storage = ini.ToString();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: the-vindicar/SE-Piloting
 public void Save()
 {
     ini.Set("General", "AbortDistance", AbortDistance);
     ini.Set("General", "ScanningDistance", ScanningDistance);
     ini.Set("General", "MaxSpeed", MaxSpeed);
     ini.Set("General", "ActionTimeout", ActionTimeout);
     ini.Set("General", "TransmitTag", TransmitTag);
     ini.Set("General", "Dock", DockLocation.ToString());
     ini.Set("General", "DockApproach", DockApproachVector.ToString());
     ini.Set("General", "GrinderGroup", GrinderGroup);
     if (Vector3D.IsZero(GrinderApproach))
     {
         ini.Delete("General", "GrinderLocation");
         ini.Delete("General", "GrinderApproach");
     }
     else
     {
         ini.Set("General", "GrinderLocation", GrinderLocation.ToString());
         ini.Set("General", "GrinderApproach", GrinderApproach.ToString());
     }
     foreach (var kv in Approaches)
     {
         string data = string.Join("\n", kv.Value.Select <Vector3D, string>((v) => $"GPS:waypoint:{v.X:F3}:{v.Y:F3}:{v.Z:F3}:"));
         ini.Set("Approach", kv.Key, data);
     }
     ini.Set("Runtime", "CurrentState", State_Machine?.CurrentState ?? "");
     ini.Set("Runtime", "TargetLocation", TargetLocation.ToString());
     ini.Set("Runtime", "ChosenApproach", ChosenApproach);
     ini.Set("Runtime", "ApproachIndex", ApproachIndex);
     ini.Set("Runtime", "TargetEntityID", TargetEntityID);
     Storage = ini.ToString();
 }
コード例 #6
0
ファイル: Program.cs プロジェクト: Astrianna/3DPrinter
        public void SaveToCustomData()
        {
            MyIniParseResult result;

            if (!customData.TryParse(Me.CustomData, out result))
            {
                throw new Exception(result.ToString());
            }

            customData.Set("3DPrinter", "maxX", maxX);
            customData.SetComment("3DPrinter", "maxX", " Work area dimentions:");
            customData.Set("3DPrinter", "maxY", maxY);
            customData.Set("3DPrinter", "maxZ", maxZ);
            customData.Set("3DPrinter", "minX", minX);
            customData.Set("3DPrinter", "minY", minY);
            customData.Set("3DPrinter", "minZ", minZ);
            customData.Set("3DPrinter", "mode", mode.ToString());
            customData.SetComment("3DPrinter", "mode", " Mode: grinding or welding");
            customData.Set("3DPrinter", "toolLength", toolLength);
            customData.SetComment("3DPrinter", "toolLength", " Tool Length in number of blocks(default:10)");
            customData.Set("3DPrinter", "returnAfterDone", returnAfterDone);
            customData.SetComment("3DPrinter", "returnAfterDone", " Return to home position after completion?");
            customData.Set("3DPrinter", "maxMovementSpeed", maxMovementSpeed);
            customData.SetComment("3DPrinter", "maxMovementSpeed", " Fastest pistons can move (0.0-5.0)");
            customData.Set("3DPrinter", "grindingSpeed", grindingSpeed);
            customData.SetComment("3DPrinter", "grindingSpeed", " Max piston speed while grinding (default:0.5)");
            customData.Set("3DPrinter", "weldingSpeed", weldingSpeed);
            customData.SetComment("3DPrinter", "weldingSpeed", " Max piston speed while welding (default:0.2)");

            Me.CustomData = customData.ToString();
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: Astrianna/3DPrinter
        public void Save()
        {
            ini.Clear();
            ini.Set("3DPrinter", "xtar", xTar);
            ini.Set("3DPrinter", "ytar", yTar);
            ini.Set("3DPrinter", "ztar", zTar);
            ini.Set("3DPrinter", "xpos", xPos);
            ini.Set("3DPrinter", "ypos", yPos);
            ini.Set("3DPrinter", "zpos", zPos);
            ini.Set("3DPrinter", "xposmerge", xPosMerge);
            ini.Set("3DPrinter", "xdir", xDir.ToString());
            ini.Set("3DPrinter", "ydir", yDir.ToString());
            ini.Set("3DPrinter", "zdir", zDir.ToString());
            ini.Set("3DPrinter", "maxX", maxX);
            ini.Set("3DPrinter", "maxY", maxY);
            ini.Set("3DPrinter", "maxZ", maxZ);
            ini.Set("3DPrinter", "minX", minX);
            ini.Set("3DPrinter", "minY", minY);
            ini.Set("3DPrinter", "minZ", minZ);
            ini.Set("3DPrinter", "returnAfterDone", returnAfterDone);
            ini.Set("3DPrinter", "maxMovementSpeed", maxMovementSpeed);
            ini.Set("3DPrinter", "grindingSpeed", grindingSpeed);
            ini.Set("3DPrinter", "weldingSpeed", weldingSpeed);
            ini.Set("3DPrinter", "toolLength", toolLength);
            ini.Set("3DPrinter", "mode", mode.ToString());
            ini.Set("3DPrinter", "autoMode", autoMode);
            ini.Set("3DPrinter", "firstrun", firstRun);
            ini.Set("3DPrinter", "manualMove", manualMove);
            ini.Set("3DPrinter", "moveReady", moveReady);

            Storage = ini.ToString();
        }
コード例 #8
0
    void ParseRotorIni(IMyMotorStator r)
    {
        _ini.Clear();
        float?       restAngle    = null;
        const string defaultValue = "none";

        if (_ini.TryParse(r.CustomData))
        {
            string angleStr = _ini.Get(IniSectionRotor, IniKeyRestAngle).ToString(defaultValue);
            float  temp;
            if (float.TryParse(angleStr, out temp))
            {
                restAngle = temp;
            }
        }
        else if (!string.IsNullOrWhiteSpace(r.CustomData))
        {
            _ini.EndContent = r.CustomData;
        }

        _ini.Set(IniSectionRotor, IniKeyRestAngle, restAngle.HasValue ? restAngle.Value.ToString() : defaultValue);

        string output = _ini.ToString();

        if (output != r.CustomData)
        {
            r.CustomData = output;
        }

        _restAngles[r] = restAngle.HasValue ? MathHelper.ToRadians(restAngle.Value) : restAngle;
    }
コード例 #9
0
            public string GetSavedString()
            {
                var ini = new MyIni();

                this.onSave(ini);
                return(ini.ToString());
            }
コード例 #10
0
 public void Save()
 {
     foreach (var handler in SaveHandlers)
     {
         handler(_SaveIni);
     }
     Storage = _SaveIni.ToString();
 }
コード例 #11
0
ファイル: Program.cs プロジェクト: Tubers/Turtle
 public void Save()
 {
     _ini.Clear();
     _ini.Set("Basis", "A", _basisVecA.ToString());
     _ini.Set("Basis", "B", _basisVecB.ToString());
     _ini.Set("Basis", "Up", _basisVecUp.ToString());
     _ini.Set("Basis", "Origin", _origin.ToString());
     Storage = _ini.ToString();
 }
コード例 #12
0
 public void SaveState()
 {
     SavedState.Clear();
     if (DoSave)
     {
         Saving?.Invoke(SavedState);
     }
     PB.SetStorage(SavedState.ToString()); //using mix-in method
 }
コード例 #13
0
 public void Write()
 {
     // Initialize the configuration if it does not exist.
     if (String.IsNullOrEmpty(program.Me.CustomData))
     {
         _program._logger.SysLog <Configuration>("writing default configuration.");
         _program.Me.CustomData = _ini.ToString();
     }
 }
コード例 #14
0
            void save()
            {
                var ini = new MyIni();

                foreach (APWaypoint wp in this.waypoints.Values)
                {
                    wp.Save(ini);
                }
                this.remote.CustomData = ini.ToString();
                this.prevData          = this.remote.CustomData;
            }
コード例 #15
0
ファイル: ScriptHandler.cs プロジェクト: kpiatkowski/ExcavOS
            private void CreateConfig()
            {
                if (MyIni.HasSection(_program.Me.CustomData, _scriptName))
                {
                    return;
                }

                _ini.Clear();
                _config.SetupDefaults();
                _program.Me.CustomData = _ini.ToString();
            }
コード例 #16
0
        public void Main(string argument, UpdateType updateSource)
        {
            // Init storage
            InitializeStorage();


            // Set default data if
            if (!IsDataFormatValid() || argument == "reset")
            {
                SetDefaultData();
                return;
            }


            // Construct & send message.
            string message = config.ToString();

            IGC.SendBroadcastMessage(AntennaChannel, message);

            Echo("Broadcasting on \"" + AntennaChannel + "\"..");
        }
コード例 #17
0
            public string write()
            {
                MyIni ini = new MyIni();

                ini.AddSection(name);

                foreach (var kv in config)
                {
                    ini.Set(name, kv.Key, kv.Value);
                }

                return(ini.ToString());
            }
コード例 #18
0
ファイル: KProperty.cs プロジェクト: Helfima/SEIngame
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Common", "Name", Name);
                MyIni.Set("Latitude", "Speed", Lat_Speed);
                MyIni.Set("Latitude", "Delta", Lat_Delta);
                program.Me.CustomData = MyIni.ToString();
            }
コード例 #19
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Search", "Rotor", Search_Rotor);
                MyIni.Set("Search", "PistonUp", Search_Piston_Up);
                MyIni.Set("Search", "PistonDown", Search_Piston_Down);
                MyIni.Set("Search", "PistonRayon", Search_Piston_Rayon);
                program.Me.CustomData = MyIni.ToString();
            }
コード例 #20
0
ファイル: KProperty.cs プロジェクト: Helfima/SEIngame
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Refinery", "filter", refinery_filter);
                MyIni.Set("Refinery", "rotation", refinery_rotation);
                MyIni.Set("Refinery", "priority", refinery_priority);
                MyIni.Set("Lcd", "filter", lcd_filter);
                program.Me.CustomData = MyIni.ToString();
            }
コード例 #21
0
 public void Save()
 {
     if (VectorsValid())
     {
         _ini.Clear();
         _ini.Set("Basis", "A", _basis[0].ToString());
         _basis[1] = -_basis[0];
         _ini.Set("Basis", "B", _basis[2].ToString());
         _basis[3] = -_basis[2];
         _ini.Set("Basis", "Up", _basis[4].ToString());
         _basis[5] = -_basis[4];
         _ini.Set("Location", "Origin", _origin.ToString());
         Storage = _ini.ToString();
     }
 }
コード例 #22
0
        void ProcessAssemblerConfig(Dictionary <MyDefinitionId, VRage.MyFixedPoint> assemblerBalance)
        {
            DisassembleConfig = new Dictionary <MyDefinitionId, VRage.MyFixedPoint>();
            AssembleConfig    = new Dictionary <MyDefinitionId, VRage.MyFixedPoint>();

            MyIni ini = new MyIni();

            //1. Parse ini in CustomData of the programmable block

            if (ini.TryParse(Me.CustomData))
            {
                if (ini.ContainsSection(MinHeader))
                {
                    ReadIniSection(ini, MinHeader, AssembleConfig);
                }

                if (ini.ContainsSection(MaxHeader))
                {
                    ReadIniSection(ini, MaxHeader, DisassembleConfig);
                }
            }

            //2. Write the config back to custom data, adding every known component
            //   in the system so that the user doesn't have to know their names.

            List <MyDefinitionId> combined   = AssembleConfig.Keys.Union(assemblerBalance.Keys).ToList();         //Combine lists, removing dupes
            List <MyDefinitionId> components = combined.OrderBy(o => o.SubtypeId.ToString()).ToList();            //Sort alphabetically

            foreach (var definitionId in components)
            {
                WriteIniEntry(ini, MinHeader, definitionId, AssembleConfig);
                WriteIniEntry(ini, MaxHeader, definitionId, DisassembleConfig);
            }

            //Set section headers if they exist. Can't do it earlier becasue there can be no sections without data.
            if (ini.ContainsSection(MinHeader))
            {
                ini.SetSectionComment(MinHeader, " BIM Auto Assembly\n----------------------------------------------------------------------------------------------\n Requires Assembler set to assemble!\n \n Change these values to automatically craft new components once\n you run low. Recompile the script if you've made changes.\n \n Is the list missing an item? Craft one manually, then recompile the\n script. It only knows about items present in BIM:Components containers.\n----------------------------------------------------------------------------------------------");
            }
            if (ini.ContainsSection(MaxHeader))
            {
                ini.SetSectionComment(MaxHeader, " BIM Auto Disassembly\n----------------------------------------------------------------------------------------------\n Requires Assembler set to disassemble!\n \n Change these values for automatic dissassembling of components when\n you have too many. Recompile the script if you've made changes.\n \n Set value to -1 to ignore.\n----------------------------------------------------------------------------------------------");
            }

            Me.CustomData = ini.ToString();
        }
コード例 #23
0
        private void SaveConfig(bool firstTime)
        {
            if (firstTime)
            {
                isLeakManagementOn     = true;
                isProductionOn         = true;
                minimumOxygenInTanks   = 30;
                maximumOxygenInTanks   = 70;
                minimumHydrogenInTanks = 30;
                maximumHydrogenInTanks = 70;

                _ini.Set("Production Management", "Start Oxigen Production When Below", minimumOxygenInTanks);
                _ini.Set("Production Management", "Stop Oxygen Production When Over", maximumOxygenInTanks);
                _ini.Set("Production Management", "Start Hydrogen Production When Below", minimumHydrogenInTanks);
                _ini.Set("Production Management", "Stop Hydrogen Production When Over", maximumHydrogenInTanks);

                _ini.Set("Do Not Modify", "LeakStatus", isLeakManagementOn);
                _ini.Set("Do Not Modify", "ProductionStatus", isProductionOn);
            }
            else
            {
                MyIniParseResult result;
                if (!_ini.TryParse(Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }

                minimumOxygenInTanks   = _ini.Get("Production Management", "Start Oxigen Production When Below").ToDouble();
                maximumOxygenInTanks   = _ini.Get("Production Management", "Stop Oxygen Production When Over").ToDouble();
                minimumHydrogenInTanks = _ini.Get("Production Management", "Start Hydrogen Production When Below").ToDouble();
                maximumHydrogenInTanks = _ini.Get("Production Management", "Stop Hydrogen Production When Over").ToDouble();

                _ini.Set("Production Management", "Start Oxigen Production When Below", minimumOxygenInTanks);
                _ini.Set("Production Management", "Stop Oxygen Production When Over", maximumOxygenInTanks);
                _ini.Set("Production Management", "Start Hydrogen Production When Below", minimumHydrogenInTanks);
                _ini.Set("Production Management", "Stop Hydrogen Production When Over", maximumHydrogenInTanks);

                _ini.Set("Do Not Modify", "LeakStatus", isLeakManagementOn);
                _ini.Set("Do Not Modify", "ProductionStatus", isProductionOn);
            }

            Me.CustomData = _ini.ToString();
        }
コード例 #24
0
        void printIniToCustomData()
        {
            //loading the current state of the machine in the Custom Data field for editing.
            ini.Set(limitSection, "sizeDrillhead", sizeDrillhead);
            ini.Set(limitSection, "depthLimit", depthLimit);
            ini.Set(limitSection, "maxRadiusLimit", maxRadiusLimit);
            ini.Set(limitSection, "minRadiusLimit", minRadiusLimit);
            ini.Set(limitSection, "lowerAngleLimit", lowerAngleLimit);
            ini.Set(limitSection, "upperAngleLimit", upperAngleLimit);
            ini.SetSectionComment(limitSection, "This is the only section you should touch unless you *really* know what you are doing.");

            ini.Set(stateSection, "direction", direction);
            //ini.Set(stateSection, "isPaused", isPaused);  This would not make sense in the ini, as it will be set the very moment the ini is loaded
            ini.Set(stateSection, "state", state);
            ini.Set(stateSection, "angle", angle);
            ini.Set(stateSection, "radius", radius);
            ini.SetSectionComment(stateSection, "Do not touch this section unless you *really* know what you are doing.");

            Me.CustomData = ini.ToString();
        }
コード例 #25
0
        void SaveSettings()
        {
            if (Settings == null)
            {
                Settings = new MyIni();
            }

            Settings.Set(SettingsHeader, SettingsTargetSpeed, targetSpeed);
            Settings.Set(SettingsHeader, SettingsSelectedThrusters, (int)thrustDirection);
            Settings.Set(SettingsHeader, SettingsTargetAltAscending, targetAltAscending);
            Settings.Set(SettingsHeader, SettingsTargetAltDescending, targetAltDescending);
            Settings.Set(SettingsHeader, SettingsDisableCruiseExitingGravity, disableCruiseExitingGravity);
            Settings.Set(SettingsHeader, SettingsDisableAlignExitingGravity, disableAlignExitingGravity);
            Settings.Set(SettingsHeader, SettingsUseSeaLevel, useSeaLevel);
            Settings.Set(SettingsHeader, SettingsCruiseEnabled, (Cruise == null ? false : Cruise.Enabled));
            Settings.Set(SettingsHeader, SettingsAlignEnabled, (Align == null ? false : Align.Enabled));
            Settings.Set(SettingsHeader, SettingsWorldTopSpeed, worldTopSpeed);

            Storage = Settings.ToString();
        }
コード例 #26
0
        public void Save()
        {
            ini.Clear();

            ini.Set("save", "password", password);
            ini.Set("save", "linkedConnectorName", linkedConnectorName);
            ini.Set("save", "groupName", groupName);

            ini.Set("save", "dockingConnectorPos", dockingConnectorPos.ToString());
            ini.Set("save", "dockingDir", dockingDir.ToString());

            for (var i = 0; i < globalPath.Count; i++)
            {
                ini.Set("save", "globalPath_" + i, globalPath[i].ToString());
            }

            ini.Set("save", "mode", mode);

            Storage = ini.ToString();
        }
コード例 #27
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Elevator", "position_max", elevator_position_max);
                MyIni.Set("Elevator", "position_min", elevator_position_min);
                MyIni.Set("Elevator", "velocity_max", elevator_velocity_max);
                MyIni.Set("Elevator", "velocity_medium", elevator_velocity_medium);
                MyIni.Set("Elevator", "velocity_min", elevator_velocity_min);

                MyIni.Set("Locker", "velocity", locker_velocity);
                MyIni.Set("Locker", "position_min", locker_position_min);
                MyIni.Set("Locker", "position_max", locker_position_max);

                program.Me.CustomData = MyIni.ToString();
            }
コード例 #28
0
        public void Activate()
        {
            Reset();
            Active = true;
            if (Subsystems.ContainsKey("docking"))
            {
                Subsystems["docking"].Command(TimeSpan.Zero, "dock", null);
            }

            MyIni Parser = new MyIni();

            if (!Parser.TryParse(Context.Reference.CustomData))
            {
                return;
            }

            Parser.Delete("Manager", "StartActive");
            Context.Reference.CustomData          = Parser.ToString();
            Context.Reference.CubeGrid.CustomName = myName;
        }
コード例 #29
0
        bool WicoLocalInit()
        {
            if (bInitDone)
            {
                return(true);
            }

            // must come late as the above inits may add handlers
            wicoBlockMaster.LocalBlocksInit();

            bInitDone = true;

            // last thing after init is done
            wicoControl.ModeAfterInit(_SaveIni);

            // Save it now so that any defaults are set after an initial run
            Me.CustomData = _CustomDataIni.ToString();

            return(bInitDone);
        }
コード例 #30
0
            public void Save()
            {
                MyIniParseResult result;

                if (!MyIni.TryParse(program.Me.CustomData, out result))
                {
                    throw new Exception(result.ToString());
                }
                MyIni.Set("Airlock", "filter", filter);
                MyIni.Set("Airlock", "timer", timer / 6);
                MyIni.Set("Airlock", "blink_length", blink_length);
                MyIni.Set("Airlock", "blink_interval_seconds", blink_interval_seconds);
                MyIni.Set("Airlock", "pressurised_color", pressurised_color);
                MyIni.Set("Airlock", "running_color", running_color);
                MyIni.Set("Airlock", "depressurised_color", depressurised_color);

                MyIni.Set("Sound", "timer", sound_timer / 6);

                program.Me.CustomData = MyIni.ToString();
            }