#ifndef IVSCRIPT_H #define IVSCRIPT_H #include "vscript/languages/squirrel_re/include/squirrel.h" #include "tier1/utlvector.h" #include "datamap.h" //--------------------------------------------------------- // Location of the scripts, and its compile list #define GAME_SCRIPT_PATH "scripts/vscripts/" #define GAME_SCRIPT_COMPILELIST GAME_SCRIPT_PATH"scripts.rson" DECLARE_POINTER_HANDLE(HSCRIPT); #define INVALID_HSCRIPT ((HSCRIPT)-1) typedef int ScriptDataType_t; typedef void* ScriptFunctionBindingStorageType_t; enum ScriptLanguage_t { SL_NONE, SL_GAMEMONKEY, SL_SQUIRREL, SL_LUA, SL_PYTHON, SL_DEFAULT = SL_SQUIRREL }; //--------------------------------------------------------- enum ExtendedFieldType { FIELD_TYPEUNKNOWN = FIELD_TYPECOUNT, FIELD_TYPEUNKNOWN1, // Unknown field from R2 FIELD_TYPEUNKNOWN2, // Unknown field from R5 FIELD_CSTRING, FIELD_HSCRIPT, FIELD_VARIANT, FIELD_TYPEUNKNOWN3, FIELD_TYPEUNKNOWN4, FIELD_TYPEUNKNOWN5, FIELD_TYPEUNKNOWN6, FIELD_ASSET, FIELD_OSTRING }; //--------------------------------------------------------- struct ScriptFuncDescriptor_t { void Init(const SQChar* scriptName, const SQChar* nativeName, const SQChar* description, const SQChar* returnType, const SQChar* parameters) { m_ScriptName = scriptName; m_Function = nativeName; m_Description = description; m_ReturnType = returnType; m_Parameters = parameters; } const SQChar* m_ScriptName; const SQChar* m_Function; const SQChar* m_Description; const SQChar* m_ReturnType; const SQChar* m_Parameters; }; //--------------------------------------------------------- struct ScriptFunctionBinding_t { ScriptFuncDescriptor_t m_Descriptor; bool m_bCheckParams; bool unk29; // 5th (new) parameter to 'sq_setparamscheck', see [r5apex_ds+10584F2] SQInteger m_nDevLevel; // TODO: confirm, this is a guess. const SQChar* m_pszCodeHook; int unk38; // 4th (new) parameter to 'sq_setparamscheck', see [r5apex_ds+10584F2] ScriptDataType_t m_ReturnType; CUtlVector m_Parameters; ScriptFunctionBindingStorageType_t m_pFunction; void Init( const SQChar* scriptName, const SQChar* nativeName, const SQChar* helpString, const SQChar* returnString, const SQChar* parameters, const ScriptDataType_t returnType, const ScriptFunctionBindingStorageType_t function) { m_Descriptor.Init(scriptName, nativeName, helpString, returnString, parameters); m_bCheckParams = false; unk29 = false; m_nDevLevel = 0; m_pszCodeHook = nullptr; unk38 = 0; m_ReturnType = returnType; m_pFunction = function; } }; static_assert(sizeof(ScriptFunctionBinding_t) == 0x68); #endif // IVSCRIPT_H