#pragma once #include "squirrel.h" #include "sqstdaux.h" #include "sqstdblob.h" #include "sqstdio.h" #include "sqstdmath.h" #include "sqstdstring.h" #include "sqstdsystem.h" #include template R CallDungeon(A call_addr, const ARG... arguments) { if (!call_addr) { return R(); } const auto control = reinterpret_cast(call_addr); try { return control(arguments...); } catch (...) { } return R(); } // 获取副本编号 static SQInteger Dungeon_GetIdex(HSQUIRRELVM v) { SQUserPointer P; sq_getuserpointer(v, 2, &P); SQInteger Idx = CallDungeon(0x80FDCF0, P); sq_pushinteger(v, Idx); return 1; } static SQInteger register_Dungeon_func(HSQUIRRELVM v, SQFUNCTION f, const char *fname) { sq_pushroottable(v); sq_pushstring(v, fname, -1); sq_newclosure(v, f, 0); // create a new function sq_newslot(v, -3, SQFalse); sq_pop(v, 1); // pops the root table } static void RegisterDungeon(HSQUIRRELVM v) { // 获取编号 register_Dungeon_func(v, Dungeon_GetIdex, _SC("Sq_Dungeon_GetIdex")); }