Warning
Parameters or descriptions may be wrong or incomplete
This list is incomplete and only lists methods available in squirrel.h.
Some descriptions are taken from the Squirrel Documentation
Object creation and handling#
-
class SquirrelManager#
You can access all sq functions only with a
SquirrelManager
instance. You have one available inside theADD_SQFUNC
macro.
Pushing Objects to the stack#
-
void pushbool(HSquirrelVM *sqvm, const SQBool bVal)#
- Parameters:
HSquirrelVM* sqvm – the target VM
SQInteger bVal – the bool that will be pushed
pushes a boolean to the stack
-
void pushinteger(HSquirrelVM *sqvm, const SQInteger iVal)#
- Parameters:
HSquirrelVM* sqvm – the target VM
SQInteger iVal – the integer that will be pushed
pushes an integer to the stack
-
void pushfloat(HSquirrelVM *sqvm, const SQFloat fVal)#
- Parameters:
HSquirrelVM* sqvm – the target VM
SQInteger fVal – the float that will be pushed
pushes a float to the stack
-
void pushstring(HSquirrelVM *sqvm, const SQChar *sVal, int length = -1)#
- Parameters:
HSquirrelVM* sqvm – the target VM
SQChar* sVal – the string that will be pushed
int len – length of the string
sVal
- Remarks:
if the parameter length is less than 0 the VM will calculate the length using
strlen
pushes a string to the stack
-
void pushasset(HSquirrelVM *sqvm, const SQChar *sVal, int length = -1)#
- Parameters:
HSquirrelVM* sqvm – the target VM
SQChar* sVal – the string that will be pushed
int len – length of the string
sVal
- Remarks:
if the parameter length is less than 0 the VM will calculate the length using
strlen
pushes an asset to the stack
-
void pushvector(HSquirrelVM *sqvm, const Vector3 vVal)#
- Parameters:
HSquirrelVM* sqvm – the target VM
Vector3 vVal – the vector that will be pushed
pushes a vector to the stack
-
void pushobject(HSquirrelVM *sqvm, SQObject obj)#
- Parameters:
HSquirrelVM* sqvm – the target VM
SQObject obj – the object that will be pushed
pushes an object like functions to the stack
-
void pushroottable(HSquirrelVM *sqvm)#
- Parameters:
HSquirrelVM* sqvm – the target VM
pushes the current root table into the stack
Note
sq_pushnull
(0x33D0
) and more aren’t included in squirrel.h
right now but may be in the future.
Getting Objects from the stack#
-
SQBool getbool(HSquirrelVM *sqvm, const SQInteger stackpos)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQInteger stackpos – stack position of the object
- Returns:
The value of the object
-
SQInteger getinteger(HSquirrelVM *sqvm, const SQInteger stackpos)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQInteger stackpos – stack position of the object
- Returns:
The value of the object
-
SQFloat getfloat(HSquirrelVM *sqvm, const SQInteger stackpos)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQInteger stackpos – stack position of the object
- Returns:
The value of the object
-
SQChar *getstring(HSquirrelVM *sqvm, const SQInteger stackpos)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQInteger stackpos – stack position of the object
- Returns:
The value of the object
-
Vector3 getvector(HSquirrelVM *sqvm, const SQInteger stackpos)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQInteger stackpos – stack position of the object
- Returns:
The value of the object
-
SQChar *getasset(HSquirrelVM *sqvm, const SQInteger stackpos)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQInteger stackpos – stack position of the object
- Returns:
The value of the object
-
SQTable *getConstants(HSquirrelVM *sqvm)#
Note
This function (
server.dll+0x5920`
) is not available in the launcher or plugins at the moment.You can open a PR if you need it now.
To define an integer constant you can use defconst instead.
- Parameters:
HSquirrelVM* sqvm – the target vm
- Returns:
the table of constants
Pushes the constants table to the stack.
Used to add global constants for scripts.
getConstants(sqvm); pushstring(sqvm, "MY_CONSTANT"); pushstring(sqvm, "MY_VALUE"); newslot(sqvm, -3, false); removeFromStack(sqvm); // don't forget this!
-
int sq_getfunction(HSquirrelVM *sqvm, const SQChar *name, SQObject *returnObj, const SQChar *signature)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQChar* name – the function name to search for
SQObject* returnObj – reference to the object to hold the function object
SQChar* signature –
returns
0
if the function was found.SQObject functionobj {}; int result = sq_getfunction(m_pSQVM->sqvm, funcname, &functionobj, 0); if (result != 0) // This func returns 0 on success for some reason { NS::log::squirrel_logger<context>()->error("Call was unable to find function with name '{}'. Is it global?", funcname); return SQRESULT_ERROR; }
-
T *getentity(HSquirrelVM *sqvm, SQInteger iStackPos)#
- Parameters:
HSquirrelVM* sqvm – The target vm
SQInteger iStackPos – Stack position of the entity
-
void *__sq_getentityfrominstance(CSquirrelVM *sqvm, SQObject *pInstance, char **ppEntityConstant)#
- Parameters:
CSquirrelVM* sqvm – The target vm
SQObject* pInstance – Instance holding an entity
char** ppEntityConstant – Entity constant like __sq_GetEntityConstant_CBaseEntity
-
char **__sq_GetEntityConstant_CBaseEntity()#
There are entity constants for other types, but seemingly CBaseEntity’s is the only one needed
-
SQRESULT __sq_getobject(HSquirrelVM *sqvm, SQInteger iStackPos, SQObject *obj)#
- Parameters:
HSquirrelVM* sqvm – The target vm
SQInteger iStackPos – Stack position of the object
SQObject* obj – Pointer that will hold the object
obj
will be overwritten to hold the squirrel object.This example adds a native function with the ADD_SQFUNC macro. The function takes a function reference as a callback and calls it immediately. More information about function calls are available here
ADD_SQFUNC("void", SQCallbackTest, "void functionref()", "", ScriptContext::UI) { SQObject fn; // Make an empty sqobject. This will hold the function object later g_pSquirrel<context>->__sq_getobject(sqvm, 1, &fn); // Assign the function object to the SQOBJECT g_pSquirrel<context>->pushobject(sqvm, &fn); // Push the function object for the call g_pSquirrel<context>->pushroottable(sqvm); // Push the root table for the function stack g_pSquirrel<context>->__sq_call(sqvm, 1, false, true); // call the function with one parameter (the 'this' object) return SQRESULT_NULL; }
-
SQRESULT get(HSquirrelVM *sqvm, const SQInteger stackpos)#
- Parameters:
HSquirrelVM* sqvm – the target vm
SQInteger stackpos – stack position of the object
- Returns:
an
SQRESULT
that indicates whether or not the access was successful.
pops a key from the stack and performs a get operation on the object at the position idx in the stack; and pushes the result in the stack.
Stack Infos#
-
SQRESULT sq_stackinfos(HSquirrelVM *sqvm, int level, SQStackInfos &out)#
- Parameters:
HSquirrelVM* sqvm – the target vm
int level – stack depth of the info
SQStackInfos& out – instance that will hold the information
Other#
-
void defconst(CSquirrelVM *csqvm, const SQChar *pName, int nValue)#
- Parameters:
CSquirrelVM* csqvm – the target vm
SQChar* pName – the constant name
int nValue – the constant value
defines a global squirrel integer constant