Difference between revisions of "NERPs documentation"
(Moved some documented and handy functions to a new Useful Functions section.) |
(→Labels) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 69: | Line 69: | ||
| {{nowrap|<code>00 00 02 00</code>}} | | {{nowrap|<code>00 00 02 00</code>}} | ||
| Stop | | Stop | ||
| {{nowrap|Ends the script for the current tick | | {{nowrap|Ends the script for the current tick '''Requires a condition'''}} | ||
|- | |- | ||
| <code>01 00 02 00</code> | | <code>01 00 02 00</code> | ||
Line 409: | Line 409: | ||
| GetMiniFiguresOnLevel | | GetMiniFiguresOnLevel | ||
| Returns the number of minifigures on the map. Probably doesn't include hidden objects. | | Returns the number of minifigures on the map. Probably doesn't include hidden objects. | ||
|- | |- | ||
| <code>61 00 02 00</code> | | <code>61 00 02 00</code> | ||
Line 435: | Line 431: | ||
|- | |- | ||
| <code>89 00 02 00</code> | | <code>89 00 02 00</code> | ||
| SetTutorialBlockIsPath | | SetTutorialBlockIsPath X | ||
| Sets just one tutorial block as a Power Path. Plays up a lot and seems to always have a STOP hanging off the end of it. Do not expect this function to behave itself, and thoroughly test before usage. Cannot be used to pave over lava/water, but can be used to pave over slug holes (the slug hole remains and can still create slugs. Additionally, the Power Path is unselectable and hovering over it says it is a Slimy Slug Hole). | | Sets just one tutorial block as a Power Path. Plays up a lot and seems to always have a STOP hanging off the end of it. Do not expect this function to behave itself, and thoroughly test before usage. Cannot be used to pave over lava/water, but can be used to pave over slug holes (the slug hole remains and can still create slugs. Additionally, the Power Path is unselectable and hovering over it says it is a Slimy Slug Hole). | ||
|- | |- | ||
Line 490: | Line 486: | ||
| Seems to function identically to GetRecordObjectAtTutorial. Test thoroughly before use. | | Seems to function identically to GetRecordObjectAtTutorial. Test thoroughly before use. | ||
|} | |} | ||
===Additional functions=== | ===Additional functions=== | ||
Line 1,354: | Line 1,346: | ||
The actual label is defined with a colon afterwards, like this: | The actual label is defined with a colon afterwards, like this: | ||
<code>label:</code> | <code>label:</code> | ||
This is | This is the only functional line (comments don't count) that does not require a CONDITION ? in front of it. Here is an example of a label being used: | ||
<code>GetOxygenLevel < 50 ? :O2Low | <code>GetOxygenLevel < 50 ? :O2Low | ||
O2Low:</code> | O2Low:</code> | ||
It is worth noting that due to the way the scripter works, the above code will check the condition and even if it doesn't trigger, move down anyway - so you really want something like | |||
<code>GetOxygenLevel < 50 ? :O2Low | |||
TRUE ? Stop | |||
O2Low:</code> | |||
==Old commands== | ==Old commands== |
Latest revision as of 21:19, 6 August 2019
This article is an unfinished work in progress or contains transferred information that needs to be rewritten or reformatted to fit our standards. Please excuse the mess and do not mark for deletion.
This is an extremely WIP page to document all NERPs code from LEGO Rock Raiders for Windows. Do not document what a function does unless it's been tested and its use is 100% clear. Many of these are obvious from their names, but have been left as "unknown" for now simply because they haven't been tested.
Use information from Addict's old NERPs reference and the old rru-stuff.org NERPs function list to help build this page, though ultimately that just helps give a rough idea of what things are; everything needs to be further tested and verified for this article.
Effects written //Like this are Karl White's original comments. These should probably be saved in some form, though not used as the main definitions.
As for how to use these functions, this page details that. There are a lot of functions, most of which are useless: particularly notable ones are under the section "Useful Functions."
Comparison operators
Value | Function | Action |
---|---|---|
01 00 01 00
|
+[verify] | Unknown |
02 00 01 00
|
#[verify] | Unknown |
03 00 01 00
|
/[verify] | Unknown |
04 00 01 00
|
? | Acts like an "if" clause, using the format Expression ? Action .Basically: if(Expression) Action(), or "if Expression is true, then perform Action." Example usage: GetCrystalsCurrentlyStored > 24 ? SetLevelCompleted which states that if 25 or more energy crystals are stored, the current mission will be set to complete.Not to be confused with the C++ ternary operator ?: .
|
05 00 01 00
|
> | Is greater than |
06 00 01 00
|
< | Is less than |
07 00 01 00
|
= | Is equal to |
08 00 01 00
|
>= | Is greater than or equal to |
09 00 01 00
|
<= | Is less than or equal to |
0A 00 01 00
|
!= | Is not equal to |
Function calls
Function calls are defined in the executable file. All functions end with a value of 02 00
. There are a grand total of 293 known functions.
Expressions
Value | Function | Action |
---|---|---|
00 00 02 00
|
Stop | Ends the script for the current tick Requires a condition |
01 00 02 00
|
True | Returns true |
02 00 02 00
|
False | Returns false |
03 00 02 00
|
Null | Returns null (possibly useless) |
Random functions
Value | Function | Action |
---|---|---|
04 00 02 00
|
GetRandom | |
05 00 02 00
|
GetRandom10 | Returns a random number between 0 and 10 inclusive |
06 00 02 00
|
GetRandom100 | Returns a random number between 0 and 100 inclusive |
07 00 02 00
|
GetRandomTrueFalse | Randomly returns 0 (FALSE) or 1 (TRUE); as such, it can be used to randomly add 0 or 1 to a number |
Goal functions
Value | Function | Action |
---|---|---|
08 00 02 00
|
SetLevelCompleted | Win the level, and eventually go to the scoreboard. Causing this to happen while the objective is showing will freeze the game. |
09 00 02 00
|
SetLevelFail | Fail the level. Causing this to happen while the objective is showing will freeze the game. |
0A 00 02 00
|
SetGameCompleted | |
0B 00 02 00
|
SetGameFail | |
0C 00 02 00
|
GetCrystalsPickedUp | |
0D 00 02 00
|
GetCrystalsCurrentlyStored | Returns the number of energy crystals currently stored. Should be followed by a symbol and a value – for collection objectives, this will by default be a greater than sign and a value one less than the desired goal. |
0E 00 02 00
|
GetCrystalsUsed | //CRYSTALS USED FOR CONSTRUCTIONS ETC |
0F 00 02 00
|
GetCrystalsStolen |
Register functions
Value | Function | Action |
---|---|---|
11 00 02 00
|
GetR0 | All of the following return the value of their respective register. |
12 00 02 00
|
GetR1 | |
13 00 02 00
|
GetR2 | |
14 00 02 00
|
GetR3 | |
15 00 02 00
|
GetR4 | |
16 00 02 00
|
GetR5 | |
17 00 02 00
|
GetR6 | |
18 00 02 00
|
GetR7 | |
19 00 02 00
|
SetR0 | All of the following return the value of their respective register. x is any numerical value. |
1A 00 02 00
|
SetR1 | |
1B 00 02 00
|
SetR2 | |
1C 00 02 00
|
SetR3 | |
1D 00 02 00
|
SetR4 | |
1E 00 02 00
|
SetR5 | |
1F 00 02 00
|
SetR6 | |
20 00 02 00
|
SetR7 | |
21 00 02 00
|
AddR0 | Addition functions. All of them add x to their respective registers. x is any numerical value |
22 00 02 00
|
AddR1 | |
23 00 02 00
|
AddR2 | |
24 00 02 00
|
AddR3 | |
25 00 02 00
|
AddR4 | |
26 00 02 00
|
AddR5 | |
27 00 02 00
|
AddR6 | |
28 00 02 00
|
AddR7 | |
29 00 02 00
|
SubR0 | Subtraction functions. All of them subtract x from their respective registers. x is any numerical value |
2A 00 02 00
|
SubR1 | |
2B 00 02 00
|
SubR2 | |
2C 00 02 00
|
SubR3 | |
2D 00 02 00
|
SubR4 | |
2E 00 02 00
|
SubR5 | |
2F 00 00 00
|
SubR6 | |
30 00 02 00
|
SubR7 |
Message Functions
These allow messages to be sent. Chief will automatically come onscreen if he is not there already for a message: there is no SetChiefFromRightSide or SetChiefFromTop command. Chief will leave when the message sound file finishes (not when the text goes away).
If the message is quite long, the box automatically adjusts its height.
Value | Function | Action |
---|---|---|
31 00 02 00
|
SetMessagePermit | Determines whether messages in the text panel and accompanying sound file will be allowed or not. Setting this to 0 allows messages, 1 disables them, unlike a usual boolean. Setting this to 0 after having previously sent a message will clear the text in the box, although it will not clear the size of the box. |
10 00 02 00
|
SetMessage | This is used to actually send a message. Unlike most commands it requires two numbers; SetMessage NUM1 NUM2. NUM1 is the message number as defined by NERPMessageFile in the .cfg . NUM2 controls the "Next" arrow that appears in tutorials by the text box; 0 => enable arrow, 1 => disable arrow. Generally this and the above function are the only ones you need. |
55 00 02 00
|
SetIconPos | //Sets position of icons displayed with message |
56 00 02 00
|
SetIconSpace | //Sets spacing of icons displayed with message |
57 00 02 00
|
SetIconWidth | //Sets width of icons displayed with message |
58 00 02 00
|
SetMessageWait | |
6B 00 02 00
|
GetMessageTimer | //Gets how much longer a wav accompanying a message will last |
6C 00 02 00
|
SetMessageTimerValues | //Set defaults (see example) |
C8 00 02 00
|
AdvanceMessage | |
D1 00 02 00
|
GetMessagesAreUpToDate | |
C8 00 02 00
|
AdvanceMessage |
Timer functions
Timers run in milliseconds (contray to Karl's comments below), do not reset when Restart Level is selected (but will reset to 0 if the level is exited and re-selected via the menu), and seem to have a maximum of 32000. (Higher values can be incorporated by using a register to count the number of times 30000 has ticked over).
Value | Function | Action |
---|---|---|
43 00 02 00
|
GetTimer0 | //get current time in seconds |
44 00 02 00
|
GetTimer1 | |
45 00 02 00
|
GetTimer2 | |
46 00 02 00
|
GetTimer3 | |
47 00 02 00
|
SetTimer0 | //set current time in seconds |
48 00 02 00
|
SetTimer1 | |
49 00 02 00
|
SetTimer2 | |
4A 00 02 00
|
SetTimer3 |
Useful Functions
This set of functions is entirely subjective, generally biased, as well as not being encyclopedic writing. It is also incomplete, and doubtlessly there are interesting functions hiding in the mess down below: for instance GetFenceIconClicked can be used as a proxy for the number of fences on the level.
If a function has X and Y after it, this means that it needs numbers after it X and Y. Ones without this formatting indicate either that they need no numbers or that they are untested. E.g. SetRockMonsterAtTutorial X requires one number that corresponds to the tutorial block from which to send monsters from.
Anything prefaced by double slashes \\ is one of Karl's original comments.
Value | Function | Action |
---|---|---|
32 00 02 00
|
GetObjectiveShowing | Returns a non-zero number (not sure what number) when the objective screen is showing. This includes the initial objective at the beginning of the level and being opened mid-level. Handy for resetting timers that wouldn't otherwise reset on level restart. |
34 00 02 00
|
GetMiniFiguresOnLevel | Returns the number of minifigures on the map. Probably doesn't include hidden objects. |
61 00 02 00
|
GetOreCurrentlyStored | This does not include 'ore' in the form of studs. //How much ore is stored |
72 00 02 00
|
GetTutorialBlockIsGround X | This returns a non-zero value (not sure exactly what value) if the tutorial block is ground: this does not include hiddern caverns or visible walls. As such, it can be used for a 'has this wall been dug' or 'is this cavern accessible yet' check. //Is there ground at tutorial block x |
77 00 02 00
|
AddPoweredCrystals X | Adds X crystals to the stockpile. //Why am I writing all of this? |
73 00 02 00
|
SetCameraGotoTutorial X | Moves the camera to tutorial block X. May cause general glitchiness and black screens, but only some of the time. This seems to be to do with the distance the camera must travel (less distance -> less chance of glitches). //Make camera look at a particular tutorial block |
88 00 02 00
|
SetTutorialBlockIsGround X | This will demolish all walls at tutorial block X. It cannot be used to create ground over lava or water. If used on a tile in a hiddern cavern, it will open that cavern. |
89 00 02 00
|
SetTutorialBlockIsPath X | Sets just one tutorial block as a Power Path. Plays up a lot and seems to always have a STOP hanging off the end of it. Do not expect this function to behave itself, and thoroughly test before usage. Cannot be used to pave over lava/water, but can be used to pave over slug holes (the slug hole remains and can still create slugs. Additionally, the Power Path is unselectable and hovering over it says it is a Slimy Slug Hole). |
8C 00 02 00
|
CameraZoomIn X | Zooms in the camera. Usual numbers are between 0 and 100. Can be used to quite convincingly simulate earthquakes. |
8D 00 02 00
|
CameraZoomOut X | Zooms out the camera. Usual numbers are between 0 and 100. |
8E 00 02 00
|
CameraRotate | Untested and probably requires a number after it. |
9F 00 02 00
|
SetRockMonsterAtTutorial X | Creates the emerge monsters (not neccessarily a Rock Monster) at all walls marked X in the tutorial map. |
AE 00 02 00
|
SetGameSpeed X Y | Requires two numbers. The first is the game speed (0 to 100 at least, higher values are probably doable) and the second just needs to be a 0. Can be used to pause the game for an introduction to a complex situation. Use with messages to then restore the game speed when the arrow is clicked. |
B2 00 02 00
|
GetRecordObjectAtTutorial X | So far, testing shows that this doesn't actually care about record objects: it just cares about objects (in ObjectList.ol) that are in opened caverns at level start, and requires no usage of recording functions previously. Test thoroughly before use. |
B5 00 02 00
|
GetOxygenLevel | Returns the oxygen level, from 0 to 100. The game will automatically fail you at 0 oxygen so a check for that is unnecessary. |
BB 00 02 00
|
GenerateSlug | Spawns just one slug. Multiple slugs require multiple executions of this command. There is no way to specify which hole to come out of. |
BC 00 02 00
|
GetSlugsOnLevel | Returns the number of slugs on the level. |
BD 00 02 00
|
GetMonstersOnLevel | Returns the number of monsters on the level. This includes Rock Monsters, Ice Monsters, and Lava Monsters at least. It does not include slugs. It *may* include bats, Small Spiders, Small Monsters, etc. |
BE 00 02 00
|
SetCongregationAtTutorial X | Gets all Rock Monsters (other monster types not tested: does not affect slugs) to move to tutorial block X. It seems that one monster can only ever be ordered to move once: using this command again, even to a different tutorial block, will not affect monsters that already had this command applied to them. |
C5 00 02 00
|
GetUnitAtBlock X | Returns a number that is not zero (not sure which number) whenever a minifigure/vehicle/possibly building walks over tutorial block X. |
C7 00 02 00
|
GetRecordObjectAmountAtTutorial X | Seems to function identically to GetRecordObjectAtTutorial. Test thoroughly before use. |
Additional functions
Value | Function | Action |
---|---|---|
4B 00 02 00
|
GetBarracksBuilt | //Number of barracks |
4C 00 02 00
|
GetOreRefineriesBuilt | //Number of Ore Refineries |
4D 00 02 00
|
GetToolStoresBuilt | //Number of Tool Stores |
4E 00 02 00
|
GetStudCount | //Number of studs |
4F 00 02 00
|
GetTeleportsBuilt | //Number of teleport pads |
50 00 02 00
|
GetMiniFigureSelected | //Is a minifigure selected? |
51 00 02 00
|
GetSmallDiggerSelected | //Is a small digger selected |
52 00 02 00
|
GetMiniFigureInSmallDigger | //Is there a minifigure in a small digger somewhere |
53 00 02 00
|
GetTrainFlags | |
54 00 02 00
|
SetTrainFlags | |
55 00 02 00
|
SetIconPos | //Sets position of icons displayed with message |
56 00 02 00
|
SetIconSpace | //Sets spacing of icons displayed with message |
57 00 02 00
|
SetIconWidth | //Sets width of icons displayed with message |
58 00 02 00
|
SetMessageWait | |
5C 00 02 00
|
SetTutorialPointer | //Make a pointer appear above tutorial block number x |
5D 00 02 00
|
GetTutorialFlags | //Get the current tutorial flags |
5E 00 02 00
|
SetTutorialFlags | //Sets tutorial flags (0 = allow any click anywhere anytime 3 = Disallow invalid clicks) |
60 00 02 00
|
GetOrePickedUp | //How much ore is currently being carried |
62 00 02 00
|
GetOreUsed | //ORE USED FOR CONSTRUCTIONS ETC //How much ore has been used??? |
63 00 02 00
|
GetOreStolen | //How much ore has been stolen??? |
64 00 02 00
|
GetCrystalRefineriesBuilt | //Has a crystal refinery been built |
6B 00 02 00
|
GetMessageTimer | //Gets how much longer a wav accompanying a message will last |
6C 00 02 00
|
SetMessageTimerValues | //Set defaults (see example) |
6D 00 02 00
|
GetTutorialBlockClicks | //Has the block at tutorial block number x been clicked |
6E 00 02 00
|
SetTutorialBlockClicks | //Reset this value |
6F 00 02 00
|
GetTutorialCrystals | //How many crystals are at this tutorial block |
70 00 02 00
|
SetTutorialCrystals | //Set this value |
71 00 02 00
|
GetPathsBuilt | //How many paths have been built |
78 00 02 00
|
GetGraniteGrinderSelected | //Has the granite grinder been selected |
79 00 02 00
|
GetChromeCrusherSelected | //Has the chrome crusher(large digger) been selected |
7A 00 02 00
|
GetTutorialBlockIsPath | Defines whether the tutorial block at a specified square is a power path. |
7E 00 02 00
|
GetGunstationsBuilt | Defines how many Mining Lasers have been built on a map. |
7F 00 02 00
|
SetOreAtIconPositions | |
80 00 02 00
|
GetVehicleTransportsBuilt | |
8A 00 02 00
|
CameraLockOnObject | Specify a number, which locks the camera to the object list item. *Need to test this a bit more* |
8B 00 02 00
|
CameraUnlock | Unlocks the camera from being locked onto an object. |
8F 00 02 00
|
GetCameraAtTutorial | |
90 00 02 00
|
GetSelectedRecordedObject | |
91 00 02 00
|
GetSmallHelicopterSelected | |
92 00 02 00
|
GetRapidRiderSelected | |
93 00 02 00
|
GetMinifigureInRapidRider | |
9A 00 02 00
|
GetAnyKeyPressed | |
9B 00 02 00
|
SetPauseGame | |
A0 00 02 00
|
GetCallToArmsButtonClicked | |
A1 00 02 00
|
GetRockMonstersDestroyed | |
A5 00 02 00
|
GetRockMonsterRunningAway | |
A6 00 02 00
|
SetCallToArms | Activates Action Stations. |
AA 00 02 00
|
GetPowerStationsBuilt | |
AB 00 02 00
|
SetAttackDefer | |
AC 00 02 00
|
SetRockMonsterPainThreshold | |
AD 00 02 00
|
SetRockMonsterHealth | |
B3 00 02 00
|
GetHiddenObjectsFound | |
B4 00 02 00
|
SetHiddenObjectsFound | |
B9 00 02 00
|
GetGeodomeBuilt | |
BA 00 02 00
|
AddStoredOre | Adds X ore to the stockpile. |
BF 00 02 00
|
SetObjectiveSwitch | |
C0 00 02 00
|
GetObjectiveSwitch | |
C1 00 02 00
|
GetGraniteGrindersOnLevel | |
C2 00 02 00
|
GetSmallDiggersOnLevel | Returns the number of Small Diggers on the level. |
C3 00 02 00
|
GetDocksBuilt | |
C4 00 02 00
|
GetRapidRidersOnLevel | |
C6 00 02 00
|
GetSmallHelicoptersOnLevel | |
C9 00 02 00
|
AllowCameraMovement | |
CA 00 02 00
|
ClickOnlyObjects | |
CB 00 02 00
|
ClickOnlyMap | |
CC 00 02 00
|
ClickOnlyIcon | |
CD 00 02 00
|
DisallowAll | |
CE 00 02 00
|
SupressArrow | Defines whether the continue arrow in the text panel is displayed or not. Setting this to 1 prevents the arrow from appearing while 0 sets it to appear. |
CF 00 02 00
|
GetMinifigureInGraniteGrinder | |
D0 00 02 00
|
GetMinifigureInChromeCrusher | |
D1 00 02 00
|
GetMessagesAreUpToDate | |
D2 00 02 00
|
SetCrystalPriority | |
D3 00 02 00
|
MakeSomeoneOnThisBlockPickUpSomethingOnThisBlock | |
E0 00 02 00
|
GetSmallTruckSelected | |
E1 00 02 00
|
GetMinifigureInSmallTruck | |
E2 00 02 00
|
GetMinifigureInSmallHelicopter | |
E3 00 02 00
|
SetBarracksLevel | |
E4 00 02 00
|
SetDocksLevel | |
E5 00 02 00
|
SetGeoDomeLevel | |
E6 00 02 00
|
SetPowerStationLevel | |
E7 00 02 00
|
SetToolStoreLevel | |
E8 00 02 00
|
SetGunstationLevel | |
E9 00 02 00
|
SetTeleportPadLevel | |
EA 00 02 00
|
SetSuperTeleportLevel | |
EB 00 02 00
|
SetUpgradeStationLevel | |
EC 00 02 00
|
GetBarracksSelected | |
ED 00 02 00
|
GetDocksSelected | |
EE 00 02 00
|
GetGeoDomeSelected | |
EF 00 02 00
|
GetPowerstationsBuilt | |
F0 00 02 00
|
GetToolStoreSelected | |
F1 00 02 00
|
GetGunstationSelected | |
F2 00 02 00
|
GetTeleportPadSelected | |
F3 00 02 00
|
GetSuperTeleportSelected | |
F4 00 02 00
|
GetUpgradeStationSelected | |
F8 00 02 00
|
GetBuildingsTeleported | |
F9 00 02 00
|
SetBuildingsTeleported | |
FA 00 02 00
|
CameraLockOnMonster | |
FB 00 02 00
|
SetMonsterAttackPowerstation | |
FC 00 02 00
|
ClickOnlyCalltoarms | |
FE 00 02 00
|
SetRecordObjectPointer | |
05 01 02 00
|
GetMonsterAtTutorial | |
06 01 02 00
|
SetMonsterAttackNowt | |
0A 01 02 00
|
GetLevel1BarracksBuilt | |
0B 01 02 00
|
GetLevel1DocksBuilt | |
0C 01 02 00
|
GetLevel1GeodomeBuilt | |
0D 01 02 00
|
GetLevel1PowerdtationsBuilt | |
0E 01 02 00
|
GetLevel1ToolStoresBuilt | |
0F 01 02 00
|
GetLevel1GunstationsBuilt | |
10 01 02 00
|
GetLevel1TeleportsBuilt | |
11 01 02 00
|
GetLevel1VehicleTeleportsBuilt | |
12 01 02 00
|
GetLevel1UpgradeStationsBuilt | |
13 01 02 00
|
GetLevel2BarracksBuilt | |
14 01 02 00
|
GetLevel2DocksBuilt | |
15 01 02 00
|
GetLevel2GeodomeBuilt | |
16 01 02 00
|
GetLevel2PowerstationsBuilt | |
17 01 02 00
|
GetLevel2ToolStoresBuilt | |
18 01 02 00
|
GetLevel2GunstationsBuilt | |
19 01 02 00
|
GetLevel2TeleportsBuilt | |
1A 01 02 00
|
GetLevel2VehicleTeleportsBuilt | |
1B 01 02 00
|
GetLevel2UpgradeStationsBuilt | |
1C 01 02 00
|
GetPoweredBarracksBuilt | |
1D 01 02 00
|
GetPoweredDocksBuilt | |
1E 01 02 00
|
GetPoweredGeodomeBuilt | |
1F 01 02 00
|
GetPoweredPowerStationsBuilt | |
20 01 02 00
|
GetPoweredTeleportsBuilt | |
21 01 02 00
|
GetPoweredGunstationsBuilt | |
22 01 02 00
|
GetPoweredTeleportsBuilt | |
23 01 02 00
|
GetPoweredVehicleTeleportsBuilt | |
24 01 02 00
|
GetPoweredUpgradeStationsBuilt |
Icon Functions
Generally speaking, any icon function has two things: SET and GET. The Get function gets the total amount of times the icon has been clicked: eg GetFenceIconClicked . This includes 'failed' clicks that didn't result in anything: eg clicking on a tile that can't have a fence on it. The Set function sets that value to a specified value: eg SetToolStoreIconClicked 0 would reset that counter.
There are also Flash functions, which presumably flash their icon, but these have not been tested.
Value | Function | Action |
---|---|---|
33 00 02 00
|
GetTeleportIconClicked | |
35 00 02 00
|
GetBuildIconClicked | Gets whether the build menu icon has been clicked or not. |
36 00 02 00
|
SetBuildIconClicked | Sets a value for the accompanying Get function. |
37 00 02 00
|
SetTeleportIconClicked | Sets a value for the accompanying Get function. |
38 00 02 00
|
SetToolStoreIconClicked | Sets a value for the accompanying Get function. |
39 00 02 00
|
GetToolStoreIconClicked | Gets whether the Tool Store build menu icon has been clicked or not. |
3A 00 02 00
|
FlashToolStoreIcon | Flashes the Tool Store build menu icon. |
3B 00 02 00
|
FlashBuildIcon | Flashes the build menu icon. |
3C 00 02 00
|
FlashTeleportIcon | |
3D 00 02 00
|
SetGoBackIconClicked | Sets a value for the accompanying Get function. |
3E 00 02 00
|
GetGoBackIconClicked | Gets whether the back icon has been clicked or not. |
3F 00 02 00
|
FlashGoBackIcon | Flashes the back icon. |
40 00 02 00
|
SetDigIconClicked | |
41 00 02 00
|
GetDigIconClicked | |
42 00 02 00
|
FlashDigIcon | |
59 00 02 00
|
GetMountIconClicked | //Has mount icon been clicked |
5A 00 02 00
|
SetMountIconClicked | //Manually set value of above |
5B 00 02 00
|
FlashMountIcon | //Flash the mount icon |
65 00 02 00
|
FlashLayPathIcon | //Flash the lay path icon |
66 00 02 00
|
SetLayPathIconClicked | //Set a value for click flag |
67 00 02 00
|
GetLayPathIconClicked | //Has it been clicked |
68 00 02 00
|
GetTeleportPadIconClicked | //Has teleport icon been clicked |
69 00 02 00
|
SetTeleportPadIconClicked | //Reset value to summat |
6A 00 02 00
|
FlashTeleportPadIcon | //Flash teleport minifigure icon |
74 00 02 00
|
FlashDynamiteIcon | //Make the dynamit icon flash |
75 00 02 00
|
GetDynamiteClicked | //Has this icon been clicked |
76 00 02 00
|
SetDynamiteClicked | //Has my life really become this dull? |
7B 00 02 00
|
GetGunstationIconClicked | Defines whether the Mining Laser build menu icon has been clicked. |
7C 00 02 00
|
SetGunstationIconClicked | |
7D 00 02 00
|
FlashGunStationIcon | Flashes the Mining Laser build menu icon. |
94 00 02 00
|
GetDismountIconClicked | |
95 00 02 00
|
SetDismountIconClicked | |
96 00 02 00
|
FlashDismountIcon | |
97 00 02 00
|
GetGetToolIconClicked | |
98 00 02 00
|
SetGetToolIconClicked | |
99 00 02 00
|
FlashGetToolIcon | |
9C 00 02 00
|
GetGetLaserIconClicked | |
9D 00 02 00
|
SetGetLaserIconClicked | |
9E 00 02 00
|
FlashGetLaserIcon | |
A2 00 02 00
|
SetGetPusherIconClicked | |
A3 00 02 00
|
GetGetPusherIconClicked | |
A4 00 02 00
|
FlashGetPusherIcon | |
A7 00 02 00
|
FlashPowerstationIcon | |
A8 00 02 00
|
SetPowerStationIconClicked | |
A9 00 02 00
|
GetPowerStationIconClicked | |
AF 00 02 00
|
FlashBarracksIcon | |
B0 00 02 00
|
SetBarracksIconClicked | |
B1 00 02 00
|
GetBarracksIconClicked | |
B6 00 02 00
|
FlashGeodomeIcon | |
B7 00 02 00
|
GetGeodomeIconClicked | |
B8 00 02 00
|
SetGeodomeIconClicked | |
D4 00 02 00
|
SetTrainIconClicked | |
D5 00 02 00
|
GetTrainIconClicked | |
D6 00 02 00
|
FlashTrainIcon | |
D7 00 02 00
|
SetTrainDriverIconClicked | |
D8 00 02 00
|
GetTrainDriverIconClicked | |
D9 00 02 00
|
FlashTrainDriverIcon | |
DA 00 02 00
|
SetTrainPilotIconClicked | |
DB 00 02 00
|
GetTrainPilotIconClicked | |
DC 00 02 00
|
FlashTrainPilotIcon | |
DD 00 02 00
|
SetTrainSailorIconClicked | |
DE 00 02 00
|
GetTrainSailorIconClicked | |
DF 00 02 00
|
FlashTrainSailorIcon | |
F5 00 02 00
|
SetUpgradeBuildingIconClicked | |
F6 00 02 00
|
GetUpgradeBuildingIconClicked | |
F7 00 02 00
|
FlashUpgradeBuildingIcon | |
FD 00 02 00
|
FlashCallToArmsIcon | |
FF 00 02 00
|
GetGetSonicBlasterIconClicked | |
00 01 02 00
|
SetGetSonicBlasterIconClicked | |
01 01 02 00
|
FlashGetSonicBlasterIcon | |
02 01 02 00
|
GetDropSonicBlasterIconClicked | |
03 01 02 00
|
SetDropSonicBlasterIconClicked | |
04 01 02 00
|
FlashDropSonicBlasterIcon | |
07 01 02 00
|
GetPlaceFenceIconClicked | Returns the number of times the 'Place Electric Fence' icon has been clicked |
08 01 02 00
|
SetPlaceFenceIconClicked | |
09 01 02 00
|
FlashPlaceFenceIcon |
Labels
These were on the old wiki on a page "Special Parameters"
These are labels, an extremely useful way to organise code. They function like GOTOs in other languages. It so happens that DDI consistently used the same labels which confused everyone. But now in this enlightened era we can make our own labels.
Labels function like bookmarks, a way for the script to jump to a certain point (bookmark), skipping everything else along the way; hence why a lot of DDI's labels are called Skip, or worse, SkippedSkip.
To go to a label, one uses
:label
except that keep in mind that nearly every line needs a condition, and going to labels are no exception, so you really need
TRUE ? :label
The actual label is defined with a colon afterwards, like this:
label:
This is the only functional line (comments don't count) that does not require a CONDITION ? in front of it. Here is an example of a label being used:
GetOxygenLevel < 50 ? :O2Low
O2Low:
It is worth noting that due to the way the scripter works, the above code will check the condition and even if it doesn't trigger, move down anyway - so you really want something like
GetOxygenLevel < 50 ? :O2Low
TRUE ? Stop
O2Low:
Old commands
These commands were in the first chunk of the NERP list before the verified positions - many may not work
These commands were tagged // very questionableFunction | Action |
---|---|
GetMinifigureTask | //get number of minifigures doing a task |
GetMinifigureActivity | //get number of minifigures doing an activity |
GetMinifigureHealth | |
GetMinifigureEnergy | |
GetMinifigureTool | //drill, spade |
GetMinifigureCarryObject | //crystal, ore, weapon |
GetMinifigureCurrentTask | //deposit crystal, dig, etc |
GetMinifigureUnderAttack | //weapon type, thrown about, punched,etc |
GetMinifigureScared | //close proximity of enemy |
GetMinifigureCocooned | //trapped by cocoon |
GetBlocksDynamited | |
GetBarriersOnLevel | |
GetElectricFencesOnLevel | |
GetMinifiguresTeleportedIn | |
GetMinifiguresDestroyedIn | |
GetMinifiguresSold | |
GetMinifiguresTeleportedOut | |
GetMinifiguresGrabbed | |
GetMinifiguresScaredCount | //NUMBER OF TIMES MINIFIGURES ARE SCARED, NOT NUMBER OF INDIVIDUAL MINIFIGURES SCARED |
GetMinifiguresSlippedCount | //NUMBER OF TIMES MINIFIGURES SLIPPED, NOT NUMBER OF INDIVIDUAL MINIFIGURES SPLIPPED |
GetMinifiguresCaughtInWeb | |
GetVehiclesTeleportedIn | |
GetVehiclesSold | |
GetVehiclesTeleportedOut | |
GetVehiclesCaughtInWeb | |
GetBuildingsConstructed | |
GetBuildingsDestroyed | |
GetBuildingsSold | |
GetBuildingsTeleportOut | |
GetBuildingsPunched | //NUMBER OF TIMES BUILDINGS ARE PUNCHED |
GetBuildingsHitByBoulder | //NUMBER OF TIMES BUILDINGS ARE HIT BY BOULDER |
GetRockMonstersEmerged | |
GetRockMonstersDestroyed | |
GetRockMonstersEnteredWall | |
GetRockMonstersElectrocutedOnFence | |
SetLevelComplete | |
SetGameComplete | |
SetPrintMessage | |
SetAssignTaskToUnit | |
SetCreateBuilding | |
SetCreateMinifgure | |
SetRockMonsterAggression | |
SetSpiderAggression | |
GetBuildPathIconClicked | //Reset value |
SetBuildPathIconClicked | //Has build path icon been clicked |
FlashBuildPathIcon | //Flash build path icon |
N.B. These sample NERP levels below are not totally correct. For instance, the first script assumes timers are in seconds, which they are not: they are in milliseconds. Furthermore, the maximum timer value is ~32000, so this cannot be fixed by adding three zeroes to 300. A loop needs to be constructed to count the amount of times 30 seconds has rolled over.
The second script uses SetPrintMessage, which has not been tested to work.
Sample NERP levels //---------------------------- //Example of what to use for sample times //Set wait times (sample length multiplier, time added after sample, time for no sample) TRUE ? SetMessageTimerValues 1000 1000 4000 //---------------------------- //---------------------------- Objective :- Level ends after 5 minutes Solution :- TRUE ? SetTimer0 300 GetTimer0 > 0 ? :Skip TRUE ? SetLevelComplete Skip: //---------------------------------- //---------------------------- Objective :- Level ends after 10 power crystals collected and teleporter built After 9 crystals collected give the message "Only one more crystal to collect" Solution :- GetCrystalsCollected < 10 ? :Skip GetCrystalsCollected = 9 ? SetPrintMessage Only one more crystal to collect GetBuildingsConstructed TELEPORTER <1 ?:Skip TRUE ? SetLevelComplete Skip: //----------------------------------