mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Add Squirrel typedefs
This commit is contained in:
parent
446f13680f
commit
28b1718cb1
@ -1,93 +1,94 @@
|
||||
//=============================================================================//
|
||||
//
|
||||
// Purpose: Squirrel API
|
||||
// Purpose: Squirrel API interface to engine
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#include "core/stdafx.h"
|
||||
#include "squirrel/sqapi.h"
|
||||
#include "squirrel/sqtype.h"
|
||||
|
||||
char* hsq_getstring(void* sqvm, int i)
|
||||
char* sq_getstring(HSQUIRRELVM* v, int i)
|
||||
{
|
||||
std::uintptr_t thisptr = reinterpret_cast<std::uintptr_t>(sqvm);
|
||||
std::uintptr_t thisptr = reinterpret_cast<std::uintptr_t>(v);
|
||||
|
||||
return *(char**)(*(std::int64_t*)(thisptr + 0x58) + 0x10 * i + 0x8) + 0x40;
|
||||
}
|
||||
|
||||
int hsq_getinteger(void* sqvm, int i)
|
||||
int sq_getinteger(HSQUIRRELVM* v, int i)
|
||||
{
|
||||
std::uintptr_t thisptr = reinterpret_cast<std::uintptr_t>(sqvm);
|
||||
std::uintptr_t thisptr = reinterpret_cast<std::uintptr_t>(v);
|
||||
|
||||
return *(int*)(*(std::int64_t*)(thisptr + 0x58) + 0x10 * i + 0x8);
|
||||
}
|
||||
|
||||
void hsq_pushbool(void* sqvm, int val)
|
||||
void sq_pushbool(HSQUIRRELVM* v, int val)
|
||||
{
|
||||
sq_pushbool(sqvm, val);
|
||||
v_sq_pushbool(v, val);
|
||||
}
|
||||
|
||||
void hsq_pushstring(void* sqvm, const char* string, int len)
|
||||
void sq_pushstring(HSQUIRRELVM* v, const char* string, int len)
|
||||
{
|
||||
sq_pushstring(sqvm, const_cast<char*>(string), len);
|
||||
v_sq_pushstring(v, const_cast<char*>(string), len);
|
||||
}
|
||||
|
||||
void hsq_pushinteger(void* sqvm, int val)
|
||||
void sq_pushinteger(HSQUIRRELVM* v, int val)
|
||||
{
|
||||
sq_pushinteger(sqvm, val);
|
||||
v_sq_pushinteger(v, val);
|
||||
}
|
||||
|
||||
void hsq_pushconstant(void* sqvm, const char* name, int val)
|
||||
void sq_pushconstant(HSQUIRRELVM* v, const char* name, int val)
|
||||
{
|
||||
sq_pushconstant(sqvm, name, val);
|
||||
v_sq_pushconstant(v, name, val);
|
||||
}
|
||||
|
||||
void hsq_newarray(void* sqvm, int size)
|
||||
void sq_newarray(HSQUIRRELVM* v, int size)
|
||||
{
|
||||
sq_newarray(sqvm, size);
|
||||
v_sq_newarray(v, size);
|
||||
}
|
||||
|
||||
void hsq_arrayappend(void* sqvm, int idx)
|
||||
void sq_arrayappend(HSQUIRRELVM* v, int idx)
|
||||
{
|
||||
sq_arrayappend(sqvm, idx);
|
||||
v_sq_arrayappend(v, idx);
|
||||
}
|
||||
|
||||
void hsq_newtable(void* sqvm)
|
||||
void sq_newtable(HSQUIRRELVM* v)
|
||||
{
|
||||
sq_newtable(sqvm);
|
||||
v_sq_newtable(v);
|
||||
}
|
||||
|
||||
void hsq_newslot(void* sqvm, int idx)
|
||||
void sq_newslot(HSQUIRRELVM* v, int idx)
|
||||
{
|
||||
sq_newslot(sqvm, idx);
|
||||
v_sq_newslot(v, idx);
|
||||
}
|
||||
|
||||
void hsq_pushstructure(void* sqvm, const char* name, const char* member, const char* codeclass1, const char* codeclass2)
|
||||
void sq_pushstructure(HSQUIRRELVM* v, const char* name, const char* member, const char* codeclass1, const char* codeclass2)
|
||||
{
|
||||
sq_pushstructure(sqvm, name, member, codeclass1, codeclass2);
|
||||
v_sq_pushstructure(v, name, member, codeclass1, codeclass2);
|
||||
}
|
||||
|
||||
void SQAPI_Attach()
|
||||
{
|
||||
DetourAttach((LPVOID*)&sq_pushbool, &hsq_pushbool);
|
||||
DetourAttach((LPVOID*)&sq_pushstring, &hsq_pushstring);
|
||||
DetourAttach((LPVOID*)&sq_pushinteger, &hsq_pushinteger);
|
||||
DetourAttach((LPVOID*)&sq_pushconstant, &hsq_pushconstant);
|
||||
DetourAttach((LPVOID*)&sq_newarray, &hsq_newarray);
|
||||
DetourAttach((LPVOID*)&sq_arrayappend, &hsq_arrayappend);
|
||||
DetourAttach((LPVOID*)&sq_newtable, &hsq_newtable);
|
||||
DetourAttach((LPVOID*)&sq_newslot, &hsq_newslot);
|
||||
DetourAttach((LPVOID*)&sq_pushstructure, &hsq_pushstructure);
|
||||
DetourAttach((LPVOID*)&v_sq_pushbool, &sq_pushbool);
|
||||
DetourAttach((LPVOID*)&v_sq_pushstring, &sq_pushstring);
|
||||
DetourAttach((LPVOID*)&v_sq_pushinteger, &sq_pushinteger);
|
||||
DetourAttach((LPVOID*)&v_sq_pushconstant, &sq_pushconstant);
|
||||
DetourAttach((LPVOID*)&v_sq_newarray, &sq_newarray);
|
||||
DetourAttach((LPVOID*)&v_sq_arrayappend, &sq_arrayappend);
|
||||
DetourAttach((LPVOID*)&v_sq_newtable, &sq_newtable);
|
||||
DetourAttach((LPVOID*)&v_sq_newslot, &sq_newslot);
|
||||
DetourAttach((LPVOID*)&v_sq_pushstructure, &sq_pushstructure);
|
||||
}
|
||||
|
||||
void SQAPI_Detach()
|
||||
{
|
||||
DetourDetach((LPVOID*)&sq_pushbool, &hsq_pushbool);
|
||||
DetourDetach((LPVOID*)&sq_pushstring, &hsq_pushstring);
|
||||
DetourDetach((LPVOID*)&sq_pushinteger, &hsq_pushinteger);
|
||||
DetourDetach((LPVOID*)&sq_pushconstant, &hsq_pushconstant);
|
||||
DetourDetach((LPVOID*)&sq_newarray, &hsq_newarray);
|
||||
DetourDetach((LPVOID*)&sq_arrayappend, &hsq_arrayappend);
|
||||
DetourDetach((LPVOID*)&sq_newtable, &hsq_newtable);
|
||||
DetourDetach((LPVOID*)&sq_newslot, &hsq_newslot);
|
||||
DetourDetach((LPVOID*)&sq_pushstructure, &hsq_pushstructure);
|
||||
DetourDetach((LPVOID*)&v_sq_pushbool, &sq_pushbool);
|
||||
DetourDetach((LPVOID*)&v_sq_pushstring, &sq_pushstring);
|
||||
DetourDetach((LPVOID*)&v_sq_pushinteger, &sq_pushinteger);
|
||||
DetourDetach((LPVOID*)&v_sq_pushconstant, &sq_pushconstant);
|
||||
DetourDetach((LPVOID*)&v_sq_newarray, &sq_newarray);
|
||||
DetourDetach((LPVOID*)&v_sq_arrayappend, &sq_arrayappend);
|
||||
DetourDetach((LPVOID*)&v_sq_newtable, &sq_newtable);
|
||||
DetourDetach((LPVOID*)&v_sq_newslot, &sq_newslot);
|
||||
DetourDetach((LPVOID*)&v_sq_pushstructure, &sq_pushstructure);
|
||||
}
|
@ -1,55 +1,56 @@
|
||||
#pragma once
|
||||
#include "squirrel/sqtype.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
/* ==== SQUIRREL ======================================================================================================================================================== */
|
||||
ADDRESS p_sq_pushbool = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x83\xEC\x38\x33\xC0\x48\xC7\x44\x24\x20\x08\x00\x00\x01\x48", "xxxxxxxxxxxxxxxx");
|
||||
void (*sq_pushbool)(void* sqvm, int val) = (void (*)(void*, int))p_sq_pushbool.GetPtr(); /*48 83 EC 38 33 C0 48 C7 44 24 20 08 00 00 01 48*/
|
||||
void (*v_sq_pushbool)(HSQUIRRELVM* v, int val) = (void (*)(HSQUIRRELVM*, int))p_sq_pushbool.GetPtr(); /*48 83 EC 38 33 C0 48 C7 44 24 20 08 00 00 01 48*/
|
||||
#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2)
|
||||
ADDRESS p_sq_pushstring = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x40\x56\x48\x83\xEC\x30\x48\x8B\xF1\x48\x85\xD2\x0F\x84\x8C\x00", "xxxxxxxxxxxxxxxx");
|
||||
void (*sq_pushstring)(void* sqvm, const char* string, int len) = (void (*)(void*, const char*, int))p_sq_pushstring.GetPtr(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8C 00*/
|
||||
void (*v_sq_pushstring)(HSQUIRRELVM* v, const char* string, int len) = (void (*)(HSQUIRRELVM*, const char*, int))p_sq_pushstring.GetPtr(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8C 00*/
|
||||
#elif defined (GAMEDLL_S3)
|
||||
ADDRESS p_sq_pushstring = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x40\x56\x48\x83\xEC\x30\x48\x8B\xF1\x48\x85\xD2\x0F\x84\x8F\x00", "xxxxxxxxxxxxxxxx");
|
||||
void (*sq_pushstring)(void* sqvm, const char* string, int len) = (void (*)(void*, const char*, int))p_sq_pushstring.GetPtr(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8F 00*/
|
||||
void (*v_sq_pushstring)(HSQUIRRELVM* v, const char* string, int len) = (void (*)(HSQUIRRELVM*, const char*, int))p_sq_pushstring.GetPtr(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8F 00*/
|
||||
#endif
|
||||
ADDRESS p_sq_pushinteger = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x83\xEC\x38\x33\xC0\x48\xC7\x44\x24\x20\x02\x00\x00\x05\x48", "xxxxxxxxxxxxxxxx");
|
||||
void (*sq_pushinteger)(void* sqvm, int val) = (void (*)(void*, int))p_sq_pushinteger.GetPtr(); /*48 83 EC 38 33 C0 48 C7 44 24 20 02 00 00 05 48*/
|
||||
void (*v_sq_pushinteger)(HSQUIRRELVM* v, int val) = (void (*)(HSQUIRRELVM*, int))p_sq_pushinteger.GetPtr(); /*48 83 EC 38 33 C0 48 C7 44 24 20 02 00 00 05 48*/
|
||||
|
||||
ADDRESS p_sq_pushconstant = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x89\x5C\x24\x00\x48\x89\x6C\x24\x00\x48\x89\x74\x24\x00\x57\x48\x83\xEC\x30\x4C\x8B", "xxxx?xxxx?xxxx?xxxxxxx");
|
||||
void (*sq_pushconstant)(void* sqvm, const char* name, int val) = (void (*)(void*, const char*, int))p_sq_pushconstant.GetPtr(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 30 4C 8B*/
|
||||
void (*v_sq_pushconstant)(HSQUIRRELVM* v, const char* name, int val) = (void (*)(HSQUIRRELVM*, const char*, int))p_sq_pushconstant.GetPtr(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 30 4C 8B*/
|
||||
|
||||
ADDRESS p_sq_newarray = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x30\x48\x8B\xD9\x48\xC7\x44\x24\x20\x40", "xxxxxxxxxxxxxxxxxxx");
|
||||
void (*sq_newarray)(void* sqvm, int size) = (void (*)(void*, int))p_sq_newarray.GetPtr(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 40*/
|
||||
void (*v_sq_newarray)(HSQUIRRELVM* v, int size) = (void (*)(HSQUIRRELVM*, int))p_sq_newarray.GetPtr(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 40*/
|
||||
|
||||
ADDRESS p_sq_arrayappend = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x40\x53\x48\x83\xEC\x20\x8B\x41\x00\x48\x8B\xD9\x2B\x41\x00\x83\xF8\x02\x7D", "xxxxxxxx?xxxxx?xxxx");
|
||||
void (*sq_arrayappend)(void* sqvm, int idx) = (void (*)(void*, int))p_sq_arrayappend.GetPtr(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/
|
||||
void (*v_sq_arrayappend)(HSQUIRRELVM* v, int idx) = (void (*)(HSQUIRRELVM*, int))p_sq_arrayappend.GetPtr(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/
|
||||
|
||||
ADDRESS p_sq_newtable = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x30\x48\x8B\xD9\x48\xC7\x44\x24\x20\x20", "xxxxxxxxxxxxxxxxxxx");
|
||||
void (*sq_newtable)(void* sqvm) = (void (*)(void*))p_sq_newtable.GetPtr(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 20*/
|
||||
void (*v_sq_newtable)(HSQUIRRELVM* v) = (void (*)(HSQUIRRELVM*))p_sq_newtable.GetPtr(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 20*/
|
||||
|
||||
ADDRESS p_sq_newslot = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x40\x53\x48\x83\xEC\x30\x44\x8B\x49\x00\x48\x8B\xD9\x41\x8B\xC1", "xxxxxxxxx?xxxxxx");
|
||||
void (*sq_newslot)(void* sqvm, int idx) = (void (*)(void*, int))p_sq_newslot.GetPtr(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/
|
||||
void (*v_sq_newslot)(HSQUIRRELVM* v, int idx) = (void (*)(HSQUIRRELVM*, int))p_sq_newslot.GetPtr(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/
|
||||
#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2)
|
||||
ADDRESS p_sq_pushstructure = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x89\x5C\x24\x00\x48\x89\x74\x24\x00\x48\x89\x7C\x24\x00\x4C\x89\x4C\x24\x00\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC", "xxxx?xxxx?xxxx?xxxx?xxxxxxxxxxxx");
|
||||
void (*sq_pushstructure)(void* sqvm, const char* name, const char* member, const char* codeclass1, const char* codeclass2) = (void (*)(void*, const char*, const char*, const char*, const char*))p_sq_pushstructure.GetPtr(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 4C 89 4C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC*/
|
||||
void (*v_sq_pushstructure)(HSQUIRRELVM* v, const char* name, const char* member, const char* codeclass1, const char* codeclass2) = (void (*)(HSQUIRRELVM*, const char*, const char*, const char*, const char*))p_sq_pushstructure.GetPtr(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 4C 89 4C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC*/
|
||||
#elif defined (GAMEDLL_S3)
|
||||
ADDRESS p_sq_pushstructure = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x89\x5C\x24\x00\x48\x89\x74\x24\x00\x48\x89\x7C\x24\x00\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC\x48\x83\xEC\x60\x48\x8B\x59\x60", "xxxx?xxxx?xxxx?xxxxxxxxxxxxxxxxxxxx");
|
||||
void (*sq_pushstructure)(void* sqvm, const char* name, const char* member, const char* codeclass1, const char* codeclass2) = (void (*)(void*, const char*, const char*, const char*, const char*))p_sq_pushstructure.GetPtr(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC 48 83 EC 60 48 8B 59 60*/
|
||||
void (*v_sq_pushstructure)(HSQUIRRELVM* v, const char* name, const char* member, const char* codeclass1, const char* codeclass2) = (void (*)(HSQUIRRELVM*, const char*, const char*, const char*, const char*))p_sq_pushstructure.GetPtr(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC 48 83 EC 60 48 8B 59 60*/
|
||||
#endif
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
char* hsq_getstring(void* sqvm, int i);
|
||||
int hsq_getinteger(void* sqvm, int i);
|
||||
void hsq_pushbool(void* sqvm, int val);
|
||||
void hsq_pushstring(void* sqvm, const char* string, int len);
|
||||
void hsq_pushinteger(void* sqvm, int val);
|
||||
void hsq_pushconstant(void* sqvm, const char* name, int val);
|
||||
void hsq_newarray(void* sqvm, int size);
|
||||
void hsq_arrayappend(void* sqvm, int idx);
|
||||
void hsq_newtable(void* sqvm);
|
||||
void hsq_newslot(void* sqvm, int idx);
|
||||
void hsq_pushstructure(void* sqvm, const char* name, const char* member, const char* codeclass1, const char* codeclass2);
|
||||
char* sq_getstring(HSQUIRRELVM* v, int i);
|
||||
int sq_getinteger(HSQUIRRELVM* v, int i);
|
||||
void sq_pushbool(HSQUIRRELVM* v, int val);
|
||||
void sq_pushstring(HSQUIRRELVM* v, const char* string, int len);
|
||||
void sq_pushinteger(HSQUIRRELVM* v, int val);
|
||||
void sq_pushconstant(HSQUIRRELVM* v, const char* name, int val);
|
||||
void sq_newarray(HSQUIRRELVM* v, int size);
|
||||
void sq_arrayappend(HSQUIRRELVM* v, int idx);
|
||||
void sq_newtable(HSQUIRRELVM* v);
|
||||
void sq_newslot(HSQUIRRELVM* v, int idx);
|
||||
void sq_pushstructure(HSQUIRRELVM* v, const char* name, const char* member, const char* codeclass1, const char* codeclass2);
|
||||
|
||||
void SQAPI_Attach();
|
||||
void SQAPI_Detach();
|
||||
|
@ -13,8 +13,10 @@
|
||||
|
||||
#include "core/stdafx.h"
|
||||
#include "engine/sys_utils.h"
|
||||
#include "squirrel/sqtype.h"
|
||||
#include "squirrel/sqapi.h"
|
||||
#include "squirrel/sqinit.h"
|
||||
#include "networksystem/r5net.h"
|
||||
|
||||
#ifndef DEDICATED
|
||||
#include "gameui/IBrowser.h" // TODO: create dedicated class for exposing server utils to ImGui and UI VM.
|
||||
@ -27,7 +29,7 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: SDK test and example body
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT SDKNativeTest(void* sqvm)
|
||||
SQRESULT SDKNativeTest(HSQUIRRELVM* v)
|
||||
{
|
||||
// Function code goes here.
|
||||
return SQ_OK;
|
||||
@ -36,9 +38,9 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: expose SDK version to the VScript API
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetSDKVersion(void* sqvm)
|
||||
SQRESULT GetSDKVersion(HSQUIRRELVM* v)
|
||||
{
|
||||
hsq_pushstring(sqvm, g_pR5net->GetSDKVersion().c_str(), -1);
|
||||
sq_pushstring(v, g_pR5net->GetSDKVersion().c_str(), -1);
|
||||
return SQ_OK;
|
||||
}
|
||||
}
|
||||
@ -56,12 +58,12 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: get server's current name from serverlist index
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetServerName(void* sqvm)
|
||||
SQRESULT GetServerName(HSQUIRRELVM* v)
|
||||
{
|
||||
int iServerIndex = hsq_getinteger(sqvm, 1);
|
||||
int iServerIndex = sq_getinteger(v, 1);
|
||||
std::string svServerName = g_pIBrowser->m_vServerList[iServerIndex].svServerName;
|
||||
|
||||
hsq_pushstring(sqvm, svServerName.c_str(), -1);
|
||||
sq_pushstring(v, svServerName.c_str(), -1);
|
||||
|
||||
return SQ_OK;
|
||||
}
|
||||
@ -69,12 +71,12 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: get server's current playlist via serverlist index
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetServerPlaylist(void* sqvm)
|
||||
SQRESULT GetServerPlaylist(HSQUIRRELVM* v)
|
||||
{
|
||||
int iServerIndex = hsq_getinteger(sqvm, 1);
|
||||
int iServerIndex = sq_getinteger(v, 1);
|
||||
std::string svServerPlaylist = g_pIBrowser->m_vServerList[iServerIndex].svPlaylist;
|
||||
|
||||
hsq_pushstring(sqvm, svServerPlaylist.c_str(), -1);
|
||||
sq_pushstring(v, svServerPlaylist.c_str(), -1);
|
||||
|
||||
return SQ_OK;
|
||||
}
|
||||
@ -82,12 +84,12 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: get server's current map via serverlist index
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetServerMap(void* sqvm)
|
||||
SQRESULT GetServerMap(HSQUIRRELVM* v)
|
||||
{
|
||||
int iServerIndex = hsq_getinteger(sqvm, 1);
|
||||
int iServerIndex = sq_getinteger(v, 1);
|
||||
std::string svServerMapName = g_pIBrowser->m_vServerList[iServerIndex].svMapName;
|
||||
|
||||
hsq_pushstring(sqvm, svServerMapName.c_str(), -1);
|
||||
sq_pushstring(v, svServerMapName.c_str(), -1);
|
||||
|
||||
return SQ_OK;
|
||||
}
|
||||
@ -95,11 +97,11 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: get current server count from pylon
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetServerCount(void* sqvm)
|
||||
SQRESULT GetServerCount(HSQUIRRELVM* v)
|
||||
{
|
||||
g_pIBrowser->GetServerList(); // Refresh svListing list.
|
||||
|
||||
hsq_pushinteger(sqvm, g_pIBrowser->m_vServerList.size());
|
||||
sq_pushinteger(v, g_pIBrowser->m_vServerList.size());
|
||||
|
||||
return SQ_OK;
|
||||
}
|
||||
@ -107,7 +109,7 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: get promo data for serverbrowser panels
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetPromoData(void* sqvm)
|
||||
SQRESULT GetPromoData(HSQUIRRELVM* v)
|
||||
{
|
||||
enum class R5RPromoData : int
|
||||
{
|
||||
@ -119,7 +121,7 @@ namespace VSquirrel
|
||||
PromoRightDesc
|
||||
};
|
||||
|
||||
R5RPromoData ePromoIndex = (R5RPromoData)hsq_getinteger(sqvm, 1);
|
||||
R5RPromoData ePromoIndex = (R5RPromoData)sq_getinteger(v, 1);
|
||||
|
||||
std::string svPromo = std::string();
|
||||
|
||||
@ -162,7 +164,7 @@ namespace VSquirrel
|
||||
}
|
||||
}
|
||||
|
||||
hsq_pushstring(sqvm, svPromo.c_str(), -1);
|
||||
sq_pushstring(v, svPromo.c_str(), -1);
|
||||
|
||||
return SQ_OK;
|
||||
}
|
||||
@ -170,9 +172,9 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: set netchannel encryption key and connect to server
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT SetEncKeyAndConnect(void* sqvm)
|
||||
SQRESULT SetEncKeyAndConnect(HSQUIRRELVM* v)
|
||||
{
|
||||
int iServerIndex = hsq_getinteger(sqvm, 1);
|
||||
int iServerIndex = sq_getinteger(v, 1);
|
||||
|
||||
// !TODO: Create glue class instead.
|
||||
g_pIBrowser->ConnectToServer(g_pIBrowser->m_vServerList[iServerIndex].svIpAddress, g_pIBrowser->m_vServerList[iServerIndex].svPort, g_pIBrowser->m_vServerList[iServerIndex].svEncryptionKey);
|
||||
@ -183,12 +185,12 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: create server via native serverbrowser entries
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT CreateServerFromMenu(void* sqvm)
|
||||
SQRESULT CreateServerFromMenu(HSQUIRRELVM* v)
|
||||
{
|
||||
std::string svServerName = hsq_getstring(sqvm, 1);
|
||||
std::string svServerMapName = hsq_getstring(sqvm, 2);
|
||||
std::string svServerPlaylist = hsq_getstring(sqvm, 3);
|
||||
EServerVisibility eServerVisibility = (EServerVisibility)hsq_getinteger(sqvm, 4);
|
||||
std::string svServerName = sq_getstring(v, 1);
|
||||
std::string svServerMapName = sq_getstring(v, 2);
|
||||
std::string svServerPlaylist = sq_getstring(v, 3);
|
||||
EServerVisibility eServerVisibility = (EServerVisibility)sq_getinteger(v, 4);
|
||||
|
||||
if (svServerName.empty() || svServerMapName.empty() || svServerPlaylist.empty())
|
||||
return SQ_OK;
|
||||
@ -208,11 +210,11 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: request token from pylon and join server with result.
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT JoinPrivateServerFromMenu(void* sqvm)
|
||||
SQRESULT JoinPrivateServerFromMenu(HSQUIRRELVM* v)
|
||||
{
|
||||
std::string svHiddenServerRequestMessage = std::string();
|
||||
|
||||
std::string svToken = hsq_getstring(sqvm, 1);
|
||||
std::string svToken = sq_getstring(v, 1);
|
||||
|
||||
ServerListing svListing;
|
||||
bool result = g_pR5net->GetServerByToken(svListing, svHiddenServerRequestMessage, svToken); // Send szToken connect request.
|
||||
@ -227,11 +229,11 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: get response from private server request
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetPrivateServerMessage(void* sqvm)
|
||||
SQRESULT GetPrivateServerMessage(HSQUIRRELVM* v)
|
||||
{
|
||||
std::string svHiddenServerRequestMessage = std::string();
|
||||
|
||||
std::string svToken = hsq_getstring(sqvm, 1);
|
||||
std::string svToken = sq_getstring(v, 1);
|
||||
|
||||
ServerListing serverListing;
|
||||
bool result = g_pR5net->GetServerByToken(serverListing, svHiddenServerRequestMessage, svToken); // Send szToken connect request.
|
||||
@ -239,13 +241,13 @@ namespace VSquirrel
|
||||
{
|
||||
svHiddenServerRequestMessage = "Found Server: " + serverListing.svServerName;
|
||||
|
||||
hsq_pushstring(sqvm, svHiddenServerRequestMessage.c_str(), -1);
|
||||
sq_pushstring(v, svHiddenServerRequestMessage.c_str(), -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
svHiddenServerRequestMessage = "Error: Server Not Found";
|
||||
|
||||
hsq_pushstring(sqvm, svHiddenServerRequestMessage.c_str(), -1);
|
||||
sq_pushstring(v, svHiddenServerRequestMessage.c_str(), -1);
|
||||
}
|
||||
|
||||
DevMsg(eDLL_T::UI, "GetPrivateServeMessage response: %s\n", svHiddenServerRequestMessage.c_str());
|
||||
@ -256,10 +258,10 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: connect to server from native server browser entries
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT ConnectToIPFromMenu(void* sqvm)
|
||||
SQRESULT ConnectToIPFromMenu(HSQUIRRELVM* v)
|
||||
{
|
||||
std::string svIpAddr = hsq_getstring(sqvm, 1);
|
||||
std::string svEncKey = hsq_getstring(sqvm, 2);
|
||||
std::string svIpAddr = sq_getstring(v, 1);
|
||||
std::string svEncKey = sq_getstring(v, 2);
|
||||
|
||||
if (svIpAddr.empty() || svEncKey.empty())
|
||||
return SQ_OK;
|
||||
@ -274,7 +276,7 @@ namespace VSquirrel
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: return all available maps
|
||||
//-----------------------------------------------------------------------------
|
||||
SQRESULT GetAvailableMaps(void* sqvm)
|
||||
SQRESULT GetAvailableMaps(HSQUIRRELVM* v)
|
||||
{
|
||||
std::vector<std::string> vsvMapList = g_pIBrowser->m_vszMapFileNameList;
|
||||
|
||||
@ -286,12 +288,12 @@ namespace VSquirrel
|
||||
|
||||
DevMsg(eDLL_T::UI, "Requesting an array of '%i' available maps from script\n", vsvMapList.size());
|
||||
|
||||
hsq_newarray(sqvm, 0);
|
||||
sq_newarray(v, 0);
|
||||
|
||||
for (auto& it : vsvMapList)
|
||||
{
|
||||
hsq_pushstring(sqvm, it.c_str(), -1);
|
||||
hsq_arrayappend(sqvm, -2);
|
||||
sq_pushstring(v, it.c_str(), -1);
|
||||
sq_arrayappend(v, -2);
|
||||
}
|
||||
|
||||
return SQ_OK;
|
||||
|
@ -18,8 +18,8 @@ namespace VSquirrel
|
||||
{
|
||||
namespace SHARED
|
||||
{
|
||||
SQRESULT SDKNativeTest(void* sqvm);
|
||||
SQRESULT GetSDKVersion(void* sqvm);
|
||||
SQRESULT SDKNativeTest(HSQUIRRELVM* v);
|
||||
SQRESULT GetSDKVersion(HSQUIRRELVM* v);
|
||||
}
|
||||
namespace SERVER
|
||||
{
|
||||
@ -30,17 +30,17 @@ namespace VSquirrel
|
||||
}
|
||||
namespace UI
|
||||
{
|
||||
SQRESULT GetServerName(void* sqvm);
|
||||
SQRESULT GetServerPlaylist(void* sqvm);
|
||||
SQRESULT GetServerMap(void* sqvm);
|
||||
SQRESULT GetServerCount(void* sqvm);
|
||||
SQRESULT GetPromoData(void* sqvm);
|
||||
SQRESULT SetEncKeyAndConnect(void* sqvm);
|
||||
SQRESULT CreateServerFromMenu(void* sqvm);
|
||||
SQRESULT JoinPrivateServerFromMenu(void* sqvm);
|
||||
SQRESULT GetPrivateServerMessage(void* sqvm);
|
||||
SQRESULT ConnectToIPFromMenu(void* sqvm);
|
||||
SQRESULT GetAvailableMaps(void* sqvm);
|
||||
SQRESULT GetServerName(HSQUIRRELVM* v);
|
||||
SQRESULT GetServerPlaylist(HSQUIRRELVM* v);
|
||||
SQRESULT GetServerMap(HSQUIRRELVM* v);
|
||||
SQRESULT GetServerCount(HSQUIRRELVM* v);
|
||||
SQRESULT GetPromoData(HSQUIRRELVM* v);
|
||||
SQRESULT SetEncKeyAndConnect(HSQUIRRELVM* v);
|
||||
SQRESULT CreateServerFromMenu(HSQUIRRELVM* v);
|
||||
SQRESULT JoinPrivateServerFromMenu(HSQUIRRELVM* v);
|
||||
SQRESULT GetPrivateServerMessage(HSQUIRRELVM* v);
|
||||
SQRESULT ConnectToIPFromMenu(HSQUIRRELVM* v);
|
||||
SQRESULT GetAvailableMaps(HSQUIRRELVM* v);
|
||||
}
|
||||
#endif // !DEDICATED
|
||||
}
|
||||
|
57
r5dev/squirrel/sqtype.h
Normal file
57
r5dev/squirrel/sqtype.h
Normal file
@ -0,0 +1,57 @@
|
||||
#ifndef SQTYPE_H
|
||||
#define SQTYPE_H
|
||||
|
||||
#define SQ_OK (1)
|
||||
#define SQ_ERROR (-1)
|
||||
#define SQ_FAILED(res) (res<0)
|
||||
#define SQ_SUCCEEDED(res) (res>=0)
|
||||
|
||||
typedef int SQRESULT;
|
||||
typedef struct SQVM* HSQUIRRELVM;
|
||||
|
||||
enum class SQCONTEXT : int
|
||||
{
|
||||
SERVER = 0,
|
||||
CLIENT,
|
||||
UI
|
||||
};
|
||||
|
||||
const static std::string SQVM_TYPE_T[3] =
|
||||
{
|
||||
"SERVER",
|
||||
"CLIENT",
|
||||
"UI",
|
||||
};
|
||||
|
||||
const static std::string SQVM_LOG_T[4] =
|
||||
{
|
||||
"Script(S):",
|
||||
"Script(C):",
|
||||
"Script(U):",
|
||||
"Script(X):"
|
||||
};
|
||||
|
||||
const static std::string SQVM_WARNING_LOG_T[4] =
|
||||
{
|
||||
"Script(S):Warning:",
|
||||
"Script(C):Warning:",
|
||||
"Script(U):Warning:",
|
||||
"Script(X):Warning:"
|
||||
};
|
||||
|
||||
const static std::string SQVM_ANSI_LOG_T[4] =
|
||||
{
|
||||
"\033[38;2;151;149;187mScript(S):",
|
||||
"\033[38;2;151;149;163mScript(C):",
|
||||
"\033[38;2;151;123;136mScript(U):",
|
||||
"\033[38;2;151;149;163mScript(X):"
|
||||
};
|
||||
|
||||
const static std::string SQVM_WARNING_ANSI_LOG_T[4] =
|
||||
{
|
||||
"\033[38;2;151;149;187mScript(S):\033[38;2;255;255;000mWarning:",
|
||||
"\033[38;2;151;149;163mScript(C):\033[38;2;255;255;000mWarning:",
|
||||
"\033[38;2;151;123;136mScript(U):\033[38;2;255;255;000mWarning:",
|
||||
"\033[38;2;151;149;163mScript(X):\033[38;2;255;255;000mWarning:"
|
||||
};
|
||||
#endif // SQTYPE_H
|
@ -1,56 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
typedef int SQRESULT;
|
||||
#define SQ_OK (1)
|
||||
#define SQ_ERROR (-1)
|
||||
#define SQ_FAILED(res) (res<0)
|
||||
#define SQ_SUCCEEDED(res) (res>=0)
|
||||
|
||||
enum class SQCONTEXT : int
|
||||
{
|
||||
SERVER = 0,
|
||||
CLIENT,
|
||||
UI
|
||||
};
|
||||
|
||||
const static std::string SQVM_TYPE_T[3] =
|
||||
{
|
||||
"SERVER",
|
||||
"CLIENT",
|
||||
"UI",
|
||||
};
|
||||
|
||||
const static std::string SQVM_LOG_T[4] =
|
||||
{
|
||||
"Script(S):",
|
||||
"Script(C):",
|
||||
"Script(U):",
|
||||
"Script(X):"
|
||||
};
|
||||
|
||||
const static std::string SQVM_WARNING_LOG_T[4] =
|
||||
{
|
||||
"Script(S):Warning:",
|
||||
"Script(C):Warning:",
|
||||
"Script(U):Warning:",
|
||||
"Script(X):Warning:"
|
||||
};
|
||||
|
||||
const static std::string SQVM_ANSI_LOG_T[4] =
|
||||
{
|
||||
"\033[38;2;151;149;187mScript(S):",
|
||||
"\033[38;2;151;149;163mScript(C):",
|
||||
"\033[38;2;151;123;136mScript(U):",
|
||||
"\033[38;2;151;149;163mScript(X):"
|
||||
};
|
||||
|
||||
const static std::string SQVM_WARNING_ANSI_LOG_T[4] =
|
||||
{
|
||||
"\033[38;2;151;149;187mScript(S):\033[38;2;255;255;000mWarning:",
|
||||
"\033[38;2;151;149;163mScript(C):\033[38;2;255;255;000mWarning:",
|
||||
"\033[38;2;151;123;136mScript(U):\033[38;2;255;255;000mWarning:",
|
||||
"\033[38;2;151;149;163mScript(X):\033[38;2;255;255;000mWarning:"
|
||||
};
|
||||
#include "squirrel/sqtype.h"
|
||||
|
||||
struct SQFuncRegistration
|
||||
{
|
||||
@ -123,7 +72,6 @@ namespace
|
||||
ADDRESS p_SQVM_InitializeCLGlobalScriptStructs = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x48\x89\x74\x24\x00\x48\x89\x7C\x24\x00\x41\x56\x48\x83\xEC\x30\x48\x63\xC2\x48\x8D\x3D\x00\x00\x00\x00", "xxxx?xxxx?xxxxxxxxxxxx????");
|
||||
int (*SQVM_InitializeCLGlobalScriptStructs)(void* sqvm/**(+8)*/, SQCONTEXT context) = (int (*)(void*, SQCONTEXT))p_SQVM_InitializeCLGlobalScriptStructs.GetPtr(); /*48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC 30 48 63 C2 48 8D 3D ? ? ? ?*/
|
||||
#endif // !DEDICATED
|
||||
|
||||
#if !defined (CLIENT_DLL) && defined (GAMEDLL_S0) || defined (GAMEDLL_S1)
|
||||
ADDRESS p_SQVM_CreateServerVM = g_mGameDll.FindPatternSIMD((std::uint8_t*)"\x40\x53\x48\x83\xEC\x50\x48\x8D\x0D\x00\x00\x00\x00", "xxxxxxxxx????");
|
||||
bool (*SQVM_CreateServerVM)() = (bool(*)())p_SQVM_CreateServerVM.GetPtr(); /*40 53 48 83 EC 50 48 8D 0D ? ? ? ?*/
|
||||
|
@ -175,6 +175,7 @@
|
||||
<ClInclude Include="..\rtech\stryder\stryder.h" />
|
||||
<ClInclude Include="..\squirrel\sqapi.h" />
|
||||
<ClInclude Include="..\squirrel\sqinit.h" />
|
||||
<ClInclude Include="..\squirrel\sqtype.h" />
|
||||
<ClInclude Include="..\squirrel\sqvm.h" />
|
||||
<ClInclude Include="..\studiorender\studiorendercontext.h" />
|
||||
<ClInclude Include="..\thirdparty\detours\include\detours.h" />
|
||||
|
@ -1121,6 +1121,9 @@
|
||||
<ClInclude Include="..\rtech\stryder\stryder.h">
|
||||
<Filter>sdk\rtech\rui</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\squirrel\sqtype.h">
|
||||
<Filter>sdk\squirrel</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="..\shared\resource\lockedserver.png">
|
||||
|
@ -195,6 +195,7 @@
|
||||
<ClInclude Include="..\server\server.h" />
|
||||
<ClInclude Include="..\squirrel\sqapi.h" />
|
||||
<ClInclude Include="..\squirrel\sqinit.h" />
|
||||
<ClInclude Include="..\squirrel\sqtype.h" />
|
||||
<ClInclude Include="..\squirrel\sqvm.h" />
|
||||
<ClInclude Include="..\studiorender\studiorendercontext.h" />
|
||||
<ClInclude Include="..\thirdparty\detours\include\detours.h" />
|
||||
|
@ -813,6 +813,9 @@
|
||||
<ClInclude Include="..\materialsystem\cmaterialsystem.h">
|
||||
<Filter>sdk\materialsystem</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\squirrel\sqtype.h">
|
||||
<Filter>sdk\squirrel</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\client\IVEngineClient.cpp">
|
||||
|
@ -191,6 +191,7 @@
|
||||
<ClInclude Include="..\server\server.h" />
|
||||
<ClInclude Include="..\squirrel\sqapi.h" />
|
||||
<ClInclude Include="..\squirrel\sqinit.h" />
|
||||
<ClInclude Include="..\squirrel\sqtype.h" />
|
||||
<ClInclude Include="..\squirrel\sqvm.h" />
|
||||
<ClInclude Include="..\studiorender\studiorendercontext.h" />
|
||||
<ClInclude Include="..\thirdparty\detours\include\detours.h" />
|
||||
|
@ -1178,6 +1178,9 @@
|
||||
<ClInclude Include="..\engine\baseserver.h">
|
||||
<Filter>sdk\engine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\squirrel\sqtype.h">
|
||||
<Filter>sdk\squirrel</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="..\shared\resource\lockedserver.png">
|
||||
|
Loading…
x
Reference in New Issue
Block a user