There are many different FKiSS data types which can be used as parameters in an
FKiSS command:
All numbers in FKiSS are integers, that is, values without a decimal point. For example,
5, 0, or -37 but not 3.14159.
Numbers have the following requirements:
- Must be in the range -2147483648 to 2147483647.
- Must not include a decimal point.
- Cannot be preceded by #; otherwise, the integer is treated as an object number.
Example:
;@ alarm(1)
;@ movebyx(#2, #1, 14)
;@ movebyy(#2, #1, 37)
Wrong:
;@ alarm(#1) ; Alarms must be an integer, not an object
;@ movebyx(#2, #1, #14) ; 3rd parameter must be an integer, not an object
;@ movebyy(#2, #1, 37.5) ; 3rd parameter cannot contain a decimal point
A string is a block of text surrounded by quotation marks. It can include any
type of character except a quotation mark.
Example:
;@ alarm(1)
;@ notify("Hello, World!")
;@ shell("http://OtakuWorld.com/kiss/")
Wrong:
;@ notify(Hello, World!) ; A string must be surrounded by quotes
;@ notify("John says, "Hello!"") ; Quotes cannot appear inside quotes
A cel is an image filename specified as a
string. That is, a cel
is identified by its filename (including the extension) surrounded by
quotation marks.
Example:
;@ press("face1.cel")
;@ unmap("face1.cel")
;@ map("face2.cel")
Wrong:
;@ press(face1.cel) ; A cel name must be surrounded by quotes when used as a parameter
;@ map("face2") ; A cel name must be a complete filename
Reuse of cels
It is possible to use the same cel in different objects. For example, you
might want to use the same cel with different
KCF palette files like this:
#1 hat.cel *1 ; In object #1, use the second defined KCF with hat.cel.
#27 hat.cel *3 ; In object #27, use the fourth defined KCF with hat.cel.
This is perfectly acceptable in KiSS. For FKiSS support, most
modern viewers support such
ambiguous
cels by applying the
action or
event to all instances of that cel. For
example:
;@ press("hat.cel")
;@ altmap("hat.cel")
This
press event is activated by
the user clicking on any instance of hat.cel. The
altmap command is then performed for
each instance of hat.cel individually.
And remember the quotation marks. You need both of them.
|
An object is identified by its object number preceeded with #.
Example:
;@ in(#1, #2)
;@ movebyx(#2, #1, 14)
;@ movebyy(#2, #1, 37)
Wrong:
;@ in(1, 2) ; First 2 parameters are objects and need leading #
;@ movebyx(2, 1, 14) ; First 2 parameters are objects and need leading #
;@ movebyy(2, 1, 37) ; First 2 parameters are objects and need leading #
Groups are a new concept introduced in FKiSS4. A group is an
arbitrary collection of cels that can span multiple objects. Many
actions and events can be applied to all cels in a group.
In addition, cels in a group can be associated with group frames. A
frame is nothing more than a collection of visible (mapped) cels. All
other cels in the group that are not in the current frame are hidden
(unmapped). Use the FKiSS
setframe()
command to change the frame number of a group, thereby showing a
different set of cels in the group. Use the
letframe() command to get the
current frame of a group.
Using group frames with the
timer()
action and
alarm event, it is possible
to create animations.
Groups are identified by the name of the group preceeded by !. Group names
have the following requirements:
- Must start with a letter.
- Can contain up to 32 characters and numbers.
- Cannot contain spaces.
- Are case-insensitive (!group is the same as !GROUP).
- Must not be surrounded by quotation marks.
Example:
;@ press(!ThisGroup)
;@ unmap(!Group1)
;@ map(!group2)
Wrong:
;@ press(ThisGroup) ; Group name must be preceded by a !
;@ unmap("!ThisGroup") ; Group names cannot be surrounded by quotes
;@ map(!that group) ; Group names cannot have spaces in them
;@ map(!2group) ; Group names cannot start with a number
Alarms are identified by either a number or, in FKiSS4, by a name.
Alarm names have the following requirements:
- Must start with a letter.
- Can contain up to 32 characters and numbers.
- Cannot contain spaces.
- Are case-insensitive (myalarm is the same as MYALARM).
- Must not be surrounded by quotation marks.
Example:
;@ alarm(5)
;@ timer(MyAlarm, 100)
;@ timer(Alarm3, 100)
Wrong:
;@ alarm(My Alarm) ; Alarm name cannot contain spaces
;@ alarm("MyAlarm") ; Alarm name cannot be surrounded by quotes
;@ timer(#5, 100) ; An alarm number must not be preceded by #
;@ timer(3Alarm, 100) ; An alarm name cannot start with a number
For more information about the use of alarms, see
Alarm()
and
Timer().
Labels are event fragments or
procedures
introduced in FKiSS3. They are identified by either a number or, in
FKiSS4, by a name.
A label name has the following requirements:
- Must start with a letter.
- Can contain up to 32 characters and numbers.
- Cannot contain spaces.
- Are case-insensitive (myalarm is the same as MYALARM).
- Must not be surrounded by quotation marks.
Example:
;@ label(5) ; Start of a procedure number 5. This can be the target of a gosub or a goto action.
;@ gosub(MyLabel) ; Call another procedure called MyLabel and return here when done.
;@ goto(MyLabel5) ; Jump to a procedure called MyLabel5 and do not come back.
Wrong:
;@ label(My Label) ; A label name cannot contain spaces
;@ label("MyLabel") ; A label name cannot be surrounded by quotes
;@ gosub(#5) ; A label number must not be preceded by #
;@ goto(5Label) ; A label name cannot start with a number
Variables were introduced in FKiSS3. In FKiSS3, a variable may be a
single letter which may be followed by a single digit (for a total of 36
variables). In FKiSS4, a variable must start with a letter and may
contain a total of 32 characters and numbers. Variables have the
following requirements:
- Name must start with a letter.
- Name can contain up to 32 characters and numbers.
- Name cannot contain spaces.
- Name is case-insensitive (myvariable is the same as MYVARIABLE).
- Name must not be surrounded by quotation marks.
- Value must be in the range -2147483648 to 2147483647.
- Value must not include a decimal point.
Variables may be used in the place of any number in an action
command. In FKiSS4, variables may also take the place of object numbers
in action commands. Variables may never be used in an event
command.
Variables can have the same names as alarms or labels. However, in
any command that expects an alarm or label value, it will use the alarm
or label before checking to see if there is a variable with that
name.
Example:
;@ alarm(5)
;@ let(X, 1)
;@ add(Sum, B1, B2)
Wrong:
;@ label(MyVariable) ; If you do this, it will treat MyVariable as a label name
;@ let("X", 5) ; Variable names cannot be surrounded by quotes
;@ let(Name, "Fred") ; variables cannot hold strings, only integers
;@ div(123result, bignumber, 10) ; variable names cannot start with a number
;@ div(result, big number, 10) ; variable names cannot contain spaces
Value Pools
Value Pools are a new concept introduced in FKiSS4. Value Pools provide a way
for variable values to be saved to disk and loaded again later, even during
later sessions. For example, a game-based KiSS set could use a Value Pool to save
the high score and load it again the next time that KiSS set is played or a
KiSS doll might use a value pool to remember whether the user wanted the snap-to
feature turned on and start with the same setting the next time that doll is
loaded.
Each Value Pool can store any number of values, one for each named value entry.