No. Labels have some number formatting options and that's about it. String addition works in labels and the debug tool, and string comparisons work everywhere.
You can take the time from the last shot and run it through some kind of animation curve. You need variables to do this:
OnShot setter: rate(ammo("Cannon"))<0
TimeSinceLastShot setter: smooth(OnShot?0:1, OnShot?999999:1)
Note: In semi-auto mode, OnShot is true for 2 frames, but in full auto mode, it is true for 1 frame. If you are only using it for a visual animation, it's fine.
Use this for parabolic animation curve. I set it up quickly. Make sure to clamp piston output if you set the min value to something other than 0.
@INeedANewName
Consumer reason: in case the game is bad, you don't lose money. You can always wait until it's good before you buy it.
Economy reason: the companies get money even if the game is bad at launch --> companies make more games that are bad at launch
Exceptions are if you really trust the devs and publishers, or if you are a content creator
@LoneSpaceGaming you need the curly braces { }, the labels under the heli rotors do not have it. The { } tells the game that whatever inside is FT and should be evaluated. Without it, the game treats it as normal text.
In addition, the first line has a normal braces ( ) mismatch, and the first : should be ?. I am assuming that the n is the name of the variable. If you have used { } but the FT is not replaced with a value, it's because there is a syntax error. The dev console can sometimes tell you what is wrong.
The following is text copied from the label. If this isn't the area of concern, tell me. n(Time*800)/2 : 0) : 0
Offset_Z clamp01(WALK)*WALK_Start_Z
.
The physics is the same, or very similar, across platforms, as long as the physics quality is the same. It's possible that the builds you downloaded do not support low physics, which have very soft connections when rotators and pistons are used.
thumbnail :troll:
Edit: I also check the plan views, since there are a lot of planes that look nice in the thumbnails but fall apart completely when you look directly at the front or side. There are also planes with an interior, but their digital instruments are made so messily that a blank screen would be better. I haven't seen people talk about these areas, so I think they are under-appreciated, or maybe I'm nitpicking.
@ToeTips afaik the distance between the CoL and control surface doesn't matter
Generally, the further away the wing or control surface is from the CoM, the more rotation is produced. Even though the lift is the same, the rotation moment/torque around the CoM is greater.
@ToeTips abs converts negative numbers to positive. It's not a condition statement
Just find some good values that you can replace 90 with at different speeds, try to fit a curve to it, and write it in FT
Build knob with range 0 to 2. Use a variable for the knob position. In this case 0 is stop, 1 is idle/start, 2 is normal. Make sure that as the knob turns, the value changes.
Optionally, you can use a setter to round the knob position value when the knob is not moving. This will provide a notching effect to your knob (I have code for this).
Add a setter for each variable you want to get out of the knob position. You should use the round function in the comparison. Example setters (your variable names may be different:
No, you cannot set variables inside of an input, including label { } inputs. The = operator in FT compares two values. If LeftEngineMode is currently 1, then LeftEngineMode=1 becomes true.
.
If you want to convert a single numeric variable to multiple true/false variables, you must use one variable setter for each new variable. For example:
Setter of LEngIdle is LeftEngineMode=1
Currently, you can't make string variables, but you can make enumerators by choosing a set of values for your variable, like normal is 1, idle is 2, and stop is 3. You can check against each value in the ternary structure like: EngineMode=1 ? ... : (EngineMode=2 ? ... : ...)
Body and animations are very nice
Not sure if I'm doing something wrong (no control list) but engine curve feels extremely peaky, so it's impossible to drive normally. For example, you can't do a second gear start. Also, negative stability on straights.
Finally, needs control list. Like what does UI Slider 2 do?
I have this method that doesn't need storing data
.
Target XYZ world coordinates
Longitude + TargetDistance * sin(TargetHeading)
Altitude + TargetDistance * sin(TargetElevation)
Latitude + TargetDistance * cos(TargetHeading)
.
Target GS (use above FT without the player coordinates components)
sqrt(pow(rate(TargetX),2) + pow(rate(TargetY),2) + pow(rate(TargetZ),2))
.
Also "storing data" is not descriptive enough to get FT help
@SilverStar TargetHeading gives you world space bearing, but not relative to your nose. Instead, use deltaangle(Heading, TargetHeading) to get the angle from Heading to TargetHeading
Add variables and an optional C# format specifier in { } like:
{Fuel ;P1} or {IAS ;F3}
You cannot have a space between the ; and format code. Also, the decimal and hex format codes don't work.
Delta time system (put at top of variable list) DELTA_TIME = Time - PREV_TIME PREV_TIME = Time
.
Fixed point integrator with clamp. The variable inside clamp(...) MUST match the setter name. PITCH_IN = clamp(PITCH_IN + Pitch * DELTA_TIME * MUL, MIN, MAX) MUL: change per second when Pitch=1 MIN, MAX: clamp limits
IA cat
+1singing robot cat real
Whatever you put into input controllers is called FT (funky trees), real and official terminology
+1if for simpleplanes, you need to start by writing a mod for that
+1You can base your communication protocol on Link2fs, which is made for MS flight sim
No. Labels have some number formatting options and that's about it. String addition works in labels and the debug tool, and string comparisons work everywhere.
+1You can take the time from the last shot and run it through some kind of animation curve. You need variables to do this:
+1OnShot setter: rate(ammo("Cannon"))<0
TimeSinceLastShot setter: smooth(OnShot?0:1, OnShot?999999:1)
Note: In semi-auto mode, OnShot is true for 2 frames, but in full auto mode, it is true for 1 frame. If you are only using it for a visual animation, it's fine.
Use this for parabolic animation curve. I set it up quickly. Make sure to clamp piston output if you set the min value to something other than 0.
@Majakalona they see your post xdd
+1Using it outside of sp might be illegal
+1Sacabambaspis
+1:crab:
+1Literally revived an account that was inactive for 1.8 years to (re)start beef
+1@Graingy due to being top rank for too long, there was probably a risk that he would become a false god of andrewism
+1Unpersoned and banished for being at the top for too long, literally 1984 (jk)
+1@INeedANewName
+1Consumer reason: in case the game is bad, you don't lose money. You can always wait until it's good before you buy it.
Economy reason: the companies get money even if the game is bad at launch --> companies make more games that are bad at launch
Exceptions are if you really trust the devs and publishers, or if you are a content creator
Use the smooth alternative
smooth(sum(1)<0.1 ? START_VALUE : (INPUT<0 ? MIN_VALUE : MAX_VALUE), abs(INPUT))
float START_VALUE
: Value to initialize the function with, usually 0.float MIN_VALUE
: Minimum output value.float MAX_VALUE
: Maximum output value.float INPUT
: Input that corresponds to the argument ofsum(...)
..
Added to ft list
@LoneSpaceGaming you need the curly braces
{ }
, the labels under the heli rotors do not have it. The{ }
tells the game that whatever inside is FT and should be evaluated. Without it, the game treats it as normal text.In addition, the first line has a normal braces
( )
mismatch, and the first:
should be?
. I am assuming that then
is the name of the variable. If you have used{ }
but the FT is not replaced with a value, it's because there is a syntax error. The dev console can sometimes tell you what is wrong.The following is text copied from the label. If this isn't the area of concern, tell me.
n(Time*800)/2 : 0) : 0
WALK_X_inc (Pitch*sin(FPS_YAW)+Roll*cos(FPS_YAW))*(abs(Pitch)&abs(Roll)?FPS_Speed/2:FPS_Speed)
WALK_Z_inc (Pitch*cos(FPS_YAW)-Roll*sin(FPS_YAW))*(abs(Pitch)&abs(Roll)?FPS_Speed/2:FPS_Speed)
Offset_X clamp01(WALK)*WALK_Start_X
Offset_Y clamp01(WALK)*WALK_Start_Y
+1Offset_Z clamp01(WALK)*WALK_Start_Z
.
The physics is the same, or very similar, across platforms, as long as the physics quality is the same. It's possible that the builds you downloaded do not support low physics, which have very soft connections when rotators and pistons are used.
thumbnail :troll:
+1Edit: I also check the plan views, since there are a lot of planes that look nice in the thumbnails but fall apart completely when you look directly at the front or side. There are also planes with an interior, but their digital instruments are made so messily that a blank screen would be better. I haven't seen people talk about these areas, so I think they are under-appreciated, or maybe I'm nitpicking.
@ToeTips this software is windows only due to the use of a windows-specific library. You can try to see if wine can run the exe. Or use the following:
+1PlanariaLab SPLC py source code version probably works on linux
11qazxc HTML port, there is a link to their webpage
@ToeTips afaik the distance between the CoL and control surface doesn't matter
+1Generally, the further away the wing or control surface is from the CoM, the more rotation is produced. Even though the lift is the same, the rotation moment/torque around the CoM is greater.
@ToeTips abs converts negative numbers to positive. It's not a condition statement
+1Just find some good values that you can replace 90 with at different speeds, try to fit a curve to it, and write it in FT
@LunarEclipseSP interesting, maybe i should read it
+1no anime version sadge
@CR929thenewSPplayer the front references AE86 but is curved like AW11, and the rear brake lights are based on R30
+1Try to make a feature one step at a time:
LeftEngStop
isround(LeftEngSelect)=0
LeftEngStartIdle
isround(LeftEngSelect)=1
No, you cannot set variables inside of an input, including label { } inputs. The = operator in FT compares two values. If LeftEngineMode is currently 1, then LeftEngineMode=1 becomes true.
+1.
If you want to convert a single numeric variable to multiple true/false variables, you must use one variable setter for each new variable. For example:
Setter of LEngIdle is LeftEngineMode=1
Currently, you can't make string variables, but you can make enumerators by choosing a set of values for your variable, like normal is 1, idle is 2, and stop is 3. You can check against each value in the ternary structure like:
+1EngineMode=1 ? ... : (EngineMode=2 ? ... : ...)
Body and animations are very nice
+1Not sure if I'm doing something wrong (no control list) but engine curve feels extremely peaky, so it's impossible to drive normally. For example, you can't do a second gear start. Also, negative stability on straights.
Finally, needs control list. Like what does UI Slider 2 do?
@Mustang51 I can't help unless you have a graph of airbrake over AoA
+1@SheriffHackdogMCPE maybe, the trucks and vans are more different than they look though
+1@CR929thenewSPplayer thanks! I'm not Japanese, I researched to make this
+1yeah as long as it's family friendly
+1Makes a step increase in input
+1AngleOfAttack > TRIGGER_VALUE ? 1 : 0
.
AngleOfAttack<LOW | AngleOfAttack>HIGH ? 1 : 0
Only if you have a formula for it
+1If you can express the airbrake input as a formula, it's easy to convert to FT
I have this method that doesn't need storing data
+1.
Target XYZ world coordinates
Longitude + TargetDistance * sin(TargetHeading)
Altitude + TargetDistance * sin(TargetElevation)
Latitude + TargetDistance * cos(TargetHeading)
.
Target GS (use above FT without the player coordinates components)
sqrt(pow(rate(TargetX),2) + pow(rate(TargetY),2) + pow(rate(TargetZ),2))
.
Also "storing data" is not descriptive enough to get FT help
Look at the TextMeshPro reference, try to find those useful functions that can move text around
+1@Quercon i think there are no more races
+1There is the one on the funny racetrack island
+1@Graingy it's either ww2 dogfight enemy, or i made a mistake and downloaded someone's repaint of the p-51
+1@SilverStar TargetHeading gives you world space bearing, but not relative to your nose. Instead, use deltaangle(Heading, TargetHeading) to get the angle from Heading to TargetHeading
+1@Blueshift it's possible to make a mod that replaces the file automatically after the game starts
+1I poked around the tanker spawn stuff
__aiRefuelTanker__.xml
is always refreshed when you start the game@TheTomatoLover ikr
+1Set firingDelay of all bombs to a suitable number
+1Thumbnail sussy
+1Add variables and an optional C# format specifier in { } like:
+1{Fuel ;P1} or {IAS ;F3}
You cannot have a space between the ; and format code. Also, the decimal and hex format codes don't work.
Delta time system (put at top of variable list)
+1DELTA_TIME
=Time - PREV_TIME
PREV_TIME
=Time
.
Fixed point integrator with clamp. The variable inside clamp(...) MUST match the setter name.
PITCH_IN
=clamp(PITCH_IN + Pitch * DELTA_TIME * MUL, MIN, MAX)
MUL
: change per second when Pitch=1MIN
,MAX
: clamp limits60 degrees vertical fov
+1No C# option smh
+1FT is good enough tho
Brake > 0.01 ? 1 : 0
+1@SimpleStudent a laptop or phone that's not too old can run it
+1@Brololxd @MAPA the website isn't by me, from the url i believe it's by 11qazxc
+1@Falkenwut ok, you can rebuild it
+1Usually, you don't have to ask unless you're using others' parts, or making a copy