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 the ADD_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

Mod *getcallingmod(HSquirrelVM *sqvm, int depth = 0)#
Parameters:
  • HSquirrelVM* sqvm – the target vm

  • int depth – stack depth of the origin mod

Returns:

Pointer to the Mod object at the stack depth

Note

Not available in plugins

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