1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#include "pch.h"
#include "scriptmodmenu.h"
#include "modmanager.h"
#include "squirrel.h"
// array<string> NSGetModNames()
SQInteger SQ_GetModNames(void* sqvm)
{
ClientSq_newarray(sqvm, 0);
for (Mod* mod : g_ModManager->m_loadedMods)
{
ClientSq_pushstring(sqvm, mod->Name.c_str(), -1);
ClientSq_arrayappend(sqvm, -2);
}
return 1;
}
// string NSGetModDescriptionByModName(string modName)
SQInteger SQ_GetModDescription(void* sqvm)
{
const SQChar* modName = ClientSq_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);
return 1;
}
}
return 0; // return null
}
// string NSGetModVersionByModName(string modName)
SQInteger SQ_GetModVersion(void* sqvm)
{
const SQChar* modName = ClientSq_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);
return 1;
}
}
return 0; // return null
}
// string NSGetModDownloadLinkByModName(string modName)
SQInteger SQ_GetModDownloadLink(void* sqvm)
{
const SQChar* modName = ClientSq_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);
return 1;
}
}
return 0; // return null
}
// int NSGetModLoadPriority(string modName)
SQInteger SQ_GetModLoadPriority(void* sqvm)
{
const SQChar* modName = ClientSq_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);
return 1;
}
}
return 0; // return null
}
// array<string> NSGetModConvarsByModName(string modName)
SQInteger SQ_GetModConvars(void* sqvm)
{
const SQChar* modName = ClientSq_getstring(sqvm, 1);
ClientSq_newarray(sqvm, 0);
// manual lookup, not super performant but eh not a big deal
for (Mod* mod : g_ModManager->m_loadedMods)
{
if (!mod->Name.compare(modName))
{
for (ModConVar* cvar : mod->ConVars)
{
ClientSq_pushstring(sqvm, cvar->Name.c_str(), -1);
ClientSq_arrayappend(sqvm, -2);
}
return 1;
}
}
return 1; // return empty array
}
void InitialiseScriptModMenu(HMODULE baseAddress)
{
g_UISquirrelManager->AddFuncRegistration("array<string>", "NSGetModNames", "", "Returns the names of all loaded mods", SQ_GetModNames);
g_UISquirrelManager->AddFuncRegistration("string", "NSGetModDescriptionByModName", "asset modName", "Returns a given mod's description", SQ_GetModDescription);
g_UISquirrelManager->AddFuncRegistration("string", "NSGetModVersionByModName", "string modName", "Returns a given mod's version", SQ_GetModVersion);
g_UISquirrelManager->AddFuncRegistration("string", "NSGetModDownloadLinkByModName", "string modName", "Returns a given mod's download link", SQ_GetModVersion);
g_UISquirrelManager->AddFuncRegistration("int", "NSGetModLoadPriority", "string modName", "Returns a given mod's load priority", SQ_GetModLoadPriority);
g_UISquirrelManager->AddFuncRegistration("array<string>", "NSGetModConvarsByModName", "string modName", "Returns the names of all a given mod's cvars", SQ_GetModConvars);
}
|