| Both sides previous revisionPrevious revisionNext revision | Previous revision | 
| crpl:docs:setscriptvar [2014/02/27 15:45]  –  virgilw | crpl:docs:setscriptvar [2025/02/14 14:57] (current)  – external edit 127.0.0.1 | 
|---|
| ~~DISCUSSION~~ | ~~DISCUSSION:off~~ | 
| <- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#script_commands|Script Commands]] | <- [[crpl:crplreference| CRPL reference]] <- [[crpl:crplreference#script_commands|Script Commands]] | 
| =====  SetScriptVar  ===== | =====  SetScriptVar  ===== | 
| Can also set the variables of built-in units like spore towers and emitters.  | Can also set the variables of built-in units like spore towers and emitters.  | 
| You can check the names of built-in variable for units on the [[crpl:docs:getscriptvar|GetScriptVar]] page or at the bottom of this page. | You can check the names of built-in variable for units on the [[crpl:docs:getscriptvar|GetScriptVar]] page or at the bottom of this page. | 
| <note>Payload values for spores and emitters are internal integers, not the floats you would use  | <note>**Payload** and **Amt** values for Emitters, Inhibitors, Spores and Runners are internal integers, not the floats you would use in the map editor dialog. For example, 1.5 Creeper in-game should be set as 1500000.  | 
| in the map editor dialog. There is room for 6 digits after the decimal. 1.0 in the dialog would  |   | 
| be 1000000 on the internal int. The values in the sample below correlate to 25.0 for the spore  | **Interval** values for Emitters, Inhibitors, Spore Towers, Runner Nests should be set as the number of frames, rather than seconds. For example, 2 second interval as shown in-game should be set as 60 frames.  | 
| payload and 0.8 for the emitter production amount.</note> |   | 
|   | This is what setting an Emitter with 32.5 power and 2.5 second interval would look like:  | 
|   |   | 
|   | <code>  | 
|   | SetScriptVar(<-unit 0 "productionAmt" 32.5 1000000 mul)  | 
|   | SetScriptVar(<-unit 0 "productionInterval" 2.5 30 mul)  | 
|   | </code></note>  | 
|   |   | 
|   | <note>The **"startTime"** variable of Emitters and Spore Towers works based off of the start of the game, not the time of unit creation.  | 
|   |   | 
|   | If you're procedurally generating a unit, and you want to give it a delay, you need to add the current time elapsed to it.  | 
|   |   | 
|   | This is what setting a delay of 10 seconds would look like:  | 
|   | <code>  | 
|   | SetScriptVar(<-unit 0 "startTime" 300 GetGameTimeFrames add)  | 
|   | </code></note> | 
 |  | 
 |  | 
 |  | 
| :CreateBullet | :CreateBullet | 
| 	"CRPLCore" CurrentX CurrentY CreateUnit ->unit  | 	CreateUnit("CRPLCore" CurrentCoords) ->unit  | 
| 	<-unit "CRBullet.crpl" AddScriptToUnit  | 	AddScriptToUnit(<-unit "CRBullet.crpl")  | 
| 	<-unit "CRBullet.crpl" "targetX" <-targetX SetScriptVar  | 	SetScriptVar(<-unit "CRBullet.crpl" "targetX" <-targetX)  | 
| 	<-unit "CRBullet.crpl" "targetY" <-targetY SetScriptVar  | 	SetScriptVar(<-unit "CRBullet.crpl" "targetY" <-targetY)  | 
| 	<-unit "CRBullet.crpl" "payload" <-payload SetScriptVar  | 	SetScriptVar(<-unit "CRBullet.crpl" "payload" <-payload)  | 
| 	<-unit "main" "Custom2" SetImage  | 	SetImage(<-unit "main" "Custom2")  | 
| 	<-unit "main" -0.01 SetImagePositionZ  | 	SetImagePositionZ(<-unit "main" -0.01)  | 
| 	<-unit "main" self "barrel" GetImageRotation SetImageRotation  | 	SetImageRotation(<-unit "main" self "barrel" GetImageRotation) | 
| </code> | </code> | 
 |  |