Compare commits
58
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c0a53cfdb | ||
|
|
5d485df4b8 | ||
|
|
0656857960 | ||
|
|
af69434738 | ||
|
|
d713c52524 | ||
|
|
ef59237dad | ||
|
|
049f99a658 | ||
|
|
ffe50ed9f1 | ||
|
|
f2266b45a3 | ||
|
|
c5f57cb3e4 | ||
|
|
21a645e1c6 | ||
|
|
e4505b981b | ||
|
|
30c9d56e3f | ||
|
|
e29cf999a9 | ||
|
|
df9ae818db | ||
|
|
f725ee4fb4 | ||
|
|
ce51189e9a | ||
|
|
84ffb3de43 | ||
|
|
cc5d87578f | ||
|
|
123a5c6f66 | ||
|
|
9e20e01ee4 | ||
|
|
c275bcdb96 | ||
|
|
0036fe29cd | ||
|
|
6e6655f577 | ||
|
|
66220ba56a | ||
|
|
d0e54cafe7 | ||
|
|
20bdc2b435 | ||
|
|
ad2650b0aa | ||
|
|
4ac8430608 | ||
|
|
c6405bfb63 | ||
|
|
cdbaac15a1 | ||
|
|
d2cf4e3364 | ||
|
|
bce587edca | ||
|
|
f55a11b8cf | ||
|
|
71f73ddc3a | ||
|
|
693c0cf41b | ||
|
|
ce77a86808 | ||
|
|
a8242fd7e3 | ||
|
|
cfe8757570 | ||
|
|
896d949a82 | ||
|
|
391807c8ce | ||
|
|
39539757cf | ||
|
|
479b1e8225 | ||
|
|
956259b336 | ||
|
|
e6b7b79127 | ||
|
|
a1f6c94f1e | ||
|
|
5f312fb76e | ||
|
|
b231caae50 | ||
|
|
5596e65f6d | ||
|
|
fc7f7efc4b | ||
|
|
8a73628451 | ||
|
|
1928cb7e33 | ||
|
|
67b7df2a4e | ||
|
|
fd5033120a | ||
|
|
080ee88b17 | ||
|
|
7951515ff3 | ||
|
|
d1568472c6 | ||
|
|
227e2e1b0c |
@@ -5,3 +5,5 @@ b3ffa8a4511c4eadaf533fc790aa6b14f7f0c6ea sourcemod-1.1.2
|
|||||||
3a73bbf60f34befa9b66be03fa5974b394bb3411 sourcemod-1.2.0
|
3a73bbf60f34befa9b66be03fa5974b394bb3411 sourcemod-1.2.0
|
||||||
ddd707c3454c382db5db9d28148cd19227f44759 sourcemod-1.4.0
|
ddd707c3454c382db5db9d28148cd19227f44759 sourcemod-1.4.0
|
||||||
f74e1dea2ef2c5a12b5238badc0e877106804191 sourcemod-1.4.1
|
f74e1dea2ef2c5a12b5238badc0e877106804191 sourcemod-1.4.1
|
||||||
|
0026e1394254c392244c7b140e3075974ab5a6db sourcemod-1.4.2
|
||||||
|
608f4c94872e3624404a1d105284163bc57fadf7 sourcemod-1.4.3
|
||||||
|
|||||||
@@ -2,6 +2,55 @@ SourceMod Changelog
|
|||||||
|
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
SourceMod 1.4.4 [2012-07-03]
|
||||||
|
|
||||||
|
URL: http://wiki.alliedmods.net/SourceMod_1.4.4_Release_Notes
|
||||||
|
|
||||||
|
User Changes:
|
||||||
|
|
||||||
|
- Updated support for latest Source 2009 engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
|
||||||
|
- Updated Nuclear Dawn gamedata.
|
||||||
|
- Fixed a crash that could occur when selecting an option on a clientprefs prefab menu (bug 5374).
|
||||||
|
|
||||||
|
Developer Changes:
|
||||||
|
|
||||||
|
- Added new TF2 weapon and custom dmg defines.
|
||||||
|
- Added new TF2 TFHoliday value (bug 5364) (Powerlord).
|
||||||
|
- Updated sample extension to properly fill ninvoke with INativeInvoker ptr (bug 5340) (Afronanny).
|
||||||
|
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
SourceMod 1.4.3 [2012-06-09]
|
||||||
|
|
||||||
|
URL: http://wiki.alliedmods.net/SourceMod_1.4.3_Release_Notes
|
||||||
|
|
||||||
|
User Changes:
|
||||||
|
|
||||||
|
- Updated support for latest OrangeBox engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
|
||||||
|
- Made clientprefs attempt to reconnect to the database on map change (bug 4745).
|
||||||
|
- Log functions now respect sv_logecho (bug 5135).
|
||||||
|
- Fixed client console vote output (bug 5290, bug 5205) (FlaminSarge).
|
||||||
|
- Fixed error when reloading dependant plugins using aliased natives (bug 5302).
|
||||||
|
- Fixed intermittent crash when looking for an invalid signature (bug 5301).
|
||||||
|
- Fixed possible crash when reloading a plugin with an invalid binary (bug 5288).
|
||||||
|
- Exposed extensions list to clients (bug 5221) (VoiDeD).
|
||||||
|
- Fixed intermittent crashes in clientprefs (bug 4660).
|
||||||
|
- Fixed crash when passing an invalid entity reference to ReferenceToEntity (bug 5330).
|
||||||
|
- Fixed cstrike extension crash on shutdown (bug 5328).
|
||||||
|
- Lowered threading API think time to 20ms, making threaded MySQL queries complete faster (bug 4733).
|
||||||
|
|
||||||
|
Developer Changes:
|
||||||
|
|
||||||
|
- Fixed client serials not being unique on Windows (bug 5285).
|
||||||
|
- Fixed broken SourceTV detection on L4D1 (bug 5216).
|
||||||
|
- Fixed Float negation operator (bug 5292).
|
||||||
|
- Updated TF2 condition defines (bug 5259) (FlaminSarge).
|
||||||
|
- Adding missing SetMenuNoVoteButton native declaration (bug 4522) (GoD-Tony).
|
||||||
|
- Fixed erroneous const-qualification of name param of GetAdminUsername (bug 5267).
|
||||||
|
- Added GetGameTickCount native (bug 5209) (GoD-Tony).
|
||||||
|
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
SourceMod 1.4.2 [2011-04-13]
|
SourceMod 1.4.2 [2011-04-13]
|
||||||
|
|
||||||
URL: http://wiki.alliedmods.net/SourceMod_1.4.2_Release_Notes
|
URL: http://wiki.alliedmods.net/SourceMod_1.4.2_Release_Notes
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "sourcemm_api.h"
|
#include "sourcemm_api.h"
|
||||||
#include "sm_srvcmds.h"
|
#include "sm_srvcmds.h"
|
||||||
#include "sm_stringutil.h"
|
#include "sm_stringutil.h"
|
||||||
|
#include "PlayerManager.h"
|
||||||
|
|
||||||
CExtensionManager g_Extensions;
|
CExtensionManager g_Extensions;
|
||||||
IdentityType_t g_ExtType;
|
IdentityType_t g_ExtType;
|
||||||
@@ -1284,6 +1285,94 @@ void CExtensionManager::OnRootConsoleCommand(const char *cmdname, const CCommand
|
|||||||
g_RootMenu.DrawGenericOption("unload", "Unload an extension");
|
g_RootMenu.DrawGenericOption("unload", "Unload an extension");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CExtensionManager::ListExtensionsToClient(CPlayer *player, const CCommand &args)
|
||||||
|
{
|
||||||
|
char buffer[256];
|
||||||
|
int numExtensions = m_Libs.size();
|
||||||
|
edict_t *edict = player->GetEdict();
|
||||||
|
unsigned int id = 0;
|
||||||
|
unsigned int start = 0;
|
||||||
|
|
||||||
|
if (!numExtensions)
|
||||||
|
{
|
||||||
|
ClientConsolePrint(edict, "[SM] No extensions found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.ArgC() > 2)
|
||||||
|
{
|
||||||
|
start = atoi(args.Arg(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
CExtension *ext;
|
||||||
|
SourceHook::List<CExtension *>::iterator iter;
|
||||||
|
|
||||||
|
for (iter = m_Libs.begin();
|
||||||
|
iter != m_Libs.end();
|
||||||
|
iter++)
|
||||||
|
{
|
||||||
|
ext = (*iter);
|
||||||
|
|
||||||
|
char error[255];
|
||||||
|
if (!ext->IsRunning(error, sizeof(error)))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
id++;
|
||||||
|
if (id < start)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (id - start > 10)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
IExtensionInterface *api = ext->GetAPI();
|
||||||
|
|
||||||
|
const char *name = api->GetExtensionName();
|
||||||
|
const char *version = api->GetExtensionVerString();
|
||||||
|
const char *author = api->GetExtensionAuthor();
|
||||||
|
const char *description = api->GetExtensionDescription();
|
||||||
|
|
||||||
|
size_t len = UTIL_Format(buffer, sizeof(buffer), " \"%s\"", name);
|
||||||
|
|
||||||
|
if (version != NULL && IS_STR_FILLED(version))
|
||||||
|
{
|
||||||
|
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " (%s)", version);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (author != NULL && IS_STR_FILLED(author))
|
||||||
|
{
|
||||||
|
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " by %s", author);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (description != NULL && IS_STR_FILLED(description))
|
||||||
|
{
|
||||||
|
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, ": %s", description);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ClientConsolePrint(edict, "%s", buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (iter != m_Libs.end())
|
||||||
|
{
|
||||||
|
char error[255];
|
||||||
|
if ((*iter)->IsRunning(error, sizeof(error)))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iter != m_Libs.end())
|
||||||
|
{
|
||||||
|
ClientConsolePrint(edict, "To see more, type \"sm exts %d\"", id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CExtension *CExtensionManager::GetExtensionFromIdent(IdentityToken_t *ptr)
|
CExtension *CExtensionManager::GetExtensionFromIdent(IdentityToken_t *ptr)
|
||||||
{
|
{
|
||||||
if (ptr->type == g_ExtType)
|
if (ptr->type == g_ExtType)
|
||||||
|
|||||||
@@ -45,6 +45,8 @@
|
|||||||
#include "PluginSys.h"
|
#include "PluginSys.h"
|
||||||
#include "NativeOwner.h"
|
#include "NativeOwner.h"
|
||||||
|
|
||||||
|
class CPlayer;
|
||||||
|
|
||||||
using namespace SourceMod;
|
using namespace SourceMod;
|
||||||
using namespace SourceHook;
|
using namespace SourceHook;
|
||||||
|
|
||||||
@@ -175,6 +177,8 @@ public:
|
|||||||
bool LibraryExists(const char *library);
|
bool LibraryExists(const char *library);
|
||||||
void CallOnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax);
|
void CallOnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax);
|
||||||
void AddRawDependency(IExtension *ext, IdentityToken_t *other, void *iface);
|
void AddRawDependency(IExtension *ext, IdentityToken_t *other, void *iface);
|
||||||
|
public:
|
||||||
|
void ListExtensionsToClient(CPlayer *player, const CCommand &args);
|
||||||
public:
|
public:
|
||||||
CExtension *GetExtensionFromIdent(IdentityToken_t *ptr);
|
CExtension *GetExtensionFromIdent(IdentityToken_t *ptr);
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
|||||||
+10
-5
@@ -51,12 +51,12 @@ typedef ICommandLine *(*FakeGetCommandLine)();
|
|||||||
#define TIER0_NAME "libtier0.dylib"
|
#define TIER0_NAME "libtier0.dylib"
|
||||||
#define VSTDLIB_NAME "libvstdlib.dylib"
|
#define VSTDLIB_NAME "libvstdlib.dylib"
|
||||||
#elif defined __linux__
|
#elif defined __linux__
|
||||||
#if SOURCE_ENGINE == SE_EPISODEONE || SOURCE_ENGINE == ORANGEBOX || SOURCE_ENGINE == SE_LEFT4DEAD
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE || SOURCE_ENGINE == SE_LEFT4DEAD || SOURCE_ENGINE == SE_LEFT4DEAD2
|
||||||
#define TIER0_NAME "tier0_i486.so"
|
|
||||||
#define VSTDLIB_NAME "vstdlib_i486.so"
|
|
||||||
#else
|
|
||||||
#define TIER0_NAME "libtier0.so"
|
#define TIER0_NAME "libtier0.so"
|
||||||
#define VSTDLIB_NAME "libvstdlib.so"
|
#define VSTDLIB_NAME "libvstdlib.so"
|
||||||
|
#else
|
||||||
|
#define TIER0_NAME "tier0_i486.so"
|
||||||
|
#define VSTDLIB_NAME "vstdlib_i486.so"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -832,6 +832,11 @@ cell_t CHalfLife2::EntityToReference(CBaseEntity *pEntity)
|
|||||||
|
|
||||||
CBaseEntity *CHalfLife2::ReferenceToEntity(cell_t entRef)
|
CBaseEntity *CHalfLife2::ReferenceToEntity(cell_t entRef)
|
||||||
{
|
{
|
||||||
|
if ((unsigned)entRef == INVALID_EHANDLE_INDEX)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
CEntInfo *pInfo = NULL;
|
CEntInfo *pInfo = NULL;
|
||||||
|
|
||||||
if (entRef & (1<<31))
|
if (entRef & (1<<31))
|
||||||
@@ -841,7 +846,7 @@ CBaseEntity *CHalfLife2::ReferenceToEntity(cell_t entRef)
|
|||||||
CBaseHandle hndl(hndlValue);
|
CBaseHandle hndl(hndlValue);
|
||||||
|
|
||||||
pInfo = LookupEntity(hndl.GetEntryIndex());
|
pInfo = LookupEntity(hndl.GetEntryIndex());
|
||||||
if (pInfo->m_SerialNumber != hndl.GetSerialNumber())
|
if (!pInfo || pInfo->m_SerialNumber != hndl.GetSerialNumber())
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -265,6 +265,8 @@ void Logger::LogToOpenFileEx(FILE *fp, const char *msg, va_list ap)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ConVar *sv_logecho = icvar->FindVar("sv_logecho");
|
||||||
|
|
||||||
char buffer[3072];
|
char buffer[3072];
|
||||||
UTIL_FormatArgs(buffer, sizeof(buffer), msg, ap);
|
UTIL_FormatArgs(buffer, sizeof(buffer), msg, ap);
|
||||||
|
|
||||||
@@ -275,8 +277,12 @@ void Logger::LogToOpenFileEx(FILE *fp, const char *msg, va_list ap)
|
|||||||
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
|
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
|
||||||
|
|
||||||
fprintf(fp, "L %s: %s\n", date, buffer);
|
fprintf(fp, "L %s: %s\n", date, buffer);
|
||||||
|
|
||||||
|
if (!sv_logecho || sv_logecho->GetBool())
|
||||||
|
{
|
||||||
g_SMAPI->ConPrintf("L %s: %s\n", date, buffer);
|
g_SMAPI->ConPrintf("L %s: %s\n", date, buffer);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Logger::LogToFileOnlyEx(FILE *fp, const char *msg, va_list ap)
|
void Logger::LogToFileOnlyEx(FILE *fp, const char *msg, va_list ap)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -331,6 +331,9 @@ void BaseMenuStyle::ClientPressedKey(int client, unsigned int key_press)
|
|||||||
ATTN_NORM,
|
ATTN_NORM,
|
||||||
0,
|
0,
|
||||||
PITCH_NORM,
|
PITCH_NORM,
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
0,
|
||||||
|
#endif
|
||||||
&pos);
|
&pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -518,7 +518,7 @@ void VoteMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int ite
|
|||||||
m_Votes[item]++;
|
m_Votes[item]++;
|
||||||
m_NumVotes++;
|
m_NumVotes++;
|
||||||
|
|
||||||
if (sm_vote_chat.GetBool() || sm_vote_console.GetBool())
|
if (sm_vote_chat.GetBool() || sm_vote_console.GetBool() || sm_vote_client_console.GetBool())
|
||||||
{
|
{
|
||||||
static char buffer[1024];
|
static char buffer[1024];
|
||||||
ItemDrawInfo dr;
|
ItemDrawInfo dr;
|
||||||
@@ -560,7 +560,7 @@ void VoteMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int ite
|
|||||||
|
|
||||||
if (sm_vote_client_console.GetBool())
|
if (sm_vote_client_console.GetBool())
|
||||||
{
|
{
|
||||||
engine->ClientPrintf(pPlayer->GetEdict(), buffer);
|
ClientConsolePrint(pPlayer->GetEdict(), buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -745,6 +745,11 @@ void PlayerManager::OnClientCommand(edict_t *pEntity)
|
|||||||
g_PluginSys.ListPluginsToClient(pPlayer, args);
|
g_PluginSys.ListPluginsToClient(pPlayer, args);
|
||||||
RETURN_META(MRES_SUPERCEDE);
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
}
|
}
|
||||||
|
else if (args.ArgC() > 1 && strcmp(args.Arg(1), "exts") == 0)
|
||||||
|
{
|
||||||
|
g_Extensions.ListExtensionsToClient(pPlayer, args);
|
||||||
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
|
}
|
||||||
else if (args.ArgC() > 1 && strcmp(args.Arg(1), "credits") == 0)
|
else if (args.ArgC() > 1 && strcmp(args.Arg(1), "credits") == 0)
|
||||||
{
|
{
|
||||||
ClientConsolePrint(pEntity,
|
ClientConsolePrint(pEntity,
|
||||||
@@ -854,6 +859,20 @@ void PlayerManager::OnClientSettingsChanged(edict_t *pEntity)
|
|||||||
const char *new_name = info ? info->GetName() : engine->GetClientConVarValue(client, "name");
|
const char *new_name = info ? info->GetName() : engine->GetClientConVarValue(client, "name");
|
||||||
const char *old_name = pPlayer->m_Name.c_str();
|
const char *old_name = pPlayer->m_Name.c_str();
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE >= SE_LEFT4DEAD
|
||||||
|
const char *networkid_force;
|
||||||
|
if ((networkid_force = engine->GetClientConVarValue(client, "networkid_force")) && networkid_force[0] != '\0')
|
||||||
|
{
|
||||||
|
unsigned long long *steamId = (unsigned long long *)engine->GetClientSteamID(pEntity);
|
||||||
|
unsigned int accountId = steamId ? (*steamId & 0xFFFFFFFF) : 0;
|
||||||
|
g_Logger.LogMessage("\"%s<%d><STEAM_1:%d:%d><>\" has bad networkid (id \"%s\") (ip \"%s\")",
|
||||||
|
new_name, pPlayer->GetUserId(), accountId & 1, accountId >> 1, networkid_force, pPlayer->GetIPAddress());
|
||||||
|
|
||||||
|
pPlayer->Kick("NetworkID spoofing detected.");
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (strcmp(old_name, new_name) != 0)
|
if (strcmp(old_name, new_name) != 0)
|
||||||
{
|
{
|
||||||
AdminId id = g_Admins.FindAdminByIdentity("name", new_name);
|
AdminId id = g_Admins.FindAdminByIdentity("name", new_name);
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ union serial_t
|
|||||||
uint32_t value;
|
uint32_t value;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint8_t index;
|
uint32_t index : 8;
|
||||||
uint32_t serial : 24;
|
uint32_t serial : 24;
|
||||||
} bits;
|
} bits;
|
||||||
};
|
};
|
||||||
|
|||||||
+9
-1
@@ -1004,12 +1004,15 @@ LoadRes CPluginManager::_LoadPlugin(CPlugin **_plugin, const char *path, bool de
|
|||||||
|
|
||||||
pPlugin->m_pRuntime = g_pSourcePawn2->LoadPlugin(co, fullpath, &err);
|
pPlugin->m_pRuntime = g_pSourcePawn2->LoadPlugin(co, fullpath, &err);
|
||||||
if (pPlugin->m_pRuntime == NULL)
|
if (pPlugin->m_pRuntime == NULL)
|
||||||
|
{
|
||||||
|
if (error)
|
||||||
{
|
{
|
||||||
UTIL_Format(error,
|
UTIL_Format(error,
|
||||||
maxlength,
|
maxlength,
|
||||||
"Unable to load plugin (error %d: %s)",
|
"Unable to load plugin (error %d: %s)",
|
||||||
err,
|
err,
|
||||||
g_pSourcePawn2->GetErrorString(err));
|
g_pSourcePawn2->GetErrorString(err));
|
||||||
|
}
|
||||||
pPlugin->m_status = Plugin_BadLoad;
|
pPlugin->m_status = Plugin_BadLoad;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1019,11 +1022,14 @@ LoadRes CPluginManager::_LoadPlugin(CPlugin **_plugin, const char *path, bool de
|
|||||||
pPlugin->m_status = Plugin_Created;
|
pPlugin->m_status = Plugin_Created;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (error)
|
||||||
{
|
{
|
||||||
UTIL_Format(error, maxlength, "%s", pPlugin->m_errormsg);
|
UTIL_Format(error, maxlength, "%s", pPlugin->m_errormsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LoadRes loadFailure = LoadRes_Failure;
|
LoadRes loadFailure = LoadRes_Failure;
|
||||||
/* Get the status */
|
/* Get the status */
|
||||||
@@ -1504,7 +1510,9 @@ void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (native->status == SP_NATIVE_UNBOUND && !(native->flags & SP_NTVFLAG_OPTIONAL))
|
if (native->status == SP_NATIVE_UNBOUND
|
||||||
|
&& native->name[0] != '@'
|
||||||
|
&& !(native->flags & SP_NTVFLAG_OPTIONAL))
|
||||||
{
|
{
|
||||||
pPlugin->SetErrorState(Plugin_Error, "Native not found: %s", native->name);
|
pPlugin->SetErrorState(Plugin_Error, "Native not found: %s", native->name);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ void *MemoryUtils::FindPattern(const void *libPtr, const char *pattern, size_t l
|
|||||||
}
|
}
|
||||||
|
|
||||||
ptr = reinterpret_cast<char *>(lib.baseAddress);
|
ptr = reinterpret_cast<char *>(lib.baseAddress);
|
||||||
end = ptr + lib.memorySize;
|
end = ptr + lib.memorySize - 1;
|
||||||
|
|
||||||
while (ptr < end)
|
while (ptr < end)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ IGameHelpers *gamehelpers;
|
|||||||
|
|
||||||
static void AddCorePhraseFile(const char *filename)
|
static void AddCorePhraseFile(const char *filename)
|
||||||
{
|
{
|
||||||
g_pCorePhrases->AddPhraseFile("antiflood.phrases");
|
g_pCorePhrases->AddPhraseFile(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
static IGameConfig *GetCoreGameConfig()
|
static IGameConfig *GetCoreGameConfig()
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#include "BaseWorker.h"
|
#include "BaseWorker.h"
|
||||||
|
|
||||||
#define DEFAULT_THINK_TIME_MS 50
|
#define DEFAULT_THINK_TIME_MS 20
|
||||||
|
|
||||||
class ThreadWorker : public BaseWorker, public IThread
|
class ThreadWorker : public BaseWorker, public IThread
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,6 +87,11 @@ static cell_t GetGameTime(IPluginContext *pContext, const cell_t *params)
|
|||||||
return sp_ftoc(gpGlobals->curtime);
|
return sp_ftoc(gpGlobals->curtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cell_t GetGameTickCount(IPluginContext *pContext, const cell_t *params)
|
||||||
|
{
|
||||||
|
return gpGlobals->tickcount;
|
||||||
|
}
|
||||||
|
|
||||||
static cell_t CreateFakeClient(IPluginContext *pContext, const cell_t *params)
|
static cell_t CreateFakeClient(IPluginContext *pContext, const cell_t *params)
|
||||||
{
|
{
|
||||||
if (!g_SourceMod.IsMapRunning())
|
if (!g_SourceMod.IsMapRunning())
|
||||||
@@ -520,6 +525,7 @@ REGISTER_NATIVES(halflifeNatives)
|
|||||||
{"GetGameDescription", GetGameDescription},
|
{"GetGameDescription", GetGameDescription},
|
||||||
{"GetGameFolderName", GetGameFolderName},
|
{"GetGameFolderName", GetGameFolderName},
|
||||||
{"GetGameTime", GetGameTime},
|
{"GetGameTime", GetGameTime},
|
||||||
|
{"GetGameTickCount", GetGameTickCount},
|
||||||
{"GetRandomFloat", GetRandomFloat},
|
{"GetRandomFloat", GetRandomFloat},
|
||||||
{"GetRandomInt", GetRandomInt},
|
{"GetRandomInt", GetRandomInt},
|
||||||
{"IsDedicatedServer", IsDedicatedServer},
|
{"IsDedicatedServer", IsDedicatedServer},
|
||||||
|
|||||||
@@ -396,7 +396,7 @@ void CookieManager::OnPluginDestroyed(IPlugin *plugin)
|
|||||||
{
|
{
|
||||||
ItemDrawInfo draw;
|
ItemDrawInfo draw;
|
||||||
const char *info = clientMenu->GetItemInfo(i, &draw);
|
const char *info = clientMenu->GetItemInfo(i, &draw);
|
||||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||||
|
|
||||||
if (data->handler->forward != NULL)
|
if (data->handler->forward != NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
|||||||
|
|
||||||
sharesys->AddNatives(myself, g_ClientPrefNatives);
|
sharesys->AddNatives(myself, g_ClientPrefNatives);
|
||||||
sharesys->RegisterLibrary(myself, "clientprefs");
|
sharesys->RegisterLibrary(myself, "clientprefs");
|
||||||
|
identity = sharesys->CreateIdentity(sharesys->CreateIdentType("ClientPrefs"), this);
|
||||||
g_CookieManager.cookieDataLoadedForward = forwards->CreateForward("OnClientCookiesCached", ET_Ignore, 1, NULL, Param_Cell);
|
g_CookieManager.cookieDataLoadedForward = forwards->CreateForward("OnClientCookiesCached", ET_Ignore, 1, NULL, Param_Cell);
|
||||||
|
|
||||||
g_CookieType = handlesys->CreateType("Cookie",
|
g_CookieType = handlesys->CreateType("Cookie",
|
||||||
@@ -124,7 +125,7 @@ bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
|||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
IMenuStyle *style = menus->GetDefaultStyle();
|
IMenuStyle *style = menus->GetDefaultStyle();
|
||||||
g_CookieManager.clientMenu = style->CreateMenu(&g_Handler, NULL);
|
g_CookieManager.clientMenu = style->CreateMenu(&g_Handler, identity);
|
||||||
g_CookieManager.clientMenu->SetDefaultTitle("Client Settings:");
|
g_CookieManager.clientMenu->SetDefaultTitle("Client Settings:");
|
||||||
|
|
||||||
plsys->AddPluginsListener(&g_CookieManager);
|
plsys->AddPluginsListener(&g_CookieManager);
|
||||||
@@ -191,10 +192,17 @@ void ClientPrefs::SDK_OnUnload()
|
|||||||
|
|
||||||
forwards->ReleaseForward(g_CookieManager.cookieDataLoadedForward);
|
forwards->ReleaseForward(g_CookieManager.cookieDataLoadedForward);
|
||||||
|
|
||||||
g_CookieManager.clientMenu->Destroy();
|
HandleSecurity sec = HandleSecurity(identity, identity);
|
||||||
|
HandleError err = handlesys->FreeHandle(g_CookieManager.clientMenu->GetHandle(), &sec);
|
||||||
|
if (HandleError_None != err)
|
||||||
|
{
|
||||||
|
g_pSM->LogError(myself, "Error %d when attempting to free client menu handle", err);
|
||||||
|
}
|
||||||
|
|
||||||
phrases->Destroy();
|
phrases->Destroy();
|
||||||
|
|
||||||
|
sharesys->DestroyIdentity( identity );
|
||||||
|
|
||||||
plsys->RemovePluginsListener(&g_CookieManager);
|
plsys->RemovePluginsListener(&g_CookieManager);
|
||||||
playerhelpers->RemoveClientListener(&g_CookieManager);
|
playerhelpers->RemoveClientListener(&g_CookieManager);
|
||||||
|
|
||||||
@@ -202,6 +210,19 @@ void ClientPrefs::SDK_OnUnload()
|
|||||||
cookieMutex->DestroyThis();
|
cookieMutex->DestroyThis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientPrefs::OnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax)
|
||||||
|
{
|
||||||
|
if (Database == NULL && !databaseLoading)
|
||||||
|
{
|
||||||
|
g_pSM->LogMessage(myself, "Attempting to reconnect to database...");
|
||||||
|
|
||||||
|
databaseLoading = true;
|
||||||
|
|
||||||
|
TQueryOp *op = new TQueryOp(Query_Connect, 0);
|
||||||
|
dbi->AddToThreadQueue(op, PrioQueue_High);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ClientPrefs::DatabaseConnect()
|
void ClientPrefs::DatabaseConnect()
|
||||||
{
|
{
|
||||||
char error[256];
|
char error[256];
|
||||||
@@ -457,6 +478,11 @@ bool Translate(char *buffer,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IdentityToken_t *ClientPrefs::GetIdentity() const
|
||||||
|
{
|
||||||
|
return identity;
|
||||||
|
}
|
||||||
|
|
||||||
const char *ClientPrefs::GetExtensionVerString()
|
const char *ClientPrefs::GetExtensionVerString()
|
||||||
{
|
{
|
||||||
return SM_FULL_VERSION;
|
return SM_FULL_VERSION;
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ public:
|
|||||||
const char *GetExtensionVerString();
|
const char *GetExtensionVerString();
|
||||||
const char *GetExtensionDateString();
|
const char *GetExtensionDateString();
|
||||||
|
|
||||||
|
virtual void OnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax);
|
||||||
|
|
||||||
void DatabaseConnect();
|
void DatabaseConnect();
|
||||||
|
|
||||||
bool AddQueryToQueue(TQueryOp *query);
|
bool AddQueryToQueue(TQueryOp *query);
|
||||||
@@ -138,6 +140,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
|
//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
|
||||||
#endif
|
#endif
|
||||||
|
public:
|
||||||
|
IdentityToken_t *GetIdentity() const;
|
||||||
public:
|
public:
|
||||||
IDBDriver *Driver;
|
IDBDriver *Driver;
|
||||||
IDatabase *Database;
|
IDatabase *Database;
|
||||||
@@ -150,6 +154,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
SourceHook::List<TQueryOp *> cachedQueries;
|
SourceHook::List<TQueryOp *> cachedQueries;
|
||||||
IMutex *queryMutex;
|
IMutex *queryMutex;
|
||||||
|
IdentityToken_t *identity;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CookieTypeHandler : public IHandleTypeDispatch
|
class CookieTypeHandler : public IHandleTypeDispatch
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ void ClientMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int i
|
|||||||
|
|
||||||
const char *info = menu->GetItemInfo(item, &draw);
|
const char *info = menu->GetItemInfo(item, &draw);
|
||||||
|
|
||||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||||
|
|
||||||
if (data->handler->forward != NULL)
|
if (data->handler->forward != NULL)
|
||||||
{
|
{
|
||||||
@@ -57,7 +57,7 @@ void ClientMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int i
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
IBaseMenu *submenu = menus->GetDefaultStyle()->CreateMenu(&g_AutoHandler, NULL);
|
IBaseMenu *submenu = menus->GetDefaultStyle()->CreateMenu(&g_AutoHandler, g_ClientPrefs.GetIdentity());
|
||||||
|
|
||||||
char message[256];
|
char message[256];
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ unsigned int ClientMenuHandler::OnMenuDisplayItem(IBaseMenu *menu,
|
|||||||
|
|
||||||
const char *info = menu->GetItemInfo(item, &draw);
|
const char *info = menu->GetItemInfo(item, &draw);
|
||||||
|
|
||||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||||
|
|
||||||
if (data->handler->forward != NULL)
|
if (data->handler->forward != NULL)
|
||||||
{
|
{
|
||||||
@@ -122,7 +122,7 @@ void AutoMenuHandler::OnMenuSelect(SourceMod::IBaseMenu *menu, int client, unsig
|
|||||||
|
|
||||||
const char *info = menu->GetItemInfo(item, &draw);
|
const char *info = menu->GetItemInfo(item, &draw);
|
||||||
|
|
||||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||||
|
|
||||||
switch (data->type)
|
switch (data->type)
|
||||||
{
|
{
|
||||||
@@ -175,5 +175,10 @@ void AutoMenuHandler::OnMenuSelect(SourceMod::IBaseMenu *menu, int client, unsig
|
|||||||
|
|
||||||
void AutoMenuHandler::OnMenuEnd(IBaseMenu *menu, MenuEndReason reason)
|
void AutoMenuHandler::OnMenuEnd(IBaseMenu *menu, MenuEndReason reason)
|
||||||
{
|
{
|
||||||
menu->Destroy(true);
|
HandleSecurity sec = HandleSecurity(g_ClientPrefs.GetIdentity(), g_ClientPrefs.GetIdentity());
|
||||||
|
HandleError err = handlesys->FreeHandle(menu->GetHandle(), &sec);
|
||||||
|
if (HandleError_None != err)
|
||||||
|
{
|
||||||
|
g_pSM->LogError(myself, "Error %d when attempting to free automenu handle", err);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,4 +47,6 @@ void RegNatives::UnregisterAll()
|
|||||||
{
|
{
|
||||||
(*iter)->Destroy();
|
(*iter)->Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_List.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -528,7 +528,12 @@ static cell_t SlapPlayer(IPluginContext *pContext, const cell_t *params)
|
|||||||
CellRecipientFilter rf;
|
CellRecipientFilter rf;
|
||||||
rf.SetToReliable(true);
|
rf.SetToReliable(true);
|
||||||
rf.Initialize(player_list, total_players);
|
rf.Initialize(player_list, total_players);
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
engsound->EmitSound(rf, params[1], CHAN_AUTO, sound_name, VOL_NORM, ATTN_NORM, 0, PITCH_NORM, 0, &pos);
|
||||||
|
#else
|
||||||
engsound->EmitSound(rf, params[1], CHAN_AUTO, sound_name, VOL_NORM, ATTN_NORM, 0, PITCH_NORM, &pos);
|
engsound->EmitSound(rf, params[1], CHAN_AUTO, sound_name, VOL_NORM, ATTN_NORM, 0, PITCH_NORM, &pos);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,13 @@
|
|||||||
#include <IForwardSys.h>
|
#include <IForwardSys.h>
|
||||||
|
|
||||||
SH_DECL_HOOK8_void(IVEngineServer, EmitAmbientSound, SH_NOATTRIB, 0, int, const Vector &, const char *, float, soundlevel_t, int, int, float);
|
SH_DECL_HOOK8_void(IVEngineServer, EmitAmbientSound, SH_NOATTRIB, 0, int, const Vector &, const char *, float, soundlevel_t, int, int, float);
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
SH_DECL_HOOK15_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||||
|
SH_DECL_HOOK15_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||||
|
#else
|
||||||
SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||||
SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||||
|
#endif
|
||||||
|
|
||||||
bool g_InSoundHook = false;
|
bool g_InSoundHook = false;
|
||||||
|
|
||||||
@@ -252,10 +257,17 @@ void SoundHooks::OnEmitAmbientSound(int entindex, const Vector &pos, const char
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||||
|
float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||||
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
|
float soundtime, int speakerentity)
|
||||||
|
#else
|
||||||
void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||||
float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin,
|
float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin,
|
||||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
float soundtime, int speakerentity)
|
float soundtime, int speakerentity)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
SoundHookIter iter;
|
SoundHookIter iter;
|
||||||
IPluginFunction *pFunc;
|
IPluginFunction *pFunc;
|
||||||
@@ -293,6 +305,15 @@ void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChann
|
|||||||
{
|
{
|
||||||
CellRecipientFilter crf;
|
CellRecipientFilter crf;
|
||||||
crf.Initialize(players, size);
|
crf.Initialize(players, size);
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
RETURN_META_NEWPARAMS(
|
||||||
|
MRES_IGNORED,
|
||||||
|
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, soundlevel_t,
|
||||||
|
int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>(&IEngineSound::EmitSound),
|
||||||
|
(crf, iEntIndex, iChannel, buffer, flVolume, iSoundlevel, iFlags, iPitch, iSpecialDSP, pOrigin,
|
||||||
|
pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||||
|
);
|
||||||
|
#else
|
||||||
RETURN_META_NEWPARAMS(
|
RETURN_META_NEWPARAMS(
|
||||||
MRES_IGNORED,
|
MRES_IGNORED,
|
||||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, soundlevel_t,
|
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, soundlevel_t,
|
||||||
@@ -300,15 +321,23 @@ void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChann
|
|||||||
(crf, iEntIndex, iChannel, buffer, flVolume, iSoundlevel, iFlags, iPitch, pOrigin,
|
(crf, iEntIndex, iChannel, buffer, flVolume, iSoundlevel, iFlags, iPitch, pOrigin,
|
||||||
pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||||
);
|
);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||||
|
float flVolume, float flAttenuation, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||||
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
|
float soundtime, int speakerentity)
|
||||||
|
#else
|
||||||
void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||||
float flVolume, float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin,
|
float flVolume, float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin,
|
||||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
float soundtime, int speakerentity)
|
float soundtime, int speakerentity)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
SoundHookIter iter;
|
SoundHookIter iter;
|
||||||
IPluginFunction *pFunc;
|
IPluginFunction *pFunc;
|
||||||
@@ -347,6 +376,15 @@ void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChan
|
|||||||
{
|
{
|
||||||
CellRecipientFilter crf;
|
CellRecipientFilter crf;
|
||||||
crf.Initialize(players, size);
|
crf.Initialize(players, size);
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
RETURN_META_NEWPARAMS(
|
||||||
|
MRES_IGNORED,
|
||||||
|
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, float,
|
||||||
|
int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>(&IEngineSound::EmitSound),
|
||||||
|
(crf, iEntIndex, iChannel, buffer, flVolume, SNDLVL_TO_ATTN(static_cast<soundlevel_t>(sndlevel)),
|
||||||
|
iFlags, iPitch, iSpecialDSP, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||||
|
);
|
||||||
|
#else
|
||||||
RETURN_META_NEWPARAMS(
|
RETURN_META_NEWPARAMS(
|
||||||
MRES_IGNORED,
|
MRES_IGNORED,
|
||||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, float,
|
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, float,
|
||||||
@@ -354,6 +392,7 @@ void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChan
|
|||||||
(crf, iEntIndex, iChannel, buffer, flVolume, SNDLVL_TO_ATTN(static_cast<soundlevel_t>(sndlevel)),
|
(crf, iEntIndex, iChannel, buffer, flVolume, SNDLVL_TO_ATTN(static_cast<soundlevel_t>(sndlevel)),
|
||||||
iFlags, iPitch, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
iFlags, iPitch, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||||
);
|
);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -547,6 +586,48 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
|
|||||||
player[0] = cl_array[i];
|
player[0] = cl_array[i];
|
||||||
crf.Reset();
|
crf.Reset();
|
||||||
crf.Initialize(player, 1);
|
crf.Initialize(player, 1);
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
if (g_InSoundHook)
|
||||||
|
{
|
||||||
|
SH_CALL(enginesoundPatch,
|
||||||
|
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float,
|
||||||
|
soundlevel_t, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>
|
||||||
|
(&IEngineSound::EmitSound))
|
||||||
|
(crf,
|
||||||
|
player[0],
|
||||||
|
channel,
|
||||||
|
sample,
|
||||||
|
vol,
|
||||||
|
(soundlevel_t)level,
|
||||||
|
flags,
|
||||||
|
pitch,
|
||||||
|
0,
|
||||||
|
pOrigin,
|
||||||
|
pDir,
|
||||||
|
pOrigVec,
|
||||||
|
updatePos,
|
||||||
|
soundtime,
|
||||||
|
speakerentity);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
engsound->EmitSound(crf,
|
||||||
|
player[0],
|
||||||
|
channel,
|
||||||
|
sample,
|
||||||
|
vol,
|
||||||
|
(soundlevel_t)level,
|
||||||
|
flags,
|
||||||
|
pitch,
|
||||||
|
0,
|
||||||
|
pOrigin,
|
||||||
|
pDir,
|
||||||
|
pOrigVec,
|
||||||
|
updatePos,
|
||||||
|
soundtime,
|
||||||
|
speakerentity);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (g_InSoundHook)
|
if (g_InSoundHook)
|
||||||
{
|
{
|
||||||
SH_CALL(enginesoundPatch,
|
SH_CALL(enginesoundPatch,
|
||||||
@@ -585,8 +666,51 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
|
|||||||
soundtime,
|
soundtime,
|
||||||
speakerentity);
|
speakerentity);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
if (g_InSoundHook)
|
||||||
|
{
|
||||||
|
SH_CALL(enginesoundPatch,
|
||||||
|
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float,
|
||||||
|
soundlevel_t, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>
|
||||||
|
(&IEngineSound::EmitSound))
|
||||||
|
(crf,
|
||||||
|
entity,
|
||||||
|
channel,
|
||||||
|
sample,
|
||||||
|
vol,
|
||||||
|
(soundlevel_t)level,
|
||||||
|
flags,
|
||||||
|
pitch,
|
||||||
|
0,
|
||||||
|
pOrigin,
|
||||||
|
pDir,
|
||||||
|
pOrigVec,
|
||||||
|
updatePos,
|
||||||
|
soundtime,
|
||||||
|
speakerentity);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
engsound->EmitSound(crf,
|
||||||
|
entity,
|
||||||
|
channel,
|
||||||
|
sample,
|
||||||
|
vol,
|
||||||
|
(soundlevel_t)level,
|
||||||
|
flags,
|
||||||
|
pitch,
|
||||||
|
0,
|
||||||
|
pOrigin,
|
||||||
|
pDir,
|
||||||
|
pOrigVec,
|
||||||
|
updatePos,
|
||||||
|
soundtime,
|
||||||
|
speakerentity);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (g_InSoundHook)
|
if (g_InSoundHook)
|
||||||
{
|
{
|
||||||
SH_CALL(enginesoundPatch,
|
SH_CALL(enginesoundPatch,
|
||||||
@@ -625,6 +749,7 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
|
|||||||
soundtime,
|
soundtime,
|
||||||
speakerentity);
|
speakerentity);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@@ -714,6 +839,9 @@ static cell_t EmitSentence(IPluginContext *pContext, const cell_t *params)
|
|||||||
(soundlevel_t)level,
|
(soundlevel_t)level,
|
||||||
flags,
|
flags,
|
||||||
pitch,
|
pitch,
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
0,
|
||||||
|
#endif
|
||||||
pOrigin,
|
pOrigin,
|
||||||
pDir,
|
pDir,
|
||||||
pOrigVec,
|
pOrigVec,
|
||||||
|
|||||||
@@ -52,6 +52,16 @@ public:
|
|||||||
bool RemoveHook(int type, IPluginFunction *pFunc);
|
bool RemoveHook(int type, IPluginFunction *pFunc);
|
||||||
void OnEmitAmbientSound(int entindex, const Vector &pos, const char *samp, float vol,
|
void OnEmitAmbientSound(int entindex, const Vector &pos, const char *samp, float vol,
|
||||||
soundlevel_t soundlevel, int fFlags, int pitch, float delay);
|
soundlevel_t soundlevel, int fFlags, int pitch, float delay);
|
||||||
|
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||||
|
void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume,
|
||||||
|
soundlevel_t iSoundlevel, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||||
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
|
float soundtime, int speakerentity);
|
||||||
|
void OnEmitSound2(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume,
|
||||||
|
float flAttenuation, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||||
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
|
float soundtime, int speakerentity);
|
||||||
|
#else
|
||||||
void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume,
|
void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume,
|
||||||
soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin,
|
soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin,
|
||||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
@@ -60,6 +70,7 @@ public:
|
|||||||
float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin,
|
float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin,
|
||||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||||
float soundtime, int speakerentity);
|
float soundtime, int speakerentity);
|
||||||
|
#endif
|
||||||
private:
|
private:
|
||||||
size_t _FillInPlayers(int *pl_array, IRecipientFilter *pFilter);
|
size_t _FillInPlayers(int *pl_array, IRecipientFilter *pFilter);
|
||||||
void _IncRefCounter(int type);
|
void _IncRefCounter(int type);
|
||||||
|
|||||||
@@ -451,6 +451,6 @@ TFClassType ClassnameToType(const char *classname)
|
|||||||
/**
|
/**
|
||||||
* A picture of a blue crab given to me as a gift and stored here for safe keeping
|
* A picture of a blue crab given to me as a gift and stored here for safe keeping
|
||||||
*
|
*
|
||||||
* http://www.democracycellproject.net/blog/archives/Clown%20car.jpg
|
* http://sourcemod.net/Clown%20car.jpg
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
{
|
{
|
||||||
"game" "dod"
|
"game" "dod"
|
||||||
"game" "tf"
|
"game" "tf"
|
||||||
|
"game" "hl2mp"
|
||||||
"game" "cstrike"
|
"game" "cstrike"
|
||||||
"game" "garrysmod"
|
"game" "garrysmod"
|
||||||
"game" "hl2mp"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
"Offsets"
|
"Offsets"
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
/* Offset into CBaseTempEntity constructor */
|
/* Offset into CBaseTempEntity constructor */
|
||||||
"s_pTempEntities"
|
"s_pTempEntities"
|
||||||
{
|
{
|
||||||
"windows" "17"
|
"windows" "19"
|
||||||
}
|
}
|
||||||
"GetTEName"
|
"GetTEName"
|
||||||
{
|
{
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
"CBaseTempEntity"
|
"CBaseTempEntity"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x8B\xC1\x8B\x4C\x24\x04\xC7\x00\x2A\x2A\x2A\x2A\x89\x48\x04\x8B\x15\x2A\x2A\x2A\x2A\x89\x50\x08\xA3\x2A\x2A\x2A\x2A\xC2\x04\x00"
|
"windows" "\x55\x8B\xEC\x8B\xC1\x8B\x4D\x2A\xC7\x00\x2A\x2A\x2A\x2A\x89\x48"
|
||||||
}
|
}
|
||||||
"s_pTempEntities"
|
"s_pTempEntities"
|
||||||
{
|
{
|
||||||
@@ -73,8 +73,9 @@
|
|||||||
{
|
{
|
||||||
"game" "dod"
|
"game" "dod"
|
||||||
"game" "tf"
|
"game" "tf"
|
||||||
"game" "cstrike"
|
|
||||||
"game" "hl2mp"
|
"game" "hl2mp"
|
||||||
|
"game" "cstrike"
|
||||||
|
"game" "garrysmod"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Signatures"
|
"Signatures"
|
||||||
@@ -83,7 +84,7 @@
|
|||||||
"FindEntityByClassname"
|
"FindEntityByClassname"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
|
"windows" "\x55\x8B\xEC\x53\x56\x8B\xF1\x8B\x4D\x2A\x85\xC9\x57\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\x2A\x2A\x2A\x2A\x83\xC0\x2A\xC1\xE0\x04\x8B\x3C\x30\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5D\x2A\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x15\x2A\x2A\x2A\x2A\x83\xC4\x2A\xEB\x2A\x39"
|
||||||
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
||||||
"mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
"mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
||||||
}
|
}
|
||||||
@@ -148,7 +149,7 @@
|
|||||||
* the expected code. A pointer to sv (IServer interface) is used
|
* the expected code. A pointer to sv (IServer interface) is used
|
||||||
* here.
|
* here.
|
||||||
*/
|
*/
|
||||||
"CreateFakeClient_Windows" "\x8B\x44\x24\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8"
|
"CreateFakeClient_Windows" "\x55\x8B\xEC\x8B\x45\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x85\xC0"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Offsets"
|
"Offsets"
|
||||||
@@ -156,7 +157,7 @@
|
|||||||
/* Offset into IVEngineServer::CreateFakeClient */
|
/* Offset into IVEngineServer::CreateFakeClient */
|
||||||
"sv"
|
"sv"
|
||||||
{
|
{
|
||||||
"windows" "6"
|
"windows" "8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,15 +195,16 @@
|
|||||||
{
|
{
|
||||||
"game" "dod"
|
"game" "dod"
|
||||||
"game" "tf"
|
"game" "tf"
|
||||||
"game" "cstrike"
|
|
||||||
"game" "hl2mp"
|
"game" "hl2mp"
|
||||||
|
"game" "cstrike"
|
||||||
|
"game" "garrysmod"
|
||||||
}
|
}
|
||||||
"Signatures"
|
"Signatures"
|
||||||
{
|
{
|
||||||
"FireOutput"
|
"FireOutput"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x81\xEC\x2A\x2A\x00\x00\x53\x55\x56\x8B\x71\x14\x85\xF6"
|
"windows" "\x55\x8B\xEC\x81\xEC\x2A\x2A\x2A\x2A\x53\x56\x8B\x71\x2A\x85\xF6"
|
||||||
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
||||||
"mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
"mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
||||||
}
|
}
|
||||||
@@ -212,6 +214,15 @@
|
|||||||
/* SetUserInfo data */
|
/* SetUserInfo data */
|
||||||
"#default"
|
"#default"
|
||||||
{
|
{
|
||||||
|
"#supported"
|
||||||
|
{
|
||||||
|
"game" "dod"
|
||||||
|
"game" "tf"
|
||||||
|
"game" "garrysmod"
|
||||||
|
"game" "hl2mp"
|
||||||
|
"game" "cstrike"
|
||||||
|
}
|
||||||
|
|
||||||
"Offsets"
|
"Offsets"
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@@ -222,9 +233,9 @@
|
|||||||
*/
|
*/
|
||||||
"SetUserCvar"
|
"SetUserCvar"
|
||||||
{
|
{
|
||||||
"windows" "17"
|
"windows" "18"
|
||||||
"linux" "57"
|
"linux" "58"
|
||||||
"mac" "57"
|
"mac" "58"
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
|
|||||||
@@ -28,33 +28,33 @@
|
|||||||
{
|
{
|
||||||
"GiveNamedItem"
|
"GiveNamedItem"
|
||||||
{
|
{
|
||||||
"windows" "392"
|
"windows" "393"
|
||||||
"linux" "393"
|
"linux" "394"
|
||||||
"mac" "393"
|
"mac" "394"
|
||||||
}
|
}
|
||||||
"RemovePlayerItem"
|
"RemovePlayerItem"
|
||||||
{
|
{
|
||||||
"windows" "263"
|
"windows" "264"
|
||||||
"linux" "264"
|
"linux" "265"
|
||||||
"mac" "264"
|
"mac" "265"
|
||||||
}
|
}
|
||||||
"Weapon_GetSlot"
|
"Weapon_GetSlot"
|
||||||
{
|
{
|
||||||
"windows" "261"
|
"windows" "262"
|
||||||
"linux" "262"
|
"linux" "263"
|
||||||
"mac" "262"
|
"mac" "263"
|
||||||
}
|
}
|
||||||
"Ignite"
|
"Ignite"
|
||||||
{
|
{
|
||||||
"windows" "204"
|
"windows" "205"
|
||||||
"linux" "205"
|
"linux" "206"
|
||||||
"mac" "205"
|
"mac" "206"
|
||||||
}
|
}
|
||||||
"Extinguish"
|
"Extinguish"
|
||||||
{
|
{
|
||||||
"windows" "208"
|
"windows" "209"
|
||||||
"linux" "209"
|
"linux" "210"
|
||||||
"mac" "209"
|
"mac" "210"
|
||||||
}
|
}
|
||||||
"Teleport"
|
"Teleport"
|
||||||
{
|
{
|
||||||
@@ -64,9 +64,9 @@
|
|||||||
}
|
}
|
||||||
"CommitSuicide"
|
"CommitSuicide"
|
||||||
{
|
{
|
||||||
"windows" "433"
|
"windows" "434"
|
||||||
"linux" "433"
|
"linux" "434"
|
||||||
"mac" "433"
|
"mac" "434"
|
||||||
}
|
}
|
||||||
"GetVelocity"
|
"GetVelocity"
|
||||||
{
|
{
|
||||||
@@ -94,9 +94,9 @@
|
|||||||
}
|
}
|
||||||
"WeaponEquip"
|
"WeaponEquip"
|
||||||
{
|
{
|
||||||
"windows" "254"
|
"windows" "255"
|
||||||
"linux" "255"
|
"linux" "256"
|
||||||
"mac" "255"
|
"mac" "256"
|
||||||
}
|
}
|
||||||
"Activate"
|
"Activate"
|
||||||
{
|
{
|
||||||
@@ -106,9 +106,9 @@
|
|||||||
}
|
}
|
||||||
"PlayerRunCmd"
|
"PlayerRunCmd"
|
||||||
{
|
{
|
||||||
"windows" "410"
|
"windows" "411"
|
||||||
"linux" "411"
|
"linux" "412"
|
||||||
"mac" "411"
|
"mac" "412"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,33 +18,33 @@
|
|||||||
{
|
{
|
||||||
"GiveNamedItem"
|
"GiveNamedItem"
|
||||||
{
|
{
|
||||||
"windows" "391"
|
"windows" "392"
|
||||||
"linux" "392"
|
"linux" "393"
|
||||||
"mac" "392"
|
"mac" "393"
|
||||||
}
|
}
|
||||||
"RemovePlayerItem"
|
"RemovePlayerItem"
|
||||||
{
|
{
|
||||||
"windows" "263"
|
"windows" "264"
|
||||||
"linux" "264"
|
"linux" "265"
|
||||||
"mac" "264"
|
"mac" "265"
|
||||||
}
|
}
|
||||||
"Weapon_GetSlot"
|
"Weapon_GetSlot"
|
||||||
{
|
{
|
||||||
"windows" "261"
|
"windows" "262"
|
||||||
"linux" "262"
|
"linux" "263"
|
||||||
"mac" "262"
|
"mac" "263"
|
||||||
}
|
}
|
||||||
"Ignite"
|
"Ignite"
|
||||||
{
|
{
|
||||||
"windows" "204"
|
"windows" "205"
|
||||||
"linux" "205"
|
"linux" "206"
|
||||||
"mac" "205"
|
"mac" "206"
|
||||||
}
|
}
|
||||||
"Extinguish"
|
"Extinguish"
|
||||||
{
|
{
|
||||||
"windows" "208"
|
"windows" "209"
|
||||||
"linux" "209"
|
"linux" "210"
|
||||||
"mac" "209"
|
"mac" "210"
|
||||||
}
|
}
|
||||||
"Teleport"
|
"Teleport"
|
||||||
{
|
{
|
||||||
@@ -54,9 +54,9 @@
|
|||||||
}
|
}
|
||||||
"CommitSuicide"
|
"CommitSuicide"
|
||||||
{
|
{
|
||||||
"windows" "429"
|
"windows" "430"
|
||||||
"linux" "430"
|
"linux" "431"
|
||||||
"mac" "430"
|
"mac" "431"
|
||||||
}
|
}
|
||||||
"GetVelocity"
|
"GetVelocity"
|
||||||
{
|
{
|
||||||
@@ -84,9 +84,9 @@
|
|||||||
}
|
}
|
||||||
"WeaponEquip"
|
"WeaponEquip"
|
||||||
{
|
{
|
||||||
"windows" "254"
|
"windows" "255"
|
||||||
"linux" "255"
|
"linux" "256"
|
||||||
"mac" "255"
|
"mac" "256"
|
||||||
}
|
}
|
||||||
"Activate"
|
"Activate"
|
||||||
{
|
{
|
||||||
@@ -96,9 +96,9 @@
|
|||||||
}
|
}
|
||||||
"PlayerRunCmd"
|
"PlayerRunCmd"
|
||||||
{
|
{
|
||||||
"windows" "409"
|
"windows" "410"
|
||||||
"linux" "410"
|
"linux" "411"
|
||||||
"mac" "410"
|
"mac" "411"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,40 +11,40 @@
|
|||||||
|
|
||||||
"Games"
|
"Games"
|
||||||
{
|
{
|
||||||
/* Garry's Mod - No symbol names in linux bin */
|
/* Garry's Mod */
|
||||||
"garrysmod"
|
"garrysmod"
|
||||||
{
|
{
|
||||||
"Offsets"
|
"Offsets"
|
||||||
{
|
{
|
||||||
"GiveNamedItem"
|
"GiveNamedItem"
|
||||||
{
|
{
|
||||||
"windows" "433"
|
"windows" "434"
|
||||||
"linux" "434"
|
"linux" "435"
|
||||||
"mac" "434"
|
"mac" "435"
|
||||||
}
|
}
|
||||||
"RemovePlayerItem"
|
"RemovePlayerItem"
|
||||||
{
|
{
|
||||||
"windows" "305"
|
"windows" "306"
|
||||||
"linux" "306"
|
"linux" "307"
|
||||||
"mac" "306"
|
"mac" "307"
|
||||||
}
|
}
|
||||||
"Weapon_GetSlot"
|
"Weapon_GetSlot"
|
||||||
{
|
{
|
||||||
"windows" "303"
|
"windows" "304"
|
||||||
"linux" "304"
|
"linux" "305"
|
||||||
"mac" "304"
|
"mac" "305"
|
||||||
}
|
}
|
||||||
"Ignite"
|
"Ignite"
|
||||||
{
|
{
|
||||||
"windows" "240"
|
"windows" "241"
|
||||||
"linux" "241"
|
"linux" "242"
|
||||||
"mac" "241"
|
"mac" "242"
|
||||||
}
|
}
|
||||||
"Extinguish"
|
"Extinguish"
|
||||||
{
|
{
|
||||||
"windows" "244"
|
"windows" "245"
|
||||||
"linux" "245"
|
"linux" "246"
|
||||||
"mac" "245"
|
"mac" "246"
|
||||||
}
|
}
|
||||||
"Teleport"
|
"Teleport"
|
||||||
{
|
{
|
||||||
@@ -54,9 +54,9 @@
|
|||||||
}
|
}
|
||||||
"CommitSuicide"
|
"CommitSuicide"
|
||||||
{
|
{
|
||||||
"windows" "472"
|
"windows" "473"
|
||||||
"linux" "472"
|
"linux" "473"
|
||||||
"mac" "472"
|
"mac" "473"
|
||||||
}
|
}
|
||||||
"GetVelocity"
|
"GetVelocity"
|
||||||
{
|
{
|
||||||
@@ -84,9 +84,9 @@
|
|||||||
}
|
}
|
||||||
"WeaponEquip"
|
"WeaponEquip"
|
||||||
{
|
{
|
||||||
"windows" "296"
|
"windows" "297"
|
||||||
"linux" "297"
|
"linux" "298"
|
||||||
"mac" "297"
|
"mac" "298"
|
||||||
}
|
}
|
||||||
"Activate"
|
"Activate"
|
||||||
{
|
{
|
||||||
@@ -96,26 +96,9 @@
|
|||||||
}
|
}
|
||||||
"PlayerRunCmd"
|
"PlayerRunCmd"
|
||||||
{
|
{
|
||||||
"windows" "451"
|
"windows" "452"
|
||||||
"linux" "452"
|
"linux" "453"
|
||||||
"mac" "452"
|
"mac" "453"
|
||||||
}
|
|
||||||
}
|
|
||||||
"Signatures"
|
|
||||||
{
|
|
||||||
"FindEntityByClassname"
|
|
||||||
{
|
|
||||||
"library" "server"
|
|
||||||
"windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x40\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\x8D\xA4\x24\x00\x00\x00\x00\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x04\xEB\x2A\x39\x2A\x2A\x74\x2A\x53"
|
|
||||||
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
|
||||||
"mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
|
||||||
}
|
|
||||||
"FireOutput"
|
|
||||||
{
|
|
||||||
"library" "server"
|
|
||||||
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\x53\x55\x56\x8B\x71\x2A\x57\x89"
|
|
||||||
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
|
||||||
"mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,33 +18,33 @@
|
|||||||
{
|
{
|
||||||
"GiveNamedItem"
|
"GiveNamedItem"
|
||||||
{
|
{
|
||||||
"windows" "391"
|
"windows" "392"
|
||||||
"linux" "392"
|
"linux" "393"
|
||||||
"mac" "392"
|
"mac" "393"
|
||||||
}
|
}
|
||||||
"RemovePlayerItem"
|
"RemovePlayerItem"
|
||||||
{
|
{
|
||||||
"windows" "263"
|
"windows" "264"
|
||||||
"linux" "264"
|
"linux" "265"
|
||||||
"mac" "264"
|
"mac" "265"
|
||||||
}
|
}
|
||||||
"Weapon_GetSlot"
|
"Weapon_GetSlot"
|
||||||
{
|
{
|
||||||
"windows" "261"
|
"windows" "262"
|
||||||
"linux" "262"
|
"linux" "263"
|
||||||
"mac" "262"
|
"mac" "263"
|
||||||
}
|
}
|
||||||
"Ignite"
|
"Ignite"
|
||||||
{
|
{
|
||||||
"windows" "204"
|
"windows" "205"
|
||||||
"linux" "205"
|
"linux" "206"
|
||||||
"mac" "205"
|
"mac" "206"
|
||||||
}
|
}
|
||||||
"Extinguish"
|
"Extinguish"
|
||||||
{
|
{
|
||||||
"windows" "208"
|
"windows" "209"
|
||||||
"linux" "209"
|
"linux" "210"
|
||||||
"mac" "209"
|
"mac" "210"
|
||||||
}
|
}
|
||||||
"Teleport"
|
"Teleport"
|
||||||
{
|
{
|
||||||
@@ -54,9 +54,9 @@
|
|||||||
}
|
}
|
||||||
"CommitSuicide"
|
"CommitSuicide"
|
||||||
{
|
{
|
||||||
"windows" "430"
|
"windows" "431"
|
||||||
"linux" "430"
|
"linux" "431"
|
||||||
"mac" "430"
|
"mac" "431"
|
||||||
}
|
}
|
||||||
"GetVelocity"
|
"GetVelocity"
|
||||||
{
|
{
|
||||||
@@ -84,9 +84,9 @@
|
|||||||
}
|
}
|
||||||
"WeaponEquip"
|
"WeaponEquip"
|
||||||
{
|
{
|
||||||
"windows" "254"
|
"windows" "255"
|
||||||
"linux" "255"
|
"linux" "256"
|
||||||
"mac" "255"
|
"mac" "256"
|
||||||
}
|
}
|
||||||
"Activate"
|
"Activate"
|
||||||
{
|
{
|
||||||
@@ -96,9 +96,9 @@
|
|||||||
}
|
}
|
||||||
"PlayerRunCmd"
|
"PlayerRunCmd"
|
||||||
{
|
{
|
||||||
"windows" "409"
|
"windows" "410"
|
||||||
"linux" "410"
|
"linux" "411"
|
||||||
"mac" "410"
|
"mac" "411"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,33 +7,33 @@
|
|||||||
{
|
{
|
||||||
"GiveNamedItem"
|
"GiveNamedItem"
|
||||||
{
|
{
|
||||||
"windows" "442"
|
"windows" "443"
|
||||||
"linux" "443"
|
"linux" "444"
|
||||||
"mac" "443"
|
"mac" "444"
|
||||||
}
|
}
|
||||||
"RemovePlayerItem"
|
"RemovePlayerItem"
|
||||||
{
|
{
|
||||||
"windows" "300"
|
"windows" "301"
|
||||||
"linux" "301"
|
"linux" "302"
|
||||||
"mac" "301"
|
"mac" "302"
|
||||||
}
|
}
|
||||||
"Weapon_GetSlot"
|
"Weapon_GetSlot"
|
||||||
{
|
{
|
||||||
"windows" "298"
|
"windows" "299"
|
||||||
"linux" "299"
|
"linux" "300"
|
||||||
"mac" "299"
|
"mac" "300"
|
||||||
}
|
}
|
||||||
"Ignite"
|
"Ignite"
|
||||||
{
|
{
|
||||||
"windows" "233"
|
"windows" "234"
|
||||||
"linux" "234"
|
"linux" "235"
|
||||||
"mac" "234"
|
"mac" "235"
|
||||||
}
|
}
|
||||||
"Extinguish"
|
"Extinguish"
|
||||||
{
|
{
|
||||||
"windows" "236"
|
"windows" "237"
|
||||||
"linux" "237"
|
"linux" "238"
|
||||||
"mac" "237"
|
"mac" "238"
|
||||||
}
|
}
|
||||||
"Teleport"
|
"Teleport"
|
||||||
{
|
{
|
||||||
@@ -43,9 +43,9 @@
|
|||||||
}
|
}
|
||||||
"CommitSuicide"
|
"CommitSuicide"
|
||||||
{
|
{
|
||||||
"windows" "487"
|
"windows" "488"
|
||||||
"linux" "487"
|
"linux" "488"
|
||||||
"mac" "487"
|
"mac" "488"
|
||||||
}
|
}
|
||||||
"GetVelocity"
|
"GetVelocity"
|
||||||
{
|
{
|
||||||
@@ -73,9 +73,9 @@
|
|||||||
}
|
}
|
||||||
"WeaponEquip"
|
"WeaponEquip"
|
||||||
{
|
{
|
||||||
"windows" "291"
|
"windows" "292"
|
||||||
"linux" "292"
|
"linux" "293"
|
||||||
"mac" "292"
|
"mac" "293"
|
||||||
}
|
}
|
||||||
"Activate"
|
"Activate"
|
||||||
{
|
{
|
||||||
@@ -85,9 +85,9 @@
|
|||||||
}
|
}
|
||||||
"PlayerRunCmd"
|
"PlayerRunCmd"
|
||||||
{
|
{
|
||||||
"windows" "465"
|
"windows" "466"
|
||||||
"linux" "466"
|
"linux" "467"
|
||||||
"mac" "466"
|
"mac" "467"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,87 +18,87 @@
|
|||||||
{
|
{
|
||||||
"GiveNamedItem"
|
"GiveNamedItem"
|
||||||
{
|
{
|
||||||
"windows" "391"
|
"windows" "393"
|
||||||
"linux" "392"
|
"linux" "394"
|
||||||
"mac" "392"
|
"mac" "394"
|
||||||
}
|
}
|
||||||
"RemovePlayerItem"
|
"RemovePlayerItem"
|
||||||
|
{
|
||||||
|
"windows" "265"
|
||||||
|
"linux" "266"
|
||||||
|
"mac" "266"
|
||||||
|
}
|
||||||
|
"Weapon_GetSlot"
|
||||||
{
|
{
|
||||||
"windows" "263"
|
"windows" "263"
|
||||||
"linux" "264"
|
"linux" "264"
|
||||||
"mac" "264"
|
"mac" "264"
|
||||||
}
|
}
|
||||||
"Weapon_GetSlot"
|
|
||||||
{
|
|
||||||
"windows" "261"
|
|
||||||
"linux" "262"
|
|
||||||
"mac" "262"
|
|
||||||
}
|
|
||||||
"Ignite"
|
"Ignite"
|
||||||
{
|
{
|
||||||
"windows" "204"
|
"windows" "206"
|
||||||
"linux" "205"
|
"linux" "207"
|
||||||
"mac" "205"
|
"mac" "207"
|
||||||
}
|
}
|
||||||
"Extinguish"
|
"Extinguish"
|
||||||
{
|
{
|
||||||
"windows" "208"
|
"windows" "210"
|
||||||
"linux" "209"
|
"linux" "211"
|
||||||
"mac" "209"
|
"mac" "211"
|
||||||
}
|
}
|
||||||
"Teleport"
|
"Teleport"
|
||||||
{
|
{
|
||||||
"windows" "106"
|
"windows" "107"
|
||||||
"linux" "107"
|
"linux" "108"
|
||||||
"mac" "107"
|
"mac" "108"
|
||||||
}
|
}
|
||||||
"CommitSuicide"
|
"CommitSuicide"
|
||||||
{
|
{
|
||||||
"windows" "432"
|
"windows" "434"
|
||||||
"linux" "432"
|
"linux" "434"
|
||||||
"mac" "432"
|
"mac" "434"
|
||||||
}
|
}
|
||||||
"GetVelocity"
|
"GetVelocity"
|
||||||
{
|
{
|
||||||
"windows" "138"
|
"windows" "139"
|
||||||
"linux" "139"
|
"linux" "140"
|
||||||
"mac" "139"
|
"mac" "140"
|
||||||
}
|
}
|
||||||
"EyeAngles"
|
"EyeAngles"
|
||||||
{
|
{
|
||||||
"windows" "129"
|
"windows" "130"
|
||||||
"linux" "130"
|
"linux" "131"
|
||||||
"mac" "130"
|
"mac" "131"
|
||||||
}
|
}
|
||||||
"SetEntityModel"
|
"SetEntityModel"
|
||||||
{
|
{
|
||||||
"windows" "23"
|
"windows" "24"
|
||||||
"linux" "24"
|
"linux" "25"
|
||||||
"mac" "24"
|
"mac" "25"
|
||||||
}
|
}
|
||||||
"AcceptInput"
|
"AcceptInput"
|
||||||
{
|
{
|
||||||
"windows" "35"
|
"windows" "36"
|
||||||
"linux" "36"
|
"linux" "37"
|
||||||
"mac" "36"
|
"mac" "37"
|
||||||
}
|
}
|
||||||
"WeaponEquip"
|
"WeaponEquip"
|
||||||
{
|
{
|
||||||
"windows" "254"
|
"windows" "256"
|
||||||
"linux" "255"
|
"linux" "257"
|
||||||
"mac" "255"
|
"mac" "257"
|
||||||
}
|
}
|
||||||
"Activate"
|
"Activate"
|
||||||
{
|
{
|
||||||
"windows" "32"
|
"windows" "33"
|
||||||
"linux" "33"
|
"linux" "34"
|
||||||
"mac" "33"
|
"mac" "34"
|
||||||
}
|
}
|
||||||
"PlayerRunCmd"
|
"PlayerRunCmd"
|
||||||
{
|
{
|
||||||
"windows" "409"
|
"windows" "411"
|
||||||
"linux" "410"
|
"linux" "412"
|
||||||
"mac" "410"
|
"mac" "412"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,21 +76,21 @@
|
|||||||
"TerminateRound"
|
"TerminateRound"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x83\xEC\x2A\x53\x8B\x5C\x2A\x2A\x55\x56\x57\x33\xF6\x8B\xE9\x33"
|
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x53\x8B\x2A\x2A\x56\x57\x33\xFF\x83"
|
||||||
"linux" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
"linux" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
||||||
"mac" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
"mac" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
||||||
}
|
}
|
||||||
"GetTranslatedWeaponAlias"
|
"GetTranslatedWeaponAlias"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x56\x57\x8B\x7C\x2A\x2A\x33\xF6\xEB\x2A\x2A\x2A\x00\x00\x00\x00\x8B\x04\x2A\x2A\x2A\x2A\x2A\x57\x50\xE8\x2A\x2A\x2A\x00\x83\xC4\x08\x85\xC0\x74\x2A\x83\x2A\x01\x83\x2A\x2A\x72\x2A\x8B\xC7\x5F\x5E"
|
"windows" "\x55\x8B\xEC\x56\x57\x8B\x2A\x2A\x33\xF6\x8D\x2A\x00\x00\x00\x00\x8B\x04\xF5\x2A\x2A\x2A\x2A\x57\x50\xE8\x2A\x2A\x2A\x2A\x83\xC4\x2A\x85\xC0\x74\x2A\x83\xC6\x01\x83\x2A\x1A"
|
||||||
"linux" "@_Z24GetTranslatedWeaponAliasPKc"
|
"linux" "@_Z24GetTranslatedWeaponAliasPKc"
|
||||||
"mac" "@_Z24GetTranslatedWeaponAliasPKc"
|
"mac" "@_Z24GetTranslatedWeaponAliasPKc"
|
||||||
}
|
}
|
||||||
"GetWeaponInfo"
|
"GetWeaponInfo"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x8B\x4C\x2A\x2A\x85\xC9\x75\x2A\x33\xC0\xC3"
|
"windows" "\x55\x8B\xEC\x8B\x4D\x2A\x85\xC9\x75\x2A\x33\xC0\x5D\xC3\x83\xF9\x2A\x7C\x2A\x69\xC9\x2A\x2A\x00\x00"
|
||||||
"linux" "@_Z13GetWeaponInfo10CSWeaponID"
|
"linux" "@_Z13GetWeaponInfo10CSWeaponID"
|
||||||
"mac" "@_Z13GetWeaponInfo10CSWeaponID"
|
"mac" "@_Z13GetWeaponInfo10CSWeaponID"
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-17
@@ -18,21 +18,21 @@
|
|||||||
"Burn"
|
"Burn"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x51\x56\x8B\xF1\x8B\x8E\x2A\x2A\x00\x00\x8B\x01\x8B\x90\x2A\x2A\x00\x00\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x57\x8D\xBE\x2A\x2A\x2A\x2A\x6A"
|
"windows" "\x55\x8B\xEC\x51\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x01\x8B\x2A\x2A\x2A\x2A\x2A\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x57\x8D"
|
||||||
"linux" "@_ZN15CTFPlayerShared4BurnEP9CTFPlayerP13CTFWeaponBase"
|
"linux" "@_ZN15CTFPlayerShared4BurnEP9CTFPlayerP13CTFWeaponBase"
|
||||||
"mac" "@_ZN15CTFPlayerShared4BurnEP9CTFPlayerP13CTFWeaponBase"
|
"mac" "@_ZN15CTFPlayerShared4BurnEP9CTFPlayerP13CTFWeaponBase"
|
||||||
}
|
}
|
||||||
"RemoveDisguise"
|
"RemoveDisguise"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x51\x56\x8B\xF1\x8B\x8E\x2A\x2A\x2A\x2A\x57\x8B\xBE\x2A\x2A\x2A\x2A\xE8"
|
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\x57\x8B"
|
||||||
"linux" "@_ZN15CTFPlayerShared14RemoveDisguiseEv"
|
"linux" "@_ZN15CTFPlayerShared14RemoveDisguiseEv"
|
||||||
"mac" "@_ZN15CTFPlayerShared14RemoveDisguiseEv"
|
"mac" "@_ZN15CTFPlayerShared14RemoveDisguiseEv"
|
||||||
}
|
}
|
||||||
"Disguise"
|
"Disguise"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x51\x53\x56\x8B\xF1\x8B\x8E\x2A\x2A\x00\x00\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x8B\x86\x2A\x2A\x00\x00\x8B\x80"
|
"windows" "\x55\x8B\xEC\x51\x53\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x8B"
|
||||||
"linux" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb"
|
"linux" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb"
|
||||||
"mac" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb"
|
"mac" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb"
|
||||||
}
|
}
|
||||||
@@ -41,14 +41,14 @@
|
|||||||
"library" "server"
|
"library" "server"
|
||||||
"linux" "@_ZN13CTFWeaponBase26CalcIsAttackCriticalHelperEv"
|
"linux" "@_ZN13CTFWeaponBase26CalcIsAttackCriticalHelperEv"
|
||||||
"mac" "@_ZN13CTFWeaponBase26CalcIsAttackCriticalHelperEv"
|
"mac" "@_ZN13CTFWeaponBase26CalcIsAttackCriticalHelperEv"
|
||||||
"windows" "\x55\x8B\xEC\x83\x2A\x2A\x83\x2A\x2A\x53\x56\x57\x6A\x00\x68\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\x6A"
|
"windows" "\x53\x8B\xDC\x83\xEC\x08\x83\xE4\x2A\x83\xC4\x2A\x55\x8B\x6B\x2A\x89\x6C\x24\x2A\x8B\xEC\x83\xEC\x2A\x56\x57\x6A\x00"
|
||||||
}
|
}
|
||||||
"CalcCriticalMelee"
|
"CalcCriticalMelee"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"linux" "@_ZN18CTFWeaponBaseMelee26CalcIsAttackCriticalHelperEv"
|
"linux" "@_ZN18CTFWeaponBaseMelee26CalcIsAttackCriticalHelperEv"
|
||||||
"mac" "@_ZN18CTFWeaponBaseMelee26CalcIsAttackCriticalHelperEv"
|
"mac" "@_ZN18CTFWeaponBaseMelee26CalcIsAttackCriticalHelperEv"
|
||||||
"windows" "\x51\x53\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x85\xDB\x74\x2A\x8B\x03\x8B"
|
"windows" "\x55\x8B\xEC\x51\x53\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x85\xDB\x74\x2A\x8B\x03"
|
||||||
}
|
}
|
||||||
"CalcCriticalBow"
|
"CalcCriticalBow"
|
||||||
{
|
{
|
||||||
@@ -60,63 +60,63 @@
|
|||||||
"Regenerate"
|
"Regenerate"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x83\xEC\x08\xF3\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x53\x55\x56\x8B\xF1\x8B"
|
"windows" "\x55\x8B\xEC\x83\xEC\x2A\xF3\x0F\x10\x05\x2A\x2A\x2A\x2A\x53\x56\x8B\xF1\x8B\x86"
|
||||||
"linux" "@_ZN9CTFPlayer10RegenerateEv"
|
"linux" "@_ZN9CTFPlayer10RegenerateEv"
|
||||||
"mac" "@_ZN9CTFPlayer10RegenerateEv"
|
"mac" "@_ZN9CTFPlayer10RegenerateEv"
|
||||||
}
|
}
|
||||||
"AddCondition"
|
"AddCondition"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x83\xFF\x2A\x8B\xF1\x7C\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8D\x6F\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8B\xEF\x8B\x86\x2A\x2A\x2A\x2A\xD9"
|
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x53\x56\x57\x8B\x7D\x2A\x83\xFF\x2A\x8B\xF1\x7C\x2A\x8D\x47\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x45\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x7D\x2A\x8B\x8E\x2A\x2A\x2A\x2A\xD9"
|
||||||
"linux" "@_ZN15CTFPlayerShared7AddCondE7ETFCondf"
|
"linux" "@_ZN15CTFPlayerShared7AddCondE7ETFCondf"
|
||||||
"mac" "@_ZN15CTFPlayerShared7AddCondE7ETFCondf"
|
"mac" "@_ZN15CTFPlayerShared7AddCondE7ETFCondf"
|
||||||
}
|
}
|
||||||
"RemoveCondition"
|
"RemoveCondition"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x83\xFF\x20\x8B\xF1\x7C\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8D\x6F\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8B\xEF\x8B\x2A\x2A\x2A\x50\x57\x8D"
|
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x53\x56\x57\x8B\x7D\x2A\x83\xFF\x2A\x8B\xF1\x7C\x2A\x8D\x47\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x45\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x7D\x2A\x8B\x4D"
|
||||||
"linux" "@_ZN15CTFPlayerShared10RemoveCondE7ETFCondb"
|
"linux" "@_ZN15CTFPlayerShared10RemoveCondE7ETFCondb"
|
||||||
"mac" "@_ZN15CTFPlayerShared10RemoveCondE7ETFCondb"
|
"mac" "@_ZN15CTFPlayerShared10RemoveCondE7ETFCondb"
|
||||||
}
|
}
|
||||||
"SetPowerplayEnabled"
|
"SetPowerplayEnabled"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x80\x7C\x2A\x2A\x2A\x56\x8B\xF1\x74\x2A\x57\x8D\x44\x24\x2A\x50"
|
"windows" "\x55\x8B\xEC\x80\x7D\x2A\x2A\x56\x8B\xF1\x74\x2A\x57\x8D\x45"
|
||||||
"linux" "@_ZN9CTFPlayer19SetPowerplayEnabledEb"
|
"linux" "@_ZN9CTFPlayer19SetPowerplayEnabledEb"
|
||||||
"mac" "@_ZN9CTFPlayer19SetPowerplayEnabledEb"
|
"mac" "@_ZN9CTFPlayer19SetPowerplayEnabledEb"
|
||||||
}
|
}
|
||||||
"SetInWaitingForPlayers"
|
"SetInWaitingForPlayers"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x85\x2A\x2A\x2A\x2A\xA1"
|
"windows" "\x55\x8B\xEC\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x85\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A"
|
||||||
"linux" "@_ZN24CTeamplayRoundBasedRules22SetInWaitingForPlayersEb"
|
"linux" "@_ZN24CTeamplayRoundBasedRules22SetInWaitingForPlayersEb"
|
||||||
"mac" "@_ZN24CTeamplayRoundBasedRules22SetInWaitingForPlayersEb"
|
"mac" "@_ZN24CTeamplayRoundBasedRules22SetInWaitingForPlayersEb"
|
||||||
}
|
}
|
||||||
"StunPlayer"
|
"StunPlayer"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x51\xD9\x2A\x2A\x2A\x2A\x2A\x56\x57\x83\xEC\x2A\xD9\x2A\x2A\x2A\x8B\xF1\xD9\xEE\xD9\x2A\x2A\x2A\xD9\xE8\xD9"
|
"windows" "\x55\x8B\xEC\x51\xD9\x05\x2A\x2A\x2A\x2A\x56\x57\x83\xEC\x14"
|
||||||
"linux" "@_ZN15CTFPlayerShared10StunPlayerEffiP9CTFPlayer"
|
"linux" "@_ZN15CTFPlayerShared10StunPlayerEffiP9CTFPlayer"
|
||||||
"mac" "@_ZN15CTFPlayerShared10StunPlayerEffiP9CTFPlayer"
|
"mac" "@_ZN15CTFPlayerShared10StunPlayerEffiP9CTFPlayer"
|
||||||
}
|
}
|
||||||
"IsHolidayActive"
|
"IsHolidayActive"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x80\x2A\x2A\x2A\x2A\x2A\x00\x75\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x54\x2A\x2A\x8B"
|
"windows" "\x55\x8B\xEC\x80\x3D\x2A\x2A\x2A\x2A\x2A\x75\x2A\xE8"
|
||||||
"linux" "@_Z20UTIL_IsHolidayActivei"
|
"linux" "@_Z20UTIL_IsHolidayActivei"
|
||||||
"mac" "@_Z20UTIL_IsHolidayActivei"
|
"mac" "@_Z20UTIL_IsHolidayActivei"
|
||||||
}
|
}
|
||||||
"MakeBleed"
|
"MakeBleed"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x51\x56\x8B\xF1\x8B\x8E\x2A\x2A\x2A\x2A\x8B\x01\x8B\x90\x2A\x2A\x2A\x2A\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x6A\x19\x8D"
|
"windows" "\x55\x8B\xEC\x51\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x01\x8B\x2A\x2A\x2A\x2A\x2A\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x6A\x19"
|
||||||
"linux" "@_ZN15CTFPlayerShared9MakeBleedEP9CTFPlayerP13CTFWeaponBasef"
|
"linux" "@_ZN15CTFPlayerShared9MakeBleedEP9CTFPlayerP13CTFWeaponBasef"
|
||||||
"mac" "@_ZN15CTFPlayerShared9MakeBleedEP9CTFPlayerP13CTFWeaponBasef"
|
"mac" "@_ZN15CTFPlayerShared9MakeBleedEP9CTFPlayerP13CTFWeaponBasef"
|
||||||
}
|
}
|
||||||
"IsPlayerInDuel"
|
"IsPlayerInDuel"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x83\xEC\x08\x2A\x2A\x2A\x2A\x33\xC0\x89\x04\x24\x89\x44\x24\x04\x8D\x04\x24\x50\x2A\x2A\x2A\x2A\x2A\x84\xC0\x2A\x2A\x83\xC4\x08\xC3"
|
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x8B\x4D\x2A\x33\xC0\x89\x45\x2A\x89\x45"
|
||||||
"linux" "@_Z21DuelMiniGame_IsInDuelP9CTFPlayer"
|
"linux" "@_Z21DuelMiniGame_IsInDuelP9CTFPlayer"
|
||||||
"mac" "@_Z21DuelMiniGame_IsInDuelP9CTFPlayer"
|
"mac" "@_Z21DuelMiniGame_IsInDuelP9CTFPlayer"
|
||||||
}
|
}
|
||||||
@@ -125,9 +125,9 @@
|
|||||||
{
|
{
|
||||||
"ForceRespawn"
|
"ForceRespawn"
|
||||||
{
|
{
|
||||||
"windows" "318"
|
"windows" "320"
|
||||||
"linux" "319"
|
"linux" "321"
|
||||||
"mac" "319"
|
"mac" "321"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ native AdminId:CreateAdmin(const String:name[]="");
|
|||||||
* @param maxlength Maximum size of string buffer.
|
* @param maxlength Maximum size of string buffer.
|
||||||
* @return Number of bytes written.
|
* @return Number of bytes written.
|
||||||
*/
|
*/
|
||||||
native GetAdminUsername(AdminId:id, const String:name[], maxlength);
|
native GetAdminUsername(AdminId:id, String:name[], maxlength);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Binds an admin to an identity for fast lookup later on. The bind must be unique.
|
* Binds an admin to an identity for fast lookup later on. The bind must be unique.
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ stock Float:operator--(Float:oper)
|
|||||||
|
|
||||||
stock Float:operator-(Float:oper)
|
stock Float:operator-(Float:oper)
|
||||||
{
|
{
|
||||||
return oper^Float:((-1)^((-1)/2)); /* IEEE values are sign/magnitude */
|
return oper^Float:cellmin; /* IEEE values are sign/magnitude */
|
||||||
}
|
}
|
||||||
|
|
||||||
stock Float:operator*(Float:oper1, oper2)
|
stock Float:operator*(Float:oper1, oper2)
|
||||||
|
|||||||
@@ -127,6 +127,13 @@ native Float:GetEngineTime();
|
|||||||
*/
|
*/
|
||||||
native Float:GetGameTime();
|
native Float:GetGameTime();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the game's internal tick count.
|
||||||
|
*
|
||||||
|
* @return Game tick count.
|
||||||
|
*/
|
||||||
|
native GetGameTickCount();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the game description from the mod.
|
* Returns the game description from the mod.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -404,6 +404,16 @@ native bool:GetMenuExitBackButton(Handle:menu);
|
|||||||
*/
|
*/
|
||||||
native SetMenuExitBackButton(Handle:menu, bool:button);
|
native SetMenuExitBackButton(Handle:menu, bool:button);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether or not the menu has a "no vote" button in slot 1.
|
||||||
|
* By default, menus do not have a no vote button.
|
||||||
|
*
|
||||||
|
* @param menu Menu Handle.
|
||||||
|
* @param button True to enable the button, false to remove it.
|
||||||
|
* @return True if allowed; false on failure.
|
||||||
|
* @error Invalid Handle.
|
||||||
|
*/
|
||||||
|
native bool:SetMenuNoVoteButton(Handle:menu, bool:button);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancels a menu from displaying on all clients. While the
|
* Cancels a menu from displaying on all clients. While the
|
||||||
|
|||||||
@@ -115,7 +115,10 @@ enum TFCond
|
|||||||
TFCond_CritOnWin,
|
TFCond_CritOnWin,
|
||||||
TFCond_CritOnFlagCapture,
|
TFCond_CritOnFlagCapture,
|
||||||
TFCond_CritOnKill,
|
TFCond_CritOnKill,
|
||||||
TFCond_RestrictToMelee
|
TFCond_RestrictToMelee,
|
||||||
|
|
||||||
|
TFCond_CritMmmph = 44,
|
||||||
|
TFCond_DefenseBuffMmmph,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TFHoliday
|
enum TFHoliday
|
||||||
@@ -123,6 +126,7 @@ enum TFHoliday
|
|||||||
TFHoliday_Birthday = 1,
|
TFHoliday_Birthday = 1,
|
||||||
TFHoliday_Halloween,
|
TFHoliday_Halloween,
|
||||||
TFHoliday_Christmas,
|
TFHoliday_Christmas,
|
||||||
|
TFHoliday_MeetThePyro,
|
||||||
TFHoliday_FullMoon,
|
TFHoliday_FullMoon,
|
||||||
TFHoliday_HalloweenOrFullMoon,
|
TFHoliday_HalloweenOrFullMoon,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ enum {
|
|||||||
TF_CUSTOM_PLASMA_GIB,
|
TF_CUSTOM_PLASMA_GIB,
|
||||||
TF_CUSTOM_PRACTICE_STICKY,
|
TF_CUSTOM_PRACTICE_STICKY,
|
||||||
TF_CUSTOM_EYEBALL_ROCKET,
|
TF_CUSTOM_EYEBALL_ROCKET,
|
||||||
|
TF_CUSTOM_HEADSHOT_DECAPITATION,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Weapon codes as used in some events, such as player_death
|
// Weapon codes as used in some events, such as player_death
|
||||||
@@ -222,6 +223,7 @@ enum {
|
|||||||
TF_WEAPON_BAT_GIFTWRAP,
|
TF_WEAPON_BAT_GIFTWRAP,
|
||||||
TF_WEAPON_GRENADE_ORNAMENT,
|
TF_WEAPON_GRENADE_ORNAMENT,
|
||||||
TF_WEAPON_RAYGUN_REVENGE,
|
TF_WEAPON_RAYGUN_REVENGE,
|
||||||
|
TF_WEAPON_PEP_BRAWLER_BLASTER,
|
||||||
};
|
};
|
||||||
|
|
||||||
// TF2 Weapon Slots for GetPlayerWeaponSlot
|
// TF2 Weapon Slots for GetPlayerWeaponSlot
|
||||||
|
|||||||
@@ -37,6 +37,6 @@
|
|||||||
|
|
||||||
#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */
|
#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */
|
||||||
#define SOURCEMOD_V_MINOR 4 /**< SourceMod Minor version */
|
#define SOURCEMOD_V_MINOR 4 /**< SourceMod Minor version */
|
||||||
#define SOURCEMOD_V_RELEASE 2 /**< SourceMod Release version */
|
#define SOURCEMOD_V_RELEASE 4 /**< SourceMod Release version */
|
||||||
|
|
||||||
#define SOURCEMOD_VERSION "1.4.2" /**< SourceMod version string (major.minor.release.build) */
|
#define SOURCEMOD_VERSION "1.4.4" /**< SourceMod version string (major.minor.release.build) */
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.4.2
|
1.4.4
|
||||||
|
|||||||
@@ -191,6 +191,9 @@ bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error,
|
|||||||
#if defined SMEXT_ENABLE_TRANSLATOR
|
#if defined SMEXT_ENABLE_TRANSLATOR
|
||||||
SM_GET_IFACE(TRANSLATOR, translator);
|
SM_GET_IFACE(TRANSLATOR, translator);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined SMEXT_ENABLE_NINVOKE
|
||||||
|
SM_GET_IFACE(NINVOKE, ninvoke);
|
||||||
|
#endif
|
||||||
#if defined SMEXT_ENABLE_ROOTCONSOLEMENU
|
#if defined SMEXT_ENABLE_ROOTCONSOLEMENU
|
||||||
SM_GET_IFACE(ROOTCONSOLE, rootconsole);
|
SM_GET_IFACE(ROOTCONSOLE, rootconsole);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ Pants will save us from certain death.
|
|||||||
Invaders' blood marches through my veins, like GIANT RADIOACTIVE RUBBER PANTS!
|
Invaders' blood marches through my veins, like GIANT RADIOACTIVE RUBBER PANTS!
|
||||||
THE PANTS COMMAND COMMAND ME! DO NOT IGNORE MY VEINS.
|
THE PANTS COMMAND COMMAND ME! DO NOT IGNORE MY VEINS.
|
||||||
This file sure has gotten big.
|
This file sure has gotten big.
|
||||||
sawce loves anime, sushi, and macs
|
applesawce loves anime, sushi, and macs
|
||||||
u
|
u
|
||||||
not me
|
not me
|
||||||
skull man was here
|
skull man was here
|
||||||
|
|||||||
Reference in New Issue
Block a user