aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDedicatedTest')
-rw-r--r--NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters12
-rw-r--r--NorthstarDedicatedTest/clientchathooks.cpp12
-rw-r--r--NorthstarDedicatedTest/miscserverscript.cpp12
-rw-r--r--NorthstarDedicatedTest/plugins.cpp56
-rw-r--r--NorthstarDedicatedTest/scriptmainmenupromos.cpp30
-rw-r--r--NorthstarDedicatedTest/scriptmodmenu.cpp42
-rw-r--r--NorthstarDedicatedTest/scriptserverbrowser.cpp96
-rw-r--r--NorthstarDedicatedTest/serverchathooks.cpp20
-rw-r--r--NorthstarDedicatedTest/squirrel.cpp135
-rw-r--r--NorthstarDedicatedTest/squirrel.h169
10 files changed, 241 insertions, 343 deletions
diff --git a/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters b/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters
index 686493f8..23e406a3 100644
--- a/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters
+++ b/NorthstarDedicatedTest/NorthstarDedicatedTest.vcxproj.filters
@@ -82,9 +82,6 @@
<Filter Include="Header Files\Shared\Mods\Compiled">
<UniqueIdentifier>{d1f93d1e-0ecb-44fe-a277-d3e75aec2570}</UniqueIdentifier>
</Filter>
- <Filter Include="Source Files\Shared\Mods\Compiled">
- <UniqueIdentifier>{14fc0931-acad-46ec-a55e-94f4469d4235}</UniqueIdentifier>
- </Filter>
<Filter Include="Source Files\Server">
<UniqueIdentifier>{3d41d3fc-8a3b-4358-b3e8-4f06dc96abfe}</UniqueIdentifier>
</Filter>
@@ -133,6 +130,9 @@
<Filter Include="Source Files\Server\Dedicated">
<UniqueIdentifier>{947835db-67d6-42c0-870d-62743f85231f}</UniqueIdentifier>
</Filter>
+ <Filter Include="Source Files\Shared\Mods\Compiled Assets">
+ <UniqueIdentifier>{14fc0931-acad-46ec-a55e-94f4469d4235}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h">
@@ -1560,7 +1560,7 @@
<Filter>Source Files\Shared</Filter>
</ClCompile>
<ClCompile Include="scriptsrson.cpp">
- <Filter>Source Files\Shared\Mods\Compiled</Filter>
+ <Filter>Source Files\Shared\Mods\Compiled Assets</Filter>
</ClCompile>
<ClCompile Include="serverauthentication.cpp">
<Filter>Source Files\Server\Authentication</Filter>
@@ -1572,7 +1572,7 @@
<Filter>Source Files\Client</Filter>
</ClCompile>
<ClCompile Include="keyvalues.cpp">
- <Filter>Source Files\Shared\Mods\Compiled</Filter>
+ <Filter>Source Files\Shared\Mods\Compiled Assets</Filter>
</ClCompile>
<ClCompile Include="masterserver.cpp">
<Filter>Source Files\Shared</Filter>
@@ -1599,7 +1599,7 @@
<Filter>Source Files\Server</Filter>
</ClCompile>
<ClCompile Include="pdef.cpp">
- <Filter>Source Files\Shared\Mods\Compiled</Filter>
+ <Filter>Source Files\Shared\Mods\Compiled Assets</Filter>
</ClCompile>
<ClCompile Include="clientauthhooks.cpp">
<Filter>Source Files\Client</Filter>
diff --git a/NorthstarDedicatedTest/clientchathooks.cpp b/NorthstarDedicatedTest/clientchathooks.cpp
index ef40c634..b6cf56ac 100644
--- a/NorthstarDedicatedTest/clientchathooks.cpp
+++ b/NorthstarDedicatedTest/clientchathooks.cpp
@@ -58,8 +58,8 @@ static void CHudChat__AddGameLineHook(void* self, const char* message, int inbox
// void NSChatWrite( int context, string str )
static SQRESULT SQ_ChatWrite(void* sqvm)
{
- int context = ClientSq_getinteger(sqvm, 1);
- const char* str = ClientSq_getstring(sqvm, 2);
+ int context = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
+ const char* str = g_ClientSquirrelManager->sq_getstring(sqvm, 2);
LocalChatWriter((LocalChatWriter::Context)context).Write(str);
return SQRESULT_NOTNULL;
@@ -68,8 +68,8 @@ static SQRESULT SQ_ChatWrite(void* sqvm)
// void NSChatWriteRaw( int context, string str )
static SQRESULT SQ_ChatWriteRaw(void* sqvm)
{
- int context = ClientSq_getinteger(sqvm, 1);
- const char* str = ClientSq_getstring(sqvm, 2);
+ int context = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
+ const char* str = g_ClientSquirrelManager->sq_getstring(sqvm, 2);
LocalChatWriter((LocalChatWriter::Context)context).InsertText(str);
return SQRESULT_NOTNULL;
@@ -78,8 +78,8 @@ static SQRESULT SQ_ChatWriteRaw(void* sqvm)
// void NSChatWriteLine( int context, string str )
static SQRESULT SQ_ChatWriteLine(void* sqvm)
{
- int context = ClientSq_getinteger(sqvm, 1);
- const char* str = ClientSq_getstring(sqvm, 2);
+ int context = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
+ const char* str = g_ClientSquirrelManager->sq_getstring(sqvm, 2);
LocalChatWriter((LocalChatWriter::Context)context).WriteLine(str);
return SQRESULT_NOTNULL;
diff --git a/NorthstarDedicatedTest/miscserverscript.cpp b/NorthstarDedicatedTest/miscserverscript.cpp
index 0f66d386..3c32ad1c 100644
--- a/NorthstarDedicatedTest/miscserverscript.cpp
+++ b/NorthstarDedicatedTest/miscserverscript.cpp
@@ -22,12 +22,12 @@ void* GetPlayerByIndex(int playerIndex)
// void function NSEarlyWritePlayerIndexPersistenceForLeave( int playerIndex )
SQRESULT SQ_EarlyWritePlayerIndexPersistenceForLeave(void* sqvm)
{
- int playerIndex = ServerSq_getinteger(sqvm, 1);
+ int playerIndex = g_ServerSquirrelManager->sq_getinteger(sqvm, 1);
void* player = GetPlayerByIndex(playerIndex);
if (!g_ServerAuthenticationManager->m_additionalPlayerData.count(player))
{
- ServerSq_pusherror(sqvm, fmt::format("Invalid playerindex {}", playerIndex).c_str());
+ g_ServerSquirrelManager->sq_raiseerror(sqvm, fmt::format("Invalid playerindex {}", playerIndex).c_str());
return SQRESULT_ERROR;
}
@@ -39,22 +39,22 @@ SQRESULT SQ_EarlyWritePlayerIndexPersistenceForLeave(void* sqvm)
// bool function NSIsWritingPlayerPersistence()
SQRESULT SQ_IsWritingPlayerPersistence(void* sqvm)
{
- ServerSq_pushbool(sqvm, g_MasterServerManager->m_bSavingPersistentData);
+ g_ServerSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_bSavingPersistentData);
return SQRESULT_NOTNULL;
}
// bool function NSIsPlayerIndexLocalPlayer( int playerIndex )
SQRESULT SQ_IsPlayerIndexLocalPlayer(void* sqvm)
{
- int playerIndex = ServerSq_getinteger(sqvm, 1);
+ int playerIndex = g_ServerSquirrelManager->sq_getinteger(sqvm, 1);
void* player = GetPlayerByIndex(playerIndex);
if (!g_ServerAuthenticationManager->m_additionalPlayerData.count(player))
{
- ServerSq_pusherror(sqvm, fmt::format("Invalid playerindex {}", playerIndex).c_str());
+ g_ServerSquirrelManager->sq_raiseerror(sqvm, fmt::format("Invalid playerindex {}", playerIndex).c_str());
return SQRESULT_ERROR;
}
- ServerSq_pushbool(sqvm, !strcmp(g_LocalPlayerUserID, (char*)player + 0xF500));
+ g_ServerSquirrelManager->sq_pushbool(sqvm, !strcmp(g_LocalPlayerUserID, (char*)player + 0xF500));
return SQRESULT_NOTNULL;
}
diff --git a/NorthstarDedicatedTest/plugins.cpp b/NorthstarDedicatedTest/plugins.cpp
index 7424d954..b77b4ef4 100644
--- a/NorthstarDedicatedTest/plugins.cpp
+++ b/NorthstarDedicatedTest/plugins.cpp
@@ -113,12 +113,12 @@ void initGameState()
SQRESULT SQ_UpdateGameStateUI(void* sqvm)
{
AcquireSRWLockExclusive(&gameStateLock);
- gameState.map = ClientSq_getstring(sqvm, 1);
- gameState.mapDisplayName = ClientSq_getstring(sqvm, 2);
- gameState.playlist = ClientSq_getstring(sqvm, 3);
- gameState.playlistDisplayName = ClientSq_getstring(sqvm, 4);
- gameState.connected = ClientSq_getbool(sqvm, 5);
- gameState.loading = ClientSq_getbool(sqvm, 6);
+ gameState.map = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
+ gameState.mapDisplayName = g_ClientSquirrelManager->sq_getstring(sqvm, 2);
+ gameState.playlist = g_ClientSquirrelManager->sq_getstring(sqvm, 3);
+ gameState.playlistDisplayName = g_ClientSquirrelManager->sq_getstring(sqvm, 4);
+ gameState.connected = g_ClientSquirrelManager->sq_getbool(sqvm, 5);
+ gameState.loading = g_ClientSquirrelManager->sq_getbool(sqvm, 6);
ReleaseSRWLockExclusive(&gameStateLock);
return SQRESULT_NOTNULL;
}
@@ -128,13 +128,13 @@ SQRESULT SQ_UpdateGameStateClient(void* sqvm)
{
AcquireSRWLockExclusive(&gameStateLock);
AcquireSRWLockExclusive(&serverInfoLock);
- gameState.players = ClientSq_getinteger(sqvm, 1);
- serverInfo.maxPlayers = ClientSq_getinteger(sqvm, 2);
- gameState.ourScore = ClientSq_getinteger(sqvm, 3);
- gameState.secondHighestScore = ClientSq_getinteger(sqvm, 4);
- gameState.highestScore = ClientSq_getinteger(sqvm, 5);
- serverInfo.roundBased = ClientSq_getbool(sqvm, 6);
- serverInfo.scoreLimit = ClientSq_getbool(sqvm, 7);
+ gameState.players = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
+ serverInfo.maxPlayers = g_ClientSquirrelManager->sq_getinteger(sqvm, 2);
+ gameState.ourScore = g_ClientSquirrelManager->sq_getinteger(sqvm, 3);
+ gameState.secondHighestScore = g_ClientSquirrelManager->sq_getinteger(sqvm, 4);
+ gameState.highestScore = g_ClientSquirrelManager->sq_getinteger(sqvm, 5);
+ serverInfo.roundBased = g_ClientSquirrelManager->sq_getbool(sqvm, 6);
+ serverInfo.scoreLimit = g_ClientSquirrelManager->sq_getbool(sqvm, 7);
ReleaseSRWLockExclusive(&gameStateLock);
ReleaseSRWLockExclusive(&serverInfoLock);
return SQRESULT_NOTNULL;
@@ -146,15 +146,15 @@ SQRESULT SQ_UpdateServerInfo(void* sqvm)
{
AcquireSRWLockExclusive(&gameStateLock);
AcquireSRWLockExclusive(&serverInfoLock);
- serverInfo.id = ClientSq_getstring(sqvm, 1);
- serverInfo.name = ClientSq_getstring(sqvm, 2);
- serverInfo.password = ClientSq_getstring(sqvm, 3);
- gameState.players = ClientSq_getinteger(sqvm, 4);
- serverInfo.maxPlayers = ClientSq_getinteger(sqvm, 5);
- gameState.map = ClientSq_getstring(sqvm, 6);
- gameState.mapDisplayName = ClientSq_getstring(sqvm, 7);
- gameState.playlist = ClientSq_getstring(sqvm, 8);
- gameState.playlistDisplayName = ClientSq_getstring(sqvm, 9);
+ serverInfo.id = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
+ serverInfo.name = g_ClientSquirrelManager->sq_getstring(sqvm, 2);
+ serverInfo.password = g_ClientSquirrelManager->sq_getstring(sqvm, 3);
+ gameState.players = g_ClientSquirrelManager->sq_getinteger(sqvm, 4);
+ serverInfo.maxPlayers = g_ClientSquirrelManager->sq_getinteger(sqvm, 5);
+ gameState.map = g_ClientSquirrelManager->sq_getstring(sqvm, 6);
+ gameState.mapDisplayName = g_ClientSquirrelManager->sq_getstring(sqvm, 7);
+ gameState.playlist = g_ClientSquirrelManager->sq_getstring(sqvm, 8);
+ gameState.playlistDisplayName = g_ClientSquirrelManager->sq_getstring(sqvm, 9);
ReleaseSRWLockExclusive(&gameStateLock);
ReleaseSRWLockExclusive(&serverInfoLock);
return SQRESULT_NOTNULL;
@@ -164,10 +164,10 @@ SQRESULT SQ_UpdateServerInfo(void* sqvm)
SQRESULT SQ_UpdateServerInfoBetweenRounds(void* sqvm)
{
AcquireSRWLockExclusive(&serverInfoLock);
- serverInfo.id = ClientSq_getstring(sqvm, 1);
- serverInfo.name = ClientSq_getstring(sqvm, 2);
- serverInfo.password = ClientSq_getstring(sqvm, 3);
- serverInfo.maxPlayers = ClientSq_getinteger(sqvm, 4);
+ serverInfo.id = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
+ serverInfo.name = g_ClientSquirrelManager->sq_getstring(sqvm, 2);
+ serverInfo.password = g_ClientSquirrelManager->sq_getstring(sqvm, 3);
+ serverInfo.maxPlayers = g_ClientSquirrelManager->sq_getinteger(sqvm, 4);
ReleaseSRWLockExclusive(&serverInfoLock);
return SQRESULT_NOTNULL;
}
@@ -176,7 +176,7 @@ SQRESULT SQ_UpdateServerInfoBetweenRounds(void* sqvm)
SQRESULT SQ_UpdateTimeInfo(void* sqvm)
{
AcquireSRWLockExclusive(&serverInfoLock);
- serverInfo.endTime = ceil(ClientSq_getfloat(sqvm, 1));
+ serverInfo.endTime = ceil(g_ClientSquirrelManager->sq_getfloat(sqvm, 1));
ReleaseSRWLockExclusive(&serverInfoLock);
return SQRESULT_NOTNULL;
}
@@ -185,7 +185,7 @@ SQRESULT SQ_UpdateTimeInfo(void* sqvm)
SQRESULT SQ_SetConnected(void* sqvm)
{
AcquireSRWLockExclusive(&gameStateLock);
- gameState.loading = ClientSq_getbool(sqvm, 1);
+ gameState.loading = g_ClientSquirrelManager->sq_getbool(sqvm, 1);
ReleaseSRWLockExclusive(&gameStateLock);
return SQRESULT_NOTNULL;
}
diff --git a/NorthstarDedicatedTest/scriptmainmenupromos.cpp b/NorthstarDedicatedTest/scriptmainmenupromos.cpp
index e03b6142..745fe01b 100644
--- a/NorthstarDedicatedTest/scriptmainmenupromos.cpp
+++ b/NorthstarDedicatedTest/scriptmainmenupromos.cpp
@@ -35,7 +35,7 @@ SQRESULT SQ_RequestCustomMainMenuPromos(void* sqvm)
// bool function NSHasCustomMainMenuPromoData()
SQRESULT SQ_HasCustomMainMenuPromoData(void* sqvm)
{
- ClientSq_pushbool(sqvm, g_MasterServerManager->m_bHasMainMenuPromoData);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_bHasMainMenuPromoData);
return SQRESULT_NOTNULL;
}
@@ -45,83 +45,83 @@ SQRESULT SQ_GetCustomMainMenuPromoData(void* sqvm)
if (!g_MasterServerManager->m_bHasMainMenuPromoData)
return SQRESULT_NULL;
- switch (ClientSq_getinteger(sqvm, 1))
+ switch (g_ClientSquirrelManager->sq_getinteger(sqvm, 1))
{
case eMainMenuPromoDataProperty::newInfoTitle1:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.newInfoTitle1.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.newInfoTitle1.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::newInfoTitle2:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.newInfoTitle2.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.newInfoTitle2.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::newInfoTitle3:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.newInfoTitle3.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.newInfoTitle3.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::largeButtonTitle:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonTitle.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonTitle.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::largeButtonText:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonText.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonText.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::largeButtonUrl:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonUrl.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonUrl.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::largeButtonImageIndex:
{
- ClientSq_pushinteger(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonImageIndex);
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, g_MasterServerManager->m_sMainMenuPromoData.largeButtonImageIndex);
break;
}
case eMainMenuPromoDataProperty::smallButton1Title:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton1Title.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton1Title.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::smallButton1Url:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton1Url.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton1Url.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::smallButton1ImageIndex:
{
- ClientSq_pushinteger(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton1ImageIndex);
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton1ImageIndex);
break;
}
case eMainMenuPromoDataProperty::smallButton2Title:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton2Title.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton2Title.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::smallButton2Url:
{
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton2Url.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton2Url.c_str(), -1);
break;
}
case eMainMenuPromoDataProperty::smallButton2ImageIndex:
{
- ClientSq_pushinteger(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton2ImageIndex);
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, g_MasterServerManager->m_sMainMenuPromoData.smallButton2ImageIndex);
break;
}
}
diff --git a/NorthstarDedicatedTest/scriptmodmenu.cpp b/NorthstarDedicatedTest/scriptmodmenu.cpp
index 5332449e..c31f24cf 100644
--- a/NorthstarDedicatedTest/scriptmodmenu.cpp
+++ b/NorthstarDedicatedTest/scriptmodmenu.cpp
@@ -7,12 +7,12 @@
// array<string> function NSGetModNames()
SQRESULT SQ_GetModNames(void* sqvm)
{
- ClientSq_newarray(sqvm, 0);
+ g_ClientSquirrelManager->sq_newarray(sqvm, 0);
for (Mod& mod : g_ModManager->m_loadedMods)
{
- ClientSq_pushstring(sqvm, mod.Name.c_str(), -1);
- ClientSq_arrayappend(sqvm, -2);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, mod.Name.c_str(), -1);
+ g_ClientSquirrelManager->sq_arrayappend(sqvm, -2);
}
return SQRESULT_NOTNULL;
@@ -21,14 +21,14 @@ SQRESULT SQ_GetModNames(void* sqvm)
// bool function NSIsModEnabled(string modName)
SQRESULT SQ_IsModEnabled(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
{
if (!mod.Name.compare(modName))
{
- ClientSq_pushbool(sqvm, mod.Enabled);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, mod.Enabled);
return SQRESULT_NOTNULL;
}
}
@@ -39,8 +39,8 @@ SQRESULT SQ_IsModEnabled(void* sqvm)
// void function NSSetModEnabled(string modName, bool enabled)
SQRESULT SQ_SetModEnabled(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
- const SQBool enabled = ClientSq_getbool(sqvm, 2);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
+ const SQBool enabled = g_ClientSquirrelManager->sq_getbool(sqvm, 2);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
@@ -58,14 +58,14 @@ SQRESULT SQ_SetModEnabled(void* sqvm)
// string function NSGetModDescriptionByModName(string modName)
SQRESULT SQ_GetModDescription(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
{
if (!mod.Name.compare(modName))
{
- ClientSq_pushstring(sqvm, mod.Description.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, mod.Description.c_str(), -1);
return SQRESULT_NOTNULL;
}
}
@@ -76,14 +76,14 @@ SQRESULT SQ_GetModDescription(void* sqvm)
// string function NSGetModVersionByModName(string modName)
SQRESULT SQ_GetModVersion(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
{
if (!mod.Name.compare(modName))
{
- ClientSq_pushstring(sqvm, mod.Version.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, mod.Version.c_str(), -1);
return SQRESULT_NOTNULL;
}
}
@@ -94,14 +94,14 @@ SQRESULT SQ_GetModVersion(void* sqvm)
// string function NSGetModDownloadLinkByModName(string modName)
SQRESULT SQ_GetModDownloadLink(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
{
if (!mod.Name.compare(modName))
{
- ClientSq_pushstring(sqvm, mod.DownloadLink.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, mod.DownloadLink.c_str(), -1);
return SQRESULT_NOTNULL;
}
}
@@ -112,14 +112,14 @@ SQRESULT SQ_GetModDownloadLink(void* sqvm)
// int function NSGetModLoadPriority(string modName)
SQRESULT SQ_GetModLoadPriority(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
{
if (!mod.Name.compare(modName))
{
- ClientSq_pushinteger(sqvm, mod.LoadPriority);
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, mod.LoadPriority);
return SQRESULT_NOTNULL;
}
}
@@ -130,14 +130,14 @@ SQRESULT SQ_GetModLoadPriority(void* sqvm)
// bool function NSIsModRequiredOnClient(string modName)
SQRESULT SQ_IsModRequiredOnClient(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
{
if (!mod.Name.compare(modName))
{
- ClientSq_pushbool(sqvm, mod.RequiredOnClient);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, mod.RequiredOnClient);
return SQRESULT_NOTNULL;
}
}
@@ -148,8 +148,8 @@ SQRESULT SQ_IsModRequiredOnClient(void* sqvm)
// array<string> function NSGetModConvarsByModName(string modName)
SQRESULT SQ_GetModConvars(void* sqvm)
{
- const SQChar* modName = ClientSq_getstring(sqvm, 1);
- ClientSq_newarray(sqvm, 0);
+ const SQChar* modName = g_ClientSquirrelManager->sq_getstring(sqvm, 1);
+ g_ClientSquirrelManager->sq_newarray(sqvm, 0);
// manual lookup, not super performant but eh not a big deal
for (Mod& mod : g_ModManager->m_loadedMods)
@@ -158,8 +158,8 @@ SQRESULT SQ_GetModConvars(void* sqvm)
{
for (ModConVar* cvar : mod.ConVars)
{
- ClientSq_pushstring(sqvm, cvar->Name.c_str(), -1);
- ClientSq_arrayappend(sqvm, -2);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, cvar->Name.c_str(), -1);
+ g_ClientSquirrelManager->sq_arrayappend(sqvm, -2);
}
return SQRESULT_NOTNULL;
diff --git a/NorthstarDedicatedTest/scriptserverbrowser.cpp b/NorthstarDedicatedTest/scriptserverbrowser.cpp
index 41506230..f2d53347 100644
--- a/NorthstarDedicatedTest/scriptserverbrowser.cpp
+++ b/NorthstarDedicatedTest/scriptserverbrowser.cpp
@@ -11,7 +11,7 @@
// bool function NSIsMasterServerAuthenticated()
SQRESULT SQ_IsMasterServerAuthenticated(void* sqvm)
{
- ClientSq_pushbool(sqvm, g_MasterServerManager->m_bOriginAuthWithMasterServerDone);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_bOriginAuthWithMasterServerDone);
return SQRESULT_NOTNULL;
}
@@ -25,32 +25,32 @@ SQRESULT SQ_RequestServerList(void* sqvm)
// bool function NSIsRequestingServerList()
SQRESULT SQ_IsRequestingServerList(void* sqvm)
{
- ClientSq_pushbool(sqvm, g_MasterServerManager->m_bScriptRequestingServerList);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_bScriptRequestingServerList);
return SQRESULT_NOTNULL;
}
// bool function NSMasterServerConnectionSuccessful()
SQRESULT SQ_MasterServerConnectionSuccessful(void* sqvm)
{
- ClientSq_pushbool(sqvm, g_MasterServerManager->m_bSuccessfullyConnected);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_bSuccessfullyConnected);
return SQRESULT_NOTNULL;
}
// int function NSGetServerCount()
SQRESULT SQ_GetServerCount(void* sqvm)
{
- ClientSq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers.size());
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers.size());
return SQRESULT_NOTNULL;
}
// string function NSGetServerName( int serverIndex )
SQRESULT SQ_GetServerName(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get name of server index {} when only {} servers are available",
@@ -60,18 +60,18 @@ SQRESULT SQ_GetServerName(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].name, -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].name, -1);
return SQRESULT_NOTNULL;
}
// string function NSGetServerDescription( int serverIndex )
SQRESULT SQ_GetServerDescription(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get description of server index {} when only {} servers are available",
@@ -81,18 +81,18 @@ SQRESULT SQ_GetServerDescription(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].description.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].description.c_str(), -1);
return SQRESULT_NOTNULL;
}
// string function NSGetServerMap( int serverIndex )
-SQInteger SQ_GetServerMap(void* sqvm)
+SQRESULT SQ_GetServerMap(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get map of server index {} when only {} servers are available",
@@ -102,18 +102,18 @@ SQInteger SQ_GetServerMap(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].map, -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].map, -1);
return SQRESULT_NOTNULL;
}
// string function NSGetServerPlaylist( int serverIndex )
SQRESULT SQ_GetServerPlaylist(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get playlist of server index {} when only {} servers are available",
@@ -123,18 +123,18 @@ SQRESULT SQ_GetServerPlaylist(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].playlist, -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].playlist, -1);
return SQRESULT_NOTNULL;
}
// int function NSGetServerPlayerCount( int serverIndex )
SQRESULT SQ_GetServerPlayerCount(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get playercount of server index {} when only {} servers are available",
@@ -144,18 +144,18 @@ SQRESULT SQ_GetServerPlayerCount(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].playerCount);
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].playerCount);
return SQRESULT_NOTNULL;
}
// int function NSGetServerMaxPlayerCount( int serverIndex )
SQRESULT SQ_GetServerMaxPlayerCount(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get max playercount of server index {} when only {} servers are available",
@@ -165,18 +165,18 @@ SQRESULT SQ_GetServerMaxPlayerCount(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].maxPlayers);
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].maxPlayers);
return SQRESULT_NOTNULL;
}
// string function NSGetServerID( int serverIndex )
SQRESULT SQ_GetServerID(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get id of server index {} when only {} servers are available",
@@ -186,18 +186,18 @@ SQRESULT SQ_GetServerID(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].id, -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].id, -1);
return SQRESULT_NOTNULL;
}
// bool function NSServerRequiresPassword( int serverIndex )
SQRESULT SQ_ServerRequiresPassword(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get hasPassword of server index {} when only {} servers are available",
@@ -207,18 +207,18 @@ SQRESULT SQ_ServerRequiresPassword(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushbool(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiresPassword);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiresPassword);
return SQRESULT_NOTNULL;
}
// int function NSGetServerRequiredModsCount( int serverIndex )
SQRESULT SQ_GetServerRequiredModsCount(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get required mods count of server index {} when only {} servers are available",
@@ -228,19 +228,19 @@ SQRESULT SQ_GetServerRequiredModsCount(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods.size());
+ g_ClientSquirrelManager->sq_pushinteger(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods.size());
return SQRESULT_NOTNULL;
}
// string function NSGetServerRequiredModName( int serverIndex, int modIndex )
SQRESULT SQ_GetServerRequiredModName(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
- SQInteger modIndex = ClientSq_getinteger(sqvm, 2);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
+ SQInteger modIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 2);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get hasPassword of server index {} when only {} servers are available",
@@ -252,7 +252,7 @@ SQRESULT SQ_GetServerRequiredModName(void* sqvm)
if (modIndex >= g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get required mod name of mod index {} when only {} mod are available",
@@ -262,19 +262,19 @@ SQRESULT SQ_GetServerRequiredModName(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods[modIndex].Name.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods[modIndex].Name.c_str(), -1);
return SQRESULT_NOTNULL;
}
// string function NSGetServerRequiredModVersion( int serverIndex, int modIndex )
SQRESULT SQ_GetServerRequiredModVersion(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
- SQInteger modIndex = ClientSq_getinteger(sqvm, 2);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
+ SQInteger modIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 2);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get required mod version of server index {} when only {} servers are available",
@@ -286,7 +286,7 @@ SQRESULT SQ_GetServerRequiredModVersion(void* sqvm)
if (modIndex >= g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to get required mod version of mod index {} when only {} mod are available",
@@ -296,7 +296,7 @@ SQRESULT SQ_GetServerRequiredModVersion(void* sqvm)
return SQRESULT_ERROR;
}
- ClientSq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods[modIndex].Version.c_str(), -1);
+ g_ClientSquirrelManager->sq_pushstring(sqvm, g_MasterServerManager->m_vRemoteServers[serverIndex].requiredMods[modIndex].Version.c_str(), -1);
return SQRESULT_NOTNULL;
}
@@ -312,12 +312,12 @@ SQRESULT SQ_ClearRecievedServerList(void* sqvm)
// void function NSTryAuthWithServer( int serverIndex, string password = "" )
SQRESULT SQ_TryAuthWithServer(void* sqvm)
{
- SQInteger serverIndex = ClientSq_getinteger(sqvm, 1);
- const SQChar* password = ClientSq_getstring(sqvm, 2);
+ SQInteger serverIndex = g_ClientSquirrelManager->sq_getinteger(sqvm, 1);
+ const SQChar* password = g_ClientSquirrelManager->sq_getstring(sqvm, 2);
if (serverIndex >= g_MasterServerManager->m_vRemoteServers.size())
{
- ClientSq_pusherror(
+ g_ClientSquirrelManager->sq_raiseerror(
sqvm,
fmt::format(
"Tried to auth with server index {} when only {} servers are available",
@@ -345,14 +345,14 @@ SQRESULT SQ_TryAuthWithServer(void* sqvm)
// bool function NSIsAuthenticatingWithServer()
SQRESULT SQ_IsAuthComplete(void* sqvm)
{
- ClientSq_pushbool(sqvm, g_MasterServerManager->m_bScriptAuthenticatingWithGameServer);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_bScriptAuthenticatingWithGameServer);
return SQRESULT_NOTNULL;
}
// bool function NSWasAuthSuccessful()
SQRESULT SQ_WasAuthSuccessful(void* sqvm)
{
- ClientSq_pushbool(sqvm, g_MasterServerManager->m_bSuccessfullyAuthenticatedWithGameServer);
+ g_ClientSquirrelManager->sq_pushbool(sqvm, g_MasterServerManager->m_bSuccessfullyAuthenticatedWithGameServer);
return SQRESULT_NOTNULL;
}
@@ -361,7 +361,7 @@ SQRESULT SQ_ConnectToAuthedServer(void* sqvm)
{
if (!g_MasterServerManager->m_bHasPendingConnectionInfo)
{
- ClientSq_pusherror(sqvm, fmt::format("Tried to connect to authed server before any pending connection info was available").c_str());
+ g_ClientSquirrelManager->sq_raiseerror(sqvm, fmt::format("Tried to connect to authed server before any pending connection info was available").c_str());
return SQRESULT_ERROR;
}
diff --git a/NorthstarDedicatedTest/serverchathooks.cpp b/NorthstarDedicatedTest/serverchathooks.cpp
index ad037a5f..98f1bdc1 100644
--- a/NorthstarDedicatedTest/serverchathooks.cpp
+++ b/NorthstarDedicatedTest/serverchathooks.cpp
@@ -142,9 +142,9 @@ void ChatBroadcastMessage(int fromPlayerIndex, int toPlayerIndex, const char* te
SQRESULT SQ_SendMessage(void* sqvm)
{
- int playerIndex = ServerSq_getinteger(sqvm, 1);
- const char* text = ServerSq_getstring(sqvm, 2);
- bool isTeam = ServerSq_getbool(sqvm, 3);
+ int playerIndex = g_ServerSquirrelManager->sq_getinteger(sqvm, 1);
+ const char* text = g_ServerSquirrelManager->sq_getstring(sqvm, 2);
+ bool isTeam = g_ServerSquirrelManager->sq_getbool(sqvm, 3);
ChatSendMessage(playerIndex, text, isTeam);
@@ -153,16 +153,16 @@ SQRESULT SQ_SendMessage(void* sqvm)
SQRESULT SQ_BroadcastMessage(void* sqvm)
{
- int fromPlayerIndex = ServerSq_getinteger(sqvm, 1);
- int toPlayerIndex = ServerSq_getinteger(sqvm, 2);
- const char* text = ServerSq_getstring(sqvm, 3);
- bool isTeam = ServerSq_getbool(sqvm, 4);
- bool isDead = ServerSq_getbool(sqvm, 5);
- int messageType = ServerSq_getinteger(sqvm, 6);
+ int fromPlayerIndex = g_ServerSquirrelManager->sq_getinteger(sqvm, 1);
+ int toPlayerIndex = g_ServerSquirrelManager->sq_getinteger(sqvm, 2);
+ const char* text = g_ServerSquirrelManager->sq_getstring(sqvm, 3);
+ bool isTeam = g_ServerSquirrelManager->sq_getbool(sqvm, 4);
+ bool isDead = g_ServerSquirrelManager->sq_getbool(sqvm, 5);
+ int messageType = g_ServerSquirrelManager->sq_getinteger(sqvm, 6);
if (messageType < 1)
{
- ServerSq_pusherror(sqvm, fmt::format("Invalid message type {}", messageType).c_str());
+ g_ServerSquirrelManager->sq_raiseerror(sqvm, fmt::format("Invalid message type {}", messageType).c_str());
return SQRESULT_ERROR;
}
diff --git a/NorthstarDedicatedTest/squirrel.cpp b/NorthstarDedicatedTest/squirrel.cpp
index 835e4bd9..1e405e29 100644
--- a/NorthstarDedicatedTest/squirrel.cpp
+++ b/NorthstarDedicatedTest/squirrel.cpp
@@ -34,58 +34,9 @@ CallScriptInitCallbackType ClientCallScriptInitCallback;
CallScriptInitCallbackType ServerCallScriptInitCallback;
template <ScriptContext context> char CallScriptInitCallbackHook(void* sqvm, const char* callback);
-// core sqvm funcs
-sq_compilebufferType ClientSq_compilebuffer;
-sq_compilebufferType ServerSq_compilebuffer;
-
-sq_pushroottableType ClientSq_pushroottable;
-sq_pushroottableType ServerSq_pushroottable;
-
-sq_callType ClientSq_call;
-sq_callType ServerSq_call;
-
RegisterSquirrelFuncType ClientRegisterSquirrelFunc;
RegisterSquirrelFuncType ServerRegisterSquirrelFunc;
-// sq stack array funcs
-sq_newarrayType ClientSq_newarray;
-sq_newarrayType ServerSq_newarray;
-
-sq_arrayappendType ClientSq_arrayappend;
-sq_arrayappendType ServerSq_arrayappend;
-
-// sq stack push funcs
-sq_pushstringType ClientSq_pushstring;
-sq_pushstringType ServerSq_pushstring;
-
-sq_pushintegerType ClientSq_pushinteger;
-sq_pushintegerType ServerSq_pushinteger;
-
-sq_pushfloatType ClientSq_pushfloat;
-sq_pushfloatType ServerSq_pushfloat;
-
-sq_pushboolType ClientSq_pushbool;
-sq_pushboolType ServerSq_pushbool;
-
-sq_pusherrorType ClientSq_pusherror;
-sq_pusherrorType ServerSq_pusherror;
-
-// sq stack get funcs
-sq_getstringType ClientSq_getstring;
-sq_getstringType ServerSq_getstring;
-
-sq_getintegerType ClientSq_getinteger;
-sq_getintegerType ServerSq_getinteger;
-
-sq_getfloatType ClientSq_getfloat;
-sq_getfloatType ServerSq_getfloat;
-
-sq_getboolType ClientSq_getbool;
-sq_getboolType ServerSq_getbool;
-
-sq_getType ClientSq_sq_get;
-sq_getType ServerSq_sq_get;
-
template <ScriptContext context> void ExecuteCodeCommand(const CCommand& args);
// inits
@@ -115,27 +66,42 @@ ON_DLL_LOAD_RELIESON("client.dll", ClientSquirrel, ConCommand, (HMODULE baseAddr
hook, (char*)baseAddress + 0x12BA0, &SQPrintHook<ScriptContext::UI>, reinterpret_cast<LPVOID*>(&UISQPrint)); // ui print function
RegisterConCommand("script_ui", ExecuteCodeCommand<ScriptContext::UI>, "Executes script code on the ui vm", FCVAR_CLIENTDLL);
- // inits for both client and ui, since they share some functions
- ClientSq_compilebuffer = (sq_compilebufferType)((char*)baseAddress + 0x3110);
- ClientSq_pushroottable = (sq_pushroottableType)((char*)baseAddress + 0x5860);
- ClientSq_call = (sq_callType)((char*)baseAddress + 0x8650);
ClientRegisterSquirrelFunc = (RegisterSquirrelFuncType)((char*)baseAddress + 0x108E0);
- ClientSq_newarray = (sq_newarrayType)((char*)baseAddress + 0x39F0);
- ClientSq_arrayappend = (sq_arrayappendType)((char*)baseAddress + 0x3C70);
-
- ClientSq_pushstring = (sq_pushstringType)((char*)baseAddress + 0x3440);
- ClientSq_pushinteger = (sq_pushintegerType)((char*)baseAddress + 0x36A0);
- ClientSq_pushfloat = (sq_pushfloatType)((char*)baseAddress + 0x3800);
- ClientSq_pushbool = (sq_pushboolType)((char*)baseAddress + 0x3710);
- ClientSq_pusherror = (sq_pusherrorType)((char*)baseAddress + 0x8470);
-
- ClientSq_getstring = (sq_getstringType)((char*)baseAddress + 0x60C0);
- ClientSq_getinteger = (sq_getintegerType)((char*)baseAddress + 0x60E0);
- ClientSq_getfloat = (sq_getfloatType)((char*)baseAddress + 0x6100);
- ClientSq_getbool = (sq_getboolType)((char*)baseAddress + 0x6130);
-
- ClientSq_sq_get = (sq_getType)((char*)baseAddress + 0x7C30);
+ g_ClientSquirrelManager->sq_compilebuffer = (sq_compilebufferType)((char*)baseAddress + 0x3110);
+ g_UISquirrelManager->sq_compilebuffer = (sq_compilebufferType)((char*)baseAddress + 0x3110);
+ g_ClientSquirrelManager->sq_pushroottable = (sq_pushroottableType)((char*)baseAddress + 0x5860);
+ g_UISquirrelManager->sq_pushroottable = (sq_pushroottableType)((char*)baseAddress + 0x5860);
+
+ g_ClientSquirrelManager->sq_call = (sq_callType)((char*)baseAddress + 0x8650);
+ g_UISquirrelManager->sq_call = (sq_callType)((char*)baseAddress + 0x8650);
+
+ g_ClientSquirrelManager->sq_newarray = (sq_newarrayType)((char*)baseAddress + 0x39F0);
+ g_UISquirrelManager->sq_newarray = (sq_newarrayType)((char*)baseAddress + 0x39F0);
+ g_ClientSquirrelManager->sq_arrayappend = (sq_arrayappendType)((char*)baseAddress + 0x3C70);
+ g_UISquirrelManager->sq_arrayappend = (sq_arrayappendType)((char*)baseAddress + 0x3C70);
+
+ g_ClientSquirrelManager->sq_pushstring = (sq_pushstringType)((char*)baseAddress + 0x3440);
+ g_UISquirrelManager->sq_pushstring = (sq_pushstringType)((char*)baseAddress + 0x3440);
+ g_ClientSquirrelManager->sq_pushinteger = (sq_pushintegerType)((char*)baseAddress + 0x36A0);
+ g_UISquirrelManager->sq_pushinteger = (sq_pushintegerType)((char*)baseAddress + 0x36A0);
+ g_ClientSquirrelManager->sq_pushfloat = (sq_pushfloatType)((char*)baseAddress + 0x3800);
+ g_UISquirrelManager->sq_pushfloat = (sq_pushfloatType)((char*)baseAddress + 0x3800);
+ g_ClientSquirrelManager->sq_pushbool = (sq_pushboolType)((char*)baseAddress + 0x3710);
+ g_UISquirrelManager->sq_pushbool = (sq_pushboolType)((char*)baseAddress + 0x3710);
+ g_ClientSquirrelManager->sq_raiseerror = (sq_raiseerrorType)((char*)baseAddress + 0x8470);
+ g_UISquirrelManager->sq_raiseerror = (sq_raiseerrorType)((char*)baseAddress + 0x8470);
+
+ g_ClientSquirrelManager->sq_getstring = (sq_getstringType)((char*)baseAddress + 0x60C0);
+ g_UISquirrelManager->sq_getstring = (sq_getstringType)((char*)baseAddress + 0x60C0);
+ g_ClientSquirrelManager->sq_getinteger = (sq_getintegerType)((char*)baseAddress + 0x60E0);
+ g_UISquirrelManager->sq_getinteger = (sq_getintegerType)((char*)baseAddress + 0x60E0);
+ g_ClientSquirrelManager->sq_getfloat = (sq_getfloatType)((char*)baseAddress + 0x6100);
+ g_UISquirrelManager->sq_getfloat = (sq_getfloatType)((char*)baseAddress + 0x6100);
+ g_ClientSquirrelManager->sq_getbool = (sq_getboolType)((char*)baseAddress + 0x6130);
+ g_UISquirrelManager->sq_getbool = (sq_getboolType)((char*)baseAddress + 0x6130);
+ g_ClientSquirrelManager->sq_get = (sq_getType)((char*)baseAddress + 0x7C30);
+ g_UISquirrelManager->sq_get = (sq_getType)((char*)baseAddress + 0x7C30);
ENABLER_CREATEHOOK(
hook,
@@ -163,29 +129,28 @@ ON_DLL_LOAD_RELIESON("server.dll", ServerSquirrel, ConCommand, (HMODULE baseAddr
{
g_ServerSquirrelManager = new SquirrelManager<ScriptContext::SERVER>();
- HookEnabler hook;
-
- ServerSq_compilebuffer = (sq_compilebufferType)((char*)baseAddress + 0x3110);
- ServerSq_pushroottable = (sq_pushroottableType)((char*)baseAddress + 0x5840);
- ServerSq_call = (sq_callType)((char*)baseAddress + 0x8620);
ServerRegisterSquirrelFunc = (RegisterSquirrelFuncType)((char*)baseAddress + 0x1DD10);
- ServerSq_newarray = (sq_newarrayType)((char*)baseAddress + 0x39F0);
- ServerSq_arrayappend = (sq_arrayappendType)((char*)baseAddress + 0x3C70);
+ g_ServerSquirrelManager->sq_compilebuffer = (sq_compilebufferType)((char*)baseAddress + 0x3110);
+ g_ServerSquirrelManager->sq_pushroottable = (sq_pushroottableType)((char*)baseAddress + 0x5840);
+ g_ServerSquirrelManager->sq_call = (sq_callType)((char*)baseAddress + 0x8620);
- ServerSq_pushstring = (sq_pushstringType)((char*)baseAddress + 0x3440);
- ServerSq_pushinteger = (sq_pushintegerType)((char*)baseAddress + 0x36A0);
- ServerSq_pushfloat = (sq_pushfloatType)((char*)baseAddress + 0x3800);
- ServerSq_pushbool = (sq_pushboolType)((char*)baseAddress + 0x3710);
- ServerSq_pusherror = (sq_pusherrorType)((char*)baseAddress + 0x8440);
+ g_ServerSquirrelManager->sq_newarray = (sq_newarrayType)((char*)baseAddress + 0x39F0);
+ g_ServerSquirrelManager->sq_arrayappend = (sq_arrayappendType)((char*)baseAddress + 0x3C70);
- ServerSq_getstring = (sq_getstringType)((char*)baseAddress + 0x60A0);
- ServerSq_getinteger = (sq_getintegerType)((char*)baseAddress + 0x60C0);
- ServerSq_getfloat = (sq_getfloatType)((char*)baseAddress + 0x60E0);
- ServerSq_getbool = (sq_getboolType)((char*)baseAddress + 0x6110);
+ g_ServerSquirrelManager->sq_pushstring = (sq_pushstringType)((char*)baseAddress + 0x3440);
+ g_ServerSquirrelManager->sq_pushinteger = (sq_pushintegerType)((char*)baseAddress + 0x36A0);
+ g_ServerSquirrelManager->sq_pushfloat = (sq_pushfloatType)((char*)baseAddress + 0x3800);
+ g_ServerSquirrelManager->sq_pushbool = (sq_pushboolType)((char*)baseAddress + 0x3710);
+ g_ServerSquirrelManager->sq_raiseerror = (sq_raiseerrorType)((char*)baseAddress + 0x8440);
- ServerSq_sq_get = (sq_getType)((char*)baseAddress + 0x7C00);
+ g_ServerSquirrelManager->sq_getstring = (sq_getstringType)((char*)baseAddress + 0x60A0);
+ g_ServerSquirrelManager->sq_getinteger = (sq_getintegerType)((char*)baseAddress + 0x60C0);
+ g_ServerSquirrelManager->sq_getfloat = (sq_getfloatType)((char*)baseAddress + 0x60E0);
+ g_ServerSquirrelManager->sq_getbool = (sq_getboolType)((char*)baseAddress + 0x6110);
+ g_ServerSquirrelManager->sq_get = (sq_getType)((char*)baseAddress + 0x7C00);
+ HookEnabler hook;
ENABLER_CREATEHOOK(
hook,
(char*)baseAddress + 0x1FE90,
diff --git a/NorthstarDedicatedTest/squirrel.h b/NorthstarDedicatedTest/squirrel.h
index dc99ac04..453db83b 100644
--- a/NorthstarDedicatedTest/squirrel.h
+++ b/NorthstarDedicatedTest/squirrel.h
@@ -7,13 +7,15 @@ typedef unsigned long SQUnsignedInteger;
typedef char SQChar;
typedef SQUnsignedInteger SQBool;
-typedef SQInteger SQRESULT;
-const SQRESULT SQRESULT_ERROR = -1;
-const SQRESULT SQRESULT_NULL = 0;
-const SQRESULT SQRESULT_NOTNULL = 1;
+enum SQRESULT : SQInteger
+{
+ SQRESULT_ERROR = -1,
+ SQRESULT_NULL = 0,
+ SQRESULT_NOTNULL = 1,
+};
-typedef SQInteger (*SQFunction)(void* sqvm);
+typedef SQRESULT (*SQFunction)(void* sqvm);
struct CompileBufferState
{
@@ -57,73 +59,31 @@ struct SQFuncRegistration
};
// core sqvm funcs
-typedef SQRESULT (*sq_compilebufferType)(void* sqvm, CompileBufferState* compileBuffer, const char* file, int a1, ScriptContext a2);
-extern sq_compilebufferType ClientSq_compilebuffer;
-extern sq_compilebufferType ServerSq_compilebuffer;
-
-typedef void (*sq_pushroottableType)(void* sqvm);
-extern sq_pushroottableType ClientSq_pushroottable;
-extern sq_pushroottableType ServerSq_pushroottable;
-
-typedef SQRESULT (*sq_callType)(void* sqvm, SQInteger s1, SQBool a2, SQBool a3);
-extern sq_callType ClientSq_call;
-extern sq_callType ServerSq_call;
-
typedef int64_t (*RegisterSquirrelFuncType)(void* sqvm, SQFuncRegistration* funcReg, char unknown);
extern RegisterSquirrelFuncType ClientRegisterSquirrelFunc;
extern RegisterSquirrelFuncType ServerRegisterSquirrelFunc;
+typedef SQRESULT (*sq_compilebufferType)(void* sqvm, CompileBufferState* compileBuffer, const char* file, int a1, ScriptContext a2);
+typedef SQRESULT (*sq_callType)(void* sqvm, SQInteger s1, SQBool a2, SQBool a3);
+
// sq stack array funcs
typedef void (*sq_newarrayType)(void* sqvm, SQInteger stackpos);
-extern sq_newarrayType ClientSq_newarray;
-extern sq_newarrayType ServerSq_newarray;
-
typedef SQRESULT (*sq_arrayappendType)(void* sqvm, SQInteger stackpos);
-extern sq_arrayappendType ClientSq_arrayappend;
-extern sq_arrayappendType ServerSq_arrayappend;
// sq stack push funcs
-typedef void (*sq_pushstringType)(void* sqvm, const SQChar* str, SQInteger stackpos);
-extern sq_pushstringType ClientSq_pushstring;
-extern sq_pushstringType ServerSq_pushstring;
-
-// weird how these don't take a stackpos arg?
+typedef void (*sq_pushroottableType)(void* sqvm);
+typedef void (*sq_pushstringType)(void* sqvm, const SQChar* str, SQInteger length);
typedef void (*sq_pushintegerType)(void* sqvm, SQInteger i);
-extern sq_pushintegerType ClientSq_pushinteger;
-extern sq_pushintegerType ServerSq_pushinteger;
-
typedef void (*sq_pushfloatType)(void* sqvm, SQFloat f);
-extern sq_pushfloatType ClientSq_pushfloat;
-extern sq_pushfloatType ServerSq_pushfloat;
-
typedef void (*sq_pushboolType)(void* sqvm, SQBool b);
-extern sq_pushboolType ClientSq_pushbool;
-extern sq_pushboolType ServerSq_pushbool;
-
-typedef SQInteger (*sq_pusherrorType)(void* sqvm, const SQChar* error);
-extern sq_pusherrorType ClientSq_pusherror;
-extern sq_pusherrorType ServerSq_pusherror;
+typedef SQInteger (*sq_raiseerrorType)(void* sqvm, const SQChar* error);
// sq stack get funcs
typedef const SQChar* (*sq_getstringType)(void* sqvm, SQInteger stackpos);
-extern sq_getstringType ClientSq_getstring;
-extern sq_getstringType ServerSq_getstring;
-
typedef SQInteger (*sq_getintegerType)(void* sqvm, SQInteger stackpos);
-extern sq_getintegerType ClientSq_getinteger;
-extern sq_getintegerType ServerSq_getinteger;
-
typedef SQFloat (*sq_getfloatType)(void*, SQInteger stackpos);
-extern sq_getfloatType ClientSq_getfloat;
-extern sq_getfloatType ServerSq_getfloat;
-
typedef SQBool (*sq_getboolType)(void*, SQInteger stackpos);
-extern sq_getboolType ClientSq_getbool;
-extern sq_getboolType ServerSq_getbool;
-
-typedef SQRESULT (*sq_getType)(void* sqvm, SQInteger idx);
-extern sq_getType ServerSq_sq_get;
-extern sq_getType ClientSq_sq_get;
+typedef SQRESULT (*sq_getType)(void* sqvm, SQInteger stackpos);
template <ScriptContext context> class SquirrelManager
{
@@ -133,6 +93,24 @@ template <ScriptContext context> class SquirrelManager
public:
void* sqvm;
void* sqvm2;
+ #pragma region SQVM funcs
+ sq_compilebufferType sq_compilebuffer;
+ sq_callType sq_call;
+ sq_newarrayType sq_newarray;
+ sq_arrayappendType sq_arrayappend;
+ sq_pushroottableType sq_pushroottable;
+ sq_pushstringType sq_pushstring;
+ sq_pushintegerType sq_pushinteger;
+ sq_pushfloatType sq_pushfloat;
+ sq_pushboolType sq_pushbool;
+ sq_raiseerrorType sq_raiseerror;
+
+ sq_getstringType sq_getstring;
+ sq_getintegerType sq_getinteger;
+ sq_getfloatType sq_getfloat;
+ sq_getboolType sq_getbool;
+ sq_getType sq_get;
+ #pragma endregion
public:
SquirrelManager() : sqvm(nullptr) {}
@@ -160,8 +138,6 @@ template <ScriptContext context> class SquirrelManager
void ExecuteCode(const char* code)
{
- // ttf2sdk checks ThreadIsInMainThread here, might be good to do that? doesn't seem like an issue rn tho
-
if (!sqvm)
{
spdlog::error("Cannot execute code, {} squirrel vm is not initialised", GetContextName(context));
@@ -173,94 +149,51 @@ template <ScriptContext context> class SquirrelManager
std::string strCode(code);
CompileBufferState bufferState = CompileBufferState(strCode);
- SQRESULT compileResult;
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- compileResult = ClientSq_compilebuffer(sqvm2, &bufferState, "console", -1, context);
- else if (context == ScriptContext::SERVER)
- compileResult = ServerSq_compilebuffer(sqvm2, &bufferState, "console", -1, context);
-
+ SQRESULT compileResult = sq_compilebuffer(sqvm2, &bufferState, "console", -1, context);
spdlog::info("sq_compilebuffer returned {}", compileResult);
if (compileResult >= 0)
{
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- {
- ClientSq_pushroottable(sqvm2);
- SQRESULT callResult = ClientSq_call(sqvm2, 1, false, false);
- spdlog::info("sq_call returned {}", callResult);
- }
- else if (context == ScriptContext::SERVER)
- {
- ServerSq_pushroottable(sqvm2);
- SQRESULT callResult = ServerSq_call(sqvm2, 1, false, false);
- spdlog::info("sq_call returned {}", callResult);
- }
+ sq_pushroottable(sqvm2);
+ SQRESULT callResult = sq_call(sqvm2, 1, false, false);
+ spdlog::info("sq_call returned {}", callResult);
}
}
int setupfunc(const char* funcname)
{
- int result = -2;
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- {
- ClientSq_pushroottable(sqvm2);
- ClientSq_pushstring(sqvm2, funcname, -1);
- result = ClientSq_sq_get(sqvm2, -2);
- if (result != SQRESULT_ERROR)
- {
- ClientSq_pushroottable(sqvm2);
- }
- }
- else if (context == ScriptContext::SERVER)
- {
- ServerSq_pushroottable(sqvm2);
- ServerSq_pushstring(sqvm2, funcname, -1);
- result = ServerSq_sq_get(sqvm2, -2);
- if (result != SQRESULT_ERROR)
- {
- ServerSq_pushroottable(sqvm2);
- }
- }
+ sq_pushroottable(sqvm2);
+ sq_pushstring(sqvm2, funcname, -1);
+
+ int result = sq_get(sqvm2, -2);
+ if (result != SQRESULT_ERROR)
+ sq_pushroottable(sqvm2);
+
return result;
}
void pusharg(int arg)
{
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- ClientSq_pushinteger(sqvm2, arg);
- else if (context == ScriptContext::SERVER)
- ServerSq_pushinteger(sqvm2, arg);
+ sq_pushinteger(sqvm2, arg);
}
+
void pusharg(const char* arg)
{
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- ClientSq_pushstring(sqvm2, arg, -1);
- else if (context == ScriptContext::SERVER)
- ServerSq_pushstring(sqvm2, arg, -1);
+ sq_pushstring(sqvm2, arg, -1);
}
+
void pusharg(float arg)
{
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- ClientSq_pushfloat(sqvm2, arg);
- else if (context == ScriptContext::SERVER)
- ServerSq_pushfloat(sqvm2, arg);
+ sq_pushfloat(sqvm2, arg);
}
+
void pusharg(bool arg)
{
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- ClientSq_pushbool(sqvm2, arg);
- else if (context == ScriptContext::SERVER)
- ServerSq_pushbool(sqvm2, arg);
+ sq_pushbool(sqvm2, arg);
}
int call(int args)
{
- int result = -2;
- if (context == ScriptContext::CLIENT || context == ScriptContext::UI)
- result = ClientSq_call(sqvm2, args + 1, false, false);
- else if (context == ScriptContext::SERVER)
- result = ServerSq_call(sqvm2, args + 1, false, false);
-
- return result;
+ return sq_call(sqvm2, args + 1, false, false);
}
void AddFuncRegistration(std::string returnType, std::string name, std::string argTypes, std::string helpText, SQFunction func)