Amulets & Armor
v1.02
Open Source Game
|
Script System. More...
Data Structures | |
struct | T_continueData |
struct | T_scriptDataItem |
struct | T_scriptHeader_ |
struct | T_scriptInstance |
union | T_scriptNumberOrString |
struct | T_scriptString |
Macros | |
#define | NUM_SCRIPT_COMMANDS 66 |
#define | OBJECT_SCRIPT_ATTR_ANGLE 9 |
#define | OBJECT_SCRIPT_ATTR_MAX_VELOCITY 3 |
#define | OBJECT_SCRIPT_ATTR_STANCE 4 |
#define | OBJECT_SCRIPT_ATTR_UNKNOWN 10 |
#define | OBJECT_SCRIPT_ATTR_WAS_BLOCKED 5 |
#define | OBJECT_SCRIPT_ATTR_X 0 |
#define | OBJECT_SCRIPT_ATTR_X16 6 |
#define | OBJECT_SCRIPT_ATTR_Y 1 |
#define | OBJECT_SCRIPT_ATTR_Y16 7 |
#define | OBJECT_SCRIPT_ATTR_Z 2 |
#define | OBJECT_SCRIPT_ATTR_Z16 8 |
#define | SCRIPT_INSTANCE_TAG (*((T_word32 *)"SiT")) |
#define | SCRIPT_INSTANCE_TAG_BAD (*((T_word32 *)"sIb")) |
#define | SCRIPT_MAX_STRING 80 |
#define | SCRIPT_TAG (*((T_word32 *)"SpT")) |
#define | SCRIPT_TAG_BAD (*((T_word32 *)"sBd")) |
#define | SCRIPT_TAG_DISCARDABLE (*((T_word32 *)"DsP")) |
#define | ScriptGetCode(p_script) ((p_script)->p_code) |
#define | ScriptGetCodeByte(p_script, codeIndex) ((p_script)->p_code[(codeIndex)]) |
#define | ScriptGetCodeWord(p_script, codeIndex) (*((T_word16 *)(&((p_script)->p_code[(codeIndex)])))) |
#define | ScriptGetEventPosition(p_script, eventNum) ((p_script)->p_events[(eventNum)]) |
#define | ScriptGetEvents(p_script) ((p_script)->p_events) |
#define | ScriptGetFirst() (G_firstScript) |
#define | ScriptGetHighestEvent(p_script) ((p_script)->highestEvent) |
#define | ScriptGetHighestPlace(p_script) ((p_script)->highestPlace) |
#define | ScriptGetLockCount(p_script) ((p_script)->lockCount) |
#define | ScriptGetNext(p_script) ((p_script)->p_next) |
#define | ScriptGetNumber(p_script) ((p_script)->number) |
#define | ScriptGetPlacePosition(p_script, placeNum) ((p_script)->p_places[(placeNum)]) |
#define | ScriptGetPlaces(p_script) ((p_script)->p_places) |
#define | ScriptGetPrevious(p_script) ((p_script)->p_prev) |
#define | ScriptGetSizeCode(p_script) ((p_script)->sizeCode) |
#define | ScriptGetTag(p_script) ((p_script)->tag) |
#define | ScriptHandleToInstance(p_handle) ((T_scriptInstance *)p_handle) |
#define | ScriptInstanceGetHeader(p_inst) ((p_inst)->p_header) |
#define | ScriptInstanceGetOwner(p_inst) ((p_inst)->owner) |
#define | ScriptInstanceGetTag(p_inst) ((p_inst)->instanceTag) |
#define | ScriptInstanceSetHeader(p_inst, header) (((p_inst)->p_header) = (header)) |
#define | ScriptInstanceSetOwner(p_instance, newOwner) (((p_instance)->owner) = (newOwner)) |
#define | ScriptInstanceSetTag(p_instance, tag) (((p_instance)->instanceTag) = (tag)) |
#define | ScriptInstanceToHandle(p_instance) ((T_script)p_instance) |
#define | ScriptIsInitialized() (G_scriptInit) |
#define | ScriptMakeInitialized() (G_scriptInit = TRUE) |
#define | ScriptMakeNotInitialized() (G_scriptInit = FALSE) |
#define | ScriptSetCode(p_script, code) (((p_script)->p_code) = (code)) |
#define | ScriptSetEvents(p_script, events) (((p_script)->p_events) = (events)) |
#define | ScriptSetFirst(p_first) (G_firstScript = (p_first)) |
#define | ScriptSetLockCount(p_script, newLockCount) (((p_script)->lockCount) = (newLockCount)) |
#define | ScriptSetNext(p_script, next) (((p_script)->p_next) = (next)) |
#define | ScriptSetNumber(p_script, newnumber) (((p_script)->number) = (newnumber)) |
#define | ScriptSetPlaces(p_script, places) (((p_script)->p_places) = (places)) |
#define | ScriptSetPrevious(p_script, prev) (((p_script)->p_prev) = (prev)) |
#define | ScriptSetTag(p_script, newTag) (((p_script)->tag) = (newTag)) |
#define | SYSTEM_VAR_SELF 0 |
#define | SYSTEM_VAR_TIME 1 |
Typedefs | |
typedef T_word16(* | T_scriptCommand )(T_scriptHeader *script, T_word16 position) |
typedef struct T_scriptHeader_ | T_scriptHeader |
Functions | |
E_Boolean | ScriptEvent (T_script script, T_word16 eventNumber, E_scriptDataType type1, T_void *p_data1, E_scriptDataType type2, T_void *p_data2, E_scriptDataType type3, T_void *p_data3) |
T_void | ScriptFinish (T_void) |
T_word32 | ScriptGetOwner (T_script script) |
T_void | ScriptInitialize (T_void) |
T_script | ScriptLock (T_word32 number) |
E_Boolean | ScriptRunPlace (T_script script, T_word16 placeNumber) |
T_void | ScriptSetOwner (T_script script, T_word32 owner) |
T_void | ScriptUnlock (T_script script) |
Script System.
All scripts on maps go through here. The script system is fairly simple and close to something like assembly language. Each subroutine in a script is given a number and you only have comments in the code to keep track of which is which. Triggers numbers on maps are used to call each script.
#define NUM_SCRIPT_COMMANDS 66 |
#define OBJECT_SCRIPT_ATTR_ANGLE 9 |
#define OBJECT_SCRIPT_ATTR_MAX_VELOCITY 3 |
#define OBJECT_SCRIPT_ATTR_STANCE 4 |
#define OBJECT_SCRIPT_ATTR_UNKNOWN 10 |
#define OBJECT_SCRIPT_ATTR_WAS_BLOCKED 5 |
#define OBJECT_SCRIPT_ATTR_X 0 |
#define OBJECT_SCRIPT_ATTR_X16 6 |
#define OBJECT_SCRIPT_ATTR_Y 1 |
#define OBJECT_SCRIPT_ATTR_Y16 7 |
#define OBJECT_SCRIPT_ATTR_Z 2 |
#define OBJECT_SCRIPT_ATTR_Z16 8 |
#define SCRIPT_INSTANCE_TAG (*((T_word32 *)"SiT")) |
#define SCRIPT_INSTANCE_TAG_BAD (*((T_word32 *)"sIb")) |
#define SCRIPT_MAX_STRING 80 |
#define SCRIPT_TAG (*((T_word32 *)"SpT")) |
#define SCRIPT_TAG_BAD (*((T_word32 *)"sBd")) |
#define SCRIPT_TAG_DISCARDABLE (*((T_word32 *)"DsP")) |
#define ScriptGetCode | ( | p_script) | ((p_script)->p_code) |
#define ScriptGetCodeByte | ( | p_script, | |
codeIndex | |||
) | ((p_script)->p_code[(codeIndex)]) |
#define ScriptGetCodeWord | ( | p_script, | |
codeIndex | |||
) | (*((T_word16 *)(&((p_script)->p_code[(codeIndex)])))) |
#define ScriptGetEventPosition | ( | p_script, | |
eventNum | |||
) | ((p_script)->p_events[(eventNum)]) |
#define ScriptGetEvents | ( | p_script) | ((p_script)->p_events) |
#define ScriptGetFirst | ( | ) | (G_firstScript) |
#define ScriptGetHighestEvent | ( | p_script) | ((p_script)->highestEvent) |
#define ScriptGetHighestPlace | ( | p_script) | ((p_script)->highestPlace) |
#define ScriptGetLockCount | ( | p_script) | ((p_script)->lockCount) |
#define ScriptGetNext | ( | p_script) | ((p_script)->p_next) |
#define ScriptGetNumber | ( | p_script) | ((p_script)->number) |
#define ScriptGetPlacePosition | ( | p_script, | |
placeNum | |||
) | ((p_script)->p_places[(placeNum)]) |
#define ScriptGetPlaces | ( | p_script) | ((p_script)->p_places) |
#define ScriptGetPrevious | ( | p_script) | ((p_script)->p_prev) |
#define ScriptGetSizeCode | ( | p_script) | ((p_script)->sizeCode) |
#define ScriptGetTag | ( | p_script) | ((p_script)->tag) |
#define ScriptHandleToInstance | ( | p_handle) | ((T_scriptInstance *)p_handle) |
#define ScriptInstanceGetHeader | ( | p_inst) | ((p_inst)->p_header) |
#define ScriptInstanceGetOwner | ( | p_inst) | ((p_inst)->owner) |
#define ScriptInstanceGetTag | ( | p_inst) | ((p_inst)->instanceTag) |
#define ScriptInstanceSetHeader | ( | p_inst, | |
header | |||
) | (((p_inst)->p_header) = (header)) |
#define ScriptInstanceSetOwner | ( | p_instance, | |
newOwner | |||
) | (((p_instance)->owner) = (newOwner)) |
#define ScriptInstanceSetTag | ( | p_instance, | |
tag | |||
) | (((p_instance)->instanceTag) = (tag)) |
#define ScriptInstanceToHandle | ( | p_instance) | ((T_script)p_instance) |
#define ScriptIsInitialized | ( | ) | (G_scriptInit) |
#define ScriptMakeInitialized | ( | ) | (G_scriptInit = TRUE) |
#define ScriptMakeNotInitialized | ( | ) | (G_scriptInit = FALSE) |
#define ScriptSetCode | ( | p_script, | |
code | |||
) | (((p_script)->p_code) = (code)) |
#define ScriptSetEvents | ( | p_script, | |
events | |||
) | (((p_script)->p_events) = (events)) |
#define ScriptSetFirst | ( | p_first) | (G_firstScript = (p_first)) |
#define ScriptSetLockCount | ( | p_script, | |
newLockCount | |||
) | (((p_script)->lockCount) = (newLockCount)) |
#define ScriptSetNext | ( | p_script, | |
next | |||
) | (((p_script)->p_next) = (next)) |
#define ScriptSetNumber | ( | p_script, | |
newnumber | |||
) | (((p_script)->number) = (newnumber)) |
#define ScriptSetPlaces | ( | p_script, | |
places | |||
) | (((p_script)->p_places) = (places)) |
#define ScriptSetPrevious | ( | p_script, | |
prev | |||
) | (((p_script)->p_prev) = (prev)) |
#define ScriptSetTag | ( | p_script, | |
newTag | |||
) | (((p_script)->tag) = (newTag)) |
#define SYSTEM_VAR_SELF 0 |
#define SYSTEM_VAR_TIME 1 |
typedef T_word16(* T_scriptCommand)(T_scriptHeader *script, T_word16 position) |
typedef struct T_scriptHeader_ T_scriptHeader |
E_Boolean ScriptEvent | ( | T_script | script, |
T_word16 | eventNumber, | ||
E_scriptDataType | type1, | ||
T_void * | p_data1, | ||
E_scriptDataType | type2, | ||
T_void * | p_data2, | ||
E_scriptDataType | type3, | ||
T_void * | p_data3 | ||
) |
ScriptEvent runs an event in a script file. If the script has no event for the script, a FALSE code is returned.
NOTE: For each ScriptUnlock you do, you must have already done just as many ScriptLocks.
script | – Script Instance to execute event |
eventNumber | – Number of event to execute |
type1 | – Type of parameter 1 |
p_data1 | – Pointer to data parameter 1 |
type2 | – Type of parameter 2 |
p_data2 | – Pointer to data parameter 2 |
type3 | – Type of parameter 3 |
p_data3 | – Pointer to data parameter 3 |
ScriptFinish closes out the scripting system. All memory and variables must be returned to their normal state.
NOTE: You MUST unlock all scripts before calling this command.
ScriptGetOwner returns the previously stored pointer to the owner of this script.
script | – Script to get owner of. |
ScriptInitialize sets up the structures necessary to do all future script accesses. Call this once at the beginning of the program.
ScriptLock loads a script file from disk and creates a handle to the script. If the script is already in memory, a instance is made and the handle to that instance is returned. All script commands require a script instance handle.
NOTE: You MUST make a call to ScriptInitialize before using this routine.
number | – Number of script to lock. |
ScriptRunPlace starts execution of a script file at the given place marker.
script | – Script Instance to execute place |
placeNumber | – Number of place to execute |
ScriptSetOwner declares the owner of this script.
script | – Script to set owner of. |
owner | – General pointer to owner |
ScriptUnlock releases a script that was previously locked. If possible, the script code will try to stay around as long as possible to keep from do excess disk accesses.
NOTE: For each ScriptUnlock you do, you must have already done just as many ScriptLocks.
script | – Previously locked script. |