Sb forum speech.png DiscordLink.png FacebookLink.png RedditLink.png SteamLink.png TwitterLink.png YoutubeLink.png

Difference between revisions of "Common YOLOL"

From Starbase wiki
Jump to navigation Jump to search
m (→‎Single Forward/Backward Lever: add "goto1 to each statement)
(→‎Tweakable Generator Script: Unified and cleaned up various tweakable fuel rate scripts)
Line 24: Line 24:
5000 and 9999 are the start-charging and stop-charging levels. 22 is just enough charge to run the stock two box thrusters.
5000 and 9999 are the start-charging and stop-charging levels. 22 is just enough charge to run the stock two box thrusters.


===Generator Script (Basic YOLOL Chip)===
===Tweakable Generator Script===


This YOLOL script is inspired by the standard generator script and is further optimized.
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.
You can set from which amount of stored battery power the generator should generate less compared to the stored battery power.
 
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:
It is assumed that specific YOLOL fields are renamed:
{| class="wikitable"
{| class="wikitable"
|+ Renamed fields
|-
! Ship Part !! Old YOLOL field name (Laborer in parenthesis) !! New YOLOL field name
|-
| On/Off Button || ButtonState (Generator) || Generator
|-
|-
! Ship Part !! Old YOLOL field name !! New YOLOL field name
| First Battery || StoredBatteryPower (Battery_1) || Battery_1
|-
|-
| Every Fuel Chamber || FuelChamberUnitRateLimit || Gen
| Second Battery || StoredBatteryPower (Battery_2) || Battery_2
|-
|-
| One Rechargeable Battery || StoredBatteryPower || Bat
| Fuel Chamber || FuelChamberUnitRateLimit (Generator) || FCRL
|-
| Override Lever (optional) || LeverState || Generator
|}
|}


Depending on the amount of batteries and the amount of generators, a higher or lower value can be used for the variable "a" in the script. A too high value leads to the fact that the algorithm cannot find an optimal balance for the FuelChamberUnitRateLimit/Gen.
It is assumed that specific YOLOL fields have the specific values below. The on/off button is already set up in the basic laborer.
 
====Generator Script====
 
// Variables for Tweaking
a = 9500 // If Battery Amount is lower than this, Gen is 100%
// Static variables and precalculation
c = 10000 // Max Stored Battery Power
d = 100 // 100%
e = (c-a)/d
// Final Generator Scriptline
:Gen=((:Bat<a)*d)+((:Bat>a)*((:Bat-c)*-1)/e) goto 8
 
====Generator Script with On/Off Button and Minimum Power Production====
 
If the battery consumption is very high and the amount of rechargeable batteries is not enough until the generator produces enough power, you should consider using the following version of the script.
 
Use a Hybrid-Button with the following field names and values configured:
{| class="wikitable"
{| class="wikitable"
|+ Fixed field values
|-
! Ship Part !! YOLOL field name !! Fixed field value (Laborer default in parenthesis)
|-
| On/Off Button || ButtonOnStateValue|| 100 (100)
|-
|-
! Name !! Value
| On/Off Button || ButtonOffStateValue|| 0 (0)
|-
|-
| On || 0
| On/Off Button || ButtonStyle || 1 (1)
|-
|-
| ButtonOnStateValue || 1
| Override Lever (optional) || LeverMinOutput || 0
|-
|-
| ButtonOffStateValue || 0
| Override Lever (optional) || LeverMaxOutput || 200
|-
|-
| ButtonStyle || 1
| Override Lever (optional) || LeverCenteringSpeed || 0
|}
|}
The variable b can be used to set the minimum amount of power that the generators should generate. A too low value, can lead to the fact that the generators do not provide enough power yet and the batteries are already discharged. A too high value leads to the fuel rod consumption during standstill being too high.
// Variables for Tweaking
a = 9500 // If Battery Amount is lower than this, Gen is 100%
b = 10 // If Button is On, Gen will be at least this much
// Static variables and precalculation
c = 10000 // Max Stored Battery Power
d = 100 // 100%
e=(c-a)/d f=(d/b)
// Final Generator Scriptline
:Gen=:On*(((:Bat<a)*d)+((:Bat>a)*(((:Bat-c)*-1)+(:Bat-a)/f)/e)) goto 9


==[[Flight control unit]]==
==[[Flight control unit]]==

Revision as of 06:01, 9 December 2021

A collection of small common scripts meant to be easily copied and understood for the YOLOL beginner.

This page is a WIP. Please contribute to it! (Avoid complex scripts and the renaming of fields.)

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

c=(c<1)*(:Battery_1<5000)+c*(:Battery_1<9999) :Gen=c*22+0.001 goto 1

Fitting this code on the Laborer Module requires renaming at least one device. (here the Generator was renamed Gen)

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:

Renamed fields
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.

Fixed field values
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

Flight control unit

Slow Mode

Requires to modify the lever bound to "FcuForward" which shall be renamed "Fwd" and a button with "ButtonState" renamed "Slow" and "ButtonStyle" set to "1". This script is useful when you need more manoeuvrability but have too much forward thrust (e.g. while mining or docking). Note: Replace "X" with the number you want to substract from the percentage rate of your main thrusters. Example: A "X" of 80 means you'll have 100-80=20% of maximum thrust.

:FcuForward=:Fwd/100*(100-(X*:Slow)) goto1

Single Forward/Backward Lever

Requires a center lever bound to "FcuForward".

:FcuBackward=-:FcuForward goto1

Note: Eventually you might want to modify forward and backward individually (e.g. slow mode), in which case you'll need a lever unbound to any instead (name it '"FwdBwd" for example) and 2 YOLOL chips.

:FcuForward=:FwdBwd goto1
:FcuBackward=-:FwdBwd goto1

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). Replace "X" with the duration of "on" and "Y" with the duration of "off". Example: A "X" of "3" means the "on" phase will last 3*0.2=0.6sec.

On=X Off=Y :MiningLaserOn=(T<On)*:Mining T++ T*=T<(On+Off) goto1

Navigation receivers

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

Ship transponder

Leaving Safezone Warning

Requires an active transponder and either a warning button or a safety lid button.

:ButtonEnableBlink=1-:InsideSafeZone goto1
Cookies help us deliver our services. By using our services, you agree to our use of cookies.