User Tools

Site Tools


crpl:crpltutorial:code_examples

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
crpl:crpltutorial:code_examples [2022/01/09 00:42] – added Make a non-moving unit only buildable in void Grabzcrpl:crpltutorial:code_examples [2022/01/11 03:00] (current) – old revision restored (2020/06/08 16:35) Karsten75
Line 973: Line 973:
 </code> </code>
 <sub> Stolen from Teknotiss(who took it from virgil), where pyramids make golems. I simply changed golem to unit. Added by cpaca, known as Karma's coming on map search </sub> <sub> Stolen from Teknotiss(who took it from virgil), where pyramids make golems. I simply changed golem to unit. Added by cpaca, known as Karma's coming on map search </sub>
- 
-===== Make a non-moving unit only buildable in void ===== 
-This code will make it so a unit can be only built in void and not on terrain. It only works properly for stationary units. 
- 
-  * This is a global script, so you have to add it in Package Manager -> Global Control -> Pre Update. 
-  * **Tick the Run when paused box**, then in one of the UNITGUID fields paste the GUID of one or more void only units. 
-  * The script does not work in editor, you can finalize the map, back out then open the finalized map and test there if it works. 
-  * The unit must have the "Can build/land anywhere" toggle enabled.  
- 
-<code> 
-$UnitGUID0:"" 
-$UnitGUID1:"" 
-$UnitGUID2:"" 
-$UnitGUID3:"" 
-$UnitGUID4:"" 
- 
-GetBuildUnit ->curBuildUnit 
- 
-#Only do something if state has changed 
-<-curBuildUnit <-lastBuildUnit neq if 
- FALSE ->buildUnitSelected 
- FALSE ->buildUnitDeselected 
-  
- 5 0 do 
- "UnitGUID" I concat <-! ->val 
- <-val StringLength gt0 <-val <-curBuildUnit eq and if 
- TRUE ->buildUnitSelected 
- endif 
- <-val StringLength gt0 <-val <-lastBuildUnit eq and if 
- TRUE ->buildUnitDeselected 
- endif 
- loop 
-  
- #If a void only unit was selected, and the last selection was not a void only unit 
- <-buildUnitSelected <-buildUnitDeselected not and if 
- FALSE SetAllLegalUnitCells 
- <-LEGAL_CELLS TRUE SetLegalUnitCells 
- TRUE UseLegalUnitCells 
- #If a non void only unit was selected, and the last selection was a void only unit 
- else <-buildUnitSelected not <-buildUnitDeselected and if 
- FALSE SetAllLegalUnitCells 
- FALSE UseLegalUnitCells 
- endif endif 
-endif 
- 
-#Save current state 
-<-curBuildUnit ->lastBuildUnit 
- 
-#Initialize 
-:once 
- GetBuildUnit ->lastBuildUnit 
- @RebuildVoidCellsList 
-  
-:RebuildVoidCellsList 
- #Build list of void cells 
- CreateList ->LEGAL_CELLS 
- GetMapSize ->sizeZ ->sizeX 
- <-sizeZ 0 do 
- <-sizeX 0 do 
- #If terrain is void, add coordinates to list 
- I J GetTerrain eq0 if 
- <-LEGAL_CELLS I J V2 AppendToList 
- endif 
- loop 
- loop 
-</code> 
crpl/crpltutorial/code_examples.txt · Last modified: 2022/01/11 03:00 by Karsten75