Compare commits
201 Commits
1.9-dev
...
revert-883
Author | SHA1 | Date | |
---|---|---|---|
8db3853fb7 | |||
70d1aff519 | |||
bee4b47b07 | |||
8c6b0f84bb | |||
a4e929eedc | |||
c81f68aac3 | |||
03f4c7dd2c | |||
7cb045c688 | |||
73f3afa95f | |||
2fadf887e6 | |||
1027df054a | |||
2e3c105c7d | |||
ff2fc19b08 | |||
f4fefd0bb4 | |||
b26118006a | |||
ed1ab00faf | |||
6d6a41b894 | |||
b9b4001bf9 | |||
1bc342a692 | |||
368bde1d07 | |||
51ede1097d | |||
a5f2b5539f | |||
307e71455a | |||
b60f58ac34 | |||
6ef40779e7 | |||
18a5f6f5ea | |||
d3ef881f31 | |||
0eba9b3708 | |||
0ccba67006 | |||
c86813697a | |||
4f6b779bf4 | |||
d819df80f9 | |||
5120deaf74 | |||
d01aa5762f | |||
8930ecf7c5 | |||
aa06e5ab93 | |||
8309a1e06b | |||
7a44e6ec66 | |||
0bd69445f9 | |||
5a257a7a42 | |||
136cc23463 | |||
024003d6f0 | |||
abba8f1a7c | |||
16c5e4b34b | |||
132277bfdc | |||
f1332bb4af | |||
d659761195 | |||
8a57a94480 | |||
0409910e1f | |||
c392d358a7 | |||
a901a127eb | |||
2f90940c3f | |||
e66b466745 | |||
9068f3c95a | |||
d2e71dd1f2 | |||
58e552ceff | |||
8a19774edd | |||
66876f89cd | |||
d18cc72510 | |||
179b802c7b | |||
aba5897818 | |||
ee2d846e0d | |||
a6897ec39b | |||
8aabf09067 | |||
b5fb4611cd | |||
f41aeef8b0 | |||
7561426bd4 | |||
1bac8319c4 | |||
c6eb8a11d8 | |||
6aa012f062 | |||
887dd5b6d1 | |||
703a6872bc | |||
71eb9fe0d8 | |||
096dae9095 | |||
1eb8a7f8c2 | |||
8cbbf71f0c | |||
6923c1b209 | |||
de93fa0824 | |||
118f33a83e | |||
bc0d83bc92 | |||
bc36bb23df | |||
00967632d5 | |||
74171687f7 | |||
88d9145524 | |||
50971fd9d0 | |||
45c2e90a3f | |||
a6ccf82419 | |||
3c3ac7a36c | |||
41abeb3322 | |||
1e89e4c685 | |||
653c5edcf4 | |||
302d127f6f | |||
0eeda72922 | |||
cb1941c99a | |||
51adc75e96 | |||
8882bd5ca0 | |||
0928d7a6fe | |||
e502c61f2c | |||
38848ff636 | |||
59ce7064c7 | |||
8cee128e50 | |||
7ddc462135 | |||
cd76998995 | |||
48c0ae1711 | |||
85124d3417 | |||
8b1a83f085 | |||
3fb981f6be | |||
388a68e694 | |||
60e2109b4f | |||
ca7e289273 | |||
437ad0f8ec | |||
32ff785d85 | |||
2d607b6d68 | |||
9c21bcd18b | |||
dcdd5a1442 | |||
072095445e | |||
486da2f44b | |||
681acffee9 | |||
dfd835eba5 | |||
ecbff2e8f1 | |||
55f01c9488 | |||
49c219e6a2 | |||
cccb8c84af | |||
3dc5ec0331 | |||
12664d9427 | |||
365a0559b3 | |||
62052ee590 | |||
0aa97dee3f | |||
4c55da4de9 | |||
0f667692b1 | |||
6addd9c074 | |||
295d09df8b | |||
1cc7786a4c | |||
f301fbaf08 | |||
05cd0af3a5 | |||
97fc80dd03 | |||
d3ca82411a | |||
3e91def7f0 | |||
96a74ec654 | |||
4f3b9e7a60 | |||
df819beab5 | |||
7ecc62aaef | |||
ef570a987a | |||
09548bfd2c | |||
2e0c240573 | |||
dc59d826a3 | |||
35788efa07 | |||
ac6364bfdc | |||
6655fe7c28 | |||
bb31835dea | |||
bd67978c3a | |||
ede7b69b25 | |||
7b2ef405a3 | |||
8264328235 | |||
113c50b1fa | |||
340e2b9df2 | |||
3486a7d7fc | |||
e1d1004cd6 | |||
8940de5956 | |||
304af5055e | |||
7c07ae6099 | |||
1c39c85929 | |||
5b07b25d62 | |||
6bed09db57 | |||
ca69c36c1e | |||
f623126fe1 | |||
f392c90729 | |||
fd64327313 | |||
38cd5ab1cd | |||
5947926a09 | |||
ea7ffafd88 | |||
ba083deb1e | |||
f365c943b7 | |||
9417ec188d | |||
af56d964c1 | |||
7c7ad3d3c0 | |||
bb84a43a7b | |||
20d917a307 | |||
77eb33d5f2 | |||
75cf5f55f9 | |||
fb615aaef1 | |||
7f7d01fb8d | |||
87b6f274a0 | |||
0b5584a334 | |||
f82455dd84 | |||
8717ffe07c | |||
b4768a3d1d | |||
f1f95425b6 | |||
49430082f5 | |||
22fd09efea | |||
e8c8111178 | |||
08213d8ead | |||
c3225afda1 | |||
dfbeec069c | |||
a54b9f05a7 | |||
1f0dc33875 | |||
8d1f924248 | |||
5694acf482 | |||
8f88dc5ac8 | |||
b1b053c205 | |||
c9e9ef905e |
@ -71,7 +71,7 @@ class AMXXConfig(object):
|
|||||||
if len(hlsdk_path):
|
if len(hlsdk_path):
|
||||||
self.hlsdk_path = os.path.join(builder.originalCwd, hlsdk_path)
|
self.hlsdk_path = os.path.join(builder.originalCwd, hlsdk_path)
|
||||||
if not os.path.exists(self.hlsdk_path):
|
if not os.path.exists(self.hlsdk_path):
|
||||||
raise Exception('Metamod path does not exist: {0}'.format(hlsdk_path))
|
raise Exception('HLSDK path does not exist: {0}'.format(hlsdk_path))
|
||||||
else:
|
else:
|
||||||
try_paths = [
|
try_paths = [
|
||||||
os.path.join(builder.sourcePath, '..', 'hlsdk'),
|
os.path.join(builder.sourcePath, '..', 'hlsdk'),
|
||||||
@ -94,7 +94,7 @@ class AMXXConfig(object):
|
|||||||
if len(mysql_path):
|
if len(mysql_path):
|
||||||
self.mysql_path = os.path.join(builder.originalCwd, mysql_path)
|
self.mysql_path = os.path.join(builder.originalCwd, mysql_path)
|
||||||
if not os.path.exists(self.mysql_path):
|
if not os.path.exists(self.mysql_path):
|
||||||
raise Exception('Metamod path does not exist: {0}'.format(mysql_path))
|
raise Exception('MySQL path does not exist: {0}'.format(mysql_path))
|
||||||
else:
|
else:
|
||||||
try_paths = [
|
try_paths = [
|
||||||
os.path.join(builder.sourcePath, '..', 'mysql-5.5'),
|
os.path.join(builder.sourcePath, '..', 'mysql-5.5'),
|
||||||
|
@ -143,6 +143,10 @@ private:
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Returns 1 if the timestamp for the file is different than the one we have loaded
|
* Returns 1 if the timestamp for the file is different than the one we have loaded
|
||||||
|
@ -323,7 +323,7 @@ cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
|
|||||||
amx_Push(m_Amx, realParams[i]);
|
amx_Push(m_Amx, realParams[i]);
|
||||||
|
|
||||||
// exec
|
// exec
|
||||||
cell retVal;
|
cell retVal = 0;
|
||||||
#if defined BINLOG_ENABLED
|
#if defined BINLOG_ENABLED
|
||||||
g_BinLog.WriteOp(BinLog_CallPubFunc, pPlugin->getId(), m_Func);
|
g_BinLog.WriteOp(BinLog_CallPubFunc, pPlugin->getId(), m_Func);
|
||||||
#endif
|
#endif
|
||||||
|
@ -325,16 +325,16 @@ SMCResult CGameConfig::ReadSMC_KeyValue(const SMCStates *states, const char *key
|
|||||||
}
|
}
|
||||||
else if (!strcmp(key, "size"))
|
else if (!strcmp(key, "size"))
|
||||||
{
|
{
|
||||||
TempType.fieldSize = ke::Max<int>(0, atoi(value));
|
TempType.fieldSize = ke::Max<int>(0, strtol(value, nullptr, 0));
|
||||||
}
|
}
|
||||||
else if (!strcmp(key, "unsigned"))
|
else if (!strcmp(key, "unsigned"))
|
||||||
{
|
{
|
||||||
TempType.fieldUnsigned = !!atoi(value);
|
TempType.fieldUnsigned = !!strtol(value, nullptr, 0);
|
||||||
}
|
}
|
||||||
else if (g_LibSys.IsPlatformCompatible(key, &m_MatchedPlatform))
|
else if (g_LibSys.IsPlatformCompatible(key, &m_MatchedPlatform))
|
||||||
{
|
{
|
||||||
m_FoundOffset = true;
|
m_FoundOffset = true;
|
||||||
TempType.fieldOffset = atoi(value);
|
TempType.fieldOffset = strtol(value, nullptr, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -397,7 +397,7 @@ SMCResult CGameConfig::ReadSMC_KeyValue(const SMCStates *states, const char *key
|
|||||||
|
|
||||||
if (m_AddressReadCount < limit)
|
if (m_AddressReadCount < limit)
|
||||||
{
|
{
|
||||||
m_AddressRead[m_AddressReadCount] = atoi(value);
|
m_AddressRead[m_AddressReadCount] = strtol(value, nullptr, 0);
|
||||||
m_AddressReadCount++;
|
m_AddressReadCount++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -180,6 +180,18 @@ class CGameConfigManager : public IGameConfigManager
|
|||||||
member = type.fieldOffset; \
|
member = type.fieldOffset; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define GET_OFFSET_NO_ERROR(classname, member) \
|
||||||
|
static int member = -1; \
|
||||||
|
if (member == -1) \
|
||||||
|
{ \
|
||||||
|
TypeDescription type; \
|
||||||
|
if (!CommonConfig->GetOffsetByClass(classname, #member, &type) || type.fieldOffset < 0)\
|
||||||
|
{ \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
|
member = type.fieldOffset; \
|
||||||
|
}
|
||||||
|
|
||||||
extern CGameConfigManager ConfigManager;
|
extern CGameConfigManager ConfigManager;
|
||||||
extern IGameConfig *CommonConfig;
|
extern IGameConfig *CommonConfig;
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "debugger.h"
|
#include "debugger.h"
|
||||||
#include "libraries.h"
|
#include "libraries.h"
|
||||||
#include <amxmodx_version.h>
|
#include <amxmodx_version.h>
|
||||||
|
#include "engine_strucs.h"
|
||||||
|
|
||||||
extern const char *no_function;
|
extern const char *no_function;
|
||||||
|
|
||||||
@ -154,6 +155,37 @@ int CPluginMngr::loadPluginsFromFile(const char* filename, bool warn)
|
|||||||
*get_amxaddr(plugin->getAMX(), addr) = gpGlobals->maxClients;
|
*get_amxaddr(plugin->getAMX(), addr) = gpGlobals->maxClients;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (amx_FindPubVar(plugin->getAMX(), "MapName", &addr) != AMX_ERR_NOTFOUND)
|
||||||
|
{
|
||||||
|
set_amxstring(plugin->getAMX(), addr, STRING(gpGlobals->mapname), MAX_MAPNAME_LENGTH - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto length = 0;
|
||||||
|
if (amx_FindPubVar(plugin->getAMX(), "PluginName", &addr) != AMX_ERR_NOTFOUND)
|
||||||
|
{
|
||||||
|
plugin->setTitle(get_amxstring(plugin->getAMX(), addr, 0, length));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (amx_FindPubVar(plugin->getAMX(), "PluginVersion", &addr) != AMX_ERR_NOTFOUND)
|
||||||
|
{
|
||||||
|
plugin->setVersion(get_amxstring(plugin->getAMX(), addr, 0, length));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (amx_FindPubVar(plugin->getAMX(), "PluginAuthor", &addr) != AMX_ERR_NOTFOUND)
|
||||||
|
{
|
||||||
|
plugin->setAuthor(get_amxstring(plugin->getAMX(), addr, 0, length));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (amx_FindPubVar(plugin->getAMX(), "PluginURL", &addr) != AMX_ERR_NOTFOUND)
|
||||||
|
{
|
||||||
|
plugin->setUrl(get_amxstring(plugin->getAMX(), addr, 0, length));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (amx_FindPubVar(plugin->getAMX(), "PluginDescription", &addr) != AMX_ERR_NOTFOUND)
|
||||||
|
{
|
||||||
|
plugin->setDescription(get_amxstring(plugin->getAMX(), addr, 0, length));
|
||||||
|
}
|
||||||
|
|
||||||
if (amx_FindPubVar(plugin->getAMX(), "NULL_STRING", &addr) != AMX_ERR_NOTFOUND)
|
if (amx_FindPubVar(plugin->getAMX(), "NULL_STRING", &addr) != AMX_ERR_NOTFOUND)
|
||||||
{
|
{
|
||||||
plugin->m_pNullStringOfs = get_amxaddr(plugin->getAMX(), addr);
|
plugin->m_pNullStringOfs = get_amxaddr(plugin->getAMX(), addr);
|
||||||
@ -275,6 +307,7 @@ CPluginMngr::CPlugin::CPlugin(int i, const char* p, const char* n, char* e, size
|
|||||||
title = unk;
|
title = unk;
|
||||||
author = unk;
|
author = unk;
|
||||||
version = unk;
|
version = unk;
|
||||||
|
url = unk;
|
||||||
|
|
||||||
char file[PLATFORM_MAX_PATH];
|
char file[PLATFORM_MAX_PATH];
|
||||||
char* path = build_pathname_r(file, sizeof(file), "%s/%s", p, n);
|
char* path = build_pathname_r(file, sizeof(file), "%s/%s", p, n);
|
||||||
|
@ -56,6 +56,8 @@ public:
|
|||||||
ke::AString version;
|
ke::AString version;
|
||||||
ke::AString title;
|
ke::AString title;
|
||||||
ke::AString author;
|
ke::AString author;
|
||||||
|
ke::AString url;
|
||||||
|
ke::AString description;
|
||||||
ke::AString errorMsg;
|
ke::AString errorMsg;
|
||||||
|
|
||||||
unsigned int failcounter;
|
unsigned int failcounter;
|
||||||
@ -78,6 +80,8 @@ public:
|
|||||||
inline const char* getVersion() { return version.chars();}
|
inline const char* getVersion() { return version.chars();}
|
||||||
inline const char* getTitle() { return title.chars();}
|
inline const char* getTitle() { return title.chars();}
|
||||||
inline const char* getAuthor() { return author.chars();}
|
inline const char* getAuthor() { return author.chars();}
|
||||||
|
inline const char* getUrl() { return url.chars(); }
|
||||||
|
inline const char* getDescription() { return description.chars(); }
|
||||||
inline const char* getError() { return errorMsg.chars();}
|
inline const char* getError() { return errorMsg.chars();}
|
||||||
inline int getStatusCode() { return status; }
|
inline int getStatusCode() { return status; }
|
||||||
inline int getId() const { return id; }
|
inline int getId() const { return id; }
|
||||||
@ -86,6 +90,8 @@ public:
|
|||||||
inline void setTitle(const char* n) { title = n; }
|
inline void setTitle(const char* n) { title = n; }
|
||||||
inline void setAuthor(const char* n) { author =n; }
|
inline void setAuthor(const char* n) { author =n; }
|
||||||
inline void setVersion(const char* n) { version = n; }
|
inline void setVersion(const char* n) { version = n; }
|
||||||
|
inline void setUrl(const char* n) { url = n; }
|
||||||
|
inline void setDescription(const char* n) { description = n; }
|
||||||
inline void setError(const char* n) { errorMsg = n; }
|
inline void setError(const char* n) { errorMsg = n; }
|
||||||
inline bool isValid() const { return (status >= ps_paused); }
|
inline bool isValid() const { return (status >= ps_paused); }
|
||||||
inline bool isPaused() const { return ((status == ps_paused) || (status == ps_stopped)); }
|
inline bool isPaused() const { return ((status == ps_paused) || (status == ps_stopped)); }
|
||||||
|
@ -23,15 +23,30 @@
|
|||||||
extern CFlagManager FlagMan;
|
extern CFlagManager FlagMan;
|
||||||
ke::Vector<CAdminData *> DynamicAdmins;
|
ke::Vector<CAdminData *> DynamicAdmins;
|
||||||
|
|
||||||
|
const char *g_sInaccessibleXVars[] =
|
||||||
|
{
|
||||||
|
"MaxClients",
|
||||||
|
"MapName",
|
||||||
|
"PluginName",
|
||||||
|
"PluginVersion",
|
||||||
|
"PluginAuthor",
|
||||||
|
"PluginURL",
|
||||||
|
"NULL_STRING",
|
||||||
|
"NULL_VECTOR"
|
||||||
|
};
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL get_xvar_id(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
char* sName = get_amxstring(amx, params[1], 0, len);
|
char* sName = get_amxstring(amx, params[1], 0, len);
|
||||||
cell ptr;
|
cell ptr;
|
||||||
|
|
||||||
if (!strcmp(sName, "MaxClients") || !strcmp(sName, "NULL_STRING") || !strcmp(sName, "NULL_VECTOR"))
|
for (auto name : g_sInaccessibleXVars)
|
||||||
{
|
{
|
||||||
return -1;
|
if (!strcmp(sName, name))
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (CPluginMngr::iterator a = g_plugins.begin(); a ; ++a)
|
for (CPluginMngr::iterator a = g_plugins.begin(); a ; ++a)
|
||||||
@ -197,7 +212,7 @@ static cell AMX_NATIVE_CALL console_print(AMX *amx, cell *params) /* 2 param */
|
|||||||
|
|
||||||
if (index < 1 || index > gpGlobals->maxClients) // Server console
|
if (index < 1 || index > gpGlobals->maxClients) // Server console
|
||||||
{
|
{
|
||||||
if (len > 254)
|
if (len > 254) // Server console truncates after byte 255. (254 + \n = 255)
|
||||||
{
|
{
|
||||||
len = 254;
|
len = 254;
|
||||||
if ((message[len - 1] & 1 << 7))
|
if ((message[len - 1] & 1 << 7))
|
||||||
@ -216,18 +231,26 @@ static cell AMX_NATIVE_CALL console_print(AMX *amx, cell *params) /* 2 param */
|
|||||||
|
|
||||||
if (pPlayer->ingame && !pPlayer->IsBot())
|
if (pPlayer->ingame && !pPlayer->IsBot())
|
||||||
{
|
{
|
||||||
if (len > 126) // Client console truncates after byte 127. (126 + \n = 127)
|
if (len > 125) // Client console truncates after byte 127. (125 + \n\n = 127)
|
||||||
{
|
{
|
||||||
len = 126;
|
len = 125;
|
||||||
if ((message[len - 1] & 1 << 7))
|
if ((message[len - 1] & 1 << 7))
|
||||||
{
|
{
|
||||||
len -= UTIL_CheckValidChar(message + len - 1); // Don't truncate a multi-byte character
|
len -= UTIL_CheckValidChar(message + len - 1); // Don't truncate a multi-byte character
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
message[len++] = '\n'; // Client expects newline from the server
|
message[len++] = '\n';
|
||||||
|
|
||||||
|
const auto canUseFormatString = g_official_mod && !g_bmod_dod; // Temporary exclusion for DoD until officially supported
|
||||||
|
|
||||||
|
if (canUseFormatString)
|
||||||
|
{
|
||||||
|
message[len++] = '\n'; // Double newline is required when pre-formatted string in TextMsg is passed as argument.
|
||||||
|
}
|
||||||
|
|
||||||
message[len] = 0;
|
message[len] = 0;
|
||||||
|
|
||||||
UTIL_ClientPrint(pPlayer->pEdict, 2, message);
|
UTIL_ClientPrint(pPlayer->pEdict, HUD_PRINTCONSOLE, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,6 +264,8 @@ static cell AMX_NATIVE_CALL client_print(AMX *amx, cell *params) /* 3 param */
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
char *msg;
|
char *msg;
|
||||||
|
|
||||||
|
const auto canUseFormatString = g_official_mod && !g_bmod_dod; // Temporary exclusion for DoD until officially supported
|
||||||
|
|
||||||
if (params[1] == 0) // 0 = All players
|
if (params[1] == 0) // 0 = All players
|
||||||
{
|
{
|
||||||
for (int i = 1; i <= gpGlobals->maxClients; ++i)
|
for (int i = 1; i <= gpGlobals->maxClients; ++i)
|
||||||
@ -252,16 +277,38 @@ static cell AMX_NATIVE_CALL client_print(AMX *amx, cell *params) /* 3 param */
|
|||||||
g_langMngr.SetDefLang(i);
|
g_langMngr.SetDefLang(i);
|
||||||
msg = format_amxstring(amx, params, 3, len);
|
msg = format_amxstring(amx, params, 3, len);
|
||||||
|
|
||||||
// params[2]: print_notify = 1, print_console = 2, print_chat = 3, print_center = 4
|
// Client console truncates after byte 127.
|
||||||
if (((params[2] == 1) || (params[2] == 2)) && (len > 126)) // Client console truncates after byte 127. (126 + \n = 127)
|
// If format string is used, limit includes double new lines (125 + \n\n), otherwise one new line (126 + \n).
|
||||||
|
const auto bytesLimit = canUseFormatString ? 125 : 126;
|
||||||
|
|
||||||
|
if (g_bmod_cstrike && params[2] == HUD_PRINTCENTER) // Likely a temporary fix.
|
||||||
{
|
{
|
||||||
len = 126;
|
for (int j = 0; j < len; ++j)
|
||||||
|
{
|
||||||
|
if (msg[j] == '\n')
|
||||||
|
{
|
||||||
|
msg[j] = '\r';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (((params[2] == HUD_PRINTNOTIFY) || (params[2] == HUD_PRINTCONSOLE)) && (len > bytesLimit))
|
||||||
|
{
|
||||||
|
len = bytesLimit;
|
||||||
if ((msg[len - 1] & 1 << 7))
|
if ((msg[len - 1] & 1 << 7))
|
||||||
{
|
{
|
||||||
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msg[len++] = '\n'; // Client expects newline from the server
|
msg[len++] = '\n';
|
||||||
|
|
||||||
|
if (canUseFormatString)
|
||||||
|
{
|
||||||
|
if (!g_bmod_cstrike || params[2] == HUD_PRINTNOTIFY || params[2] == HUD_PRINTCONSOLE)
|
||||||
|
{
|
||||||
|
msg[len++] = '\n'; // Double newline is required when pre-formatted string in TextMsg is passed as argument.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
msg[len] = 0;
|
msg[len] = 0;
|
||||||
|
|
||||||
UTIL_ClientPrint(pPlayer->pEdict, params[2], msg);
|
UTIL_ClientPrint(pPlayer->pEdict, params[2], msg);
|
||||||
@ -286,16 +333,38 @@ static cell AMX_NATIVE_CALL client_print(AMX *amx, cell *params) /* 3 param */
|
|||||||
|
|
||||||
msg = format_amxstring(amx, params, 3, len);
|
msg = format_amxstring(amx, params, 3, len);
|
||||||
|
|
||||||
// params[2]: print_notify = 1, print_console = 2, print_chat = 3, print_center = 4
|
// Client console truncates after byte 127.
|
||||||
if (((params[2] == 1) || (params[2] == 2)) && (len > 126)) // Client console truncates after byte 127. (126 + \n = 127)
|
// If format string is used, limit includes double new lines (125 + \n\n), otherwise one new line (126 + \n).
|
||||||
|
const auto bytesLimit = canUseFormatString ? 125 : 126;
|
||||||
|
|
||||||
|
if (g_bmod_cstrike && params[2] == HUD_PRINTCENTER) // Likely a temporary fix.
|
||||||
{
|
{
|
||||||
len = 126;
|
for (int j = 0; j < len; ++j)
|
||||||
|
{
|
||||||
|
if (msg[j] == '\n')
|
||||||
|
{
|
||||||
|
msg[j] = '\r';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (((params[2] == HUD_PRINTNOTIFY) || (params[2] == HUD_PRINTCONSOLE)) && (len > bytesLimit)) // Client console truncates after byte 127. (125 + \n\n = 127)
|
||||||
|
{
|
||||||
|
len = bytesLimit;
|
||||||
if ((msg[len - 1] & 1 << 7))
|
if ((msg[len - 1] & 1 << 7))
|
||||||
{
|
{
|
||||||
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msg[len++] = '\n'; // Client expects newline from the server
|
msg[len++] = '\n';
|
||||||
|
|
||||||
|
if (canUseFormatString)
|
||||||
|
{
|
||||||
|
if (!g_bmod_cstrike || params[2] == HUD_PRINTNOTIFY || params[2] == HUD_PRINTCONSOLE)
|
||||||
|
{
|
||||||
|
msg[len++] = '\n'; // Double newline is required when pre-formatted string in TextMsg is passed as argument.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
msg[len] = 0;
|
msg[len] = 0;
|
||||||
|
|
||||||
UTIL_ClientPrint(pPlayer->pEdict, params[2], msg);
|
UTIL_ClientPrint(pPlayer->pEdict, params[2], msg);
|
||||||
@ -344,16 +413,15 @@ static cell AMX_NATIVE_CALL client_print_color(AMX *amx, cell *params) /* 3 para
|
|||||||
*msg = 1;
|
*msg = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len > 190) // Server crashes after byte 190. (190 + \n = 191)
|
if (len > 187) // Max available bytes: 188
|
||||||
{
|
{
|
||||||
len = 190;
|
len = 187;
|
||||||
if ((msg[len - 1] & 1 << 7))
|
if ((msg[len - 1] & 1 << 7))
|
||||||
{
|
{
|
||||||
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
msg[len++] = '\n';
|
|
||||||
msg[len] = 0;
|
msg[len] = 0;
|
||||||
|
|
||||||
UTIL_ClientSayText(pPlayer->pEdict, sender ? sender : i, msg);
|
UTIL_ClientSayText(pPlayer->pEdict, sender ? sender : i, msg);
|
||||||
@ -382,16 +450,15 @@ static cell AMX_NATIVE_CALL client_print_color(AMX *amx, cell *params) /* 3 para
|
|||||||
*msg = 1;
|
*msg = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len > 190) // Server crashes after byte 190. (190 + \n = 191)
|
if (len > 187) // Max available bytes: 188
|
||||||
{
|
{
|
||||||
len = 190;
|
len = 187;
|
||||||
if ((msg[len - 1] & 1 << 7))
|
if ((msg[len - 1] & 1 << 7))
|
||||||
{
|
{
|
||||||
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
len -= UTIL_CheckValidChar(msg + len - 1); // Don't truncate a multi-byte character
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
msg[len++] = '\n';
|
|
||||||
msg[len] = 0;
|
msg[len] = 0;
|
||||||
|
|
||||||
UTIL_ClientSayText(pPlayer->pEdict, sender ? sender : index, msg);
|
UTIL_ClientSayText(pPlayer->pEdict, sender ? sender : index, msg);
|
||||||
@ -1272,7 +1339,6 @@ static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */
|
|||||||
// Fire newmenu callback so closing it can be handled by the plugin
|
// Fire newmenu callback so closing it can be handled by the plugin
|
||||||
if (!CloseNewMenus(pPlayer))
|
if (!CloseNewMenus(pPlayer))
|
||||||
{
|
{
|
||||||
LogError(amx, AMX_ERR_NATIVE, "Plugin called menu_display when item=MENU_EXIT");
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1318,7 +1384,7 @@ static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (closeMenu(index))
|
if (closeMenu(index) == 2)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1382,29 +1448,34 @@ static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param */
|
static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 5 param */
|
||||||
{
|
{
|
||||||
|
enum { arg_count, arg_title, arg_version, arg_author, arg_url, arg_description };
|
||||||
|
|
||||||
CPluginMngr::CPlugin* a = g_plugins.findPluginFast(amx);
|
CPluginMngr::CPlugin* a = g_plugins.findPluginFast(amx);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
char *title = get_amxstring(amx, params[1], 0, i);
|
|
||||||
char *vers = get_amxstring(amx, params[2], 1, i);
|
a->setTitle(get_amxstring(amx, params[arg_title], 0, i));
|
||||||
char *author = get_amxstring(amx, params[3], 2, i);
|
a->setVersion(get_amxstring(amx, params[arg_version], 0, i));
|
||||||
|
a->setAuthor(get_amxstring(amx, params[arg_author], 0, i));
|
||||||
|
|
||||||
#if defined BINLOG_ENABLED
|
#if defined BINLOG_ENABLED
|
||||||
g_BinLog.WriteOp(BinLog_Registered, a->getId(), title, vers);
|
g_BinLog.WriteOp(BinLog_Registered, a->getId(), a->getTitle(), a->getVersion());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
a->setTitle(title);
|
if (params[arg_count] / sizeof(cell) > arg_author)
|
||||||
a->setVersion(vers);
|
{
|
||||||
a->setAuthor(author);
|
a->setUrl(get_amxstring(amx, params[arg_url], 0, i));
|
||||||
|
a->setDescription(get_amxstring(amx, params[arg_description], 0, i));
|
||||||
|
}
|
||||||
|
|
||||||
/* Check if we need to add fail counters */
|
/* Check if we need to add fail counters */
|
||||||
i = 0;
|
i = 0;
|
||||||
unsigned int counter = 0;
|
unsigned int counter = 0;
|
||||||
while (NONGPL_PLUGIN_LIST[i].author != NULL)
|
while (NONGPL_PLUGIN_LIST[i].author != NULL)
|
||||||
{
|
{
|
||||||
if (strcmp(NONGPL_PLUGIN_LIST[i].author, author) == 0)
|
if (strcmp(NONGPL_PLUGIN_LIST[i].author, a->getAuthor()) == 0)
|
||||||
{
|
{
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
@ -1412,7 +1483,7 @@ static cell AMX_NATIVE_CALL register_plugin(AMX *amx, cell *params) /* 3 param *
|
|||||||
{
|
{
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
if (stricmp(NONGPL_PLUGIN_LIST[i].title, title) == 0)
|
if (stricmp(NONGPL_PLUGIN_LIST[i].title, a->getTitle()) == 0)
|
||||||
{
|
{
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
@ -1446,31 +1517,34 @@ static cell AMX_NATIVE_CALL register_menucmd(AMX *amx, cell *params) /* 3 param
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL get_plugin(AMX *amx, cell *params) /* 11 param */
|
static cell AMX_NATIVE_CALL get_plugin(AMX *amx, cell *params) /* 15 param */
|
||||||
{
|
{
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
arg_count, arg_plugin, arg_name, arg_namelen, arg_title, arg_titlelen,
|
||||||
|
arg_version, arg_versionlen, arg_author, arg_authorlen, arg_status, arg_statuslen,
|
||||||
|
arg_url, arg_urllen, arg_description, arg_descriptionlen
|
||||||
|
};
|
||||||
|
|
||||||
CPluginMngr::CPlugin* a;
|
CPluginMngr::CPlugin* a;
|
||||||
|
|
||||||
if (params[1] < 0)
|
if (params[arg_plugin] < 0)
|
||||||
a = g_plugins.findPluginFast(amx);
|
a = g_plugins.findPluginFast(amx);
|
||||||
else
|
else
|
||||||
a = g_plugins.findPlugin((int)params[1]);
|
a = g_plugins.findPlugin((int)params[arg_plugin]);
|
||||||
|
|
||||||
if (a)
|
if (a)
|
||||||
{
|
{
|
||||||
set_amxstring(amx, params[2], a->getName(), params[3]);
|
set_amxstring(amx, params[arg_name], a->getName(), params[arg_namelen]);
|
||||||
set_amxstring(amx, params[4], a->getTitle(), params[5]);
|
set_amxstring(amx, params[arg_title], a->getTitle(), params[arg_titlelen]);
|
||||||
set_amxstring(amx, params[6], a->getVersion(), params[7]);
|
set_amxstring(amx, params[arg_version], a->getVersion(), params[arg_versionlen]);
|
||||||
set_amxstring(amx, params[8], a->getAuthor(), params[9]);
|
set_amxstring(amx, params[arg_author], a->getAuthor(), params[arg_authorlen]);
|
||||||
set_amxstring(amx, params[10], a->getStatus(), params[11]);
|
set_amxstring(amx, params[arg_status], a->getStatus(), params[arg_statuslen]);
|
||||||
|
|
||||||
if (params[0] / sizeof(cell) >= 12)
|
if (params[arg_count] / sizeof(cell) > arg_url)
|
||||||
{
|
{
|
||||||
cell *jit_info = get_amxaddr(amx, params[12]);
|
set_amxstring(amx, params[arg_url], a->getUrl(), params[arg_urllen]);
|
||||||
#if defined AMD64 || !defined JIT
|
set_amxstring(amx, params[arg_description], a->getDescription(), params[arg_descriptionlen]);
|
||||||
*jit_info = 0;
|
|
||||||
#else
|
|
||||||
*jit_info = a->isDebug() ? 0 : 1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return a->getId();
|
return a->getId();
|
||||||
@ -2532,7 +2606,7 @@ static cell AMX_NATIVE_CALL read_argv(AMX *amx, cell *params) /* 3 param */
|
|||||||
{
|
{
|
||||||
int argc = params[1];
|
int argc = params[1];
|
||||||
|
|
||||||
const char *value = g_fakecmd.notify ? (argc >= 0 && argc < 3 ? g_fakecmd.argv[argc] : "") : CMD_ARGV(argc);
|
const char *value = g_fakecmd.notify ? ((argc >= 0 && argc < 3 && g_fakecmd.argv[argc] != nullptr) ? g_fakecmd.argv[argc] : "") : CMD_ARGV(argc);
|
||||||
return set_amxstring_utf8(amx, params[2], value, strlen(value), params[3]);
|
return set_amxstring_utf8(amx, params[2], value, strlen(value), params[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2545,7 +2619,7 @@ static cell AMX_NATIVE_CALL read_argv_int(AMX *amx, cell *params) /* 1 param */
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *value = g_fakecmd.notify ? (argc >= 1 && argc < 3 ? g_fakecmd.argv[argc] : "") : CMD_ARGV(argc);
|
const char *value = g_fakecmd.notify ? ((argc >= 1 && argc < 3 && g_fakecmd.argv[argc] != nullptr) ? g_fakecmd.argv[argc] : "") : CMD_ARGV(argc);
|
||||||
|
|
||||||
return atoi(value);
|
return atoi(value);
|
||||||
}
|
}
|
||||||
@ -2559,7 +2633,7 @@ static cell AMX_NATIVE_CALL read_argv_float(AMX *amx, cell *params) /* 1 param *
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *value = g_fakecmd.notify ? (argc >= 1 && argc < 3 ? g_fakecmd.argv[argc] : "") : CMD_ARGV(argc);
|
const char *value = g_fakecmd.notify ? ((argc >= 1 && argc < 3 && g_fakecmd.argv[argc] != nullptr) ? g_fakecmd.argv[argc] : "") : CMD_ARGV(argc);
|
||||||
float flValue = atof(value);
|
float flValue = atof(value);
|
||||||
|
|
||||||
return amx_ftoc(flValue);
|
return amx_ftoc(flValue);
|
||||||
@ -2567,7 +2641,7 @@ static cell AMX_NATIVE_CALL read_argv_float(AMX *amx, cell *params) /* 1 param *
|
|||||||
|
|
||||||
static cell AMX_NATIVE_CALL read_args(AMX *amx, cell *params) /* 2 param */
|
static cell AMX_NATIVE_CALL read_args(AMX *amx, cell *params) /* 2 param */
|
||||||
{
|
{
|
||||||
const char* sValue = g_fakecmd.notify ? (g_fakecmd.argc > 1 ? g_fakecmd.args : g_fakecmd.argv[0]) : CMD_ARGS();
|
const char* sValue = g_fakecmd.notify ? (g_fakecmd.argc > 1 ? g_fakecmd.args : "") : CMD_ARGS();
|
||||||
return set_amxstring_utf8(amx, params[1], sValue ? sValue : "", sValue ? strlen(sValue) : 0, params[2]);
|
return set_amxstring_utf8(amx, params[1], sValue ? sValue : "", sValue ? strlen(sValue) : 0, params[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,6 +188,11 @@ extern WeaponsVault g_weaponsData[MAX_WEAPONS];
|
|||||||
extern XVars g_xvars;
|
extern XVars g_xvars;
|
||||||
extern bool g_bmod_cstrike;
|
extern bool g_bmod_cstrike;
|
||||||
extern bool g_bmod_dod;
|
extern bool g_bmod_dod;
|
||||||
|
extern bool g_bmod_dmc;
|
||||||
|
extern bool g_bmod_ricochet;
|
||||||
|
extern bool g_bmod_valve;
|
||||||
|
extern bool g_bmod_gearbox;
|
||||||
|
extern bool g_official_mod;
|
||||||
extern bool g_dontprecache;
|
extern bool g_dontprecache;
|
||||||
extern int g_srvindex;
|
extern int g_srvindex;
|
||||||
extern cvar_t* amxmodx_version;
|
extern cvar_t* amxmodx_version;
|
||||||
|
@ -88,21 +88,44 @@ void Client_TeamInfo(void* mValue)
|
|||||||
if (index < 1 || index > gpGlobals->maxClients) break;
|
if (index < 1 || index > gpGlobals->maxClients) break;
|
||||||
char* msg = (char*)mValue;
|
char* msg = (char*)mValue;
|
||||||
if (!msg) break;
|
if (!msg) break;
|
||||||
g_players[index].team = msg;
|
|
||||||
g_teamsIds.registerTeam(msg, -1);
|
|
||||||
g_players[index].teamId = g_teamsIds.findTeamId(msg);
|
|
||||||
|
|
||||||
/**
|
auto pPlayer = GET_PLAYER_POINTER_I(index);
|
||||||
* CS fix for SPECTATOR team.
|
|
||||||
* -
|
pPlayer->team = msg;
|
||||||
* When a player chooses spectator, ScoreInfo is sent before TeamInfo and with 0 as index.
|
g_teamsIds.registerTeam(msg, -1);
|
||||||
* This means for the first round of first spectator, SPECTATOR name is not associated with its index.
|
pPlayer->teamId = g_teamsIds.findTeamId(msg);
|
||||||
* The following fix manually sets the team index when we hit SPECTATOR team.
|
|
||||||
*/
|
if (pPlayer->teamId == -1)
|
||||||
if (g_players[index].teamId == -1 && g_bmod_cstrike && !strcmp(msg, "SPECTATOR"))
|
|
||||||
{
|
{
|
||||||
g_players[index].teamId = 3;
|
/**
|
||||||
g_teamsIds.registerTeam(msg, 3);
|
* CS fix for SPECTATOR team.
|
||||||
|
* -
|
||||||
|
* When a player chooses spectator, ScoreInfo is sent before TeamInfo and with 0 as index.
|
||||||
|
* This means for the first round of first spectator, SPECTATOR name is not associated with its index.
|
||||||
|
* The following fix manually sets the team index when we hit SPECTATOR team.
|
||||||
|
*/
|
||||||
|
if (g_bmod_cstrike && !strcmp(msg, "SPECTATOR"))
|
||||||
|
{
|
||||||
|
pPlayer->teamId = 3;
|
||||||
|
g_teamsIds.registerTeam(msg, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fixes in-between situation where the team name is not yet associated with a valid index
|
||||||
|
* and ScoreInfo is executed later (used to retrieve the index). E.g. a player is dead,
|
||||||
|
* then changes team. Index will return -1 until ScoreInfo is sent, usually at the next spawn.
|
||||||
|
*/
|
||||||
|
else if ((g_bmod_cstrike || g_bmod_dod || g_bmod_tfc || g_bmod_gearbox || g_bmod_valve)
|
||||||
|
&& pPlayer->pEdict->pvPrivateData
|
||||||
|
&& !pPlayer->IsAlive())
|
||||||
|
{
|
||||||
|
GET_OFFSET_NO_ERROR("CBasePlayer", m_iTeam);
|
||||||
|
|
||||||
|
const auto teamId = get_pdata<int>(pPlayer->pEdict, m_iTeam);
|
||||||
|
|
||||||
|
pPlayer->teamId = teamId;
|
||||||
|
g_teamsIds.registerTeam(msg, teamId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -88,6 +88,11 @@ XVars g_xvars;
|
|||||||
bool g_bmod_tfc;
|
bool g_bmod_tfc;
|
||||||
bool g_bmod_cstrike;
|
bool g_bmod_cstrike;
|
||||||
bool g_bmod_dod;
|
bool g_bmod_dod;
|
||||||
|
bool g_bmod_dmc;
|
||||||
|
bool g_bmod_ricochet;
|
||||||
|
bool g_bmod_valve;
|
||||||
|
bool g_bmod_gearbox;
|
||||||
|
bool g_official_mod;
|
||||||
bool g_dontprecache;
|
bool g_dontprecache;
|
||||||
bool g_forcedmodules;
|
bool g_forcedmodules;
|
||||||
bool g_forcedsounds;
|
bool g_forcedsounds;
|
||||||
@ -769,6 +774,15 @@ void C_ServerDeactivate_Post()
|
|||||||
g_vault.clear();
|
g_vault.clear();
|
||||||
g_xvars.clear();
|
g_xvars.clear();
|
||||||
g_plugins.clear();
|
g_plugins.clear();
|
||||||
|
g_langMngr.Clear();
|
||||||
|
|
||||||
|
ArrayHandles.clear();
|
||||||
|
TrieHandles.clear();
|
||||||
|
TrieIterHandles.clear();
|
||||||
|
TrieSnapshotHandles.clear();
|
||||||
|
DataPackHandles.clear();
|
||||||
|
TextParsersHandles.clear();
|
||||||
|
GameConfigHandle.clear();
|
||||||
|
|
||||||
g_CvarManager.OnPluginUnloaded();
|
g_CvarManager.OnPluginUnloaded();
|
||||||
|
|
||||||
@ -1140,12 +1154,12 @@ void C_ClientCommand(edict_t *pEntity)
|
|||||||
if (item == MENU_BACK)
|
if (item == MENU_BACK)
|
||||||
{
|
{
|
||||||
if (pMenu->pageCallback >= 0)
|
if (pMenu->pageCallback >= 0)
|
||||||
executeForwards(pMenu->pageCallback, static_cast<cell>(pPlayer->index), static_cast<cell>(MENU_BACK));
|
executeForwards(pMenu->pageCallback, static_cast<cell>(pPlayer->index), static_cast<cell>(MENU_BACK), static_cast<cell>(menu));
|
||||||
|
|
||||||
pMenu->Display(pPlayer->index, pPlayer->page - 1);
|
pMenu->Display(pPlayer->index, pPlayer->page - 1);
|
||||||
} else if (item == MENU_MORE) {
|
} else if (item == MENU_MORE) {
|
||||||
if (pMenu->pageCallback >= 0)
|
if (pMenu->pageCallback >= 0)
|
||||||
executeForwards(pMenu->pageCallback, static_cast<cell>(pPlayer->index), static_cast<cell>(MENU_MORE));
|
executeForwards(pMenu->pageCallback, static_cast<cell>(pPlayer->index), static_cast<cell>(MENU_MORE), static_cast<cell>(menu));
|
||||||
|
|
||||||
pMenu->Display(pPlayer->index, pPlayer->page + 1);
|
pMenu->Display(pPlayer->index, pPlayer->page + 1);
|
||||||
} else {
|
} else {
|
||||||
@ -1725,6 +1739,14 @@ C_DLLEXPORT int Meta_Detach(PLUG_LOADTIME now, PL_UNLOAD_REASON reason)
|
|||||||
g_plugins.clear();
|
g_plugins.clear();
|
||||||
g_langMngr.Clear();
|
g_langMngr.Clear();
|
||||||
|
|
||||||
|
ArrayHandles.clear();
|
||||||
|
TrieHandles.clear();
|
||||||
|
TrieIterHandles.clear();
|
||||||
|
TrieSnapshotHandles.clear();
|
||||||
|
DataPackHandles.clear();
|
||||||
|
TextParsersHandles.clear();
|
||||||
|
GameConfigHandle.clear();
|
||||||
|
|
||||||
ClearMessages();
|
ClearMessages();
|
||||||
|
|
||||||
modules_callPluginsUnloaded();
|
modules_callPluginsUnloaded();
|
||||||
@ -1800,6 +1822,7 @@ C_DLLEXPORT int GetEntityAPI2_Post(DLL_FUNCTIONS *pFunctionTable, int *interface
|
|||||||
}
|
}
|
||||||
|
|
||||||
enginefuncs_t meta_engfuncs;
|
enginefuncs_t meta_engfuncs;
|
||||||
|
|
||||||
C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion)
|
C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion)
|
||||||
{
|
{
|
||||||
memset(&meta_engfuncs, 0, sizeof(enginefuncs_t));
|
memset(&meta_engfuncs, 0, sizeof(enginefuncs_t));
|
||||||
@ -1809,11 +1832,17 @@ C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *inte
|
|||||||
meta_engfuncs.pfnSetModel = C_SetModel;
|
meta_engfuncs.pfnSetModel = C_SetModel;
|
||||||
g_bmod_cstrike = true;
|
g_bmod_cstrike = true;
|
||||||
} else {
|
} else {
|
||||||
g_bmod_cstrike = false;
|
g_bmod_cstrike = false;
|
||||||
g_bmod_dod = !stricmp(g_mod_name.chars(), "dod");
|
g_bmod_dod = !stricmp(g_mod_name.chars(), "dod");
|
||||||
g_bmod_tfc = !stricmp(g_mod_name.chars(), "tfc");
|
g_bmod_dmc = !stricmp(g_mod_name.chars(), "dmc");
|
||||||
|
g_bmod_tfc = !stricmp(g_mod_name.chars(), "tfc");
|
||||||
|
g_bmod_ricochet = !stricmp(g_mod_name.chars(), "ricochet");
|
||||||
|
g_bmod_valve = !stricmp(g_mod_name.chars(), "valve");
|
||||||
|
g_bmod_gearbox = !stricmp(g_mod_name.chars(), "gearbox");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_official_mod = g_bmod_cstrike || g_bmod_dod || g_bmod_dmc || g_bmod_ricochet || g_bmod_tfc || g_bmod_valve || g_bmod_gearbox;
|
||||||
|
|
||||||
meta_engfuncs.pfnCmd_Argc = C_Cmd_Argc;
|
meta_engfuncs.pfnCmd_Argc = C_Cmd_Argc;
|
||||||
meta_engfuncs.pfnCmd_Argv = C_Cmd_Argv;
|
meta_engfuncs.pfnCmd_Argv = C_Cmd_Argv;
|
||||||
meta_engfuncs.pfnCmd_Args = C_Cmd_Args;
|
meta_engfuncs.pfnCmd_Args = C_Cmd_Args;
|
||||||
|
@ -457,6 +457,7 @@ md -p JIT 2>NUL
|
|||||||
<None Include="..\..\plugins\include\cvars.inc" />
|
<None Include="..\..\plugins\include\cvars.inc" />
|
||||||
<None Include="..\..\plugins\include\datapack.inc" />
|
<None Include="..\..\plugins\include\datapack.inc" />
|
||||||
<None Include="..\..\plugins\include\gameconfig.inc" />
|
<None Include="..\..\plugins\include\gameconfig.inc" />
|
||||||
|
<None Include="..\..\plugins\include\newmenus.inc" />
|
||||||
<None Include="..\..\plugins\include\string_const.inc" />
|
<None Include="..\..\plugins\include\string_const.inc" />
|
||||||
<None Include="..\..\plugins\include\string_stocks.inc" />
|
<None Include="..\..\plugins\include\string_stocks.inc" />
|
||||||
<None Include="..\..\plugins\include\textparse_ini.inc" />
|
<None Include="..\..\plugins\include\textparse_ini.inc" />
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
</Filter>
|
</Filter>
|
||||||
<Filter Include="ReSDK\engine">
|
<Filter Include="ReSDK\engine">
|
||||||
<UniqueIdentifier>{04fab577-6f56-40d0-8f69-7ce1b8bf3bb9}</UniqueIdentifier>
|
<UniqueIdentifier>{04fab577-6f56-40d0-8f69-7ce1b8bf3bb9}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter Include="Third Party\UTF8Rewind">
|
<Filter Include="Third Party\UTF8Rewind">
|
||||||
<UniqueIdentifier>{270f3524-564f-4154-bb35-242a6faac09e}</UniqueIdentifier>
|
<UniqueIdentifier>{270f3524-564f-4154-bb35-242a6faac09e}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
@ -693,6 +693,9 @@
|
|||||||
<None Include="..\..\plugins\include\string_stocks.inc">
|
<None Include="..\..\plugins\include\string_stocks.inc">
|
||||||
<Filter>Pawn Includes</Filter>
|
<Filter>Pawn Includes</Filter>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="..\..\plugins\include\newmenus.inc">
|
||||||
|
<Filter>Pawn Includes</Filter>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Object Include="..\Jit\helpers-x86.obj">
|
<Object Include="..\Jit\helpers-x86.obj">
|
||||||
|
Binary file not shown.
@ -10,6 +10,7 @@
|
|||||||
#include "amxmodx.h"
|
#include "amxmodx.h"
|
||||||
#include "CMenu.h"
|
#include "CMenu.h"
|
||||||
#include "newmenus.h"
|
#include "newmenus.h"
|
||||||
|
#include "format.h"
|
||||||
|
|
||||||
ke::Vector<Menu *> g_NewMenus;
|
ke::Vector<Menu *> g_NewMenus;
|
||||||
CStack<int> g_MenuFreeStack;
|
CStack<int> g_MenuFreeStack;
|
||||||
@ -90,9 +91,9 @@ bool CloseNewMenus(CPlayer *pPlayer)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Menu::Menu(const char *title, AMX *amx, int fid) : m_Title(title), m_ItemColor("\\r"),
|
Menu::Menu(const char *title, AMX *amx, int fid, bool use_ml) : m_Title(title), m_ItemColor("\\r"),
|
||||||
m_NeverExit(false), m_AutoColors(g_coloredmenus), thisId(0), func(fid),
|
m_NeverExit(false), m_ForceExit(false), m_AutoColors(g_coloredmenus), thisId(0), func(fid),
|
||||||
isDestroying(false), pageCallback(-1), showPageNumber(true), items_per_page(7)
|
isDestroying(false), pageCallback(-1), showPageNumber(true), useMultilingual(use_ml), amx(amx), items_per_page(7)
|
||||||
{
|
{
|
||||||
CPluginMngr::CPlugin *pPlugin = g_plugins.findPluginFast(amx);
|
CPluginMngr::CPlugin *pPlugin = g_plugins.findPluginFast(amx);
|
||||||
menuId = g_menucmds.registerMenuId(title, amx);
|
menuId = g_menucmds.registerMenuId(title, amx);
|
||||||
@ -356,18 +357,32 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
|
|
||||||
m_Text = nullptr;
|
m_Text = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
auto title = m_Title.chars();
|
||||||
|
|
||||||
|
if (this->useMultilingual)
|
||||||
|
{
|
||||||
|
const auto language = playerlang(player);
|
||||||
|
const auto definition = translate(this->amx, language, title);
|
||||||
|
|
||||||
|
if (definition)
|
||||||
|
{
|
||||||
|
title = definition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
char buffer[255];
|
char buffer[255];
|
||||||
if (showPageNumber && items_per_page && (pages != 1))
|
if (showPageNumber && items_per_page && (pages != 1))
|
||||||
{
|
{
|
||||||
if (m_AutoColors)
|
if (m_AutoColors)
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "\\y%s %d/%d\n\\w\n", m_Title.chars(), page + 1, pages);
|
ke::SafeSprintf(buffer, sizeof(buffer), "\\y%s %d/%d\n\\w\n", title, page + 1, pages);
|
||||||
else
|
else
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "%s %d/%d\n\n", m_Title.chars(), page + 1, pages);
|
ke::SafeSprintf(buffer, sizeof(buffer), "%s %d/%d\n\n", title, page + 1, pages);
|
||||||
} else {
|
} else {
|
||||||
if (m_AutoColors)
|
if (m_AutoColors)
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "\\y%s\n\\w\n", m_Title.chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "\\y%s\n\\w\n", title);
|
||||||
else
|
else
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "%s\n\n", m_Title.chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "%s\n\n", title);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Text = m_Text + buffer;
|
m_Text = m_Text + buffer;
|
||||||
@ -462,24 +477,37 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
option_display = 0;
|
option_display = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto itemName = pItem->name.chars();
|
||||||
|
|
||||||
|
if (this->useMultilingual)
|
||||||
|
{
|
||||||
|
const auto language = playerlang(player);
|
||||||
|
const auto definition = translate(this->amx, language, itemName);
|
||||||
|
|
||||||
|
if (definition)
|
||||||
|
{
|
||||||
|
itemName = definition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pItem->isBlank)
|
if (pItem->isBlank)
|
||||||
{
|
{
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "%s\n", pItem->name.chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "%s\n", itemName);
|
||||||
}
|
}
|
||||||
else if (enabled)
|
else if (enabled)
|
||||||
{
|
{
|
||||||
if (m_AutoColors)
|
if (m_AutoColors)
|
||||||
{
|
{
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "%s%d.\\w %s\n", m_ItemColor.chars(),option_display, pItem->name.chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "%s%d.\\w %s\n", m_ItemColor.chars(),option_display, itemName);
|
||||||
} else {
|
} else {
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "%d. %s\n", option_display, pItem->name.chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "%d. %s\n", option_display, itemName);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (m_AutoColors)
|
if (m_AutoColors)
|
||||||
{
|
{
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "\\d%d. %s\n\\w", option_display, pItem->name.chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "\\d%d. %s\n\\w", option_display, itemName);
|
||||||
} else {
|
} else {
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "#. %s\n", pItem->name.chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "#. %s\n", itemName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
slots++;
|
slots++;
|
||||||
@ -516,6 +544,20 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
/* Don't bother if there is only one page */
|
/* Don't bother if there is only one page */
|
||||||
if (pages > 1)
|
if (pages > 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
auto tempItemName = m_OptNames[abs(MENU_BACK)].chars();
|
||||||
|
|
||||||
|
if (this->useMultilingual)
|
||||||
|
{
|
||||||
|
const auto language = playerlang(player);
|
||||||
|
const auto definition = translate(this->amx, language, tempItemName);
|
||||||
|
|
||||||
|
if (definition)
|
||||||
|
{
|
||||||
|
tempItemName = definition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (flags & Display_Back)
|
if (flags & Display_Back)
|
||||||
{
|
{
|
||||||
keys |= (1<<option++);
|
keys |= (1<<option++);
|
||||||
@ -526,13 +568,13 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
"%s%d. \\w%s\n",
|
"%s%d. \\w%s\n",
|
||||||
m_ItemColor.chars(),
|
m_ItemColor.chars(),
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_BACK)].chars());
|
tempItemName);
|
||||||
} else {
|
} else {
|
||||||
ke::SafeSprintf(buffer,
|
ke::SafeSprintf(buffer,
|
||||||
sizeof(buffer),
|
sizeof(buffer),
|
||||||
"%d. %s\n",
|
"%d. %s\n",
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_BACK)].chars());
|
tempItemName);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
option++;
|
option++;
|
||||||
@ -542,13 +584,26 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
sizeof(buffer),
|
sizeof(buffer),
|
||||||
"\\d%d. %s\n\\w",
|
"\\d%d. %s\n\\w",
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_BACK)].chars());
|
tempItemName);
|
||||||
} else {
|
} else {
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "#. %s\n", m_OptNames[abs(MENU_BACK)].chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "#. %s\n", tempItemName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_Text = m_Text + buffer;
|
m_Text = m_Text + buffer;
|
||||||
|
|
||||||
|
tempItemName = m_OptNames[abs(MENU_MORE)].chars();
|
||||||
|
|
||||||
|
if (this->useMultilingual)
|
||||||
|
{
|
||||||
|
const auto language = playerlang(player);
|
||||||
|
const auto definition = translate(this->amx, language, tempItemName);
|
||||||
|
|
||||||
|
if (definition)
|
||||||
|
{
|
||||||
|
tempItemName = definition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (flags & Display_Next)
|
if (flags & Display_Next)
|
||||||
{
|
{
|
||||||
keys |= (1<<option++);
|
keys |= (1<<option++);
|
||||||
@ -559,13 +614,13 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
"%s%d. \\w%s\n",
|
"%s%d. \\w%s\n",
|
||||||
m_ItemColor.chars(),
|
m_ItemColor.chars(),
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_MORE)].chars());
|
tempItemName);
|
||||||
} else {
|
} else {
|
||||||
ke::SafeSprintf(buffer,
|
ke::SafeSprintf(buffer,
|
||||||
sizeof(buffer),
|
sizeof(buffer),
|
||||||
"%d. %s\n",
|
"%d. %s\n",
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_MORE)].chars());
|
tempItemName);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
option++;
|
option++;
|
||||||
@ -575,9 +630,9 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
sizeof(buffer),
|
sizeof(buffer),
|
||||||
"\\d%d. %s\n\\w",
|
"\\d%d. %s\n\\w",
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_MORE)].chars());
|
tempItemName);
|
||||||
} else {
|
} else {
|
||||||
ke::SafeSprintf(buffer, sizeof(buffer), "#. %s\n", m_OptNames[abs(MENU_MORE)].chars());
|
ke::SafeSprintf(buffer, sizeof(buffer), "#. %s\n", tempItemName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_Text = m_Text + buffer;
|
m_Text = m_Text + buffer;
|
||||||
@ -589,6 +644,19 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
|
|
||||||
if ((items_per_page && !m_NeverExit) || (m_ForceExit && numItems < 10))
|
if ((items_per_page && !m_NeverExit) || (m_ForceExit && numItems < 10))
|
||||||
{
|
{
|
||||||
|
auto exitName = m_OptNames[abs(MENU_EXIT)].chars();
|
||||||
|
|
||||||
|
if (this->useMultilingual)
|
||||||
|
{
|
||||||
|
const auto language = playerlang(player);
|
||||||
|
const auto definition = translate(this->amx, language, exitName);
|
||||||
|
|
||||||
|
if (definition)
|
||||||
|
{
|
||||||
|
exitName = definition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Visual pad has not been added yet */
|
/* Visual pad has not been added yet */
|
||||||
if (!items_per_page)
|
if (!items_per_page)
|
||||||
m_Text = m_Text + "\n";
|
m_Text = m_Text + "\n";
|
||||||
@ -601,13 +669,13 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
"%s%d. \\w%s\n",
|
"%s%d. \\w%s\n",
|
||||||
m_ItemColor.chars(),
|
m_ItemColor.chars(),
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_EXIT)].chars());
|
exitName);
|
||||||
} else {
|
} else {
|
||||||
ke::SafeSprintf(buffer,
|
ke::SafeSprintf(buffer,
|
||||||
sizeof(buffer),
|
sizeof(buffer),
|
||||||
"%d. %s\n",
|
"%d. %s\n",
|
||||||
option == 10 ? 0 : option,
|
option == 10 ? 0 : option,
|
||||||
m_OptNames[abs(MENU_EXIT)].chars());
|
exitName);
|
||||||
}
|
}
|
||||||
m_Text = m_Text + buffer;
|
m_Text = m_Text + buffer;
|
||||||
}
|
}
|
||||||
@ -620,38 +688,45 @@ const char *Menu::GetTextString(int player, page_t page, int &keys)
|
|||||||
LogError(amx, AMX_ERR_NATIVE, "Invalid menu id %d(%d)", p, g_NewMenus.length()); \
|
LogError(amx, AMX_ERR_NATIVE, "Invalid menu id %d(%d)", p, g_NewMenus.length()); \
|
||||||
return 0; }
|
return 0; }
|
||||||
|
|
||||||
//Makes a new menu handle (-1 for failure)
|
// native menu_create(const title[], const handler[], bool:ml = false);
|
||||||
//native csdm_makemenu(title[]);
|
|
||||||
static cell AMX_NATIVE_CALL menu_create(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL menu_create(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
int len;
|
enum args { arg_count, arg_title, arg_handler, arg_ml };
|
||||||
char *title = get_amxstring(amx, params[1], 0, len);
|
|
||||||
validate_menu_text(title);
|
|
||||||
char *handler = get_amxstring(amx, params[2], 1, len);
|
|
||||||
|
|
||||||
int func = registerSPForwardByName(amx, handler, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
int length;
|
||||||
|
const auto title = get_amxstring(amx, params[arg_title], 0, length);
|
||||||
|
const auto handler = get_amxstring(amx, params[arg_handler], 1, length);
|
||||||
|
const auto callback = registerSPForwardByName(amx, handler, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
||||||
|
|
||||||
if (func == -1)
|
if (callback == -1)
|
||||||
{
|
{
|
||||||
LogError(amx, AMX_ERR_NOTFOUND, "Invalid function \"%s\"", handler);
|
LogError(amx, AMX_ERR_NOTFOUND, R"(Invalid function "%s")", handler);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Menu *pMenu = new Menu(title, amx, func);
|
validate_menu_text(title);
|
||||||
|
|
||||||
|
auto pMenu = new Menu(title, amx, callback, params[arg_ml] != 0);
|
||||||
|
|
||||||
if (g_MenuFreeStack.empty())
|
if (g_MenuFreeStack.empty())
|
||||||
{
|
{
|
||||||
g_NewMenus.append(pMenu);
|
g_NewMenus.append(pMenu);
|
||||||
pMenu->thisId = (int)g_NewMenus.length() - 1;
|
|
||||||
} else {
|
pMenu->thisId = static_cast<int>(g_NewMenus.length()) - 1;
|
||||||
int pos = g_MenuFreeStack.front();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const auto position = g_MenuFreeStack.front();
|
||||||
|
|
||||||
g_MenuFreeStack.pop();
|
g_MenuFreeStack.pop();
|
||||||
g_NewMenus[pos] = pMenu;
|
g_NewMenus[position] = pMenu;
|
||||||
pMenu->thisId = pos;
|
|
||||||
|
pMenu->thisId = position;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pMenu->thisId;
|
return pMenu->thisId;
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL menu_addblank(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL menu_addblank(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
GETMENU(params[1]);
|
GETMENU(params[1]);
|
||||||
@ -809,8 +884,21 @@ static cell AMX_NATIVE_CALL menu_display(AMX *amx, cell *params)
|
|||||||
|
|
||||||
int player = params[1];
|
int player = params[1];
|
||||||
int page = params[3];
|
int page = params[3];
|
||||||
|
|
||||||
|
if (player < 1 || player > gpGlobals->maxClients)
|
||||||
|
{
|
||||||
|
LogError(amx, AMX_ERR_NATIVE, "Invalid player id %d.", player);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
CPlayer* pPlayer = GET_PLAYER_POINTER_I(player);
|
CPlayer* pPlayer = GET_PLAYER_POINTER_I(player);
|
||||||
|
|
||||||
|
if (!pPlayer->ingame)
|
||||||
|
{
|
||||||
|
LogError(amx, AMX_ERR_NATIVE, "Player %d is not in game.", player);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!CloseNewMenus(pPlayer))
|
if (!CloseNewMenus(pPlayer))
|
||||||
{
|
{
|
||||||
LogError(amx, AMX_ERR_NATIVE, "Plugin called menu_display when item=MENU_EXIT");
|
LogError(amx, AMX_ERR_NATIVE, "Plugin called menu_display when item=MENU_EXIT");
|
||||||
@ -958,6 +1046,20 @@ static cell AMX_NATIVE_CALL menu_item_setcall(AMX *amx, cell *params)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cell AMX_NATIVE_CALL menu_item_setaccess(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
GETMENU(params[1]);
|
||||||
|
|
||||||
|
menuitem *pItem = pMenu->GetMenuItem(static_cast<item_t>(params[2]));
|
||||||
|
|
||||||
|
if (!pItem)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pItem->access = params[3];
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL menu_setprop(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL menu_setprop(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
GETMENU(params[1]);
|
GETMENU(params[1]);
|
||||||
@ -981,7 +1083,7 @@ static cell AMX_NATIVE_CALL menu_setprop(AMX *amx, cell *params)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int callback = registerSPForwardByName(amx, str, FP_CELL, FP_CELL, FP_DONE);
|
int callback = registerSPForwardByName(amx, str, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
|
||||||
if (callback < 0)
|
if (callback < 0)
|
||||||
{
|
{
|
||||||
LogError(amx, AMX_ERR_NATIVE, "Function %s not present", str);
|
LogError(amx, AMX_ERR_NATIVE, "Function %s not present", str);
|
||||||
@ -995,7 +1097,7 @@ static cell AMX_NATIVE_CALL menu_setprop(AMX *amx, cell *params)
|
|||||||
}
|
}
|
||||||
case MPROP_SHOWPAGE:
|
case MPROP_SHOWPAGE:
|
||||||
{
|
{
|
||||||
pMenu->showPageNumber = (get_amxaddr(amx, params[3]) != 0);
|
pMenu->showPageNumber = *get_amxaddr(amx, params[3]) != 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MPROP_SET_NUMBER_COLOR:
|
case MPROP_SET_NUMBER_COLOR:
|
||||||
@ -1189,6 +1291,7 @@ AMX_NATIVE_INFO g_NewMenuNatives[] =
|
|||||||
{"menu_item_getinfo", menu_item_getinfo},
|
{"menu_item_getinfo", menu_item_getinfo},
|
||||||
{"menu_makecallback", menu_makecallback},
|
{"menu_makecallback", menu_makecallback},
|
||||||
{"menu_item_setcall", menu_item_setcall},
|
{"menu_item_setcall", menu_item_setcall},
|
||||||
|
{"menu_item_setaccess", menu_item_setaccess},
|
||||||
{"menu_item_setcmd", menu_item_setcmd},
|
{"menu_item_setcmd", menu_item_setcmd},
|
||||||
{"menu_item_setname", menu_item_setname},
|
{"menu_item_setname", menu_item_setname},
|
||||||
{"menu_destroy", menu_destroy},
|
{"menu_destroy", menu_destroy},
|
||||||
|
@ -95,7 +95,7 @@ typedef unsigned int page_t;
|
|||||||
class Menu
|
class Menu
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Menu(const char *title, AMX *amx, int fid);
|
Menu(const char *title, AMX *amx, int fid, bool use_ml);
|
||||||
~Menu();
|
~Menu();
|
||||||
|
|
||||||
menuitem *GetMenuItem(item_t item);
|
menuitem *GetMenuItem(item_t item);
|
||||||
@ -127,6 +127,8 @@ public:
|
|||||||
bool isDestroying;
|
bool isDestroying;
|
||||||
int pageCallback;
|
int pageCallback;
|
||||||
bool showPageNumber;
|
bool showPageNumber;
|
||||||
|
bool useMultilingual;
|
||||||
|
AMX *amx;
|
||||||
public:
|
public:
|
||||||
unsigned int items_per_page;
|
unsigned int items_per_page;
|
||||||
};
|
};
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "amxmodx.h"
|
#include "amxmodx.h"
|
||||||
#include <amxmodx_version.h>
|
#include <amxmodx_version.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
void amx_command()
|
void amx_command()
|
||||||
{
|
{
|
||||||
@ -25,7 +26,7 @@ void amx_command()
|
|||||||
if (!strcmp(cmd, "plugins") || !strcmp(cmd, "list"))
|
if (!strcmp(cmd, "plugins") || !strcmp(cmd, "list"))
|
||||||
{
|
{
|
||||||
print_srvconsole("Currently loaded plugins:\n");
|
print_srvconsole("Currently loaded plugins:\n");
|
||||||
print_srvconsole(" %-23.22s %-11.10s %-17.16s %-16.15s %-9.8s\n", "name", "version", "author", "file", "status");
|
print_srvconsole(" %-3.2s %-23.22s %-11.10s %-17.16s %-32.31s %-12.11s %-9.8s\n", "id", "name", "version", "author", "url", "file", "status");
|
||||||
|
|
||||||
int plugins = 0;
|
int plugins = 0;
|
||||||
int running = 0;
|
int running = 0;
|
||||||
@ -40,7 +41,7 @@ void amx_command()
|
|||||||
if ((*a).isValid() && !(*a).isPaused())
|
if ((*a).isValid() && !(*a).isPaused())
|
||||||
++running;
|
++running;
|
||||||
|
|
||||||
print_srvconsole(" [%3d] %-23.22s %-11.10s %-17.16s %-16.15s %-9.8s\n", plugins, (*a).getTitle(), (*a).getVersion(), (*a).getAuthor(), (*a).getName(), (*a).getStatus());
|
print_srvconsole(" [%3d] %-3i %-23.22s %-11.10s %-17.16s %-32.31s %-12.11s %-9.8s\n", plugins, (*a).getId(), (*a).getTitle(), (*a).getVersion(), (*a).getAuthor(), (*a).getUrl(), (*a).getName(), (*a).getStatus());
|
||||||
}
|
}
|
||||||
++a;
|
++a;
|
||||||
}
|
}
|
||||||
@ -63,6 +64,52 @@ void amx_command()
|
|||||||
|
|
||||||
print_srvconsole("%d plugins, %d running\n", plugins, running);
|
print_srvconsole("%d plugins, %d running\n", plugins, running);
|
||||||
}
|
}
|
||||||
|
else if (!strcmp(cmd, "plugin"))
|
||||||
|
{
|
||||||
|
if (CMD_ARGC() < 3)
|
||||||
|
{
|
||||||
|
print_srvconsole("Usage: amxx plugin [ id ]\nFor a list of plugins, use the \"amxx plugins\" command\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *pEnd;
|
||||||
|
auto id = strtol(CMD_ARGV(2), &pEnd, 10);
|
||||||
|
|
||||||
|
if (!pEnd)
|
||||||
|
{
|
||||||
|
print_srvconsole("Invalid plugin index %i.\n", id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto plugin = g_plugins.findPlugin(id);
|
||||||
|
|
||||||
|
if (plugin && plugin->isValid())
|
||||||
|
{
|
||||||
|
print_srvconsole(" Name: %s\n", plugin->getTitle());
|
||||||
|
print_srvconsole(" Version: %s\n", plugin->getVersion());
|
||||||
|
print_srvconsole(" Author: %s\n", plugin->getAuthor());
|
||||||
|
|
||||||
|
auto url = plugin->getUrl();
|
||||||
|
if (url[0])
|
||||||
|
{
|
||||||
|
print_srvconsole(" URL: %s\n", url);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto description = plugin->getDescription();
|
||||||
|
if (description[0])
|
||||||
|
{
|
||||||
|
print_srvconsole(" Description: %s\n", description);
|
||||||
|
}
|
||||||
|
|
||||||
|
print_srvconsole(" Filename: %s\n", plugin->getName());
|
||||||
|
print_srvconsole(" Status: %s\n", plugin->getStatus());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print_srvconsole("Plugin index %i not found.\n", id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (!strcmp(cmd, "pause") && CMD_ARGC() > 2)
|
else if (!strcmp(cmd, "pause") && CMD_ARGC() > 2)
|
||||||
{
|
{
|
||||||
const char* sPlugin = CMD_ARGV(2);
|
const char* sPlugin = CMD_ARGV(2);
|
||||||
@ -244,6 +291,7 @@ void amx_command()
|
|||||||
print_srvconsole(" version - display amxx version info\n");
|
print_srvconsole(" version - display amxx version info\n");
|
||||||
print_srvconsole(" gpl - print the license\n");
|
print_srvconsole(" gpl - print the license\n");
|
||||||
print_srvconsole(" plugins [ criteria ] - list plugins currently loaded or ones matching given search criteria\n");
|
print_srvconsole(" plugins [ criteria ] - list plugins currently loaded or ones matching given search criteria\n");
|
||||||
|
print_srvconsole(" plugin [ id ] - information about a plugin\n");
|
||||||
print_srvconsole(" modules - list modules currently loaded\n");
|
print_srvconsole(" modules - list modules currently loaded\n");
|
||||||
print_srvconsole(" cvars [ plugin ] [ index ] - list cvars handled by amxx or show information about a cvar if index is provided\n");
|
print_srvconsole(" cvars [ plugin ] [ index ] - list cvars handled by amxx or show information about a cvar if index is provided\n");
|
||||||
print_srvconsole(" cmds [ plugin ] - list commands registered by plugins\n");
|
print_srvconsole(" cmds [ plugin ] - list commands registered by plugins\n");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// vim: set ts=4 sw=4 tw=99 noet:
|
// vim: set ts=4 sw=4 tw=99 noet:
|
||||||
//
|
//
|
||||||
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
|
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
|
||||||
// Copyright (C) The AMX Mod X Development Team.
|
// Copyright (C) The AMX Mod X Development Team.
|
||||||
@ -210,6 +210,16 @@ void copy_amxmemory(cell* dest, cell* src, int len)
|
|||||||
*dest++=*src++;
|
*dest++=*src++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool utf8isspace(const char* string)
|
||||||
|
{
|
||||||
|
return utf8iscategory(string, 1, UTF8_CATEGORY_ISSPACE) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t utf8getspaces(const char* string)
|
||||||
|
{
|
||||||
|
return utf8iscategory(string, SIZE_MAX, UTF8_CATEGORY_ISSPACE);
|
||||||
|
}
|
||||||
|
|
||||||
char* parse_arg(char** line, int& state)
|
char* parse_arg(char** line, int& state)
|
||||||
{
|
{
|
||||||
static char arg[3072];
|
static char arg[3072];
|
||||||
@ -218,7 +228,7 @@ char* parse_arg(char** line, int& state)
|
|||||||
|
|
||||||
while (**line)
|
while (**line)
|
||||||
{
|
{
|
||||||
if (isspace(**line))
|
if (utf8isspace(*line))
|
||||||
{
|
{
|
||||||
if (state == 1)
|
if (state == 1)
|
||||||
break;
|
break;
|
||||||
@ -919,6 +929,7 @@ static cell AMX_NATIVE_CALL amx_strtok(AMX *amx, cell *params)
|
|||||||
int right_pos = 0;
|
int right_pos = 0;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
bool done_flag = false;
|
bool done_flag = false;
|
||||||
|
size_t spaces;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
//string[]
|
//string[]
|
||||||
@ -938,9 +949,9 @@ static cell AMX_NATIVE_CALL amx_strtok(AMX *amx, cell *params)
|
|||||||
{
|
{
|
||||||
if (trim && !done_flag)
|
if (trim && !done_flag)
|
||||||
{
|
{
|
||||||
if (isspace(string[i]))
|
if ((spaces = utf8getspaces(string + i) > 0))
|
||||||
{
|
{
|
||||||
while (isspace(string[++i]));
|
i += spaces;
|
||||||
done_flag = true;
|
done_flag = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -974,6 +985,7 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
|||||||
{
|
{
|
||||||
int left_pos = 0, right_pos = 0, len, pos = -1;
|
int left_pos = 0, right_pos = 0, len, pos = -1;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
|
size_t spaces;
|
||||||
|
|
||||||
char *string = get_amxstring(amx, params[1], 0, len);
|
char *string = get_amxstring(amx, params[1], 0, len);
|
||||||
char *left = new char[len + 1], *right = new char[len + 1];
|
char *left = new char[len + 1], *right = new char[len + 1];
|
||||||
@ -989,9 +1001,9 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
|||||||
int trim = params[7];
|
int trim = params[7];
|
||||||
|
|
||||||
// ltrim left
|
// ltrim left
|
||||||
if (trim & 1 && isspace(string[i]))
|
if (trim & 1 && (spaces = utf8getspaces(string)) > 0)
|
||||||
{
|
{
|
||||||
while (isspace(string[++i]));
|
i += spaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; i < (unsigned int) len; ++i)
|
for (; i < (unsigned int) len; ++i)
|
||||||
@ -1007,17 +1019,17 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rtrim left
|
// rtrim left
|
||||||
if (trim & 2 && left_pos && isspace(left[left_pos - 1]))
|
if (trim & 2 && left_pos && utf8isspace(&left[left_pos - 1]))
|
||||||
{
|
{
|
||||||
while (--left_pos >= 0 && isspace(left[left_pos]));
|
while (--left_pos >= 0 && utf8isspace(&left[left_pos]));
|
||||||
|
|
||||||
++left_pos;
|
++left_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ltrim right
|
// ltrim right
|
||||||
if (trim & 4 && isspace(string[i]))
|
if (trim & 4 && (spaces = utf8getspaces(string + i)) > 0)
|
||||||
{
|
{
|
||||||
while (isspace(string[++i]));
|
i += spaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; i < (unsigned int) len; ++i)
|
for (; i < (unsigned int) len; ++i)
|
||||||
@ -1026,9 +1038,9 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rtrim right
|
// rtrim right
|
||||||
if (trim & 8 && right_pos && isspace(right[right_pos - 1]))
|
if (trim & 8 && right_pos && utf8isspace(&right[right_pos - 1]))
|
||||||
{
|
{
|
||||||
while (--right_pos >= 0 && isspace(right[right_pos]));
|
while (--right_pos >= 0 && utf8isspace(&right[right_pos]));
|
||||||
|
|
||||||
++right_pos;
|
++right_pos;
|
||||||
}
|
}
|
||||||
@ -1058,8 +1070,12 @@ static cell AMX_NATIVE_CALL argparse(AMX *amx, cell *params)
|
|||||||
|
|
||||||
// Strip all left-hand whitespace.
|
// Strip all left-hand whitespace.
|
||||||
size_t i = start_pos;
|
size_t i = start_pos;
|
||||||
while (i < input_len && isspace(input[i]))
|
size_t spaces;
|
||||||
i++;
|
|
||||||
|
if ((spaces = utf8getspaces(input + i)) > 0)
|
||||||
|
{
|
||||||
|
i += spaces;
|
||||||
|
}
|
||||||
|
|
||||||
if (i >= input_len) {
|
if (i >= input_len) {
|
||||||
*buffer = '\0';
|
*buffer = '\0';
|
||||||
@ -1078,7 +1094,7 @@ static cell AMX_NATIVE_CALL argparse(AMX *amx, cell *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If not in quotes, and we see a space, stop.
|
// If not in quotes, and we see a space, stop.
|
||||||
if (isspace(input[i]) && !in_quote)
|
if (utf8isspace(input + i) && !in_quote)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (size_t(bufpos - buffer) < buflen)
|
if (size_t(bufpos - buffer) < buflen)
|
||||||
@ -1106,9 +1122,13 @@ static cell AMX_NATIVE_CALL strbreak(AMX *amx, cell *params) /* 5 param */
|
|||||||
int RightMax = params[5];
|
int RightMax = params[5];
|
||||||
|
|
||||||
size_t len = (size_t)_len;
|
size_t len = (size_t)_len;
|
||||||
|
size_t spaces;
|
||||||
|
|
||||||
|
if ((spaces = utf8getspaces(string)) > 0)
|
||||||
|
{
|
||||||
|
i += spaces;
|
||||||
|
}
|
||||||
|
|
||||||
while (isspace(string[i]) && i<len)
|
|
||||||
i++;
|
|
||||||
beg = i;
|
beg = i;
|
||||||
for (; i<len; i++)
|
for (; i<len; i++)
|
||||||
{
|
{
|
||||||
@ -1120,12 +1140,12 @@ static cell AMX_NATIVE_CALL strbreak(AMX *amx, cell *params) /* 5 param */
|
|||||||
if (i == len-1)
|
if (i == len-1)
|
||||||
goto do_copy;
|
goto do_copy;
|
||||||
} else {
|
} else {
|
||||||
if (isspace(string[i]) && !in_quote)
|
if (!in_quote && (spaces = utf8getspaces(string + i)) > 0)
|
||||||
{
|
{
|
||||||
do_copy:
|
do_copy:
|
||||||
size_t pos = i;
|
size_t pos = i;
|
||||||
while (isspace(string[i]))
|
i += spaces;
|
||||||
i++;
|
|
||||||
const char *start = had_quotes ? &(string[beg+1]) : &(string[beg]);
|
const char *start = had_quotes ? &(string[beg+1]) : &(string[beg]);
|
||||||
size_t _end = had_quotes ? (i==len-1 ? 1 : 2) : 0;
|
size_t _end = had_quotes ? (i==len-1 ? 1 : 2) : 0;
|
||||||
size_t end = (pos - _end > (size_t)LeftMax) ? (size_t)LeftMax : pos - _end;
|
size_t end = (pos - _end > (size_t)LeftMax) ? (size_t)LeftMax : pos - _end;
|
||||||
@ -1367,18 +1387,27 @@ static cell AMX_NATIVE_CALL amx_strlen(AMX *amx, cell *params)
|
|||||||
|
|
||||||
static cell AMX_NATIVE_CALL amx_trim(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL amx_trim(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
int len, newlen;
|
int length;
|
||||||
char *str = get_amxstring(amx, params[1], 0, len);
|
auto string = get_amxstring(amx, params[1], 0, length);
|
||||||
|
|
||||||
UTIL_TrimLeft(str);
|
auto leftSpaces = utf8getspaces(string);
|
||||||
UTIL_TrimRight(str);
|
auto rightSpaces = 0u;
|
||||||
|
|
||||||
newlen = strlen(str);
|
auto originalLength = length;
|
||||||
len -= newlen;
|
|
||||||
|
|
||||||
set_amxstring(amx, params[1], str, newlen);
|
if (leftSpaces < size_t(length))
|
||||||
|
{
|
||||||
|
while (--length >= 0 && utf8isspace(string + length))
|
||||||
|
{
|
||||||
|
++rightSpaces;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return len;
|
auto totalSpaces = leftSpaces + rightSpaces;
|
||||||
|
|
||||||
|
set_amxstring(amx, params[1], string + leftSpaces, originalLength - totalSpaces);
|
||||||
|
|
||||||
|
return totalSpaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL n_strcat(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL n_strcat(AMX *amx, cell *params)
|
||||||
|
@ -44,7 +44,12 @@ cell destroyParser(cell *handle)
|
|||||||
// native SMCParser:SMC_CreateParser();
|
// native SMCParser:SMC_CreateParser();
|
||||||
static cell AMX_NATIVE_CALL SMC_CreateParser(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL SMC_CreateParser(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
return createParser();
|
const auto handle = createParser();
|
||||||
|
const auto parseInfo = TextParsersHandles.lookup(handle);
|
||||||
|
|
||||||
|
parseInfo->handle = handle;
|
||||||
|
|
||||||
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
// native SMC_SetParseStart(SMCParser:handle, const func[]);
|
// native SMC_SetParseStart(SMCParser:handle, const func[]);
|
||||||
@ -224,7 +229,12 @@ static cell AMX_NATIVE_CALL SMC_DestroyParser(AMX *amx, cell *params)
|
|||||||
// native INIParser:INI_CreateParser();
|
// native INIParser:INI_CreateParser();
|
||||||
static cell AMX_NATIVE_CALL INI_CreateParser(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL INI_CreateParser(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
return createParser();
|
const auto handle = createParser();
|
||||||
|
const auto parseInfo = TextParsersHandles.lookup(handle);
|
||||||
|
|
||||||
|
parseInfo->handle = handle;
|
||||||
|
|
||||||
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
// native bool:INI_ParseFile(INIParser:handle, const file[], &line = 0, &col = 0, any:data = 0);
|
// native bool:INI_ParseFile(INIParser:handle, const file[], &line = 0, &col = 0, any:data = 0);
|
||||||
|
@ -260,40 +260,54 @@ void UTIL_DHudMessage(edict_t *pEntity, const hudtextparms_t &textparms, const c
|
|||||||
MESSAGE_END();
|
MESSAGE_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* warning - buffer of msg must be longer than 190 chars!
|
/**
|
||||||
(here in AMX it is always longer) */
|
* User message size limit: 192 bytes
|
||||||
|
* Actual available size: 188 bytes (with EOS)
|
||||||
|
*/
|
||||||
void UTIL_ClientPrint(edict_t *pEntity, int msg_dest, char *msg)
|
void UTIL_ClientPrint(edict_t *pEntity, int msg_dest, char *msg)
|
||||||
{
|
{
|
||||||
if (!gmsgTextMsg)
|
if (!gmsgTextMsg)
|
||||||
return; // :TODO: Maybe output a warning log?
|
return; // :TODO: Maybe output a warning log?
|
||||||
|
|
||||||
char c = msg[190];
|
const auto canUseFormatString = g_official_mod && !g_bmod_dod; // Temporary exclusion for DoD until officially supported
|
||||||
msg[190] = 0; // truncate without checking with strlen()
|
const auto index = canUseFormatString ? 187 : 190;
|
||||||
|
char c = msg[index];
|
||||||
|
msg[index] = 0; // truncate without checking with strlen()
|
||||||
|
|
||||||
if (pEntity)
|
if (pEntity)
|
||||||
MESSAGE_BEGIN(MSG_ONE, gmsgTextMsg, NULL, pEntity);
|
MESSAGE_BEGIN(MSG_ONE, gmsgTextMsg, NULL, pEntity);
|
||||||
else
|
else
|
||||||
MESSAGE_BEGIN(MSG_BROADCAST, gmsgTextMsg);
|
MESSAGE_BEGIN(MSG_BROADCAST, gmsgTextMsg);
|
||||||
|
|
||||||
WRITE_BYTE(msg_dest);
|
WRITE_BYTE(msg_dest); // 1 byte
|
||||||
WRITE_STRING(msg);
|
if (canUseFormatString)
|
||||||
MESSAGE_END();
|
WRITE_STRING("%s"); // 3 bytes (2 + EOS)
|
||||||
msg[190] = c;
|
WRITE_STRING(msg); // max 188 bytes (187 + EOS)
|
||||||
|
MESSAGE_END(); // max 192 bytes
|
||||||
|
msg[index] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User message size limit: 192 bytes
|
||||||
|
* Actual available size: 188 bytes (with EOS)
|
||||||
|
*/
|
||||||
void UTIL_ClientSayText(edict_t *pEntity, int sender, char *msg)
|
void UTIL_ClientSayText(edict_t *pEntity, int sender, char *msg)
|
||||||
{
|
{
|
||||||
if (!gmsgSayText)
|
if (!gmsgSayText)
|
||||||
return; // :TODO: Maybe output a warning log?
|
return; // :TODO: Maybe output a warning log?
|
||||||
|
|
||||||
char c = msg[190];
|
const auto canUseFormatString = g_official_mod && !g_bmod_dod; // Temporary exclusion for DoD until officially supported
|
||||||
msg[190] = 0; // truncate without checking with strlen()
|
const auto index = canUseFormatString ? 187 : 190;
|
||||||
|
char c = msg[index];
|
||||||
|
msg[index] = 0; // truncate without checking with strlen()
|
||||||
|
|
||||||
MESSAGE_BEGIN(MSG_ONE, gmsgSayText, NULL, pEntity);
|
MESSAGE_BEGIN(MSG_ONE, gmsgSayText, NULL, pEntity);
|
||||||
WRITE_BYTE(sender);
|
WRITE_BYTE(sender); // 1 byte
|
||||||
WRITE_STRING(msg);
|
if (canUseFormatString)
|
||||||
MESSAGE_END();
|
WRITE_STRING("%s"); // 3 bytes (2 + EOS)
|
||||||
msg[190] = c;
|
WRITE_STRING(msg); // max 188 bytes (187 + EOS)
|
||||||
|
MESSAGE_END(); // max 192 bytes
|
||||||
|
msg[index] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UTIL_TeamInfo(edict_t *pEntity, int playerIndex, const char *pszTeamName)
|
void UTIL_TeamInfo(edict_t *pEntity, int playerIndex, const char *pszTeamName)
|
||||||
|
@ -12,7 +12,7 @@ install:
|
|||||||
- git clone https://github.com/alliedmodders/ambuild
|
- git clone https://github.com/alliedmodders/ambuild
|
||||||
- git clone https://github.com/alliedmodders/metamod-hl1
|
- git clone https://github.com/alliedmodders/metamod-hl1
|
||||||
- git clone https://github.com/alliedmodders/hlsdk
|
- git clone https://github.com/alliedmodders/hlsdk
|
||||||
- ps: Start-FileDownload 'https://downloads.mysql.com/archives/get/file/mysql-connector-c-6.1.1-win32.zip'
|
- ps: Start-FileDownload 'https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.1-win32.zip'
|
||||||
- 7z x mysql-connector-c-6.1.1-win32.zip -o"mysql"
|
- 7z x mysql-connector-c-6.1.1-win32.zip -o"mysql"
|
||||||
- cd mysql
|
- cd mysql
|
||||||
- dir
|
- dir
|
||||||
@ -29,4 +29,4 @@ build_script:
|
|||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- c:\python27\python ../configure.py --enable-optimize --nasm="C:\nasm\nasm-2.13.03\nasm.exe"
|
- c:\python27\python ../configure.py --enable-optimize --nasm="C:\nasm\nasm-2.13.03\nasm.exe"
|
||||||
- c:\python27\scripts\ambuild
|
- ambuild
|
||||||
|
@ -343,22 +343,23 @@ char *FindFileName(int argc, char **argv)
|
|||||||
void show_help()
|
void show_help()
|
||||||
{
|
{
|
||||||
printf("Options:\n");
|
printf("Options:\n");
|
||||||
printf("\t-A<num> alignment in bytes of the data segment and the stack\n");
|
printf("\t-A<num> alignment in bytes of the data segment and the stack\n");
|
||||||
printf("\t-a output assembler code\n");
|
printf("\t-a output assembler code\n");
|
||||||
printf("\t-C[+/-] compact encoding for output file (default=-)\n");
|
printf("\t-C[+/-] compact encoding for output file (default=-)\n");
|
||||||
printf("\t-c<name> codepage name or number; e.g. 1252 for Windows Latin-1\n");
|
printf("\t-c<name> codepage name or number; e.g. 1252 for Windows Latin-1\n");
|
||||||
printf("\t-Dpath active directory path\n");
|
printf("\t-Dpath active directory path\n");
|
||||||
printf("\t-d0 no symbolic information, no run-time checks\n");
|
printf("\t-d0 no symbolic information, no run-time checks\n");
|
||||||
printf("\t-d1 [default] run-time checks, no symbolic information\n");
|
printf("\t-d1 [default] run-time checks, no symbolic information\n");
|
||||||
printf("\t-d2 full debug information and dynamic checking\n");
|
printf("\t-d2 full debug information and dynamic checking\n");
|
||||||
printf("\t-d3 full debug information, dynamic checking, no optimization\n");
|
printf("\t-d3 full debug information, dynamic checking, no optimization\n");
|
||||||
printf("\t-e<name> set name of error file (quiet compile)\n");
|
printf("\t-e<name> set name of error file (quiet compile)\n");
|
||||||
printf("\t-H<hwnd> window handle to send a notification message on finish\n");
|
printf("\t-H<hwnd> window handle to send a notification message on finish\n");
|
||||||
printf("\t-i<name> path for include files\n");
|
printf("\t-i<name> path for include files\n");
|
||||||
printf("\t-l create list file (preprocess only)\n");
|
printf("\t-l create list file (preprocess only)\n");
|
||||||
printf("\t-o<name> set base name of output file\n");
|
printf("\t-o<name> set base name of output file\n");
|
||||||
printf("\t-p<name> set name of \"prefix\" file\n");
|
printf("\t-p<name> set name of \"prefix\" file\n");
|
||||||
printf("\t-r[name] write cross reference report to console or to specified file\n");
|
printf("\t-r[name] write cross reference report to console or to specified file\n");
|
||||||
|
printf("\t-sui[+/-] show stack usage info\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
#define CTRL_CHAR '^' /* default control character */
|
#define CTRL_CHAR '^' /* default control character */
|
||||||
#define sCHARBITS 8 /* size of a packed character */
|
#define sCHARBITS 8 /* size of a packed character */
|
||||||
|
|
||||||
#define sDIMEN_MAX 3 /* maximum number of array dimensions */
|
#define sDIMEN_MAX 4 /* maximum number of array dimensions */
|
||||||
#define sLINEMAX 4095 /* input line length (in characters) */
|
#define sLINEMAX 4095 /* input line length (in characters) */
|
||||||
#define sCOMP_STACK 32 /* maximum nesting of #if .. #endif sections */
|
#define sCOMP_STACK 32 /* maximum nesting of #if .. #endif sections */
|
||||||
#define sDEF_LITMAX 500 /* initial size of the literal pool, in "cells" */
|
#define sDEF_LITMAX 500 /* initial size of the literal pool, in "cells" */
|
||||||
@ -280,6 +280,12 @@ typedef struct s_stringpair {
|
|||||||
char *documentation;
|
char *documentation;
|
||||||
} stringpair;
|
} stringpair;
|
||||||
|
|
||||||
|
typedef struct s_valuepair {
|
||||||
|
struct s_valuepair *next;
|
||||||
|
long first;
|
||||||
|
long second;
|
||||||
|
} valuepair;
|
||||||
|
|
||||||
/* macros for code generation */
|
/* macros for code generation */
|
||||||
#define opcodes(n) ((n)*sizeof(cell)) /* opcode size */
|
#define opcodes(n) ((n)*sizeof(cell)) /* opcode size */
|
||||||
#define opargs(n) ((n)*sizeof(cell)) /* size of typical argument */
|
#define opargs(n) ((n)*sizeof(cell)) /* size of typical argument */
|
||||||
@ -700,6 +706,9 @@ SC_FUNC void delete_docstringtable(void);
|
|||||||
SC_FUNC stringlist *insert_autolist(char *string);
|
SC_FUNC stringlist *insert_autolist(char *string);
|
||||||
SC_FUNC char *get_autolist(int index);
|
SC_FUNC char *get_autolist(int index);
|
||||||
SC_FUNC void delete_autolisttable(void);
|
SC_FUNC void delete_autolisttable(void);
|
||||||
|
SC_FUNC valuepair *push_heaplist(long first, long second);
|
||||||
|
SC_FUNC int popfront_heaplist(long *first, long *second);
|
||||||
|
SC_FUNC void delete_heaplisttable(void);
|
||||||
SC_FUNC stringlist *insert_dbgfile(const char *filename);
|
SC_FUNC stringlist *insert_dbgfile(const char *filename);
|
||||||
SC_FUNC stringlist *insert_dbgline(int linenr);
|
SC_FUNC stringlist *insert_dbgline(int linenr);
|
||||||
SC_FUNC stringlist *insert_dbgsymbol(symbol *sym);
|
SC_FUNC stringlist *insert_dbgsymbol(symbol *sym);
|
||||||
@ -726,8 +735,6 @@ int mfputs(MEMFILE *mf,char *string);
|
|||||||
SC_FUNC int cp_path(const char *root,const char *directory);
|
SC_FUNC int cp_path(const char *root,const char *directory);
|
||||||
SC_FUNC int cp_set(const char *name);
|
SC_FUNC int cp_set(const char *name);
|
||||||
SC_FUNC cell cp_translate(const unsigned char *string,const unsigned char **endptr);
|
SC_FUNC cell cp_translate(const unsigned char *string,const unsigned char **endptr);
|
||||||
SC_FUNC cell get_utf8_char(const unsigned char *string,const unsigned char **endptr);
|
|
||||||
SC_FUNC int scan_utf8(FILE *fp,const char *filename);
|
|
||||||
|
|
||||||
/* function prototypes in SCSTATE.C */
|
/* function prototypes in SCSTATE.C */
|
||||||
SC_FUNC constvalue *automaton_add(const char *name);
|
SC_FUNC constvalue *automaton_add(const char *name);
|
||||||
@ -803,9 +810,9 @@ SC_VDECL int sc_status; /* read/write status */
|
|||||||
SC_VDECL int sc_rationaltag; /* tag for rational numbers */
|
SC_VDECL int sc_rationaltag; /* tag for rational numbers */
|
||||||
SC_VDECL int rational_digits; /* number of fractional digits */
|
SC_VDECL int rational_digits; /* number of fractional digits */
|
||||||
SC_VDECL int sc_allowproccall;/* allow/detect tagnames in lex() */
|
SC_VDECL int sc_allowproccall;/* allow/detect tagnames in lex() */
|
||||||
SC_VDECL short sc_is_utf8; /* is this source file in UTF-8 encoding */
|
|
||||||
SC_VDECL char *pc_deprecate; /* if non-NULL, mark next declaration as deprecated */
|
SC_VDECL char *pc_deprecate; /* if non-NULL, mark next declaration as deprecated */
|
||||||
SC_VDECL int sc_warnings_are_errors;
|
SC_VDECL int sc_warnings_are_errors;
|
||||||
|
SC_VDECL int sc_stkusageinfo; /* show stack usage info? */
|
||||||
|
|
||||||
SC_VDECL constvalue sc_automaton_tab; /* automaton table */
|
SC_VDECL constvalue sc_automaton_tab; /* automaton table */
|
||||||
SC_VDECL constvalue sc_state_tab; /* state table */
|
SC_VDECL constvalue sc_state_tab; /* state table */
|
||||||
|
@ -628,6 +628,7 @@ int pc_compile(int argc, char *argv[])
|
|||||||
/* reset "defined" flag of all functions and global variables */
|
/* reset "defined" flag of all functions and global variables */
|
||||||
reduce_referrers(&glbtab);
|
reduce_referrers(&glbtab);
|
||||||
delete_symbols(&glbtab,0,TRUE,FALSE);
|
delete_symbols(&glbtab,0,TRUE,FALSE);
|
||||||
|
delete_heaplisttable();
|
||||||
#if !defined NO_DEFINE
|
#if !defined NO_DEFINE
|
||||||
delete_substtable();
|
delete_substtable();
|
||||||
inst_datetime_defines();
|
inst_datetime_defines();
|
||||||
@ -755,14 +756,55 @@ cleanup:
|
|||||||
|
|
||||||
#if !defined SC_LIGHT
|
#if !defined SC_LIGHT
|
||||||
if (errnum==0 && strlen(errfname)==0) {
|
if (errnum==0 && strlen(errfname)==0) {
|
||||||
int flag_exceed=0;
|
int recursion = 0, flag_exceed = 0;
|
||||||
if (sc_amxlimit > 0 && (long)(hdrsize+code_idx+glb_declared*sizeof(cell)+sc_stksize*sizeof(cell)) >= sc_amxlimit)
|
long stacksize = 0L;
|
||||||
flag_exceed=1;
|
unsigned long maxStackUsage = 0L;
|
||||||
if ((sc_debug & sSYMBOLIC)!=0 || verbosity>=2 || flag_exceed) {
|
unsigned long dynamicStackSizeLimit = (long)sc_stksize * sizeof(cell);
|
||||||
|
|
||||||
|
if (sc_amxlimit > 0) {
|
||||||
|
long totalsize = hdrsize + code_idx + glb_declared * sizeof(cell) + dynamicStackSizeLimit;
|
||||||
|
if (totalsize >= sc_amxlimit)
|
||||||
|
flag_exceed = 1;
|
||||||
|
} /* if */
|
||||||
|
|
||||||
|
/* if */
|
||||||
|
if(sc_stkusageinfo) {
|
||||||
|
stacksize = max_stacksize(&glbtab, &recursion);
|
||||||
|
maxStackUsage = stacksize * sizeof(cell);
|
||||||
|
|
||||||
|
if (recursion) {
|
||||||
|
pc_printf("Note: estimated max. usage: unknown, due to recursion\n");
|
||||||
|
} /* if */
|
||||||
|
else if (maxStackUsage >= dynamicStackSizeLimit) {
|
||||||
|
pc_printf("Note: estimated max. stack usage is %ld cells %ld bytes, limit %ld bytes\n", stacksize, maxStackUsage, dynamicStackSizeLimit);
|
||||||
|
}
|
||||||
|
} /* if */
|
||||||
|
|
||||||
|
/* if */
|
||||||
|
/* Note: Seems like `stacksize + 32 >= (long)sc_stksize` condition in original compiler invented to show stack usage warning if it's exceeded, that's why it's defined */
|
||||||
|
if ((sc_debug & sSYMBOLIC)!=0 || verbosity>=2 || /* stacksize + 32 >= (long)sc_stksize || */ flag_exceed) {
|
||||||
pc_printf("Header size: %8ld bytes\n", (long)hdrsize);
|
pc_printf("Header size: %8ld bytes\n", (long)hdrsize);
|
||||||
pc_printf("Code size: %8ld bytes\n", (long)code_idx);
|
pc_printf("Code size: %8ld bytes\n", (long)code_idx);
|
||||||
pc_printf("Data size: %8ld bytes\n", (long)glb_declared*sizeof(cell));
|
pc_printf("Data size: %8ld bytes\n", (long)glb_declared*sizeof(cell));
|
||||||
pc_printf("Stack/heap size: %8ld bytes\n", (long)sc_stksize*sizeof(cell));
|
pc_printf("Stack/heap size: %8ld bytes", dynamicStackSizeLimit);
|
||||||
|
|
||||||
|
if(sc_stkusageinfo) {
|
||||||
|
pc_printf(" | estimated max. usage");
|
||||||
|
|
||||||
|
/* if */
|
||||||
|
if (recursion) {
|
||||||
|
pc_printf(": unknown, due to recursion\n");
|
||||||
|
}
|
||||||
|
/* else if ((pc_memflags & suSLEEP_INSTR) != 0)
|
||||||
|
pc_printf(": unknown, due to the \"sleep\" instruction\n");*/
|
||||||
|
else {
|
||||||
|
pc_printf("=%ld cells (%ld bytes)\n", stacksize, maxStackUsage);
|
||||||
|
} /* if */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pc_printf("\n");
|
||||||
|
} /* if */
|
||||||
|
|
||||||
pc_printf("Total requirements:%8ld bytes\n", (long)hdrsize+(long)code_idx+(long)glb_declared*sizeof(cell)+(long)sc_stksize*sizeof(cell));
|
pc_printf("Total requirements:%8ld bytes\n", (long)hdrsize+(long)code_idx+(long)glb_declared*sizeof(cell)+(long)sc_stksize*sizeof(cell));
|
||||||
} /* if */
|
} /* if */
|
||||||
if (flag_exceed)
|
if (flag_exceed)
|
||||||
@ -805,6 +847,7 @@ cleanup:
|
|||||||
free(sc_documentation);
|
free(sc_documentation);
|
||||||
#endif
|
#endif
|
||||||
delete_autolisttable();
|
delete_autolisttable();
|
||||||
|
delete_heaplisttable();
|
||||||
if (errnum!=0) {
|
if (errnum!=0) {
|
||||||
if (strlen(errfname)==0)
|
if (strlen(errfname)==0)
|
||||||
pc_printf("\n%d Error%s.\n",errnum,(errnum>1) ? "s" : "");
|
pc_printf("\n%d Error%s.\n",errnum,(errnum>1) ? "s" : "");
|
||||||
@ -960,6 +1003,8 @@ static void initglobals(void)
|
|||||||
sc_documentation=NULL;
|
sc_documentation=NULL;
|
||||||
sc_makereport=FALSE; /* do not generate a cross-reference report */
|
sc_makereport=FALSE; /* do not generate a cross-reference report */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
sc_stkusageinfo=FALSE;/* stack usage info disabled by default */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set_extension
|
/* set_extension
|
||||||
@ -1022,6 +1067,8 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
const char *ptr;
|
const char *ptr;
|
||||||
int arg,i,isoption;
|
int arg,i,isoption;
|
||||||
|
|
||||||
|
static const char stackusageinfo[4] = { 's', 'u', 'i', '\0' };
|
||||||
|
|
||||||
for (arg=1; arg<argc; arg++) {
|
for (arg=1; arg<argc; arg++) {
|
||||||
#if DIRSEP_CHAR=='/'
|
#if DIRSEP_CHAR=='/'
|
||||||
isoption= argv[arg][0]=='-';
|
isoption= argv[arg][0]=='-';
|
||||||
@ -1150,9 +1197,18 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
|
|||||||
else
|
else
|
||||||
about();
|
about();
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's': {
|
||||||
|
if(strlen(ptr) >= (sizeof(stackusageinfo) - 1)) {
|
||||||
|
if(*(ptr+1) == stackusageinfo[1] && *(ptr+2) == stackusageinfo[2]) {
|
||||||
|
ptr += 2;
|
||||||
|
sc_stkusageinfo = toggle_option(ptr, sc_stkusageinfo);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
skipinput=atoi(option_value(ptr));
|
skipinput=atoi(option_value(ptr));
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case 't':
|
case 't':
|
||||||
i=atoi(option_value(ptr));
|
i=atoi(option_value(ptr));
|
||||||
if (i>0)
|
if (i>0)
|
||||||
@ -1406,43 +1462,44 @@ static void about(void)
|
|||||||
setcaption();
|
setcaption();
|
||||||
pc_printf("Usage: pawncc <filename> [filename...] [options]\n\n");
|
pc_printf("Usage: pawncc <filename> [filename...] [options]\n\n");
|
||||||
pc_printf("Options:\n");
|
pc_printf("Options:\n");
|
||||||
pc_printf(" -A<num> alignment in bytes of the data segment and the stack\n");
|
pc_printf(" -A<num> alignment in bytes of the data segment and the stack\n");
|
||||||
pc_printf(" -a output assembler code\n");
|
pc_printf(" -a output assembler code\n");
|
||||||
#if AMX_COMPACTMARGIN > 2
|
#if AMX_COMPACTMARGIN > 2
|
||||||
pc_printf(" -C[+/-] compact encoding for output file (default=%c)\n", sc_compress ? '+' : '-');
|
pc_printf(" -C[+/-] compact encoding for output file (default=%c)\n", sc_compress ? '+' : '-');
|
||||||
#endif
|
#endif
|
||||||
pc_printf(" -c<name> codepage name or number; e.g. 1252 for Windows Latin-1\n");
|
pc_printf(" -c<name> codepage name or number; e.g. 1252 for Windows Latin-1\n");
|
||||||
#if defined dos_setdrive
|
#if defined dos_setdrive
|
||||||
pc_printf(" -Dpath active directory path\n");
|
pc_printf(" -Dpath active directory path\n");
|
||||||
#endif
|
#endif
|
||||||
pc_printf(" -d0 no symbolic information, no run-time checks\n");
|
pc_printf(" -d0 no symbolic information, no run-time checks\n");
|
||||||
pc_printf(" -d1 [default] run-time checks, no symbolic information\n");
|
pc_printf(" -d1 [default] run-time checks, no symbolic information\n");
|
||||||
pc_printf(" -d2 full debug information and dynamic checking\n");
|
pc_printf(" -d2 full debug information and dynamic checking\n");
|
||||||
pc_printf(" -d3 full debug information, dynamic checking, no optimization\n");
|
pc_printf(" -d3 full debug information, dynamic checking, no optimization\n");
|
||||||
pc_printf(" -e<name> set name of error file (quiet compile)\n");
|
pc_printf(" -e<name> set name of error file (quiet compile)\n");
|
||||||
#if defined __WIN32__ || defined _WIN32 || defined _Windows
|
#if defined __WIN32__ || defined _WIN32 || defined _Windows
|
||||||
pc_printf(" -H<hwnd> window handle to send a notification message on finish\n");
|
pc_printf(" -H<hwnd> window handle to send a notification message on finish\n");
|
||||||
#endif
|
#endif
|
||||||
pc_printf(" -i<name> path for include files\n");
|
pc_printf(" -i<name> path for include files\n");
|
||||||
pc_printf(" -l create list file (preprocess only)\n");
|
pc_printf(" -l create list file (preprocess only)\n");
|
||||||
pc_printf(" -o<name> set base name of (P-code) output file\n");
|
pc_printf(" -o<name> set base name of (P-code) output file\n");
|
||||||
pc_printf(" -p<name> set name of \"prefix\" file\n");
|
pc_printf(" -p<name> set name of \"prefix\" file\n");
|
||||||
#if !defined SC_LIGHT
|
#if !defined SC_LIGHT
|
||||||
pc_printf(" -r[name] write cross reference report to console or to specified file\n");
|
pc_printf(" -r[name] write cross reference report to console or to specified file\n");
|
||||||
#endif
|
#endif
|
||||||
pc_printf(" -S<num> stack/heap size in cells (default=%d)\n",(int)sc_stksize);
|
pc_printf(" -S<num> stack/heap size in cells (default=%d)\n",(int)sc_stksize);
|
||||||
pc_printf(" -s<num> skip lines from the input file\n");
|
pc_printf(" -s<num> skip lines from the input file\n");
|
||||||
pc_printf(" -t<num> TAB indent size (in character positions, default=%d)\n",sc_tabsize);
|
pc_printf(" -sui[+/-] show stack usage info\n");
|
||||||
pc_printf(" -v<num> verbosity level; 0=quiet, 1=normal, 2=verbose (default=%d)\n",verbosity);
|
pc_printf(" -t<num> TAB indent size (in character positions, default=%d)\n",sc_tabsize);
|
||||||
pc_printf(" -w<num> disable a specific warning by its number\n");
|
pc_printf(" -v<num> verbosity level; 0=quiet, 1=normal, 2=verbose (default=%d)\n",verbosity);
|
||||||
pc_printf(" -E treat warnings as errors\n");
|
pc_printf(" -w<num> disable a specific warning by its number\n");
|
||||||
pc_printf(" -X<num> abstract machine size limit in bytes\n");
|
pc_printf(" -E treat warnings as errors\n");
|
||||||
pc_printf(" -\\ use '\\' for escape characters\n");
|
pc_printf(" -X<num> abstract machine size limit in bytes\n");
|
||||||
pc_printf(" -^ use '^' for escape characters\n");
|
pc_printf(" -\\ use '\\' for escape characters\n");
|
||||||
pc_printf(" -;[+/-] require a semicolon to end each statement (default=%c)\n", sc_needsemicolon ? '+' : '-');
|
pc_printf(" -^ use '^' for escape characters\n");
|
||||||
pc_printf(" -([+/-] require parantheses for function invocation (default=%c)\n", optproccall ? '-' : '+');
|
pc_printf(" -;[+/-] require a semicolon to end each statement (default=%c)\n", sc_needsemicolon ? '+' : '-');
|
||||||
pc_printf(" sym=val define constant \"sym\" with value \"val\"\n");
|
pc_printf(" -([+/-] require parantheses for function invocation (default=%c)\n", optproccall ? '-' : '+');
|
||||||
pc_printf(" sym= define constant \"sym\" with value 0\n");
|
pc_printf(" sym=val define constant \"sym\" with value \"val\"\n");
|
||||||
|
pc_printf(" sym= define constant \"sym\" with value 0\n");
|
||||||
#if defined __WIN32__ || defined _WIN32 || defined _Windows || defined __MSDOS__
|
#if defined __WIN32__ || defined _WIN32 || defined _Windows || defined __MSDOS__
|
||||||
pc_printf("\nOptions may start with a dash or a slash; the options \"-d0\" and \"/d0\" are\n");
|
pc_printf("\nOptions may start with a dash or a slash; the options \"-d0\" and \"/d0\" are\n");
|
||||||
pc_printf("equivalent.\n");
|
pc_printf("equivalent.\n");
|
||||||
@ -2170,53 +2227,48 @@ static cell calc_arraysize(int dim[],int numdim,int cur)
|
|||||||
return dim[cur]+(dim[cur]*calc_arraysize(dim,numdim,cur+1));
|
return dim[cur]+(dim[cur]*calc_arraysize(dim,numdim,cur+1));
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell adjust_indirectiontables(int dim[],int numdim,int cur,cell increment,
|
static void adjust_indirectiontables(int dim[],int numdim,int startlit,
|
||||||
int startlit,constvalue *lastdim,int *skipdim)
|
constvalue *lastdim,int *skipdim)
|
||||||
{
|
{
|
||||||
static int base;
|
static int base;
|
||||||
int d;
|
int cur;
|
||||||
|
int i,d;
|
||||||
cell accum;
|
cell accum;
|
||||||
|
cell size;
|
||||||
|
|
||||||
assert(cur>=0 && cur<numdim);
|
assert(startlit==-1 || startlit>=0 && startlit<=litidx);
|
||||||
assert(increment>=0);
|
base=startlit;
|
||||||
assert(cur>0 && startlit==-1 || startlit>=0 && startlit<=litidx);
|
size=1;
|
||||||
if (cur==0)
|
for (cur=0; cur<numdim-1; cur++) {
|
||||||
base=startlit;
|
/* 2 or more dimensions left, fill in an indirection vector */
|
||||||
if (cur==numdim-1)
|
if (dim[cur+1]>0) {
|
||||||
return 0;
|
for (i=0; i<size; i++)
|
||||||
/* 2 or more dimensions left, fill in an indirection vector */
|
for (d=0; d<dim[cur]; d++)
|
||||||
assert(dim[cur]>0);
|
litq[base++]=(size*dim[cur]+(dim[cur+1]-1)*(dim[cur]*i+d)) * sizeof(cell);
|
||||||
if (dim[cur+1]>0) {
|
} else {
|
||||||
for (d=0; d<dim[cur]; d++)
|
/* final dimension is variable length */
|
||||||
litq[base++]=(dim[cur]+d*(dim[cur+1]-1)+increment) * sizeof(cell);
|
constvalue *ld;
|
||||||
accum=dim[cur]*(dim[cur+1]-1);
|
assert(dim[cur+1]==0);
|
||||||
} else {
|
assert(lastdim!=NULL);
|
||||||
/* final dimension is variable length */
|
assert(skipdim!=NULL);
|
||||||
constvalue *ld;
|
accum=0;
|
||||||
assert(dim[cur+1]==0);
|
for (i=0; i<size; i++) {
|
||||||
assert(lastdim!=NULL);
|
/* skip the final dimension sizes for all earlier major dimensions */
|
||||||
assert(skipdim!=NULL);
|
for (d=0,ld=lastdim->next; d<*skipdim; d++,ld=ld->next) {
|
||||||
accum=0;
|
assert(ld!=NULL);
|
||||||
/* skip the final dimension sizes for all earlier major dimensions */
|
} /* for */
|
||||||
for (d=0,ld=lastdim->next; d<*skipdim; d++,ld=ld->next) {
|
for (d=0; d<dim[cur]; d++) {
|
||||||
assert(ld!=NULL);
|
assert(ld!=NULL);
|
||||||
} /* for */
|
assert(strtol(ld->name,NULL,16)==d);
|
||||||
for (d=0; d<dim[cur]; d++) {
|
litq[base++]=(size*dim[cur]+accum) * sizeof(cell);
|
||||||
assert(ld!=NULL);
|
accum+=ld->value-1;
|
||||||
assert(strtol(ld->name,NULL,16)==d);
|
*skipdim+=1;
|
||||||
litq[base++]=(dim[cur]+accum+increment) * sizeof(cell);
|
ld=ld->next;
|
||||||
accum+=ld->value-1;
|
} /* for */
|
||||||
*skipdim+=1;
|
} /* for */
|
||||||
ld=ld->next;
|
} /* if */
|
||||||
} /* for */
|
size*=dim[cur];
|
||||||
} /* if */
|
} /* for */
|
||||||
/* create the indirection tables for the lower level */
|
|
||||||
if (cur+2<numdim) { /* are there at least 2 dimensions below this one? */
|
|
||||||
increment+=(dim[cur]-1)*dim[cur+1]; /* this many indirection tables follow */
|
|
||||||
for (d=0; d<dim[cur]; d++)
|
|
||||||
increment+=adjust_indirectiontables(dim,numdim,cur+1,increment,-1,lastdim,skipdim);
|
|
||||||
} /* if */
|
|
||||||
return accum;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* initials
|
/* initials
|
||||||
@ -2274,7 +2326,7 @@ static void initials2(int ident,int tag,cell *size,int dim[],int numdim,
|
|||||||
for (tablesize=calc_arraysize(dim,numdim-1,0); tablesize>0; tablesize--)
|
for (tablesize=calc_arraysize(dim,numdim-1,0); tablesize>0; tablesize--)
|
||||||
litadd(0);
|
litadd(0);
|
||||||
if (dim[numdim-1]!=0) /* error 9 has already been given */
|
if (dim[numdim-1]!=0) /* error 9 has already been given */
|
||||||
adjust_indirectiontables(dim,numdim,0,0,curlit,NULL,NULL);
|
adjust_indirectiontables(dim,numdim,curlit,NULL,NULL);
|
||||||
} /* if */
|
} /* if */
|
||||||
return;
|
return;
|
||||||
} /* if */
|
} /* if */
|
||||||
@ -2340,7 +2392,7 @@ static void initials2(int ident,int tag,cell *size,int dim[],int numdim,
|
|||||||
* of the array and we can properly adjust the indirection vectors
|
* of the array and we can properly adjust the indirection vectors
|
||||||
*/
|
*/
|
||||||
if (err==0)
|
if (err==0)
|
||||||
adjust_indirectiontables(dim,numdim,0,0,curlit,&lastdim,&skipdim);
|
adjust_indirectiontables(dim,numdim,curlit,&lastdim,&skipdim);
|
||||||
delete_consttable(&lastdim); /* clear list of minor dimension sizes */
|
delete_consttable(&lastdim); /* clear list of minor dimension sizes */
|
||||||
} /* if */
|
} /* if */
|
||||||
} /* if */
|
} /* if */
|
||||||
@ -5455,6 +5507,16 @@ static void doreturn(void)
|
|||||||
/* nothing */;
|
/* nothing */;
|
||||||
sub=addvariable(curfunc->name,(argcount+3)*sizeof(cell),iREFARRAY,sGLOBAL,curfunc->tag,dim,numdim,idxtag);
|
sub=addvariable(curfunc->name,(argcount+3)*sizeof(cell),iREFARRAY,sGLOBAL,curfunc->tag,dim,numdim,idxtag);
|
||||||
sub->parent=curfunc;
|
sub->parent=curfunc;
|
||||||
|
/* Function that returns array can be used before it is defined, so at
|
||||||
|
* the call point (if it is before definition) we may not know if this
|
||||||
|
* function returns array and what is its size (for example inside the
|
||||||
|
* conditional operator), so we don't know how many cells on the heap
|
||||||
|
* we need. Calculating heap consumption is required for the fix of
|
||||||
|
* incorrect heap deallocation on conditional operator. That's why we
|
||||||
|
* need an additional pass.
|
||||||
|
*/
|
||||||
|
if ((curfunc->usage & uREAD)!=0)
|
||||||
|
sc_reparse=TRUE;
|
||||||
} /* if */
|
} /* if */
|
||||||
/* get the hidden parameter, copy the array (the array is on the heap;
|
/* get the hidden parameter, copy the array (the array is on the heap;
|
||||||
* it stays on the heap for the moment, and it is removed -usually- at
|
* it stays on the heap for the moment, and it is removed -usually- at
|
||||||
@ -5727,3 +5789,137 @@ static int *readwhile(void)
|
|||||||
return (wqptr-wqSIZE);
|
return (wqptr-wqSIZE);
|
||||||
} /* if */
|
} /* if */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined SC_LIGHT
|
||||||
|
static long max_stacksize_recurse(symbol** sourcesym, symbol* sym, symbol** rsourcesym, long basesize, int* pubfuncparams, int* recursion)
|
||||||
|
{
|
||||||
|
long size, maxsize;
|
||||||
|
int i, stkpos;
|
||||||
|
|
||||||
|
assert(sourcesym != NULL);
|
||||||
|
assert(sym != NULL);
|
||||||
|
assert(sym->ident == iFUNCTN);
|
||||||
|
assert((sym->usage & uNATIVE) == 0);
|
||||||
|
assert(recursion != NULL);
|
||||||
|
|
||||||
|
maxsize = sym->x.stacksize;
|
||||||
|
for (i = 0; i < sym->numrefers; i++) {
|
||||||
|
if (sym->refer[i] != NULL) {
|
||||||
|
assert(sym->refer[i]->ident == iFUNCTN);
|
||||||
|
assert((sym->refer[i]->usage & uNATIVE) == 0); /* a native function cannot refer to a user-function */
|
||||||
|
*(rsourcesym) = sym;
|
||||||
|
*(rsourcesym + 1) = NULL;
|
||||||
|
for (stkpos = 0; sourcesym[stkpos] != NULL; stkpos++) {
|
||||||
|
if (sym->refer[i] == sourcesym[stkpos]) { /* recursion detection */
|
||||||
|
*recursion = 1;
|
||||||
|
goto break_recursion; /* recursion was detected, quit loop */
|
||||||
|
} /* if */
|
||||||
|
} /* for */
|
||||||
|
/* add this symbol to the stack */
|
||||||
|
sourcesym[stkpos] = sym;
|
||||||
|
sourcesym[stkpos + 1] = NULL;
|
||||||
|
/* check size of callee */
|
||||||
|
size = max_stacksize_recurse(sourcesym, sym->refer[i], rsourcesym + 1, sym->x.stacksize, pubfuncparams, recursion);
|
||||||
|
if (maxsize < size)
|
||||||
|
maxsize = size;
|
||||||
|
/* remove this symbol from the stack */
|
||||||
|
sourcesym[stkpos] = NULL;
|
||||||
|
} /* if */
|
||||||
|
} /* for */
|
||||||
|
break_recursion:
|
||||||
|
|
||||||
|
if ((sym->usage & uPUBLIC) != 0) {
|
||||||
|
/* Find out how many parameters a public function has, then see if this
|
||||||
|
* is bigger than some maximum
|
||||||
|
*/
|
||||||
|
arginfo* arg = sym->dim.arglist;
|
||||||
|
int count = 0;
|
||||||
|
assert(arg != 0);
|
||||||
|
while (arg->ident != 0) {
|
||||||
|
count++;
|
||||||
|
arg++;
|
||||||
|
} /* while */
|
||||||
|
assert(pubfuncparams != 0);
|
||||||
|
if (count > * pubfuncparams)
|
||||||
|
*pubfuncparams = count;
|
||||||
|
} /* if */
|
||||||
|
|
||||||
|
return maxsize + basesize;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long max_stacksize(symbol* root, int* recursion)
|
||||||
|
{
|
||||||
|
/* Loop over all non-native functions. For each function, loop
|
||||||
|
* over all of its referrers, accumulating the stack requirements.
|
||||||
|
* Detect (indirect) recursion with a "mark-and-sweep" algorithm.
|
||||||
|
* I (mis-)use the "compound" field of the symbol structure for
|
||||||
|
* the marker, as this field is unused for functions.
|
||||||
|
*
|
||||||
|
* Note that the stack is shared with the heap. A host application
|
||||||
|
* may "eat" cells from the heap as well, through amx_Allot(). The
|
||||||
|
* stack requirements are thus only an estimate.
|
||||||
|
*/
|
||||||
|
long size, maxsize;
|
||||||
|
int maxparams, numfunctions;
|
||||||
|
symbol* sym;
|
||||||
|
symbol** symstack, ** rsymstack;
|
||||||
|
|
||||||
|
assert(root != NULL);
|
||||||
|
assert(recursion != NULL);
|
||||||
|
/* count number of functions (for allocating the stack for recursion detection) */
|
||||||
|
numfunctions = 0;
|
||||||
|
for (sym = root->next; sym != NULL; sym = sym->next) {
|
||||||
|
if (sym->ident == iFUNCTN) {
|
||||||
|
assert(sym->compound == 0);
|
||||||
|
if ((sym->usage & uNATIVE) == 0)
|
||||||
|
numfunctions++;
|
||||||
|
} /* if */
|
||||||
|
} /* if */
|
||||||
|
/* allocate function symbol stack */
|
||||||
|
symstack = (symbol**)malloc((numfunctions + 1) * sizeof(symbol*));
|
||||||
|
rsymstack = (symbol**)malloc((numfunctions + 1) * sizeof(symbol*));
|
||||||
|
if (symstack == NULL || rsymstack == NULL)
|
||||||
|
error(103); /* insufficient memory (fatal error) */
|
||||||
|
memset(symstack, 0, (numfunctions + 1) * sizeof(symbol*));
|
||||||
|
memset(rsymstack, 0, (numfunctions + 1) * sizeof(symbol*));
|
||||||
|
|
||||||
|
maxsize = 0;
|
||||||
|
maxparams = 0;
|
||||||
|
*recursion = 0; /* assume no recursion */
|
||||||
|
for (sym = root->next; sym != NULL; sym = sym->next) {
|
||||||
|
int recursion_detected;
|
||||||
|
/* drop out if this is not a user-implemented function */
|
||||||
|
if (sym->ident != iFUNCTN || (sym->usage & uNATIVE) != 0)
|
||||||
|
continue;
|
||||||
|
/* accumulate stack size for this symbol */
|
||||||
|
symstack[0] = sym;
|
||||||
|
assert(symstack[1] == NULL);
|
||||||
|
recursion_detected = 0;
|
||||||
|
size = max_stacksize_recurse(symstack, sym, rsymstack, 0L, &maxparams, &recursion_detected);
|
||||||
|
if (recursion_detected) {
|
||||||
|
if (rsymstack[1] == NULL) {
|
||||||
|
pc_printf("recursion detected: function %s directly calls itself\n", sym->name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
int i;
|
||||||
|
pc_printf("recursion detected: function %s indirectly calls itself:\n", sym->name);
|
||||||
|
pc_printf("%s ", sym->name);
|
||||||
|
for (i = 1; rsymstack[i] != NULL; i++) {
|
||||||
|
pc_printf("<- %s ", rsymstack[i]->name);
|
||||||
|
}
|
||||||
|
pc_printf("<- %s\n", sym->name);
|
||||||
|
}
|
||||||
|
*recursion = recursion_detected;
|
||||||
|
}
|
||||||
|
assert(size >= 0);
|
||||||
|
if (maxsize < size)
|
||||||
|
maxsize = size;
|
||||||
|
} /* for */
|
||||||
|
|
||||||
|
free((void*)symstack);
|
||||||
|
free((void*)rsymstack);
|
||||||
|
maxsize++; /* +1 because a zero cell is always pushed on top
|
||||||
|
* of the stack to catch stack overwrites */
|
||||||
|
return maxsize + (maxparams + 1);/* +1 because # of parameters is always pushed on entry */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -152,7 +152,6 @@ static char *extensions[] = { ".inc", ".p", ".pawn" };
|
|||||||
PUSHSTK_I(iflevel);
|
PUSHSTK_I(iflevel);
|
||||||
assert(!SKIPPING);
|
assert(!SKIPPING);
|
||||||
assert(skiplevel==iflevel); /* these two are always the same when "parsing" */
|
assert(skiplevel==iflevel); /* these two are always the same when "parsing" */
|
||||||
PUSHSTK_I(sc_is_utf8);
|
|
||||||
PUSHSTK_I(icomment);
|
PUSHSTK_I(icomment);
|
||||||
PUSHSTK_I(fcurrent);
|
PUSHSTK_I(fcurrent);
|
||||||
PUSHSTK_I(fline);
|
PUSHSTK_I(fline);
|
||||||
@ -169,7 +168,6 @@ static char *extensions[] = { ".inc", ".p", ".pawn" };
|
|||||||
assert(sc_status == statFIRST || strcmp(get_inputfile(fcurrent), inpfname) == 0);
|
assert(sc_status == statFIRST || strcmp(get_inputfile(fcurrent), inpfname) == 0);
|
||||||
setfiledirect(inpfname); /* (optionally) set in the list file */
|
setfiledirect(inpfname); /* (optionally) set in the list file */
|
||||||
listline=-1; /* force a #line directive when changing the file */
|
listline=-1; /* force a #line directive when changing the file */
|
||||||
sc_is_utf8=(short)scan_utf8(inpf,name);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,7 +317,6 @@ static void readline(unsigned char *line)
|
|||||||
fline=i;
|
fline=i;
|
||||||
fcurrent=(short)POPSTK_I();
|
fcurrent=(short)POPSTK_I();
|
||||||
icomment=(short)POPSTK_I();
|
icomment=(short)POPSTK_I();
|
||||||
sc_is_utf8=(short)POPSTK_I();
|
|
||||||
iflevel=(short)POPSTK_I();
|
iflevel=(short)POPSTK_I();
|
||||||
skiplevel=iflevel; /* this condition held before including the file */
|
skiplevel=iflevel; /* this condition held before including the file */
|
||||||
assert(!SKIPPING); /* idem ditto */
|
assert(!SKIPPING); /* idem ditto */
|
||||||
@ -603,13 +600,6 @@ static int htoi(cell *val,const unsigned char *curptr)
|
|||||||
return (int)(ptr-curptr);
|
return (int)(ptr-curptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined __APPLE__
|
|
||||||
static double pow10(double d)
|
|
||||||
{
|
|
||||||
return pow(10, d);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ftoi
|
/* ftoi
|
||||||
*
|
*
|
||||||
* Attempts to interpret a numeric symbol as a rational number, either as
|
* Attempts to interpret a numeric symbol as a rational number, either as
|
||||||
@ -685,11 +675,7 @@ static int ftoi(cell *val,const unsigned char *curptr)
|
|||||||
exp=(exp*10)+(*ptr-'0');
|
exp=(exp*10)+(*ptr-'0');
|
||||||
ptr++;
|
ptr++;
|
||||||
} /* while */
|
} /* while */
|
||||||
#if defined __GNUC__
|
fmult=pow(10,exp*sign);
|
||||||
fmult=pow10(exp*sign);
|
|
||||||
#else
|
|
||||||
fmult=pow(10,exp*sign);
|
|
||||||
#endif
|
|
||||||
fnum *= fmult;
|
fnum *= fmult;
|
||||||
dnum *= (unsigned long)(fmult+0.5);
|
dnum *= (unsigned long)(fmult+0.5);
|
||||||
} /* if */
|
} /* if */
|
||||||
@ -1204,6 +1190,8 @@ static int command(void)
|
|||||||
if (comma)
|
if (comma)
|
||||||
lptr++;
|
lptr++;
|
||||||
} while (comma);
|
} while (comma);
|
||||||
|
} else if (strcmp(str, "showstackusageinfo")==0) {
|
||||||
|
sc_stkusageinfo=TRUE;
|
||||||
} else {
|
} else {
|
||||||
error(207); /* unknown #pragma */
|
error(207); /* unknown #pragma */
|
||||||
} /* if */
|
} /* if */
|
||||||
@ -2395,21 +2383,12 @@ static cell litchar(const unsigned char **lptr,int flags)
|
|||||||
|
|
||||||
cptr=*lptr;
|
cptr=*lptr;
|
||||||
if ((flags & RAWMODE)!=0 || *cptr!=sc_ctrlchar) { /* no escape character */
|
if ((flags & RAWMODE)!=0 || *cptr!=sc_ctrlchar) { /* no escape character */
|
||||||
#if !defined NO_UTF8
|
|
||||||
if (sc_is_utf8 && (flags & UTF8MODE)!=0) {
|
|
||||||
c=get_utf8_char(cptr,&cptr);
|
|
||||||
assert(c>=0); /* file was already scanned for conformance to UTF-8 */
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
#if !defined NO_CODEPAGE
|
#if !defined NO_CODEPAGE
|
||||||
c=cp_translate(cptr,&cptr);
|
c=cp_translate(cptr,&cptr);
|
||||||
#else
|
#else
|
||||||
c=*cptr;
|
c=*cptr;
|
||||||
cptr+=1;
|
cptr+=1;
|
||||||
#endif
|
#endif
|
||||||
#if !defined NO_UTF8
|
|
||||||
} /* if */
|
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
cptr+=1;
|
cptr+=1;
|
||||||
if (*cptr==sc_ctrlchar) {
|
if (*cptr==sc_ctrlchar) {
|
||||||
|
65
compiler/libpc300/sc3.c
Executable file → Normal file
65
compiler/libpc300/sc3.c
Executable file → Normal file
@ -1010,38 +1010,60 @@ static int hier13(value *lval)
|
|||||||
{
|
{
|
||||||
int lvalue=plnge1(hier12,lval);
|
int lvalue=plnge1(hier12,lval);
|
||||||
if (matchtoken('?')) {
|
if (matchtoken('?')) {
|
||||||
|
int locheap=decl_heap; /* save current heap delta */
|
||||||
|
long heap1,heap2; /* max. heap delta either branch */
|
||||||
|
valuepair *heaplist_node;
|
||||||
int flab1=getlabel();
|
int flab1=getlabel();
|
||||||
int flab2=getlabel();
|
int flab2=getlabel();
|
||||||
value lval2 = {0};
|
value lval2 = {0};
|
||||||
int array1,array2;
|
int array1,array2;
|
||||||
|
|
||||||
int orig_heap=decl_heap;
|
|
||||||
int diff1=0,diff2=0;
|
|
||||||
if (lvalue) {
|
if (lvalue) {
|
||||||
rvalue(lval);
|
rvalue(lval);
|
||||||
} else if (lval->ident==iCONSTEXPR) {
|
} else if (lval->ident==iCONSTEXPR) {
|
||||||
ldconst(lval->constval,sPRI);
|
ldconst(lval->constval,sPRI);
|
||||||
error(lval->constval ? 206 : 205); /* redundant test */
|
error(lval->constval ? 206 : 205); /* redundant test */
|
||||||
} /* if */
|
} /* if */
|
||||||
|
if (sc_status==statFIRST) {
|
||||||
|
/* We should push a new node right now otherwise we will pop it in the
|
||||||
|
* wrong order on the write stage.
|
||||||
|
*/
|
||||||
|
heaplist_node=push_heaplist(0,0); /* save the pointer to write the actual data later */
|
||||||
|
} else if (sc_status==statWRITE || sc_status==statSKIP) {
|
||||||
|
#if !defined NDEBUG
|
||||||
|
int result=
|
||||||
|
#endif
|
||||||
|
popfront_heaplist(&heap1,&heap2);
|
||||||
|
assert(result); /* pop off equally many items than were pushed */
|
||||||
|
} /* if */
|
||||||
jmp_eq0(flab1); /* go to second expression if primary register==0 */
|
jmp_eq0(flab1); /* go to second expression if primary register==0 */
|
||||||
PUSHSTK_I(sc_allowtags);
|
PUSHSTK_I(sc_allowtags);
|
||||||
sc_allowtags=FALSE; /* do not allow tagnames here (colon is a special token) */
|
sc_allowtags=FALSE; /* do not allow tagnames here (colon is a special token) */
|
||||||
|
if (sc_status==statWRITE) {
|
||||||
|
modheap(heap1*sizeof(cell));
|
||||||
|
decl_heap+=heap1; /* equilibrate the heap (see comment below) */
|
||||||
|
} /* if */
|
||||||
if (hier13(lval))
|
if (hier13(lval))
|
||||||
rvalue(lval);
|
rvalue(lval);
|
||||||
if (lval->ident==iCONSTEXPR) /* load constant here */
|
if (lval->ident==iCONSTEXPR) /* load constant here */
|
||||||
ldconst(lval->constval,sPRI);
|
ldconst(lval->constval,sPRI);
|
||||||
sc_allowtags=(short)POPSTK_I(); /* restore */
|
sc_allowtags=(short)POPSTK_I(); /* restore */
|
||||||
|
heap1=decl_heap-locheap; /* save heap space used in "true" branch */
|
||||||
|
assert(heap1>=0);
|
||||||
|
decl_heap=locheap; /* restore heap delta */
|
||||||
jumplabel(flab2);
|
jumplabel(flab2);
|
||||||
setlabel(flab1);
|
setlabel(flab1);
|
||||||
if (orig_heap!=decl_heap) {
|
|
||||||
diff1=abs(decl_heap-orig_heap);
|
|
||||||
decl_heap=orig_heap;
|
|
||||||
}
|
|
||||||
needtoken(':');
|
needtoken(':');
|
||||||
|
if (sc_status==statWRITE) {
|
||||||
|
modheap(heap2*sizeof(cell));
|
||||||
|
decl_heap+=heap2; /* equilibrate the heap (see comment below) */
|
||||||
|
} /* if */
|
||||||
if (hier13(&lval2))
|
if (hier13(&lval2))
|
||||||
rvalue(&lval2);
|
rvalue(&lval2);
|
||||||
if (lval2.ident==iCONSTEXPR) /* load constant here */
|
if (lval2.ident==iCONSTEXPR) /* load constant here */
|
||||||
ldconst(lval2.constval,sPRI);
|
ldconst(lval2.constval,sPRI);
|
||||||
|
heap2=decl_heap-locheap; /* save heap space used in "false" branch */
|
||||||
|
assert(heap2>=0);
|
||||||
array1= (lval->ident==iARRAY || lval->ident==iREFARRAY);
|
array1= (lval->ident==iARRAY || lval->ident==iREFARRAY);
|
||||||
array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY);
|
array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY);
|
||||||
if (array1 && !array2) {
|
if (array1 && !array2) {
|
||||||
@ -1055,19 +1077,26 @@ static int hier13(value *lval)
|
|||||||
if (!matchtag(lval->tag,lval2.tag,FALSE))
|
if (!matchtag(lval->tag,lval2.tag,FALSE))
|
||||||
error(213); /* tagname mismatch ('true' and 'false' expressions) */
|
error(213); /* tagname mismatch ('true' and 'false' expressions) */
|
||||||
setlabel(flab2);
|
setlabel(flab2);
|
||||||
|
if (sc_status==statFIRST) {
|
||||||
|
/* Calculate the max. heap space used by either branch and save values of
|
||||||
|
* max - heap1 and max - heap2. On the second pass, we use these values
|
||||||
|
* to equilibrate the heap space used by either branch. This is needed
|
||||||
|
* because we don't know (at compile time) which branch will be taken,
|
||||||
|
* but the heap cannot be restored inside each branch because the result
|
||||||
|
* on the heap may needed by the remaining expression.
|
||||||
|
*/
|
||||||
|
int max=(heap1>heap2) ? heap1 : heap2;
|
||||||
|
heaplist_node->first=max-heap1;
|
||||||
|
heaplist_node->second=max-heap2;
|
||||||
|
decl_heap=locheap+max; /* otherwise it will contain locheap+heap2 and the
|
||||||
|
* max. heap usage will be wrong for the upper
|
||||||
|
* expression */
|
||||||
|
} /* if */
|
||||||
|
assert(sc_status!=statWRITE || heap1==heap2);
|
||||||
if (lval->ident==iARRAY)
|
if (lval->ident==iARRAY)
|
||||||
lval->ident=iREFARRAY; /* iARRAY becomes iREFARRAY */
|
lval->ident=iREFARRAY; /* iARRAY becomes iREFARRAY */
|
||||||
else if (lval->ident!=iREFARRAY)
|
else if (lval->ident!=iREFARRAY)
|
||||||
lval->ident=iEXPRESSION; /* iREFARRAY stays iREFARRAY, rest becomes iEXPRESSION */
|
lval->ident=iEXPRESSION; /* iREFARRAY stays iREFARRAY, rest becomes iEXPRESSION */
|
||||||
if (orig_heap!=decl_heap) {
|
|
||||||
diff2=abs(decl_heap-orig_heap);
|
|
||||||
decl_heap=orig_heap;
|
|
||||||
}
|
|
||||||
if (diff1==diff2) {
|
|
||||||
decl_heap+=(diff1/2);
|
|
||||||
} else {
|
|
||||||
decl_heap+=(diff1+diff2);
|
|
||||||
}
|
|
||||||
return FALSE; /* conditional expression is no lvalue */
|
return FALSE; /* conditional expression is no lvalue */
|
||||||
} else {
|
} else {
|
||||||
return lvalue;
|
return lvalue;
|
||||||
@ -2058,7 +2087,8 @@ static int nesting=0;
|
|||||||
error(35,argidx+1); /* argument type mismatch */
|
error(35,argidx+1); /* argument type mismatch */
|
||||||
/* Verify that the dimensions match with those in arg[argidx].
|
/* Verify that the dimensions match with those in arg[argidx].
|
||||||
* A literal array always has a single dimension.
|
* A literal array always has a single dimension.
|
||||||
* An iARRAYCELL parameter is also assumed to have a single dimension.
|
* An iARRAYCELL parameter is also assumed to have a single dimension,
|
||||||
|
* but its size may be >1 in case of an enumeration pseudo-array.
|
||||||
*/
|
*/
|
||||||
if (lval.sym==NULL || lval.ident==iARRAYCELL) {
|
if (lval.sym==NULL || lval.ident==iARRAYCELL) {
|
||||||
if (arg[argidx].numdim!=1) {
|
if (arg[argidx].numdim!=1) {
|
||||||
@ -2066,7 +2096,8 @@ static int nesting=0;
|
|||||||
} else if (arg[argidx].dim[0]!=0) {
|
} else if (arg[argidx].dim[0]!=0) {
|
||||||
assert(arg[argidx].dim[0]>0);
|
assert(arg[argidx].dim[0]>0);
|
||||||
if (lval.ident==iARRAYCELL) {
|
if (lval.ident==iARRAYCELL) {
|
||||||
error(47); /* array sizes must match */
|
if (lval.constval==0 || arg[argidx].dim[0]!=lval.constval)
|
||||||
|
error(47); /* array sizes must match */
|
||||||
} else {
|
} else {
|
||||||
assert(lval.constval!=0); /* literal array must have a size */
|
assert(lval.constval!=0); /* literal array must have a size */
|
||||||
/* A literal array must have exactly the same size as the
|
/* A literal array must have exactly the same size as the
|
||||||
|
@ -309,120 +309,3 @@ SC_FUNC cell cp_translate(const unsigned char *string,const unsigned char **endp
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* NO_CODEPAGE */
|
#endif /* NO_CODEPAGE */
|
||||||
|
|
||||||
#if !defined NO_UTF8
|
|
||||||
SC_FUNC cell get_utf8_char(const unsigned char *string,const unsigned char **endptr)
|
|
||||||
{
|
|
||||||
int follow=0;
|
|
||||||
long lowmark=0;
|
|
||||||
unsigned char ch;
|
|
||||||
cell result=0;
|
|
||||||
|
|
||||||
if (endptr!=NULL)
|
|
||||||
*endptr=string;
|
|
||||||
|
|
||||||
for ( ;; ) {
|
|
||||||
ch=*string++;
|
|
||||||
|
|
||||||
if (follow>0 && (ch & 0xc0)==0x80) {
|
|
||||||
/* leader code is active, combine with earlier code */
|
|
||||||
result=(result << 6) | (ch & 0x3f);
|
|
||||||
if (--follow==0) {
|
|
||||||
/* encoding a character in more bytes than is strictly needed,
|
|
||||||
* is not really valid UTF-8; we are strict here to increase
|
|
||||||
* the chance of heuristic dectection of non-UTF-8 text
|
|
||||||
* (JAVA writes zero bytes as a 2-byte code UTF-8, which is invalid)
|
|
||||||
*/
|
|
||||||
if (result<lowmark)
|
|
||||||
return -1;
|
|
||||||
/* the code positions 0xd800--0xdfff and 0xfffe & 0xffff do not
|
|
||||||
* exist in UCS-4 (and hence, they do not exist in Unicode)
|
|
||||||
*/
|
|
||||||
if ((result>=0xd800 && result<=0xdfff) || result==0xfffe || result==0xffff)
|
|
||||||
return -1;
|
|
||||||
} /* if */
|
|
||||||
break;
|
|
||||||
} else if (follow==0 && (ch & 0x80)==0x80) {
|
|
||||||
/* UTF-8 leader code */
|
|
||||||
if ((ch & 0xe0)==0xc0) {
|
|
||||||
/* 110xxxxx 10xxxxxx */
|
|
||||||
follow=1;
|
|
||||||
lowmark=0x80L;
|
|
||||||
result=ch & 0x1f;
|
|
||||||
} else if ((ch & 0xf0)==0xe0) {
|
|
||||||
/* 1110xxxx 10xxxxxx 10xxxxxx (16 bits, BMP plane) */
|
|
||||||
follow=2;
|
|
||||||
lowmark=0x800L;
|
|
||||||
result=ch & 0x0f;
|
|
||||||
} else if ((ch & 0xf8)==0xf0) {
|
|
||||||
/* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
|
|
||||||
follow=3;
|
|
||||||
lowmark=0x10000L;
|
|
||||||
result=ch & 0x07;
|
|
||||||
} else if ((ch & 0xfc)==0xf8) {
|
|
||||||
/* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
|
|
||||||
follow=4;
|
|
||||||
lowmark=0x200000L;
|
|
||||||
result=ch & 0x03;
|
|
||||||
} else if ((ch & 0xfe)==0xfc) {
|
|
||||||
/* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx (32 bits) */
|
|
||||||
follow=5;
|
|
||||||
lowmark=0x4000000L;
|
|
||||||
result=ch & 0x01;
|
|
||||||
} else {
|
|
||||||
/* this is invalid UTF-8 */
|
|
||||||
return -1;
|
|
||||||
} /* if */
|
|
||||||
} else if (follow==0 && (ch & 0x80)==0x00) {
|
|
||||||
/* 0xxxxxxx (US-ASCII) */
|
|
||||||
result=ch;
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
/* this is invalid UTF-8 */
|
|
||||||
return -1;
|
|
||||||
} /* if */
|
|
||||||
|
|
||||||
} /* for */
|
|
||||||
|
|
||||||
if (endptr!=NULL)
|
|
||||||
*endptr=string;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
SC_FUNC int scan_utf8(FILE *fp,const char *filename)
|
|
||||||
{
|
|
||||||
#if defined NO_UTF8
|
|
||||||
return 0;
|
|
||||||
#else
|
|
||||||
static void *resetpos=NULL;
|
|
||||||
int utf8=TRUE;
|
|
||||||
int firstchar=TRUE,bom_found=FALSE;
|
|
||||||
const unsigned char *ptr;
|
|
||||||
|
|
||||||
resetpos=pc_getpossrc(fp);
|
|
||||||
while (utf8 && pc_readsrc(fp,pline,sLINEMAX)!=NULL) {
|
|
||||||
ptr=pline;
|
|
||||||
if (firstchar) {
|
|
||||||
/* check whether the very first character on the very first line
|
|
||||||
* starts with a BYTE order mark
|
|
||||||
*/
|
|
||||||
cell c=get_utf8_char(ptr,&ptr);
|
|
||||||
bom_found= (c==0xfeff);
|
|
||||||
utf8= (c>=0);
|
|
||||||
firstchar=FALSE;
|
|
||||||
} /* if */
|
|
||||||
while (utf8 && *ptr!='\0')
|
|
||||||
utf8= (get_utf8_char(ptr,&ptr)>=0);
|
|
||||||
} /* while */
|
|
||||||
pc_resetsrc(fp,resetpos);
|
|
||||||
if (bom_found) {
|
|
||||||
unsigned char bom[3];
|
|
||||||
if (!utf8)
|
|
||||||
error(77,filename); /* malformed UTF-8 encoding */
|
|
||||||
pc_readsrc(fp,bom,3);
|
|
||||||
assert(bom[0]==0xef && bom[1]==0xbb && bom[2]==0xbf);
|
|
||||||
} /* if */
|
|
||||||
return utf8;
|
|
||||||
#endif /* NO_UTF8 */
|
|
||||||
}
|
|
||||||
|
@ -443,6 +443,52 @@ SC_FUNC void delete_autolisttable(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ----- value pair list ----------------------------------------- */
|
||||||
|
static valuepair heaplist = {NULL, 0, 0};
|
||||||
|
|
||||||
|
SC_FUNC valuepair *push_heaplist(long first, long second)
|
||||||
|
{
|
||||||
|
valuepair *cur, *last;
|
||||||
|
if ((cur=malloc(sizeof(valuepair)))==NULL)
|
||||||
|
error(103); /* insufficient memory (fatal error) */
|
||||||
|
|
||||||
|
cur->first=first;
|
||||||
|
cur->second=second;
|
||||||
|
cur->next=NULL;
|
||||||
|
|
||||||
|
for (last=&heaplist; last->next!=NULL; last=last->next)
|
||||||
|
/* nothing */;
|
||||||
|
last->next=cur;
|
||||||
|
return cur;
|
||||||
|
}
|
||||||
|
|
||||||
|
SC_FUNC int popfront_heaplist(long *first, long *second)
|
||||||
|
{
|
||||||
|
valuepair *front=heaplist.next;
|
||||||
|
if (front==NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* copy fields */
|
||||||
|
*first=front->first;
|
||||||
|
*second=front->second;
|
||||||
|
|
||||||
|
/* unlink and free */
|
||||||
|
heaplist.next=front->next;
|
||||||
|
free(front);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SC_FUNC void delete_heaplisttable(void)
|
||||||
|
{
|
||||||
|
valuepair *cur;
|
||||||
|
while (heaplist.next!=NULL) {
|
||||||
|
cur=heaplist.next;
|
||||||
|
heaplist.next=cur->next;
|
||||||
|
free(cur);
|
||||||
|
} /* while */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ----- debug information --------------------------------------- */
|
/* ----- debug information --------------------------------------- */
|
||||||
|
|
||||||
static stringlist dbgstrings = {NULL, NULL};
|
static stringlist dbgstrings = {NULL, NULL};
|
||||||
|
@ -84,10 +84,10 @@ SC_VDEFINE int sc_status; /* read/write status */
|
|||||||
SC_VDEFINE int sc_rationaltag=0; /* tag for rational numbers */
|
SC_VDEFINE int sc_rationaltag=0; /* tag for rational numbers */
|
||||||
SC_VDEFINE int rational_digits=0; /* number of fractional digits */
|
SC_VDEFINE int rational_digits=0; /* number of fractional digits */
|
||||||
SC_VDEFINE int sc_allowproccall=0; /* allow/detect tagnames in lex() */
|
SC_VDEFINE int sc_allowproccall=0; /* allow/detect tagnames in lex() */
|
||||||
SC_VDEFINE short sc_is_utf8=FALSE; /* is this source file in UTF-8 encoding */
|
|
||||||
SC_VDEFINE char *pc_deprecate = NULL;/* if non-null, mark next declaration as deprecated */
|
SC_VDEFINE char *pc_deprecate = NULL;/* if non-null, mark next declaration as deprecated */
|
||||||
SC_VDEFINE int sc_showincludes=0; /* show include files */
|
SC_VDEFINE int sc_showincludes=0; /* show include files */
|
||||||
SC_VDEFINE int sc_warnings_are_errors=0;
|
SC_VDEFINE int sc_warnings_are_errors=0;
|
||||||
|
SC_VDEFINE int sc_stkusageinfo = FALSE; /* show stack usage info? */
|
||||||
|
|
||||||
SC_VDEFINE constvalue sc_automaton_tab = { NULL, "", 0, 0}; /* automaton table */
|
SC_VDEFINE constvalue sc_automaton_tab = { NULL, "", 0, 0}; /* automaton table */
|
||||||
SC_VDEFINE constvalue sc_state_tab = { NULL, "", 0, 0}; /* state table */
|
SC_VDEFINE constvalue sc_state_tab = { NULL, "", 0, 0}; /* state table */
|
||||||
|
4719
configs/hamdata.ini
4719
configs/hamdata.ini
File diff suppressed because it is too large
Load Diff
@ -1729,6 +1729,33 @@
|
|||||||
"linux" "2468"
|
"linux" "2468"
|
||||||
"mac" "2468"
|
"mac" "2468"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_iLastAccount" // int
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "2480"
|
||||||
|
"linux" "2500"
|
||||||
|
"mac" "2500"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_iLastClientHealth" // int
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "2484"
|
||||||
|
"linux" "2504"
|
||||||
|
"mac" "2504"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_tmNextAccountHealthUpdate" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "2488"
|
||||||
|
"linux" "2508"
|
||||||
|
"mac" "2508"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "pointer"
|
"type" "pointer"
|
||||||
|
|
||||||
"windows" "2480"
|
"windows" "2492"
|
||||||
"linux" "2500"
|
"linux" "2512"
|
||||||
"mac" "2500"
|
"mac" "2512"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_id" // unsigned int
|
"m_id" // unsigned int
|
||||||
@ -33,57 +33,21 @@
|
|||||||
"type" "integer"
|
"type" "integer"
|
||||||
"unsigned" "1"
|
"unsigned" "1"
|
||||||
|
|
||||||
"windows" "2484"
|
"windows" "2496"
|
||||||
"linux" "2504"
|
"linux" "2516"
|
||||||
"mac" "2504"
|
"mac" "2516"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextBotThink" // float
|
"m_flNextBotThink" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "2488"
|
|
||||||
"linux" "2508"
|
|
||||||
"mac" "2508"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flNextFullBotThink" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "2492"
|
|
||||||
"linux" "2512"
|
|
||||||
"mac" "2512"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flPreviousCommandTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "2496"
|
|
||||||
"linux" "2516"
|
|
||||||
"mac" "2516"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_isRunning" // bool
|
|
||||||
{
|
|
||||||
"type" "boolean"
|
|
||||||
|
|
||||||
"windows" "2500"
|
"windows" "2500"
|
||||||
"linux" "2520"
|
"linux" "2520"
|
||||||
"mac" "2520"
|
"mac" "2520"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_isCrouching" // bool
|
"m_flNextFullBotThink" // float
|
||||||
{
|
|
||||||
"type" "boolean"
|
|
||||||
|
|
||||||
"windows" "2501"
|
|
||||||
"linux" "2521"
|
|
||||||
"mac" "2521"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_forwardSpeed" // float
|
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -92,7 +56,7 @@
|
|||||||
"mac" "2524"
|
"mac" "2524"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_strafeSpeed" // float
|
"m_flPreviousCommandTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -101,26 +65,34 @@
|
|||||||
"mac" "2528"
|
"mac" "2528"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_verticalSpeed" // float
|
"m_isRunning" // bool
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "boolean"
|
||||||
|
|
||||||
"windows" "2512"
|
"windows" "2512"
|
||||||
"linux" "2532"
|
"linux" "2532"
|
||||||
"mac" "2532"
|
"mac" "2532"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_buttonFlags" // short unsigned int
|
"m_isCrouching" // bool
|
||||||
{
|
{
|
||||||
"type" "short"
|
"type" "boolean"
|
||||||
"unsigned" "1"
|
|
||||||
|
"windows" "2513"
|
||||||
|
"linux" "2533"
|
||||||
|
"mac" "2533"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_forwardSpeed" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
"windows" "2516"
|
"windows" "2516"
|
||||||
"linux" "2536"
|
"linux" "2536"
|
||||||
"mac" "2536"
|
"mac" "2536"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_jumpTimestamp" // float
|
"m_strafeSpeed" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -129,23 +101,51 @@
|
|||||||
"mac" "2540"
|
"mac" "2540"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_postureStack" // struct PostureContext[8]
|
"m_verticalSpeed" // float
|
||||||
{
|
{
|
||||||
"type" "structure"
|
"type" "float"
|
||||||
"size" "8"
|
|
||||||
|
|
||||||
"windows" "2524"
|
"windows" "2524"
|
||||||
"linux" "2544"
|
"linux" "2544"
|
||||||
"mac" "2544"
|
"mac" "2544"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_buttonFlags" // short unsigned int
|
||||||
|
{
|
||||||
|
"type" "short"
|
||||||
|
"unsigned" "1"
|
||||||
|
|
||||||
|
"windows" "2528"
|
||||||
|
"linux" "2548"
|
||||||
|
"mac" "2548"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_jumpTimestamp" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "2532"
|
||||||
|
"linux" "2552"
|
||||||
|
"mac" "2552"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_postureStack" // struct PostureContext[8]
|
||||||
|
{
|
||||||
|
"type" "structure"
|
||||||
|
"size" "8"
|
||||||
|
|
||||||
|
"windows" "2536"
|
||||||
|
"linux" "2556"
|
||||||
|
"mac" "2556"
|
||||||
|
}
|
||||||
|
|
||||||
"m_postureStackIndex" // int
|
"m_postureStackIndex" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "2540"
|
"windows" "2552"
|
||||||
"linux" "2560"
|
"linux" "2572"
|
||||||
"mac" "2560"
|
"mac" "2572"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "1040"
|
|
||||||
"linux" "1060"
|
|
||||||
"mac" "1060"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_painTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "1044"
|
"windows" "1044"
|
||||||
"linux" "1064"
|
"linux" "1064"
|
||||||
"mac" "1064"
|
"mac" "1064"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_checkAttackTime" // float
|
"m_painTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,40 +37,49 @@
|
|||||||
"mac" "1068"
|
"mac" "1068"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_lastAttackCheck" // BOOL
|
"m_checkAttackTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "1052"
|
"windows" "1052"
|
||||||
"linux" "1072"
|
"linux" "1072"
|
||||||
"mac" "1072"
|
"mac" "1072"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_angles" // Vector
|
"m_lastAttackCheck" // BOOL
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "1056"
|
"windows" "1056"
|
||||||
"linux" "1076"
|
"linux" "1076"
|
||||||
"mac" "1076"
|
"mac" "1076"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_angles" // Vector
|
||||||
|
{
|
||||||
|
"type" "vector"
|
||||||
|
|
||||||
|
"windows" "1060"
|
||||||
|
"linux" "1080"
|
||||||
|
"mac" "1080"
|
||||||
|
}
|
||||||
|
|
||||||
"m_origin" // Vector
|
"m_origin" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "1068"
|
"windows" "1072"
|
||||||
"linux" "1088"
|
"linux" "1092"
|
||||||
"mac" "1088"
|
"mac" "1092"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flPlayerDamage" // float
|
"m_flPlayerDamage" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "1080"
|
"windows" "1084"
|
||||||
"linux" "1100"
|
"linux" "1104"
|
||||||
"mac" "1100"
|
"mac" "1104"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "972"
|
|
||||||
"linux" "992"
|
|
||||||
"mac" "992"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flNextPainTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "976"
|
"windows" "976"
|
||||||
"linux" "996"
|
"linux" "996"
|
||||||
"mac" "996"
|
"mac" "996"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastEnemySightTime" // float
|
"m_flNextPainTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,25 +37,25 @@
|
|||||||
"mac" "1000"
|
"mac" "1000"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecTossVelocity" // Vector
|
"m_flLastEnemySightTime" // float
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "984"
|
"windows" "984"
|
||||||
"linux" "1004"
|
"linux" "1004"
|
||||||
"mac" "1004"
|
"mac" "1004"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fThrowGrenade" // BOOL
|
"m_vecTossVelocity" // Vector
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "996"
|
"windows" "988"
|
||||||
"linux" "1016"
|
"linux" "1008"
|
||||||
"mac" "1016"
|
"mac" "1008"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fStanding" // BOOL
|
"m_fThrowGrenade" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -73,7 +64,7 @@
|
|||||||
"mac" "1020"
|
"mac" "1020"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fFirstEncounter" // BOOL
|
"m_fStanding" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -82,7 +73,7 @@
|
|||||||
"mac" "1024"
|
"mac" "1024"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_cClipSize" // int
|
"m_fFirstEncounter" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -91,7 +82,7 @@
|
|||||||
"mac" "1028"
|
"mac" "1028"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_voicePitch" // int
|
"m_cClipSize" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -100,7 +91,7 @@
|
|||||||
"mac" "1032"
|
"mac" "1032"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBrassShell" // int
|
"m_voicePitch" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -109,7 +100,7 @@
|
|||||||
"mac" "1036"
|
"mac" "1036"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSentence" // int
|
"m_iBrassShell" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -117,6 +108,15 @@
|
|||||||
"linux" "1040"
|
"linux" "1040"
|
||||||
"mac" "1040"
|
"mac" "1040"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_iSentence" // int
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "1024"
|
||||||
|
"linux" "1044"
|
||||||
|
"mac" "1044"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "972"
|
|
||||||
"linux" "992"
|
|
||||||
"mac" "992"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flNextPainTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "976"
|
"windows" "976"
|
||||||
"linux" "996"
|
"linux" "996"
|
||||||
"mac" "996"
|
"mac" "996"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastEnemySightTime" // float
|
"m_flNextPainTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,25 +37,25 @@
|
|||||||
"mac" "1000"
|
"mac" "1000"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecTossVelocity" // Vector
|
"m_flLastEnemySightTime" // float
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "984"
|
"windows" "984"
|
||||||
"linux" "1004"
|
"linux" "1004"
|
||||||
"mac" "1004"
|
"mac" "1004"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fThrowGrenade" // BOOL
|
"m_vecTossVelocity" // Vector
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "996"
|
"windows" "988"
|
||||||
"linux" "1016"
|
"linux" "1008"
|
||||||
"mac" "1016"
|
"mac" "1008"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fStanding" // BOOL
|
"m_fThrowGrenade" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -73,7 +64,7 @@
|
|||||||
"mac" "1020"
|
"mac" "1020"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fFirstEncounter" // BOOL
|
"m_fStanding" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -82,7 +73,7 @@
|
|||||||
"mac" "1024"
|
"mac" "1024"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_cClipSize" // int
|
"m_fFirstEncounter" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -91,7 +82,7 @@
|
|||||||
"mac" "1028"
|
"mac" "1028"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_voicePitch" // int
|
"m_cClipSize" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -100,7 +91,7 @@
|
|||||||
"mac" "1032"
|
"mac" "1032"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBrassShell" // int
|
"m_voicePitch" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -109,7 +100,7 @@
|
|||||||
"mac" "1036"
|
"mac" "1036"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSentence" // int
|
"m_iBrassShell" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -117,6 +108,15 @@
|
|||||||
"linux" "1040"
|
"linux" "1040"
|
||||||
"mac" "1040"
|
"mac" "1040"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_iSentence" // int
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "1024"
|
||||||
|
"linux" "1044"
|
||||||
|
"mac" "1044"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -429,14 +429,23 @@
|
|||||||
"mac" "928"
|
"mac" "928"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iClass" // int
|
"m_flLastYawTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "912"
|
"windows" "912"
|
||||||
"linux" "932"
|
"linux" "932"
|
||||||
"mac" "932"
|
"mac" "932"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_iClass" // int
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "916"
|
||||||
|
"linux" "936"
|
||||||
|
"mac" "936"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -23,39 +23,30 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSpin" // int
|
"m_iSpin" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "924"
|
||||||
"linux" "940"
|
"linux" "944"
|
||||||
"mac" "940"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_pEyeGlow" // CSprite*
|
"m_pEyeGlow" // CSprite*
|
||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
|
|
||||||
"windows" "924"
|
|
||||||
"linux" "944"
|
|
||||||
"mac" "944"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_eyeBrightness" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "928"
|
"windows" "928"
|
||||||
"linux" "948"
|
"linux" "948"
|
||||||
"mac" "948"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iDeployHeight" // int
|
"m_eyeBrightness" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -64,7 +55,7 @@
|
|||||||
"mac" "952"
|
"mac" "952"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iRetractHeight" // int
|
"m_iDeployHeight" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -73,7 +64,7 @@
|
|||||||
"mac" "956"
|
"mac" "956"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iMinPitch" // int
|
"m_iRetractHeight" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -82,7 +73,7 @@
|
|||||||
"mac" "960"
|
"mac" "960"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBaseTurnRate" // int
|
"m_iMinPitch" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -91,25 +82,25 @@
|
|||||||
"mac" "964"
|
"mac" "964"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fTurnRate" // float
|
"m_iBaseTurnRate" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "948"
|
"windows" "948"
|
||||||
"linux" "968"
|
"linux" "968"
|
||||||
"mac" "968"
|
"mac" "968"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iOrientation" // int
|
"m_fTurnRate" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "952"
|
"windows" "952"
|
||||||
"linux" "972"
|
"linux" "972"
|
||||||
"mac" "972"
|
"mac" "972"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iOn" // int
|
"m_iOrientation" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -118,7 +109,7 @@
|
|||||||
"mac" "976"
|
"mac" "976"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fBeserk" // int
|
"m_iOn" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -127,7 +118,7 @@
|
|||||||
"mac" "980"
|
"mac" "980"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iAutoStart" // int
|
"m_fBeserk" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -136,25 +127,25 @@
|
|||||||
"mac" "984"
|
"mac" "984"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecLastSight" // Vector
|
"m_iAutoStart" // int
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "968"
|
"windows" "968"
|
||||||
"linux" "988"
|
"linux" "988"
|
||||||
"mac" "988"
|
"mac" "988"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastSight" // float
|
"m_vecLastSight" // Vector
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "980"
|
"windows" "972"
|
||||||
"linux" "1000"
|
"linux" "992"
|
||||||
"mac" "1000"
|
"mac" "992"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flMaxWait" // float
|
"m_flLastSight" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -163,58 +154,67 @@
|
|||||||
"mac" "1004"
|
"mac" "1004"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSearchSpeed" // int
|
"m_flMaxWait" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "988"
|
"windows" "988"
|
||||||
"linux" "1008"
|
"linux" "1008"
|
||||||
"mac" "1008"
|
"mac" "1008"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flStartYaw" // float
|
"m_iSearchSpeed" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "992"
|
"windows" "992"
|
||||||
"linux" "1012"
|
"linux" "1012"
|
||||||
"mac" "1012"
|
"mac" "1012"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecCurAngles" // Vector
|
"m_flStartYaw" // float
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "996"
|
"windows" "996"
|
||||||
"linux" "1016"
|
"linux" "1016"
|
||||||
"mac" "1016"
|
"mac" "1016"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_vecCurAngles" // Vector
|
||||||
|
{
|
||||||
|
"type" "vector"
|
||||||
|
|
||||||
|
"windows" "1000"
|
||||||
|
"linux" "1020"
|
||||||
|
"mac" "1020"
|
||||||
|
}
|
||||||
|
|
||||||
"m_vecGoalAngles" // Vector
|
"m_vecGoalAngles" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "1008"
|
"windows" "1012"
|
||||||
"linux" "1028"
|
"linux" "1032"
|
||||||
"mac" "1028"
|
"mac" "1032"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flPingTime" // float
|
"m_flPingTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "1020"
|
"windows" "1024"
|
||||||
"linux" "1040"
|
"linux" "1044"
|
||||||
"mac" "1040"
|
"mac" "1044"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flSpinUpTime" // float
|
"m_flSpinUpTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "1024"
|
"windows" "1028"
|
||||||
"linux" "1044"
|
"linux" "1048"
|
||||||
"mac" "1044"
|
"mac" "1048"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
|
||||||
"linux" "936"
|
|
||||||
"mac" "936"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_iszIdle" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "920"
|
||||||
"linux" "940"
|
"linux" "940"
|
||||||
"mac" "940"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszPlay" // int
|
"m_iszIdle" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -46,7 +37,7 @@
|
|||||||
"mac" "944"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszEntity" // int
|
"m_iszPlay" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -55,7 +46,7 @@
|
|||||||
"mac" "948"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszAttack" // int
|
"m_iszEntity" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -64,7 +55,7 @@
|
|||||||
"mac" "952"
|
"mac" "952"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszFireOnBegin" // int
|
"m_iszAttack" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -73,7 +64,7 @@
|
|||||||
"mac" "956"
|
"mac" "956"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fMoveTo" // int
|
"m_iszFireOnBegin" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -82,7 +73,7 @@
|
|||||||
"mac" "960"
|
"mac" "960"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fTurnType" // int
|
"m_fMoveTo" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -91,7 +82,7 @@
|
|||||||
"mac" "964"
|
"mac" "964"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fAction" // int
|
"m_fTurnType" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -100,7 +91,7 @@
|
|||||||
"mac" "968"
|
"mac" "968"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iFinishSchedule" // int
|
"m_fAction" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -109,52 +100,52 @@
|
|||||||
"mac" "972"
|
"mac" "972"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flRadius" // float
|
"m_iFinishSchedule" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "956"
|
"windows" "956"
|
||||||
"linux" "976"
|
"linux" "976"
|
||||||
"mac" "976"
|
"mac" "976"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iDelay" // int
|
"m_flRadius" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "960"
|
"windows" "960"
|
||||||
"linux" "980"
|
"linux" "980"
|
||||||
"mac" "980"
|
"mac" "980"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_startTime" // float
|
"m_iDelay" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "964"
|
"windows" "964"
|
||||||
"linux" "984"
|
"linux" "984"
|
||||||
"mac" "984"
|
"mac" "984"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_m_hTargetEnt" // EHANDLE
|
"m_startTime" // float
|
||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "968"
|
"windows" "968"
|
||||||
"linux" "988"
|
"linux" "988"
|
||||||
"mac" "988"
|
"mac" "988"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_m_pGoalEnt" // int
|
"m_saved_m_hTargetEnt" // EHANDLE
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "976"
|
"windows" "972"
|
||||||
"linux" "996"
|
"linux" "992"
|
||||||
"mac" "996"
|
"mac" "992"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_movetype" // int
|
"m_saved_m_pGoalEnt" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -163,7 +154,7 @@
|
|||||||
"mac" "1000"
|
"mac" "1000"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_solid" // int
|
"m_saved_movetype" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -172,7 +163,7 @@
|
|||||||
"mac" "1004"
|
"mac" "1004"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_effects" // int
|
"m_saved_solid" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -181,7 +172,7 @@
|
|||||||
"mac" "1008"
|
"mac" "1008"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_interruptable" // BOOL
|
"m_saved_effects" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -189,6 +180,15 @@
|
|||||||
"linux" "1012"
|
"linux" "1012"
|
||||||
"mac" "1012"
|
"mac" "1012"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_interruptable" // BOOL
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "996"
|
||||||
|
"linux" "1016"
|
||||||
|
"mac" "1016"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "972"
|
|
||||||
"linux" "992"
|
|
||||||
"mac" "992"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flShootTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "976"
|
"windows" "976"
|
||||||
"linux" "996"
|
"linux" "996"
|
||||||
"mac" "996"
|
"mac" "996"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flShootEnd" // float
|
"m_flShootTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,14 +37,23 @@
|
|||||||
"mac" "1000"
|
"mac" "1000"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flShootEnd" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "984"
|
||||||
|
"linux" "1004"
|
||||||
|
"mac" "1004"
|
||||||
|
}
|
||||||
|
|
||||||
"m_pBall" // CSprite*[2]
|
"m_pBall" // CSprite*[2]
|
||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "984"
|
"windows" "988"
|
||||||
"linux" "1004"
|
"linux" "1008"
|
||||||
"mac" "1004"
|
"mac" "1008"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBall" // int[2]
|
"m_iBall" // int[2]
|
||||||
@ -61,9 +61,9 @@
|
|||||||
"type" "integer"
|
"type" "integer"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "992"
|
"windows" "996"
|
||||||
"linux" "1012"
|
"linux" "1016"
|
||||||
"mac" "1012"
|
"mac" "1016"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBallTime" // float[2]
|
"m_iBallTime" // float[2]
|
||||||
@ -71,9 +71,9 @@
|
|||||||
"type" "float"
|
"type" "float"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "1000"
|
"windows" "1004"
|
||||||
"linux" "1020"
|
"linux" "1024"
|
||||||
"mac" "1020"
|
"mac" "1024"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBallCurrent" // int[2]
|
"m_iBallCurrent" // int[2]
|
||||||
@ -81,36 +81,36 @@
|
|||||||
"type" "integer"
|
"type" "integer"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "1008"
|
"windows" "1012"
|
||||||
"linux" "1028"
|
"linux" "1032"
|
||||||
"mac" "1028"
|
"mac" "1032"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecEstVelocity" // Vector
|
"m_vecEstVelocity" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "1016"
|
"windows" "1020"
|
||||||
"linux" "1036"
|
"linux" "1040"
|
||||||
"mac" "1036"
|
"mac" "1040"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_velocity" // Vector
|
"m_velocity" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "1028"
|
"windows" "1032"
|
||||||
"linux" "1048"
|
"linux" "1052"
|
||||||
"mac" "1048"
|
"mac" "1052"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fInCombat" // int
|
"m_fInCombat" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "1040"
|
"windows" "1044"
|
||||||
"linux" "1060"
|
"linux" "1064"
|
||||||
"mac" "1060"
|
"mac" "1064"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,36 +23,36 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextAttack" // int
|
"m_flNextAttack" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "924"
|
||||||
"linux" "940"
|
"linux" "944"
|
||||||
"mac" "940"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecIdeal" // Vector
|
"m_vecIdeal" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "924"
|
"windows" "928"
|
||||||
"linux" "944"
|
"linux" "948"
|
||||||
"mac" "944"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_hOwner" // EHANDLE
|
"m_hOwner" // EHANDLE
|
||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "936"
|
"windows" "940"
|
||||||
"linux" "956"
|
"linux" "960"
|
||||||
"mac" "956"
|
"mac" "960"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,18 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_spriteScale" // int
|
"m_spriteScale" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "924"
|
||||||
"linux" "940"
|
"linux" "944"
|
||||||
"mac" "940"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
|
||||||
"linux" "936"
|
|
||||||
"mac" "936"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flClipTime" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "920"
|
||||||
"linux" "940"
|
"linux" "940"
|
||||||
"mac" "940"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iOldMoveType" // int
|
"m_flClipTime" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -46,7 +37,7 @@
|
|||||||
"mac" "944"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBodyGibs" // int
|
"m_iOldMoveType" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -55,7 +46,7 @@
|
|||||||
"mac" "948"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fRegisteredSound" // BOOL
|
"m_iBodyGibs" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -63,6 +54,15 @@
|
|||||||
"linux" "952"
|
"linux" "952"
|
||||||
"mac" "952"
|
"mac" "952"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_fRegisteredSound" // BOOL
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "936"
|
||||||
|
"linux" "956"
|
||||||
|
"mac" "956"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "936"
|
"windows" "940"
|
||||||
"linux" "956"
|
"linux" "960"
|
||||||
"mac" "956"
|
"mac" "960"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,36 +23,36 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextSmellTime" // float
|
"m_flNextSmellTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "924"
|
||||||
"linux" "940"
|
"linux" "944"
|
||||||
"mac" "940"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fLightHacked" // BOOL
|
"m_fLightHacked" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "924"
|
"windows" "928"
|
||||||
"linux" "944"
|
"linux" "948"
|
||||||
"mac" "944"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iMode" // int
|
"m_iMode" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "928"
|
"windows" "932"
|
||||||
"linux" "948"
|
"linux" "952"
|
||||||
"mac" "948"
|
"mac" "952"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,36 +23,36 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextSmellTime" // float
|
"m_flNextSmellTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "924"
|
||||||
"linux" "940"
|
"linux" "944"
|
||||||
"mac" "940"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fLightHacked" // BOOL
|
"m_fLightHacked" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "924"
|
"windows" "928"
|
||||||
"linux" "944"
|
"linux" "948"
|
||||||
"mac" "944"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iMode" // int
|
"m_iMode" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "928"
|
"windows" "932"
|
||||||
"linux" "948"
|
"linux" "952"
|
||||||
"mac" "948"
|
"mac" "952"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "1040"
|
|
||||||
"linux" "1060"
|
|
||||||
"mac" "1060"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_painTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "1044"
|
"windows" "1044"
|
||||||
"linux" "1064"
|
"linux" "1064"
|
||||||
"mac" "1064"
|
"mac" "1064"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_checkAttackTime" // float
|
"m_painTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,14 +37,23 @@
|
|||||||
"mac" "1068"
|
"mac" "1068"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_lastAttackCheck" // BOOL
|
"m_checkAttackTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "1052"
|
"windows" "1052"
|
||||||
"linux" "1072"
|
"linux" "1072"
|
||||||
"mac" "1072"
|
"mac" "1072"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_lastAttackCheck" // BOOL
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "1056"
|
||||||
|
"linux" "1076"
|
||||||
|
"mac" "1076"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_hSquadMember" // EHANDLE[4]
|
"m_hSquadMember" // EHANDLE[4]
|
||||||
@ -33,45 +33,45 @@
|
|||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
"size" "4"
|
"size" "4"
|
||||||
|
|
||||||
"windows" "924"
|
"windows" "928"
|
||||||
"linux" "944"
|
"linux" "948"
|
||||||
"mac" "944"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_afSquadSlots" // int
|
"m_afSquadSlots" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "956"
|
"windows" "960"
|
||||||
"linux" "976"
|
"linux" "980"
|
||||||
"mac" "976"
|
"mac" "980"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastEnemySightTime" // float
|
"m_flLastEnemySightTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "960"
|
"windows" "964"
|
||||||
"linux" "980"
|
"linux" "984"
|
||||||
"mac" "980"
|
"mac" "984"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fEnemyEluded" // BOOL
|
"m_fEnemyEluded" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "964"
|
"windows" "968"
|
||||||
"linux" "984"
|
"linux" "988"
|
||||||
"mac" "984"
|
"mac" "988"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iMySlot" // int
|
"m_iMySlot" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "968"
|
"windows" "972"
|
||||||
"linux" "988"
|
"linux" "992"
|
||||||
"mac" "988"
|
"mac" "992"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
|
||||||
"linux" "936"
|
|
||||||
"mac" "936"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_nSpeak" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "920"
|
"windows" "920"
|
||||||
"linux" "940"
|
"linux" "940"
|
||||||
"mac" "940"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_voicePitch" // int
|
"m_nSpeak" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -46,35 +37,35 @@
|
|||||||
"mac" "944"
|
"mac" "944"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_szGrp" // const char*[19]
|
"m_voicePitch" // int
|
||||||
{
|
{
|
||||||
"type" "stringptr"
|
"type" "integer"
|
||||||
"size" "19"
|
|
||||||
|
|
||||||
"windows" "928"
|
"windows" "928"
|
||||||
"linux" "948"
|
"linux" "948"
|
||||||
"mac" "948"
|
"mac" "948"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_szGrp" // const char*[19]
|
||||||
|
{
|
||||||
|
"type" "stringptr"
|
||||||
|
"size" "19"
|
||||||
|
|
||||||
|
"windows" "932"
|
||||||
|
"linux" "952"
|
||||||
|
"mac" "952"
|
||||||
|
}
|
||||||
|
|
||||||
"m_useTime" // float
|
"m_useTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "1004"
|
|
||||||
"linux" "1024"
|
|
||||||
"mac" "1024"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_iszUse" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "1008"
|
"windows" "1008"
|
||||||
"linux" "1028"
|
"linux" "1028"
|
||||||
"mac" "1028"
|
"mac" "1028"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszUnUse" // int
|
"m_iszUse" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -83,7 +74,7 @@
|
|||||||
"mac" "1032"
|
"mac" "1032"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszDecline" // int
|
"m_iszUnUse" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -92,7 +83,7 @@
|
|||||||
"mac" "1036"
|
"mac" "1036"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszSpeakAs" // int
|
"m_iszDecline" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -101,16 +92,16 @@
|
|||||||
"mac" "1040"
|
"mac" "1040"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastSaidSmelled" // float
|
"m_iszSpeakAs" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "1024"
|
"windows" "1024"
|
||||||
"linux" "1044"
|
"linux" "1044"
|
||||||
"mac" "1044"
|
"mac" "1044"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flStopTalkTime" // float
|
"m_flLastSaidSmelled" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -119,14 +110,23 @@
|
|||||||
"mac" "1048"
|
"mac" "1048"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_hTalkTarget" // EHANDLE
|
"m_flStopTalkTime" // float
|
||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "1032"
|
"windows" "1032"
|
||||||
"linux" "1052"
|
"linux" "1052"
|
||||||
"mac" "1052"
|
"mac" "1052"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_hTalkTarget" // EHANDLE
|
||||||
|
{
|
||||||
|
"type" "ehandle"
|
||||||
|
|
||||||
|
"windows" "1036"
|
||||||
|
"linux" "1056"
|
||||||
|
"mac" "1056"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "1028"
|
"windows" "1032"
|
||||||
"linux" "1048"
|
"linux" "1052"
|
||||||
"mac" "1048"
|
"mac" "1052"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "916"
|
"windows" "920"
|
||||||
"linux" "936"
|
"linux" "940"
|
||||||
"mac" "936"
|
"mac" "940"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "764"
|
|
||||||
"linux" "784"
|
|
||||||
"mac" "784"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flNextHornetAttackCheck" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "768"
|
"windows" "768"
|
||||||
"linux" "788"
|
"linux" "788"
|
||||||
"mac" "788"
|
"mac" "788"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextPainTime" // float
|
"m_flNextHornetAttackCheck" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,7 +37,7 @@
|
|||||||
"mac" "792"
|
"mac" "792"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextSpeakTime" // float
|
"m_flNextPainTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -55,7 +46,7 @@
|
|||||||
"mac" "796"
|
"mac" "796"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextWordTime" // float
|
"m_flNextSpeakTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -64,14 +55,23 @@
|
|||||||
"mac" "800"
|
"mac" "800"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iLastWord" // int
|
"m_flNextWordTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "784"
|
"windows" "784"
|
||||||
"linux" "804"
|
"linux" "804"
|
||||||
"mac" "804"
|
"mac" "804"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_iLastWord" // int
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "788"
|
||||||
|
"linux" "808"
|
||||||
|
"mac" "808"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
|
||||||
"linux" "728"
|
|
||||||
"mac" "728"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flForce" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "712"
|
||||||
"linux" "732"
|
"linux" "732"
|
||||||
"mac" "732"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextRocket" // float
|
"m_flForce" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,88 +37,88 @@
|
|||||||
"mac" "736"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecTarget" // Vector
|
"m_flNextRocket" // float
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "720"
|
"windows" "720"
|
||||||
"linux" "740"
|
"linux" "740"
|
||||||
"mac" "740"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_vecTarget" // Vector
|
||||||
|
{
|
||||||
|
"type" "vector"
|
||||||
|
|
||||||
|
"windows" "724"
|
||||||
|
"linux" "744"
|
||||||
|
"mac" "744"
|
||||||
|
}
|
||||||
|
|
||||||
"m_posTarget" // Vector
|
"m_posTarget" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "732"
|
"windows" "736"
|
||||||
"linux" "752"
|
"linux" "756"
|
||||||
"mac" "752"
|
"mac" "756"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecDesired" // Vector
|
"m_vecDesired" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "744"
|
"windows" "748"
|
||||||
"linux" "764"
|
"linux" "768"
|
||||||
"mac" "764"
|
"mac" "768"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_posDesired" // Vector
|
"m_posDesired" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "756"
|
"windows" "760"
|
||||||
"linux" "776"
|
"linux" "780"
|
||||||
"mac" "776"
|
"mac" "780"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecGoal" // Vector
|
"m_vecGoal" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "768"
|
"windows" "772"
|
||||||
"linux" "788"
|
"linux" "792"
|
||||||
"mac" "788"
|
"mac" "792"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_angGun" // Vector
|
"m_angGun" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "780"
|
"windows" "784"
|
||||||
"linux" "800"
|
"linux" "804"
|
||||||
"mac" "800"
|
"mac" "804"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastSeen" // float
|
"m_flLastSeen" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "792"
|
|
||||||
"linux" "812"
|
|
||||||
"mac" "812"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flPrevSeen" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "796"
|
"windows" "796"
|
||||||
"linux" "816"
|
"linux" "816"
|
||||||
"mac" "816"
|
"mac" "816"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSoundState" // int
|
"m_flPrevSeen" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "800"
|
"windows" "800"
|
||||||
"linux" "820"
|
"linux" "820"
|
||||||
"mac" "820"
|
"mac" "820"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSpriteTexture" // int
|
"m_iSoundState" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -136,7 +127,7 @@
|
|||||||
"mac" "824"
|
"mac" "824"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iExplode" // int
|
"m_iSpriteTexture" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -145,7 +136,7 @@
|
|||||||
"mac" "828"
|
"mac" "828"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBodyGibs" // int
|
"m_iExplode" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -154,32 +145,41 @@
|
|||||||
"mac" "832"
|
"mac" "832"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flGoalSpeed" // float
|
"m_iBodyGibs" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "816"
|
"windows" "816"
|
||||||
"linux" "836"
|
"linux" "836"
|
||||||
"mac" "836"
|
"mac" "836"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iDoSmokePuff" // int
|
"m_flGoalSpeed" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "820"
|
"windows" "820"
|
||||||
"linux" "840"
|
"linux" "840"
|
||||||
"mac" "840"
|
"mac" "840"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_pBeam" // CBeam*
|
"m_iDoSmokePuff" // int
|
||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "824"
|
"windows" "824"
|
||||||
"linux" "844"
|
"linux" "844"
|
||||||
"mac" "844"
|
"mac" "844"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_pBeam" // CBeam*
|
||||||
|
{
|
||||||
|
"type" "classptr"
|
||||||
|
|
||||||
|
"windows" "828"
|
||||||
|
"linux" "848"
|
||||||
|
"mac" "848"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,18 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecForward" // Vector
|
"m_vecForward" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "716"
|
"windows" "720"
|
||||||
"linux" "736"
|
"linux" "740"
|
||||||
"mac" "736"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,30 +23,21 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flKillVictimTime" // float
|
"m_flKillVictimTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "712"
|
|
||||||
"linux" "732"
|
|
||||||
"mac" "732"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_cGibs" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "716"
|
"windows" "716"
|
||||||
"linux" "736"
|
"linux" "736"
|
||||||
"mac" "736"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fTongueExtended" // BOOL
|
"m_cGibs" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -55,7 +46,7 @@
|
|||||||
"mac" "740"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fLiftingPrey" // BOOL
|
"m_fTongueExtended" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -64,14 +55,23 @@
|
|||||||
"mac" "744"
|
"mac" "744"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flTongueAdj" // float
|
"m_fLiftingPrey" // BOOL
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "728"
|
"windows" "728"
|
||||||
"linux" "748"
|
"linux" "748"
|
||||||
"mac" "748"
|
"mac" "748"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flTongueAdj" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "732"
|
||||||
|
"linux" "752"
|
||||||
|
"mac" "752"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "824"
|
|
||||||
"linux" "844"
|
|
||||||
"mac" "844"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_painTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "828"
|
"windows" "828"
|
||||||
"linux" "848"
|
"linux" "848"
|
||||||
"mac" "848"
|
"mac" "848"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_checkAttackTime" // float
|
"m_painTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,23 +37,32 @@
|
|||||||
"mac" "852"
|
"mac" "852"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_lastAttackCheck" // BOOL
|
"m_checkAttackTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "836"
|
"windows" "836"
|
||||||
"linux" "856"
|
"linux" "856"
|
||||||
"mac" "856"
|
"mac" "856"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flPlayerDamage" // float
|
"m_lastAttackCheck" // BOOL
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "840"
|
"windows" "840"
|
||||||
"linux" "860"
|
"linux" "860"
|
||||||
"mac" "860"
|
"mac" "860"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flPlayerDamage" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "844"
|
||||||
|
"linux" "864"
|
||||||
|
"mac" "864"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,11 +55,47 @@
|
|||||||
"mac" "16"
|
"mac" "16"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_pfnThink" // (*__pfn)(CBaseEntity*)
|
||||||
|
{
|
||||||
|
"type" "function"
|
||||||
|
|
||||||
|
"windows" "20"
|
||||||
|
"linux" "20"
|
||||||
|
"mac" "20"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_pfnTouch" // (*__pfn)(CBaseEntity*, CBaseEntity*)
|
||||||
|
{
|
||||||
|
"type" "function"
|
||||||
|
|
||||||
|
"windows" "24"
|
||||||
|
"linux" "28"
|
||||||
|
"mac" "28"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_pfnUse" // (*__pfn)(CBaseEntity*, CBaseEntity*, CBaseEntity*, USE_TYPE, float)
|
||||||
|
{
|
||||||
|
"type" "function"
|
||||||
|
|
||||||
|
"windows" "28"
|
||||||
|
"linux" "36"
|
||||||
|
"mac" "36"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_pfnBlocked" // (*__pfn)(CBaseEntity*, CBaseEntity*)
|
||||||
|
{
|
||||||
|
"type" "function"
|
||||||
|
|
||||||
|
"windows" "32"
|
||||||
|
"linux" "44"
|
||||||
|
"mac" "44"
|
||||||
|
}
|
||||||
|
|
||||||
"ammo_9mm" // int
|
"ammo_9mm" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "52"
|
"windows" "36"
|
||||||
"linux" "52"
|
"linux" "52"
|
||||||
"mac" "52"
|
"mac" "52"
|
||||||
}
|
}
|
||||||
@ -68,7 +104,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "56"
|
"windows" "40"
|
||||||
"linux" "56"
|
"linux" "56"
|
||||||
"mac" "56"
|
"mac" "56"
|
||||||
}
|
}
|
||||||
@ -77,7 +113,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "60"
|
"windows" "44"
|
||||||
"linux" "60"
|
"linux" "60"
|
||||||
"mac" "60"
|
"mac" "60"
|
||||||
}
|
}
|
||||||
@ -86,7 +122,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "64"
|
"windows" "48"
|
||||||
"linux" "64"
|
"linux" "64"
|
||||||
"mac" "64"
|
"mac" "64"
|
||||||
}
|
}
|
||||||
@ -95,7 +131,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "68"
|
"windows" "52"
|
||||||
"linux" "68"
|
"linux" "68"
|
||||||
"mac" "68"
|
"mac" "68"
|
||||||
}
|
}
|
||||||
@ -104,7 +140,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "72"
|
"windows" "56"
|
||||||
"linux" "72"
|
"linux" "72"
|
||||||
"mac" "72"
|
"mac" "72"
|
||||||
}
|
}
|
||||||
@ -113,7 +149,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "76"
|
"windows" "60"
|
||||||
"linux" "76"
|
"linux" "76"
|
||||||
"mac" "76"
|
"mac" "76"
|
||||||
}
|
}
|
||||||
@ -122,7 +158,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "80"
|
"windows" "64"
|
||||||
"linux" "80"
|
"linux" "80"
|
||||||
"mac" "80"
|
"mac" "80"
|
||||||
}
|
}
|
||||||
@ -131,7 +167,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "84"
|
"windows" "68"
|
||||||
"linux" "84"
|
"linux" "84"
|
||||||
"mac" "84"
|
"mac" "84"
|
||||||
}
|
}
|
||||||
@ -140,7 +176,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "88"
|
"windows" "72"
|
||||||
"linux" "88"
|
"linux" "88"
|
||||||
"mac" "88"
|
"mac" "88"
|
||||||
}
|
}
|
||||||
@ -149,7 +185,7 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "92"
|
"windows" "76"
|
||||||
"linux" "92"
|
"linux" "92"
|
||||||
"mac" "92"
|
"mac" "92"
|
||||||
}
|
}
|
||||||
@ -158,7 +194,7 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "96"
|
"windows" "80"
|
||||||
"linux" "96"
|
"linux" "96"
|
||||||
"mac" "96"
|
"mac" "96"
|
||||||
}
|
}
|
||||||
@ -167,7 +203,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "100"
|
"windows" "84"
|
||||||
"linux" "100"
|
"linux" "100"
|
||||||
"mac" "100"
|
"mac" "100"
|
||||||
}
|
}
|
||||||
@ -176,7 +212,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "104"
|
"windows" "88"
|
||||||
"linux" "104"
|
"linux" "104"
|
||||||
"mac" "104"
|
"mac" "104"
|
||||||
}
|
}
|
||||||
@ -185,7 +221,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "108"
|
"windows" "92"
|
||||||
"linux" "108"
|
"linux" "108"
|
||||||
"mac" "108"
|
"mac" "108"
|
||||||
}
|
}
|
||||||
|
@ -491,6 +491,15 @@
|
|||||||
"linux" "724"
|
"linux" "724"
|
||||||
"mac" "724"
|
"mac" "724"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flLastYawTime" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "708"
|
||||||
|
"linux" "728"
|
||||||
|
"mac" "728"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -145,11 +145,20 @@
|
|||||||
"mac" "224"
|
"mac" "224"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_pfnCallWhenMoveDone" // (*__pfn)(CBaseToggle*)
|
||||||
|
{
|
||||||
|
"type" "function"
|
||||||
|
|
||||||
|
"windows" "216"
|
||||||
|
"linux" "232"
|
||||||
|
"mac" "232"
|
||||||
|
}
|
||||||
|
|
||||||
"m_vecFinalDest" // Vector
|
"m_vecFinalDest" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "224"
|
"windows" "220"
|
||||||
"linux" "240"
|
"linux" "240"
|
||||||
"mac" "240"
|
"mac" "240"
|
||||||
}
|
}
|
||||||
@ -158,7 +167,7 @@
|
|||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "236"
|
"windows" "232"
|
||||||
"linux" "252"
|
"linux" "252"
|
||||||
"mac" "252"
|
"mac" "252"
|
||||||
}
|
}
|
||||||
@ -167,7 +176,7 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "248"
|
"windows" "244"
|
||||||
"linux" "264"
|
"linux" "264"
|
||||||
"mac" "264"
|
"mac" "264"
|
||||||
}
|
}
|
||||||
@ -176,7 +185,7 @@
|
|||||||
{
|
{
|
||||||
"type" "stringint"
|
"type" "stringint"
|
||||||
|
|
||||||
"windows" "252"
|
"windows" "248"
|
||||||
"linux" "268"
|
"linux" "268"
|
||||||
"mac" "268"
|
"mac" "268"
|
||||||
}
|
}
|
||||||
|
@ -23,39 +23,30 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSpin" // int
|
"m_iSpin" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_pEyeGlow" // CSprite*
|
"m_pEyeGlow" // CSprite*
|
||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
|
|
||||||
"windows" "716"
|
|
||||||
"linux" "736"
|
|
||||||
"mac" "736"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_eyeBrightness" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "720"
|
"windows" "720"
|
||||||
"linux" "740"
|
"linux" "740"
|
||||||
"mac" "740"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iDeployHeight" // int
|
"m_eyeBrightness" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -64,7 +55,7 @@
|
|||||||
"mac" "744"
|
"mac" "744"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iRetractHeight" // int
|
"m_iDeployHeight" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -73,7 +64,7 @@
|
|||||||
"mac" "748"
|
"mac" "748"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iMinPitch" // int
|
"m_iRetractHeight" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -82,7 +73,7 @@
|
|||||||
"mac" "752"
|
"mac" "752"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBaseTurnRate" // int
|
"m_iMinPitch" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -91,25 +82,25 @@
|
|||||||
"mac" "756"
|
"mac" "756"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fTurnRate" // float
|
"m_iBaseTurnRate" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "740"
|
"windows" "740"
|
||||||
"linux" "760"
|
"linux" "760"
|
||||||
"mac" "760"
|
"mac" "760"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iOrientation" // int
|
"m_fTurnRate" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "744"
|
"windows" "744"
|
||||||
"linux" "764"
|
"linux" "764"
|
||||||
"mac" "764"
|
"mac" "764"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iOn" // int
|
"m_iOrientation" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -118,7 +109,7 @@
|
|||||||
"mac" "768"
|
"mac" "768"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fBeserk" // int
|
"m_iOn" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -127,7 +118,7 @@
|
|||||||
"mac" "772"
|
"mac" "772"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iAutoStart" // int
|
"m_fBeserk" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -136,25 +127,25 @@
|
|||||||
"mac" "776"
|
"mac" "776"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecLastSight" // Vector
|
"m_iAutoStart" // int
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "760"
|
"windows" "760"
|
||||||
"linux" "780"
|
"linux" "780"
|
||||||
"mac" "780"
|
"mac" "780"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastSight" // float
|
"m_vecLastSight" // Vector
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "772"
|
"windows" "764"
|
||||||
"linux" "792"
|
"linux" "784"
|
||||||
"mac" "792"
|
"mac" "784"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flMaxWait" // float
|
"m_flLastSight" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -163,58 +154,67 @@
|
|||||||
"mac" "796"
|
"mac" "796"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iSearchSpeed" // int
|
"m_flMaxWait" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "780"
|
"windows" "780"
|
||||||
"linux" "800"
|
"linux" "800"
|
||||||
"mac" "800"
|
"mac" "800"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flStartYaw" // float
|
"m_iSearchSpeed" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "784"
|
"windows" "784"
|
||||||
"linux" "804"
|
"linux" "804"
|
||||||
"mac" "804"
|
"mac" "804"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecCurAngles" // Vector
|
"m_flStartYaw" // float
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "788"
|
"windows" "788"
|
||||||
"linux" "808"
|
"linux" "808"
|
||||||
"mac" "808"
|
"mac" "808"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_vecCurAngles" // Vector
|
||||||
|
{
|
||||||
|
"type" "vector"
|
||||||
|
|
||||||
|
"windows" "792"
|
||||||
|
"linux" "812"
|
||||||
|
"mac" "812"
|
||||||
|
}
|
||||||
|
|
||||||
"m_vecGoalAngles" // Vector
|
"m_vecGoalAngles" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "800"
|
"windows" "804"
|
||||||
"linux" "820"
|
"linux" "824"
|
||||||
"mac" "820"
|
"mac" "824"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flPingTime" // float
|
"m_flPingTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "812"
|
"windows" "816"
|
||||||
"linux" "832"
|
"linux" "836"
|
||||||
"mac" "832"
|
"mac" "836"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flSpinUpTime" // float
|
"m_flSpinUpTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "816"
|
"windows" "820"
|
||||||
"linux" "836"
|
"linux" "840"
|
||||||
"mac" "836"
|
"mac" "840"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "708"
|
|
||||||
"linux" "728"
|
|
||||||
"mac" "728"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_crabTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "712"
|
||||||
"linux" "732"
|
"linux" "732"
|
||||||
"mac" "732"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_mortarTime" // float
|
"m_crabTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,7 +37,7 @@
|
|||||||
"mac" "736"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_painSoundTime" // float
|
"m_mortarTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -55,14 +46,23 @@
|
|||||||
"mac" "740"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_crabCount" // int
|
"m_painSoundTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "724"
|
"windows" "724"
|
||||||
"linux" "744"
|
"linux" "744"
|
||||||
"mac" "744"
|
"mac" "744"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_crabCount" // int
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "728"
|
||||||
|
"linux" "748"
|
||||||
|
"mac" "748"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,27 +23,27 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flLastHurtTime" // float
|
"m_flLastHurtTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextSpitTime" // float
|
"m_flNextSpitTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "716"
|
"windows" "720"
|
||||||
"linux" "736"
|
"linux" "740"
|
||||||
"mac" "736"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
|
||||||
"linux" "728"
|
|
||||||
"mac" "728"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_iszPlay" // int
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "712"
|
||||||
"linux" "732"
|
"linux" "732"
|
||||||
"mac" "732"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iszEntity" // int
|
"m_iszPlay" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -46,7 +37,7 @@
|
|||||||
"mac" "736"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fMoveTo" // int
|
"m_iszEntity" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -55,7 +46,7 @@
|
|||||||
"mac" "740"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iFinishSchedule" // int
|
"m_fMoveTo" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -64,16 +55,16 @@
|
|||||||
"mac" "744"
|
"mac" "744"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flRadius" // float
|
"m_iFinishSchedule" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "728"
|
"windows" "728"
|
||||||
"linux" "748"
|
"linux" "748"
|
||||||
"mac" "748"
|
"mac" "748"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flRepeat" // float
|
"m_flRadius" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -82,34 +73,34 @@
|
|||||||
"mac" "752"
|
"mac" "752"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iDelay" // int
|
"m_flRepeat" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "736"
|
"windows" "736"
|
||||||
"linux" "756"
|
"linux" "756"
|
||||||
"mac" "756"
|
"mac" "756"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_startTime" // float
|
"m_iDelay" // int
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "740"
|
"windows" "740"
|
||||||
"linux" "760"
|
"linux" "760"
|
||||||
"mac" "760"
|
"mac" "760"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_movetype" // int
|
"m_startTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "744"
|
"windows" "744"
|
||||||
"linux" "764"
|
"linux" "764"
|
||||||
"mac" "764"
|
"mac" "764"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_solid" // int
|
"m_saved_movetype" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -118,7 +109,7 @@
|
|||||||
"mac" "768"
|
"mac" "768"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_saved_effects" // int
|
"m_saved_solid" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -127,7 +118,7 @@
|
|||||||
"mac" "772"
|
"mac" "772"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_interruptable" // BOOL
|
"m_saved_effects" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -135,6 +126,15 @@
|
|||||||
"linux" "776"
|
"linux" "776"
|
||||||
"mac" "776"
|
"mac" "776"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_interruptable" // BOOL
|
||||||
|
{
|
||||||
|
"type" "integer"
|
||||||
|
|
||||||
|
"windows" "760"
|
||||||
|
"linux" "780"
|
||||||
|
"mac" "780"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,27 +23,27 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "824"
|
"windows" "828"
|
||||||
"linux" "844"
|
"linux" "848"
|
||||||
"mac" "844"
|
"mac" "848"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_healTime" // float
|
"m_healTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "828"
|
"windows" "832"
|
||||||
"linux" "848"
|
"linux" "852"
|
||||||
"mac" "848"
|
"mac" "852"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fearTime" // float
|
"m_fearTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "832"
|
"windows" "836"
|
||||||
"linux" "852"
|
"linux" "856"
|
||||||
"mac" "852"
|
"mac" "856"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "764"
|
|
||||||
"linux" "784"
|
|
||||||
"mac" "784"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flShootTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "768"
|
"windows" "768"
|
||||||
"linux" "788"
|
"linux" "788"
|
||||||
"mac" "788"
|
"mac" "788"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flShootEnd" // float
|
"m_flShootTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,14 +37,23 @@
|
|||||||
"mac" "792"
|
"mac" "792"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flShootEnd" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "776"
|
||||||
|
"linux" "796"
|
||||||
|
"mac" "796"
|
||||||
|
}
|
||||||
|
|
||||||
"m_pBall" // CSprite*[2]
|
"m_pBall" // CSprite*[2]
|
||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "776"
|
"windows" "780"
|
||||||
"linux" "796"
|
"linux" "800"
|
||||||
"mac" "796"
|
"mac" "800"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBall" // int[2]
|
"m_iBall" // int[2]
|
||||||
@ -61,9 +61,9 @@
|
|||||||
"type" "integer"
|
"type" "integer"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "784"
|
"windows" "788"
|
||||||
"linux" "804"
|
"linux" "808"
|
||||||
"mac" "804"
|
"mac" "808"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBallTime" // float[2]
|
"m_iBallTime" // float[2]
|
||||||
@ -71,9 +71,9 @@
|
|||||||
"type" "float"
|
"type" "float"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "792"
|
"windows" "796"
|
||||||
"linux" "812"
|
"linux" "816"
|
||||||
"mac" "812"
|
"mac" "816"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iBallCurrent" // int[2]
|
"m_iBallCurrent" // int[2]
|
||||||
@ -81,36 +81,36 @@
|
|||||||
"type" "integer"
|
"type" "integer"
|
||||||
"size" "2"
|
"size" "2"
|
||||||
|
|
||||||
"windows" "800"
|
"windows" "804"
|
||||||
"linux" "820"
|
"linux" "824"
|
||||||
"mac" "820"
|
"mac" "824"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecEstVelocity" // Vector
|
"m_vecEstVelocity" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "808"
|
"windows" "812"
|
||||||
"linux" "828"
|
"linux" "832"
|
||||||
"mac" "828"
|
"mac" "832"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_velocity" // Vector
|
"m_velocity" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "820"
|
"windows" "824"
|
||||||
"linux" "840"
|
"linux" "844"
|
||||||
"mac" "840"
|
"mac" "844"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fInCombat" // int
|
"m_fInCombat" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "832"
|
"windows" "836"
|
||||||
"linux" "852"
|
"linux" "856"
|
||||||
"mac" "852"
|
"mac" "856"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,36 +23,36 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flNextAttack" // int
|
"m_flNextAttack" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecIdeal" // Vector
|
"m_vecIdeal" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "716"
|
"windows" "720"
|
||||||
"linux" "736"
|
"linux" "740"
|
||||||
"mac" "736"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_hOwner" // EHANDLE
|
"m_hOwner" // EHANDLE
|
||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "728"
|
"windows" "732"
|
||||||
"linux" "748"
|
"linux" "752"
|
||||||
"mac" "748"
|
"mac" "752"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,18 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iCyclerBody" // int
|
"m_iCyclerBody" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,18 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_iGruntHead" // int
|
"m_iGruntHead" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,21 +23,12 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "824"
|
|
||||||
"linux" "844"
|
|
||||||
"mac" "844"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_painTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "828"
|
"windows" "828"
|
||||||
"linux" "848"
|
"linux" "848"
|
||||||
"mac" "848"
|
"mac" "848"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_checkAttackTime" // float
|
"m_painTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -46,23 +37,32 @@
|
|||||||
"mac" "852"
|
"mac" "852"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_lastAttackCheck" // BOOL
|
"m_checkAttackTime" // float
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "836"
|
"windows" "836"
|
||||||
"linux" "856"
|
"linux" "856"
|
||||||
"mac" "856"
|
"mac" "856"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flPlayerDamage" // float
|
"m_lastAttackCheck" // BOOL
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "840"
|
"windows" "840"
|
||||||
"linux" "860"
|
"linux" "860"
|
||||||
"mac" "860"
|
"mac" "860"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flPlayerDamage" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "844"
|
||||||
|
"linux" "864"
|
||||||
|
"mac" "864"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,18 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_spriteScale" // int
|
"m_spriteScale" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,30 +23,21 @@
|
|||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_pSquadNext" // CFlockingFlyer*
|
"m_pSquadNext" // CFlockingFlyer*
|
||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
|
|
||||||
"windows" "712"
|
|
||||||
"linux" "732"
|
|
||||||
"mac" "732"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_fTurning" // BOOL
|
|
||||||
{
|
|
||||||
"type" "integer"
|
|
||||||
|
|
||||||
"windows" "716"
|
"windows" "716"
|
||||||
"linux" "736"
|
"linux" "736"
|
||||||
"mac" "736"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fCourseAdjust" // BOOL
|
"m_fTurning" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -55,7 +46,7 @@
|
|||||||
"mac" "740"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_fPathBlocked" // BOOL
|
"m_fCourseAdjust" // BOOL
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
@ -64,43 +55,43 @@
|
|||||||
"mac" "744"
|
"mac" "744"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_vecReferencePoint" // Vector
|
"m_fPathBlocked" // BOOL
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "728"
|
"windows" "728"
|
||||||
"linux" "748"
|
"linux" "748"
|
||||||
"mac" "748"
|
"mac" "748"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_vecReferencePoint" // Vector
|
||||||
|
{
|
||||||
|
"type" "vector"
|
||||||
|
|
||||||
|
"windows" "732"
|
||||||
|
"linux" "752"
|
||||||
|
"mac" "752"
|
||||||
|
}
|
||||||
|
|
||||||
"m_vecAdjustedVelocity" // Vector
|
"m_vecAdjustedVelocity" // Vector
|
||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "740"
|
"windows" "744"
|
||||||
"linux" "760"
|
"linux" "764"
|
||||||
"mac" "760"
|
"mac" "764"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flGoalSpeed" // float
|
"m_flGoalSpeed" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "752"
|
|
||||||
"linux" "772"
|
|
||||||
"mac" "772"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_flLastBlockedTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "756"
|
"windows" "756"
|
||||||
"linux" "776"
|
"linux" "776"
|
||||||
"mac" "776"
|
"mac" "776"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flFakeBlockedTime" // float
|
"m_flLastBlockedTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -109,7 +100,7 @@
|
|||||||
"mac" "780"
|
"mac" "780"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flAlertTime" // float
|
"m_flFakeBlockedTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -118,7 +109,7 @@
|
|||||||
"mac" "784"
|
"mac" "784"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flFlockNextSoundTime" // float
|
"m_flAlertTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -126,6 +117,15 @@
|
|||||||
"linux" "788"
|
"linux" "788"
|
||||||
"mac" "788"
|
"mac" "788"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flFlockNextSoundTime" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "772"
|
||||||
|
"linux" "792"
|
||||||
|
"mac" "792"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,18 +23,18 @@
|
|||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flFlockRadius" // float
|
"m_flFlockRadius" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,30 +23,21 @@
|
|||||||
{
|
{
|
||||||
"type" "vector"
|
"type" "vector"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flightSpeed" // float
|
"m_flightSpeed" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "720"
|
|
||||||
"linux" "740"
|
|
||||||
"mac" "740"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_stopTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "724"
|
"windows" "724"
|
||||||
"linux" "744"
|
"linux" "744"
|
||||||
"mac" "744"
|
"mac" "744"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_momentum" // float
|
"m_stopTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -55,14 +46,32 @@
|
|||||||
"mac" "748"
|
"mac" "748"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_pFlapSound" // const char*
|
"m_momentum" // float
|
||||||
{
|
{
|
||||||
"type" "stringptr"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "732"
|
"windows" "732"
|
||||||
"linux" "752"
|
"linux" "752"
|
||||||
"mac" "752"
|
"mac" "752"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_pFlapSound" // const char*
|
||||||
|
{
|
||||||
|
"type" "stringptr"
|
||||||
|
|
||||||
|
"windows" "736"
|
||||||
|
"linux" "756"
|
||||||
|
"mac" "756"
|
||||||
|
}
|
||||||
|
|
||||||
|
"m_flLastZYawTime" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "740"
|
||||||
|
"linux" "760"
|
||||||
|
"mac" "760"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{
|
{
|
||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_pFlame" // CBeam*[4]
|
"m_pFlame" // CBeam*[4]
|
||||||
@ -33,30 +33,21 @@
|
|||||||
"type" "classptr"
|
"type" "classptr"
|
||||||
"size" "4"
|
"size" "4"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_eyeBrightness" // int
|
"m_eyeBrightness" // int
|
||||||
{
|
{
|
||||||
"type" "integer"
|
"type" "integer"
|
||||||
|
|
||||||
"windows" "728"
|
|
||||||
"linux" "748"
|
|
||||||
"mac" "748"
|
|
||||||
}
|
|
||||||
|
|
||||||
"m_seeTime" // float
|
|
||||||
{
|
|
||||||
"type" "float"
|
|
||||||
|
|
||||||
"windows" "732"
|
"windows" "732"
|
||||||
"linux" "752"
|
"linux" "752"
|
||||||
"mac" "752"
|
"mac" "752"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flameTime" // float
|
"m_seeTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -65,7 +56,7 @@
|
|||||||
"mac" "756"
|
"mac" "756"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_painSoundTime" // float
|
"m_flameTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -74,7 +65,7 @@
|
|||||||
"mac" "760"
|
"mac" "760"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_streakTime" // float
|
"m_painSoundTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -83,7 +74,7 @@
|
|||||||
"mac" "764"
|
"mac" "764"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flameX" // float
|
"m_streakTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -92,7 +83,7 @@
|
|||||||
"mac" "768"
|
"mac" "768"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flameY" // float
|
"m_flameX" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
@ -100,6 +91,15 @@
|
|||||||
"linux" "772"
|
"linux" "772"
|
||||||
"mac" "772"
|
"mac" "772"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"m_flameY" // float
|
||||||
|
{
|
||||||
|
"type" "float"
|
||||||
|
|
||||||
|
"windows" "756"
|
||||||
|
"linux" "776"
|
||||||
|
"mac" "776"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,36 +23,36 @@
|
|||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_hTalkTarget" // EHANDLE
|
"m_hTalkTarget" // EHANDLE
|
||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "712"
|
"windows" "716"
|
||||||
"linux" "732"
|
"linux" "736"
|
||||||
"mac" "732"
|
"mac" "736"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flIdealYaw" // float
|
"m_flIdealYaw" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "720"
|
"windows" "724"
|
||||||
"linux" "740"
|
"linux" "744"
|
||||||
"mac" "740"
|
"mac" "744"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flCurrentYaw" // float
|
"m_flCurrentYaw" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "724"
|
"windows" "728"
|
||||||
"linux" "744"
|
"linux" "748"
|
||||||
"mac" "744"
|
"mac" "748"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,27 +23,27 @@
|
|||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "708"
|
"windows" "712"
|
||||||
"linux" "728"
|
"linux" "732"
|
||||||
"mac" "728"
|
"mac" "732"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_hTalkTarget" // EHANDLE
|
"m_hTalkTarget" // EHANDLE
|
||||||
{
|
{
|
||||||
"type" "ehandle"
|
"type" "ehandle"
|
||||||
|
|
||||||
"windows" "716"
|
"windows" "720"
|
||||||
"linux" "736"
|
"linux" "740"
|
||||||
"mac" "736"
|
"mac" "740"
|
||||||
}
|
}
|
||||||
|
|
||||||
"m_flTalkTime" // float
|
"m_flTalkTime" // float
|
||||||
{
|
{
|
||||||
"type" "float"
|
"type" "float"
|
||||||
|
|
||||||
"windows" "724"
|
"windows" "728"
|
||||||
"linux" "744"
|
"linux" "748"
|
||||||
"mac" "744"
|
"mac" "748"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user