Hello ,
This is a guide I wrote sometime ago , but since I see many people asking and wondering about Nova Control Bits again on these forums I felt it was appropriate to repost it.
Enjoy.
Entarus,
----------------------------------
A explanation of Nova Control Bits
Here follows an explantion of nova control bits. Bits were also available in previous versions of EV , but in nova they became much more powerful but also more difficult. Control bits are an essential part of making things happen in Nova, so I suggest you read trough this section carefully. I use parts from the EVN bible and explain each part.
- In Nova there are 10000 Nova Control bits (nbcs). Control bits are accessed through logical expressions that allow powerful and logical scripting. These expressions are divided into two types test and set.
Test
These are boolean expressions(Boolean means that they can be TRUE or FALSE) that are used to determine when something happens; for example, when a mission is to be offered, or when a particular ship should be made available for purchase. In general, if the logical expression defined in a given test expression field evaluates to be true (nonzero), the associated property will be activated (mission becomes available, ship appears, etc ).
Lets explain this with an example :
We have made a ship , and want to add this into our plug , but we dont want to give it to the player right away. He must complete a difficult mission before hes is allowed to buy the ship.
We can use nbcs to accomplish this. We will use the Availability field of the ship resource for this. Its a test field we enter a ceratin expression in to the field. The player will be able to purchase our type of ship when the expression evaluates to true.
We decide to use bit 4999 for this.
-In the missions OnSuccess field( its a SET field , as explained below) we enter the following : b4999
-In the Availability field in the ship resource we enter the same :
b4999
Lets see what happens : All bits are turned off as default. So we presume bit 4999 is unused and its turned off. When the player completes the mission , the Onsuccess field will be exectuted. This means that bit 4999 will be turned ON. Remember that our Availability field tested for bit 4999 to be true (ON)? So when bit 4999 is turned on the ship will appear , because all conditions are met. The ship will not appear as long as bit 4999 is false (OFF). You can use all SET fields to turn 4999 ON after a certain event.
There are several terms and operators to test. Lets have a look at them :
bxxx Lookup the value of control bit xxx. Bits are numbered from b0 to b9999.
pxxx Check if the game is registered ((P)aid for) ... evaluates to 1 if
the game is registered or is unregistered but less than xxx days have
elapsed. Evaluates to 0 only if unregistered for more than xxx days.
G Lookup the player's gender - 1 if male, 0 if female
Oxxx Returns 1 if the player has at least one of outfit item ID xxx, 0 if not
Exxx Returns 1 if the player has explored system ID xxx, 0 if not
| Logical or operator
Can be used to test if an expression is
true OR the an other expression is true.
& Logical and operator
Can be used to test if an expression is
true AND another expression is true.
! Logical negation operator
Can be used to test if an
expression is FALSE
( ) Parenthetical enclosure
The Nova evaluator is fairly primitive, it may do unpredictable
things if you give it an expression like b1 & b2 | b3 ... instead, use proper
parentheses to make it b1 & (b2 | b3) or (b1 & b2) | b3, as appropriate.
Let see this in two examples :
b13 & (b15 | !b72)
This will test if bit 13 is true , and either bit 15 is true or bit 72 is false. If both conditions are met the associated property will be activated .
!(B42 | B53) & b103
This will test if either bit 42 is false or bit 53 is false and if bit 103 is true. If both conditions are met the associated property will be activated .
Note that if you leave the field for a test expression blank, it will
evaluate to true as a default.
Also note: The Oxxx operator also considers any carried fighters that are
deployed when it examines the player's current list of outfits, although this
feature may be confused if presented with a universe that includes multiple
fighter bay weapons that launch the same ship type, or different outfits that
grant the same fighter bay ammo.
Set
Weve briefly touched SET expressions in our first example. Now we will go into detail. The following text comes STRAIGHT from the EVN bible.
Always read the EVN bible , its a very important tool.
These are simpler than the test expressions... basically all you are doing here is listing what bits you want to be modified when the expression in a give field is invoked. This will happen when the player does something (completes a
mission, buys an item, etc.) as defined by the other resources. The syntax of set expressions is best illustrated by an example:
b1 b2 !b3 ^b4
In this set expression, bits 1 and 2 will be set, bit 3 will be cleared, and bit4 will be toggled to the opposite of whatever it was previously. No parentheses
are supported for set expressions. Note that if you leave a set expression
blank, no control bits will be altered.
n this set expression, bits 1 and 2 will be set, bit 3 will be cleared, and bit
4 will be toggled to the opposite of whatever it was previously. No parentheses
are supported for set expressions. Note that if you leave a set expression
blank, no control bits will be altered.
One other feature of the set expression is the ability to make random decisions.
By specifying R(<op1> <op2> ) you can make Nova randomly pick one of the two
possible choices and execute it, skipping the other one. For example:
b1 R(b2 !b3)
...this expression will set bit 1, and then either set bit 2 or clear bit 3,
but not both at once. Which operation will be picked is completely random, which
allows for the design of interesting mission strings that branch unpredictably.
There are also a number of other operators that allow you to do many interesting
things:
Axxx - if mission ID xxx is currently active, abort it.
Fxxx - if mission ID xxx is currently active, cause it to fail.
Sxxx - start mission ID xxx automatically.
Gxxx - grant one of outfit item ID xxx to the player
Dxxx - remove (Delete) one of outfit item ID xxx from the player
Mxxx - move the player to system xxx. The player will be put on top of the
first stellar in the system, or in the center of the system if no
stellars exist there.
Nxxx - move the player to system xxx. The player will remain at the same
x/y coordinates, relative to the center of the system.
Cxxx - change the player's ship to ship type (ID) xxx. The player will keep all of his previous outfit items and won't be given any of the default
weapons or items that come with ship type xxx.
Exxx - change the player's ship to ship type (ID) xxx. The player will keep all of his previous outfit items and will also be given all of the default
weapons and items that come with ship type xxx.
Hxxx - change the player's ship to ship type (ID) xxx. The player will lose
Any nonpersistent outfit items he previously had, but will be given all of the default weapons and items that come with ship type xxx.
Kxxx - activate rank ID xxx.
Lxxx - deactivate rank ID xxx.
Pxxx - play sound with ID xxx.
Yxxx - destroy stellar ID xxx.
Uxxx - regenerate (Un-destroy) stellar ID xxx.
Qxxx - make the player immediately leave (absquatulate) whatever stellar he's
landed on and return to space, and show a message at the bottom of the
screen. The message is randomly selected from the STR# resource with
ID xxx, and is parsed for mission text tags (e.g. <PSN> and <PRK> )
but not text-selection tags like those above (e.g. {G "he" "she"} )
(see dësc and mďsn resource descriptions for more examples)
Txxx - change the name (Title) of the player's ship to a string randomly
selected from STR# resource ID xxx. The previous ship name will be
substituted for any '*' characters which are encountered in the
new string.
Xxxx - make system ID xxx be explored.
------------------
"Don't wait for your life to happen , find something you are happy with and do it"
(url="http://"http://www.ariossoftware.com/products/evone/")EVONE 1.0pb2 - the plugin editor for EV/EVO/EVN(/url) -- (url="http://"http://www.AmbrosiaSW.com/cgi-bin/ubb/forumdisplay.cgi?action=topics&number;=9&SUBMIT;=Go&urgaylol;=yes")EV Developer's Corner(/url)