ModEnc is currently in Maintenance Mode: Changes could occur at any given moment, without advance warning.
ScriptTypeClass
Jump to navigation
Jump to search
The ScriptTypeClass holds AI script instructions which are loaded from the AI INI file.
Class specifications
Property | Value |
---|---|
General: | |
Derivation | AbstractClass → AbstractTypeClass → ScriptTypeClass |
GUID | {42F3A647-0789-11D2-ACA5-006008055BB5} |
VT address (YR 1.001) | 0x7F1008 |
Size of member data (YR 1.001) | 0x234 bytes |
AbstractClass derivative: | |
AbstractDerivationID | 0x1B |
Member variables
Offset | Type | Name | Description |
---|---|---|---|
AbstractClass: | |||
0x0 | ptr | VirtualTable | Pointer to the class's Virtual Table |
0x4 | ptr | IRTTITypeInfo VTable | Pointer to an extended VTable (not sure what exactly it does) |
0x8 | ptr | INoticeSink VTable | Pointer to an extended VTable (not sure what exactly it does) |
0xC | ptr | INoticeSource VTable | Pointer to an extended VTable (not sure what exactly it does) |
0x10 | DWORD | unknown | |
0x14 | DWORD | DerivationFlags | Bit 0: set if the instance is or derives from a TechnoClass Bit 1: set if the instance is or derives from a ObjectClass Bit 2: set if the instance is or derives from a FootClass |
0x18 | DWORD | unknown | |
0x1C | DWORD | unknown | |
0x20 | bool | Dirty | Was the object changed since it was last saved? |
0x21 | BYTE | unused | |
0x22 | WORD | unused | |
AbstractTypeClass: | |||
0x24 | char[0x18] | ID | The INI name of this type (for example: SMCV). |
0x3C | BYTE | reserved | Zero-termination of the ID. |
0x3D | char[0x20] | UIName | Stringtable reference given by the UIName tag. |
0x5D | BYTE | reserved | Zero-termination of the UIName. |
0x5E | WORD | unused | |
0x60 | wchar* | UIName | Pointer to the UIName unicode string inside the stringtable. |
0x64 | char[0x31] | Name | Name given by the Name tag. |
0x95 | BYTE | reserved | Zero-termination of the Name. |
0x96 | WORD | unused | |
ScriptTypeClass: | |||
0x98 | int | Index | Index in the global ScriptTypeClass array. |
0x9C | DWORD | unknown | |
0xA0 | int | Lines | Determines how many lines this script consists of. |
0xA4 | int | Line 1 - Command | Determines what function this line has. |
0xA8 | int | Line 1 - Argument | The argument passed to that function. |
0xAC | int | Line 2 - Command | |
0xB0 | int | Line 2 - Argument | |
0xB4 | int | Line 3 - Command | |
0xB8 | int | Line 3 - Argument | |
... | |||
0x22C | int | Line 50 - Command | |
0x230 | int | Line 50 - Argument | This implies that the maximum line count of a script is 50. |
AbstractClass - Member Variables |
AbstractTypeClass - Member Variables |
ScriptTypeClass - Member Variables |
Virtual Table
Offset | Return Type | Name | Arguments | Description |
---|---|---|---|---|
IUnknown: | ||||
0x0 | HRESULT | QueryInterface | REFIID iid void ** ppvObject |
MSDN: "Returns a pointer to a specified interface on an object to which a client currently holds an interface pointer." |
0x4 | ULONG | AddRef | none | MSDN: "[...] increments the reference count for an interface on an object. It should be called for every new copy of a pointer to an interface on a given object." |
0x8 | ULONG | Release | none | MSDN: "Decrements the reference count for the calling interface on a object. If the reference count on the object falls to 0, the object is freed from memory." |
IPersist: | ||||
0xC | HRESULT | GetClassID | CLSID * pClassID | MSDN: "Retrieves the class identifier (CLSID) of an object. The CLSID is a unique value that identifies the code that can manipulate the persistent data." |
IPersistStream: | ||||
0x10 | HRESULT | IsDirty | none | MSDN: "Checks the object for changes since it was last saved." |
0x14 | HRESULT | Load | IStream* stream AbstractClass* dst |
MSDN: "Initializes an object from the stream where it was previously saved." |
0x18 | HRESULT | Save | IStream* stream AbstractClass* src (3rd is unknown) |
MSDN: "Saves an object to the specified stream." |
0x1C | HRESULT | GetMaxSize | ULARGE_INTEGER * pcbSize | MSDN: "Returns the size in bytes of the stream needed to save the object." |
AbstractClass: | ||||
0x20 | none (DTOR) | Destructor | none | Frees memory and removes this instance from global arrays. |
0x24 | unknown | unknown | unknown | |
0x28 | unknown | unknown | unknown | |
0x2C | int | GetAbstractDerivationID | none | Gets the AbstractDerivationID of this class. Used to find out "what something is". |
0x30 | int | GetSize | none | Gets the size of the member data. |
0x34 | unsigned long | GetCRC | unknown | Calculates a CRC sum of this instance. |
0x38 | int | GetOwningHouseIndex | none | Gets the index of the House (player) who owns this object. |
0x3C | HouseClass* | GetOwningHouse | none | Gets a pointer to the House (player) who owns this object. |
0x40 | int | GetArrayIndex | none | Gets the index of this class instance in the global array. This will return 0 for abstract classes. |
0x44 | bool | IsDead | none | Finds out whether this instance is dead. This is only used for "living" objects with a health. |
0x48 | void | Get3DCoords | int* dst_xyz | Loads 3D coordinates into dst_xyz. |
0x4C | void | Get3DCoords_var | int* dst_xyz | Loads 3D coordinates into variables, then into dst_xyz. This method is obsolete (use 0x48). |
0x50 | unknown | unknown | unknown | |
0x54 | unknown | unknown | unknown | |
0x58 | unknown | unknown | unknown | |
0x5C | void | AdvanceFrame | none | This is an updating routine, called every frame. |
AbstractTypeClass: | ||||
0x60 | unknown | unknown | unknown | |
0x64 | bool | LoadFromINI | CCINIClass* ini | Initializes the type based on the INI file section ID. |
0x68 | bool | SaveToINI | CCINIClass* ini | Saves this type to an INI file. |
AbstractClass - Virtual Table |
AbstractTypeClass - Virtual Table |
Member functions
Address (YR 1.001) | Return Type | Name | Arguments | Description |
---|---|---|---|---|
0x6916B0 | ptr (CTOR) | Constructor | char* ID | Creates an instance and initializes it. |