Common YOLOL
A collection of small common scripts meant to be easily copied and understood for the YOLOL beginner.
This page is a "Work In Progress". Don't hesitate to contribute! Just make sure to respect the following rules:
- Avoid complex codes. As said, These must be easily understood by beginners. If you can't simplify your scripts, please add some comments to explain the most technical parts.
- Avoid as possible to modify the device fields. If necessary, it must be specified which variable has to be renamed (left column) and/or set to a given value (right column).
Flight Control Unit
Single Forward/Backward Lever
Requires a center lever bound to "FcuForward". Note: You can easily modify the default regular lever from most of prebuilt ships and cockpit modules to be used as a center Lever. Just change the "LeverMinOutput" value from 0 to -100.
:FcuBackward=-:FcuForward goto1
Speed Limiter
Requires to modify the lever bound to "FcuForward" which shall be renamed "Fwd" and another regular lever with "LeverState" renamed "Limiter". This script allow you to set a maximum forward speed to your ship, which is useful when you need more accurate movements (e.g. while mining or docking).
:FcuForward=:Fwd/100*:Limiter goto1
Note: If you already modified your "FcuFoward" lever to be used as a "Single Forward/Backward Lever" (see above), you can use the "Backward" lever made useless as the "Limiter" lever. Just make sure you have "FcuForward" renamed "FwdBwd" instead so you can modify forward and backward thrust individually. This way your YOLOL scripts should be written as follows:
:FcuForward=:FwdBwd/100*:Limiter goto1
:FcuBackward=-:FwdBwd goto1
Turtle Mode
Similar to the previous script but with a button instead of a lever. "ButtonState" should be renamed "Turtle" and "ButtonStyle" set to "1". In addition set the "ButtonOffStateValue" to "100" and the "ButtonOnStateValue" to the desired speed reduction. For example having "30" means 30% of maximum speed when the button is active.
:FcuForward=:Fwd/100*:Turtle goto1
Fuel Chamber
Ships will require enough batteries to act as a buffer for the generator spool up time.
"Standard" Generator Script
:FuelChamberUnitRateLimit=100-:StoredBatteryPower/100 goto 1
Makes the fuel chambers' rate limit follow the battery charge inversely.
Note: The Laborer Module ship rewarded during the tutorial has these fields renamed by default to: Generator
and Battery_1
"Alternative" Generator Script
An alternative script that will keep the batteries fuller.
:FuelChamberUnitRateLimit=1000-:StoredBatteryPower/10 goto 1
Settable on/off Generator flag
:Generator=22*(:Battery_1>5000)*(:Battery_1<9999)+0.001 goto1
5000 and 9999 are the start-charging and stop-charging levels. 22% is just enough charge to run the stock two box thrusters.
Tweakable Generator Script
This script is tweakable to your ship configuration and also by an on/off button and/or override lever. Field renamings are those of the default Laborer, except for the :FCRL field. This field needs a new name so that the script can control the fuel rate, instead of the Generator button.
MaxBattery=20000 // total capacity LowBattery=0.99*MaxBattery // start charging below 99% MinBattery=0.20*MaxBattery // max charge rate below 20% MaxGenerator=100 // max fuel rate MinGenerator=2 // min fuel rate (near 100% charge) h=MaxGenerator c=MinGenerator // auxiliary variables, f=MaxBattery l=LowBattery e=MinBattery // no need to change these r=(h-c)/(f-e) z=h-r*l a=r*(f-l) // reboot: remove "goto9" briefly y=:Generator-z-r*(:Battery_1+:Battery_2)+c*(y>c)+a*(y>0) :FCRL=y goto9
It is assumed that specific YOLOL fields are renamed:
Ship Part | Old YOLOL field name (Laborer in parenthesis) | New YOLOL field name |
---|---|---|
On/Off Button | ButtonState (Generator) | Generator |
First Battery | StoredBatteryPower (Battery_1) | Battery_1 |
Second Battery | StoredBatteryPower (Battery_2) | Battery_2 |
Fuel Chamber | FuelChamberUnitRateLimit (Generator) | FCRL |
Override Lever (optional) | LeverState | Generator |
It is assumed that specific YOLOL fields have the specific values below. The on/off button is already set up in the basic laborer.
Ship Part | YOLOL field name | Fixed field value (Laborer default in parenthesis) |
---|---|---|
On/Off Button | ButtonOnStateValue | 100 (100) |
On/Off Button | ButtonOffStateValue | 0 (0) |
On/Off Button | ButtonStyle | 1 (1) |
Override Lever (optional) | LeverMinOutput | 0 |
Override Lever (optional) | LeverMaxOutput | 200 |
Override Lever (optional) | LeverCenteringSpeed | 0 |
Material Point Scanner
Material Point Scanner Script
Requires 2 displays for "Material" and "Volume", 2 buttons to toggle "Active" and "Scan" and a third one with "ButtonState" renamed "Next" and "ButtonStyle" set to "1".
:Index=(:Index+:Next)*(:Index<:ScanResults) :Next=0 :Material=:Material :Volume=:Volume goto1
Automatic Material Point Scanner Script
This is a modified version of the above script so it can be used when the scanner is "Active" without the need of any additional buttons. Note: launching a new scan reinitialize the index to "0".
:Scan=1 //Pause :Index=Next Next=(Next+1)*(Next<:ScanResults) :Material=:Material :Volume=:Volume goto1
Mining Laser
Pulsed Mining Laser
Requires a button with "ButtonState" renamed "Mining" and "ButtonStyle" set to "1". Reduces power consumption by continuously switching mining laser "on" and "off" while the button is active.
:MiningLaserOn=(1-:MiningLaserOn)*:Mining goto1
Configurable Pulsed Mining Laser
Similar to the previous script but with configurable timers for the "On" and "Off" phases of the laser. Note: Each phase is calculated in number of YOLOL "tick" (0.2sec). So in the example, the "On" phase last 2*0.2=0.4sec and the "Off" phase 3*0.2=0.6 sec, which makes the power comsumption just a bit lower than the power production of a generator module (= one fuel chamber and three generator units, all in tier 1).
On=2 Off=3 :MiningLaserOn=(T<On)*:Mining T++ T*=T<(On+Off) goto1
Received Signal Display
Requires a text panel with "PanelValue" renamed "Nav".
if :SignalStrength>0 then goto2 else :Nav="No Signal" goto1 end :Nav=:Message+"\n"+(1000000-:SignalStrength)/1000+"km" goto1
Ore Collector
Mining Laser/ Ore Collector Switching
Requires a button with "ButtonState" renamed "Collecting" and "ButtonStyle" set to "1". Reduces power consumption by switching ore collector "On" only if the button is active And the mining laser is "Off". Note: this script works best alongside the "Pulsed Mining Laser" scripts.
:ToggleOn=(1-:MiningLaserOn)*:Collecting goto1
Ship Transponder
Outside Safezone Warning
Requires an active transponder and either a warning button or a safety lid button. The button blink whenever you're outside of the safe zone. Note: the button needs to be On in order to blink.
:ButtonEnableBlink=1-:InsideSafeZone goto1
Stations Building Availability
Same as the previous one, but the button blink wherever you're allowed to build a station.
:ButtonEnableBlink=:StationsAllowed goto1