A to Z Scripting: Basic maths: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
Dragofer (talk | contribs)
mNo edit summary
Dragofer (talk | contribs)
mNo edit summary
Line 31: Line 31:
  sys.println(entity1.getName() + " is at the location " + entity1.getOrigin()); //+ doesn't work with entities, so you need to use getName() to turn it into a string
  sys.println(entity1.getName() + " is at the location " + entity1.getOrigin()); //+ doesn't work with entities, so you need to use getName() to turn it into a string


What you can't combine is floats and vectors. You'll need to use script events i.e. to convert the vector into a float (see "Vectors").


== Increasing/decreasing ==
== Increasing/decreasing ==

Revision as of 09:32, 23 December 2020

Basic maths symbols

You can use basic maths symbols, as well as brackets (parentheses):

symbol effect can be used with
+ add/combine floats, vectors, strings
- subtract floats, vectors
* multiply floats
/ divide floats

The = sign

An important difference is what the = sign does. In scripting, = means "set", while == means "equals".

teleport_destination	= '20 20 20';		//set teleport_destination to '20 20 20'
float1 			= float2 + float3;	//set float1 to the sum of float2 and float3
if ( float1 == float2 )				//check if float1 is equal to float2

== is used in conditionals to check whether a condition is true (i.e. 2 values are equal to each other) before carrying out an associated script. That's described in detail in a later article, A to Z Scripting: Conditionals.


Combining

You can freely combine script events, variables and absolute values in one line like this:

teleport_destination = $player1.getOrigin() + teleportation_offset + '0 0 16';


Strings can be cobbled together from strings, floats, vectors and entities with the + sign. This is quite useful for sending helpful messages to the console while testing the script:

sys.println(entity1.getName() + " is at the location " + entity1.getOrigin());	//+ doesn't work with entities, so you need to use getName() to turn it into a string

What you can't combine is floats and vectors. You'll need to use script events i.e. to convert the vector into a float (see "Vectors").

Increasing/decreasing

Increasing (incrementing) a variable's value by 1 would work like this:

counter = counter + 1;		//set "counter" to: the current value of "counter" + 1

An alternative method to increase a variable by 1 is:

counter++;			//increase "counter" by 1
counter--;			//decrease "counter" by 1


Vectors

You can add or subtract vectors from each other. Things like multiplication or finding the magnitude require script events such as DotProduct(), CrossProduct() and vecLength().

You can access & change individual components of a vector variable by appending _x, _y or _z to the name, i.e. teleport_destination_z. These will be floats.


More detail on vector maths and what you can do with it in A to Z Scripting: Special methods.


Next / previous article