User Tools

Site Tools


4rpl:commands:specialsyntax

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
4rpl:commands:specialsyntax [2021/01/22 23:03] – Added global variables, general messling Karsten754rpl:commands:specialsyntax [2025/02/14 14:57] (current) – external edit 127.0.0.1
Line 1: Line 1:
 <=[[4rpl:start| Index]] <=[[4rpl:start| Index]]
  
-===== Special Variable Syntax =====+====== Special Variable Syntax ======
  
-4rpl supports special syntax for referencing global variables, vectors, lists, and tables.+4RPL supports special syntax for referencing global variables, vectors, lists, and tables.
  
 ---- ----
-==== Global Variables ====+===== Global Variables =====
 <-* ->* -?* --* <-!* ->!* -?!* --!* <-* ->* -?* --* <-!* ->!* -?!* --!*
  
 === Description === === Description ===
-All of the variable commands can also be used followed by * symbol in order to access __global__ variables +All of the [[4rpl:start#variables | variable commands]] can also be used followed by the ''*'' symbol in order to access __global__ variables 
 instead. Global variables do not belong to one single script, reading or writing to a global variable will  instead. Global variables do not belong to one single script, reading or writing to a global variable will 
 modify the same exact value from any script.  modify the same exact value from any script. 
 +
 +Global variables **belong to a map** and can be accessed from within different CPACK's. For this reason it is recommended to stick to a unique naming convention to prevent collisions with other CPACK's.
  
 Global variables may have the same names as local variables, there is no interference between them. Global variables may have the same names as local variables, there is no interference between them.
Line 34: Line 36:
 </code> </code>
 ---- ----
 +<=[[4rpl:start| Index]]
  
-==== Vectors ====+---- 
 +===== Vectors =====
 === Description === === Description ===
  
 Vectors contain up to 4 fields.  Vectors contain up to 4 fields. 
-These fields can be referenced with a suffix that infers the use of the vector+These fields can be referenced with a suffix that implies the use of the vector
  
-  * .x .y .z .w (coordiaate+  * .x .y .z .w  (coordinates
-  * .r .g .b  .a  (color)+  * .r .g .b .a  (color)
   * .0 .1 .2 .3  (index)    * .0 .1 .2 .3  (index) 
  
Line 58: Line 62:
 </code> </code>
  
 +A brief note on color values:
 +
 +Color is represented by 4 values, each of the first 3 the intensity of one of the primary colors (Red, Green and Blue) and the 4th value the Alpha channel. Alpha values indicate transparency or opacity. All of these values are floating-point values ranging from 0 to 1, with higher values truncated to 1. 
 +
 +Example: 
 +  ?   V4(1,1,1,1) 
 +  : is white. 
 +  ? V4(1 0 0 1)  
 +  : is red. 
 +  ? V4(0 1 0 1)  
 +  : is green. 
 +  ? V4(0 0 1 1)  
 +  : is blue.
 +  
 +Combining different values result in any other intermediate color.
 +
 +Changing the 4th field to a lesser value would increase the transparency, until at 0 it would render the text invisible
 +
 +----
 +
 +<=[[4rpl:start| Index]]
 ---- ----
 +===== Lists =====
  
-==== Lists ====+<=[[4rpl:start#lists| List Commands]] \\
  
 Lists are collections of data. They are similar to arrays but they do not have a fixed length.  Lists are collections of data. They are similar to arrays but they do not have a fixed length. 
Line 76: Line 102:
 effectively setting element number "index" of the variable to whichever value is on top of the stack.  effectively setting element number "index" of the variable to whichever value is on top of the stack. 
 If **variable** is not a list, a warning will be printed to the console. If **variable** is not a list, a warning will be printed to the console.
 +
 +See also: [[4rpl:commands:specialsyntax#coerce table to list]]
  
 === Example === === Example ===
Line 84: Line 112:
 traceallsp(<-list[0]) traceallsp(<-list[0])
 </code> </code>
 +
 +
 +
 +<=[[4rpl:start| Index]]
  
 ---- ----
 +===== Tables =====
  
-==== Tables ====+<=[[4rpl:start#Tables| Table Commands]] \\
  
 Tables are collection of named data. They are sometimes called dictionaries in other languages.  Tables are collection of named data. They are sometimes called dictionaries in other languages. 
Line 112: Line 145:
 42 ->table{"SomeName"} 42 ->table{"SomeName"}
 traceallsp(<-table{"SomeName"}) traceallsp(<-table{"SomeName"})
 +</code>
 +
 +==== Coerce table to list  ====
 +It is possible to iterate over the elements in a table by coercing the table into a list. The following shows two equivalent methods to extract data from a table. Method Two is slightly more efficient. 
 +
 +=== Example ===
 +<code 4RPL>
 +#Make sure some units are on the map when testing!
 +
 +"Cannon"    V2(0.03 75) 
 +"Mortar"    V2(0.05 25) 
 +"Sniper"    V2(0.02 20) 
 +Table ->units 
 +
 +# method One
 +
 +Do (GetTablecount(<-units) 0)
 + GetUnitsByType (<-units[I] 1) ->unitList
 + <-units{<-units[I]} ->value
 + TraceAllSp ("Found:" GetListCount(<-unitList) <-units[I]  <-value )
 +Loop
 +
 +# method Two
 +
 +GetTableKeys(<-units)->keys
 +Do (Getlistcount(<-keys) 0) 
 + <-keys[I] ->k
 + GetUnitsByType (<-k 1) ->unitList
 + <-units{<-k} ->value
 + TraceAllSp ("Found:" GetListCount(<-unitList) <-k  <-value )
 +Loop
 </code> </code>
  
  
4rpl/commands/specialsyntax.1611356622.txt.gz · Last modified: 2025/02/14 14:56 (external edit)