Compare commits

..
Author SHA1 Message Date
Nicholas Hastings 3e63e611c2 Update versioning for 1.6.2 release. 2014-09-20 12:54:09 -04:00
Nicholas Hastings c3598d8e71 Update changelog for version 1.6.2. 2014-09-20 12:53:22 -04:00
Nicholas Hastings f57097651b Merge pull request #159 from alliedmodders/1.6-getclientauthid
Backport GetClientAuthId native to 1.6-dev (r=asherkin).
2014-09-20 12:16:46 -04:00
Nicholas Hastings a5450aad18 Fix implicit bool conversion perf warning on msvc 2014-09-19 15:16:28 -07:00
Nicholas Hastings 0a4a06d9e1 Fix AuthId_Engine always returning Steam2 format 2014-09-19 15:10:26 -07:00
Nicholas Hastings dd51da519d Add half-assed backport of GetClientAuthId 2014-09-19 10:36:13 -07:00
Nicholas Hastings c79f52e2c9 Re-add DBI query throttling (r=dvander). 2014-09-18 22:31:08 -04:00
Asher Baker c4279da3b2 Updated plugin blacklist. 2014-09-16 10:49:14 +01:00
Ruben Gonzalez 3923177037 Update linux CSGO gamedata 2014-09-12 12:27:08 -04:00
Nicholas Hastings 80a0e24b66 Update CS:GO linux ClanTagOffset. 2014-09-12 06:50:53 -04:00
Nicholas Hastings 75d770ba0f Disable RTTI for more game-agnostic extensions. 2014-09-11 20:42:16 -04:00
Nicholas Hastings d9e6daa006 Disable RTTI for game-agnostic extensions 2014-09-11 20:31:16 -04:00
Nicholas Hastings f08b60bc98 Disable RTTI for Loader, Logic, and JIT bins 2014-09-11 20:17:24 -04:00
Nicholas Hastings 4d98fc2a3d Link libstdc++ on linux for CS:GO. 2014-09-11 19:24:58 -04:00
Nicholas Hastings 0b4ec459d3 Update core AMBuild script for hl2sdk-csgo and hl2sdk-dota protobuf changes. 2014-09-10 21:08:47 -04:00
Nicholas Hastings 65269551f9 Trigger build for hl2sdk-tf2 changes. 2014-09-10 21:05:00 -04:00
Nicholas Hastings 47b0022331 Update for hl2sdk-dota changes 2014-08-29 10:00:08 -07:00
FlaminSarge 7df2b28fe0 Update TF2 enums for Love & War 2014-08-23 09:33:51 -04:00
Nicholas Hastings 7df1069613 Merge pull request #136 from alliedmodders/steamid-bcompat-hack
Add bad hack to add backcompat for new SteamID rendering changes in TF2 and later others.
2014-08-21 20:46:16 -04:00
Nicholas Hastings 7585acaeef << >> 2014-08-21 20:20:12 -04:00
Nicholas Hastings dfcf953131 Add bad hack to add backcompat for new SteamID rendering changes in TF2 and later others. 2014-08-21 20:10:17 -04:00
Ruben Gonzalez cb31a65807 Update NMRIH gamedata. 2014-08-21 09:34:05 -04:00
Ruben Gonzalez 6123c5e013 Update FoF gamedata. 2014-08-18 08:57:38 -04:00
Nicholas Hastings cb73b935ec Bumping version. 2014-08-17 09:55:54 -04:00
32 changed files with 381 additions and 105 deletions
+3
View File
@@ -381,6 +381,9 @@ class SMConfig(object):
if builder.target_platform in ['linux', 'mac']: if builder.target_platform in ['linux', 'mac']:
compiler.defines += ['NO_HOOK_MALLOC', 'NO_MALLOC_OVERRIDE'] compiler.defines += ['NO_HOOK_MALLOC', 'NO_MALLOC_OVERRIDE']
if sdk.name == 'csgo' and builder.target_platform == 'linux':
compiler.linkflags += ['-lstdc++']
for path in paths: for path in paths:
compiler.cxxincludes += [os.path.join(sdk.path, *path)] compiler.cxxincludes += [os.path.join(sdk.path, *path)]
+14
View File
@@ -1,5 +1,19 @@
SourceMod Changelog SourceMod Changelog
SourceMod 1.6.2 [2014-09-20]
URL: http://wiki.alliedmods.net/SourceMod_1.6.2_Release_Notes
User Changes:
- Updated game support for TF2, CS:GO, No More Room in Hell and Fistful of Frags.
- Added compatibility shim to force Steam player auth strings to be in "Steam2" rendered format (PR 136).
- Fixed possible performance regression in DBI handling.
Developer Changes:
- Added new GetClientAuthId native to retrieve player auth strings in desired format (PR 159).
- Updated TF2 weapon and player condition enums (FlaminSarge).
----------------------------------------------------------
SourceMod 1.6.1 [2014-08-17] SourceMod 1.6.1 [2014-08-17]
URL: http://wiki.alliedmods.net/SourceMod_1.6.1_Release_Notes URL: http://wiki.alliedmods.net/SourceMod_1.6.1_Release_Notes
+3 -5
View File
@@ -52,17 +52,14 @@ for sdk_name in SM.sdks:
compiler = binary.compiler compiler = binary.compiler
if sdk.name == 'csgo': if sdk.name == 'csgo':
# Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve.
if compiler.cxx.behavior == 'gcc':
compiler.cflags += ['-Wno-sign-compare']
compiler.cxxincludes += [ compiler.cxxincludes += [
os.path.join(sdk.path, 'common', 'protobuf-2.3.0', 'src'), os.path.join(sdk.path, 'common', 'protobuf-2.5.0', 'src'),
os.path.join(sdk.path, 'public', 'engine', 'protobuf'), os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf') os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf')
] ]
elif sdk.name == 'dota': elif sdk.name == 'dota':
compiler.cxxincludes += [ compiler.cxxincludes += [
os.path.join(sdk.path, 'common', 'protobuf-2.4.1', 'src'), os.path.join(sdk.path, 'common', 'protobuf-2.5.0', 'src'),
os.path.join(sdk.path, 'public', 'engine', 'protobuf'), os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf'), os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf') os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf')
@@ -109,6 +106,7 @@ for sdk_name in SM.sdks:
binary.sources += [ binary.sources += [
os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'), os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'),
os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'), os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'network_connection.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'),
+1 -1
View File
@@ -155,7 +155,7 @@ void EventManager::FireGameEvent(IGameEvent *pEvent)
Just need to add ourselves as a listener to make our hook on IGameEventManager2::FireEvent work */ Just need to add ourselves as a listener to make our hook on IGameEventManager2::FireEvent work */
} }
#if SOURCE_ENGINE >= SE_LEFT4DEAD #if SOURCE_ENGINE >= SE_LEFT4DEAD && SOURCE_ENGINE != SE_DOTA
int EventManager::GetEventDebugID() int EventManager::GetEventDebugID()
{ {
return EVENT_DEBUG_ID_INIT; return EVENT_DEBUG_ID_INIT;
+1 -1
View File
@@ -110,7 +110,7 @@ public: // IPluginsListener
void OnPluginUnloaded(IPlugin *plugin); void OnPluginUnloaded(IPlugin *plugin);
public: // IGameEventListener2 public: // IGameEventListener2
void FireGameEvent(IGameEvent *pEvent); void FireGameEvent(IGameEvent *pEvent);
#if SOURCE_ENGINE >= SE_LEFT4DEAD #if SOURCE_ENGINE >= SE_LEFT4DEAD && SOURCE_ENGINE != SE_DOTA
int GetEventDebugID(); int GetEventDebugID();
#endif #endif
public: public:
+44
View File
@@ -47,6 +47,12 @@
#include "logic_bridge.h" #include "logic_bridge.h"
#include <sourcemod_version.h> #include <sourcemod_version.h>
#if SOURCE_ENGINE >= SE_ORANGEBOX
#include <steam/steamclientpublic.h>
#endif
class CSteamID;
PlayerManager g_Players; PlayerManager g_Players;
bool g_OnMapStarted = false; bool g_OnMapStarted = false;
IForward *PreAdminCheck = NULL; IForward *PreAdminCheck = NULL;
@@ -399,15 +405,28 @@ void PlayerManager::RunAuthChecks()
{ {
CPlayer *pPlayer; CPlayer *pPlayer;
const char *authstr; const char *authstr;
const CSteamID *steamid = NULL;
unsigned int removed = 0; unsigned int removed = 0;
for (unsigned int i=1; i<=m_AuthQueue[0]; i++) for (unsigned int i=1; i<=m_AuthQueue[0]; i++)
{ {
pPlayer = &m_Players[m_AuthQueue[i]]; pPlayer = &m_Players[m_AuthQueue[i]];
#if SOURCE_ENGINE == SE_DOTA #if SOURCE_ENGINE == SE_DOTA
steamid = engine->GetClientSteamID(pPlayer->m_iIndex);
authstr = engine->GetPlayerNetworkIDString(pPlayer->m_iIndex - 1); authstr = engine->GetPlayerNetworkIDString(pPlayer->m_iIndex - 1);
#elif SOURCE_ENGINE >= SE_ORANGEBOX
steamid = engine->GetClientSteamID(pPlayer->m_pEdict);
authstr = engine->GetPlayerNetworkIDString(pPlayer->m_pEdict);
#else #else
authstr = engine->GetPlayerNetworkIDString(pPlayer->m_pEdict); authstr = engine->GetPlayerNetworkIDString(pPlayer->m_pEdict);
#endif #endif
#if SOURCE_ENGINE >= SE_ORANGEBOX
if (authstr && authstr[0] == '[' && steamid)
{
authstr = steamid->Render();
}
#endif
pPlayer->SetAuthString(authstr); pPlayer->SetAuthString(authstr);
if (!pPlayer->IsAuthStringValidated()) if (!pPlayer->IsAuthStringValidated())
@@ -2436,3 +2455,28 @@ void CPlayer::PrintToConsole(const char *pMsg)
engine->ClientPrintf(m_pEdict, pMsg); engine->ClientPrintf(m_pEdict, pMsg);
#endif #endif
} }
#if SOURCE_ENGINE >= SE_LEFT4DEAD
const EUniverse kCurrentSteamUniverse = k_EUniversePublic;
#elif SOURCE_ENGINE >= SE_ORANGEBOX
const EUniverse kCurrentSteamUniverse = k_EUniverseInvalid;
#endif
#if SOURCE_ENGINE >= SE_ORANGEBOX
const char *CSteamID::Render() const
{
static char szSteamID[64];
switch (GetEAccountType())
{
case k_EAccountTypeInvalid:
case k_EAccountTypeIndividual:
snprintf(szSteamID, sizeof(szSteamID), "STEAM_%u:%u:%u", kCurrentSteamUniverse, GetAccountID() % 2, GetAccountID() >> 1);
break;
default:
szSteamID[0] = '\0';
}
return szSteamID;
}
#endif
+6
View File
@@ -19,6 +19,12 @@ if builder.target_platform == 'linux':
elif builder.target_platform == 'mac': elif builder.target_platform == 'mac':
binary.compiler.cflags += ['-Wno-deprecated-declarations'] binary.compiler.cflags += ['-Wno-deprecated-declarations']
binary.compiler.postlink += ['-framework', 'CoreServices'] binary.compiler.postlink += ['-framework', 'CoreServices']
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.sources += [ binary.sources += [
'common_logic.cpp', 'common_logic.cpp',
'smn_adt_array.cpp', 'smn_adt_array.cpp',
+11
View File
@@ -615,6 +615,17 @@ void DBManager::ThreadMain()
ke::AutoLock lock(&m_ThinkLock); ke::AutoLock lock(&m_ThinkLock);
m_ThinkQueue.push(op); m_ThinkQueue.push(op);
} }
if (!m_Terminate)
{
ke::AutoUnlock unlock(&m_QueueEvent);
#ifdef _WIN32
Sleep(20);
#else
usleep(20000);
#endif
}
} }
if (m_Terminate) if (m_Terminate)
+128
View File
@@ -37,6 +37,15 @@
#include <inetchannel.h> #include <inetchannel.h>
#include <iclient.h> #include <iclient.h>
#ifndef PRIu64
#ifdef _WIN32
#define PRIu64 "I64u"
#else
#define PRIu64 "llu"
#endif
#endif
static cell_t sm_GetMaxHumanPlayers(IPluginContext *pCtx, const cell_t *params) static cell_t sm_GetMaxHumanPlayers(IPluginContext *pCtx, const cell_t *params)
{ {
int maxHumans = -1; int maxHumans = -1;
@@ -380,6 +389,124 @@ static cell_t RunAdminCacheChecks(IPluginContext *pContext, const cell_t *params
return (id != pPlayer->GetAdminId()) ? 1 : 0; return (id != pPlayer->GetAdminId()) ? 1 : 0;
} }
// Must match clients.inc
enum AuthIdType
{
AuthType_Engine = 0,
AuthType_Steam2,
AuthType_Steam3,
AuthType_SteamId64,
};
static cell_t GetClientAuthId(IPluginContext *pContext, const cell_t *params)
{
CPlayer *pPlayer = g_Players.GetPlayerByIndex(params[1]);
if (!pPlayer)
{
return pContext->ThrowNativeError("Client index %d is invalid", params[1]);
}
else if (!pPlayer->IsConnected())
{
return pContext->ThrowNativeError("Client %d is not connected", params[1]);
}
bool validate = !!params[5];
switch (params[2])
{
case AuthType_Engine:
{
const char *authstr;
if (validate)
{
// Keep this as a validation check
authstr = pPlayer->GetAuthString(params[5]);
if (!authstr || authstr[0] == '\0')
{
return 0;
}
}
#if SOURCE_ENGINE == SE_DOTA
authstr = engine->GetPlayerNetworkIDString(pPlayer->GetIndex());
#else
authstr = engine->GetPlayerNetworkIDString(pPlayer->GetEdict());
#endif
pContext->StringToLocal(params[3], params[4], authstr);
}
break;
case AuthType_Steam2:
case AuthType_Steam3:
{
if (pPlayer->IsFakeClient())
{
pContext->StringToLocal(params[3], params[4], "BOT");
return 1;
}
static char authstr[64];
unsigned int acctId = pPlayer->GetSteamAccountID(validate);
if (acctId == 0)
{
if (g_HL2.IsLANServer())
{
pContext->StringToLocal(params[3], params[4], "STEAM_ID_LAN");
return 1;
}
else if (!params[5])
{
pContext->StringToLocal(params[3], params[4], "STEAM_ID_PENDING");
return 1;
}
return 0;
}
if (params[2] == AuthType_Steam2)
{
#if SOURCE_ENGINE <= SE_LEFT4DEAD
unsigned int universe = 0;
#else
unsigned int universe = 1;
#endif
_snprintf(authstr, sizeof(authstr), "STEAM_%u:%u:%u", universe, acctId & 1, acctId >> 1);
pContext->StringToLocal(params[3], params[4], authstr);
break;
}
else
{
_snprintf(authstr, sizeof(authstr), "[U:1:%u]", acctId);
pContext->StringToLocal(params[3], params[4], authstr);
}
}
break;
case AuthType_SteamId64:
{
if (pPlayer->IsFakeClient() || g_HL2.IsLANServer())
{
return 0;
}
unsigned int acctId = pPlayer->GetSteamAccountID(validate);
if (acctId == 0)
{
return 0;
}
uint64_t steamId = acctId;
steamId |= ((uint64_t)1<<32); // Instance (1/Desktop)
steamId |= ((uint64_t)1<<52); // Type (1/Individual)
steamId |= ((uint64_t)1<<56); // Universe (1/Public)
static char authstr[64];
snprintf(authstr, sizeof(authstr), "%" PRIu64, steamId);
pContext->StringToLocal(params[3], params[4], authstr);
}
break;
}
return 1;
}
REGISTER_NATIVES(playernatives) REGISTER_NATIVES(playernatives)
{ {
{"GetMaxHumanPlayers", sm_GetMaxHumanPlayers}, {"GetMaxHumanPlayers", sm_GetMaxHumanPlayers},
@@ -393,6 +520,7 @@ REGISTER_NATIVES(playernatives)
{"GetClientAvgData", GetAvgData}, {"GetClientAvgData", GetAvgData},
{"GetClientAvgPackets", GetAvgPackets}, {"GetClientAvgPackets", GetAvgPackets},
{"RunAdminCacheChecks", RunAdminCacheChecks}, {"RunAdminCacheChecks", RunAdminCacheChecks},
{"GetClientAuthId", GetClientAuthId},
{NULL, NULL} {NULL, NULL}
}; };
+4
View File
@@ -8,6 +8,10 @@ binary.compiler.cxxincludes += [
os.path.join(builder.sourcePath, 'public', 'jit'), os.path.join(builder.sourcePath, 'public', 'jit'),
os.path.join(builder.sourcePath, 'public', 'jit', 'x86'), os.path.join(builder.sourcePath, 'public', 'jit', 'x86'),
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.sources += [ binary.sources += [
'extension.cpp', 'extension.cpp',
+4
View File
@@ -5,6 +5,10 @@ binary = SM.ExtLibrary(builder, 'clientprefs.ext')
binary.compiler.cxxincludes += [ binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'), os.path.join(SM.mms_root, 'core', 'sourcehook'),
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.sources += [ binary.sources += [
'extension.cpp', 'extension.cpp',
+4
View File
@@ -8,6 +8,10 @@ binary.compiler.includes += [
os.path.join(builder.sourcePath, 'extensions', 'curl', 'curl-src', 'include') os.path.join(builder.sourcePath, 'extensions', 'curl', 'curl-src', 'include')
] ]
binary.compiler.defines += ['CURL_STATICLIB'] binary.compiler.defines += ['CURL_STATICLIB']
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.compiler.postlink += [libcurl.binary] binary.compiler.postlink += [libcurl.binary]
if builder.target_platform == 'linux': if builder.target_platform == 'linux':
binary.compiler.postlink += ['-lrt'] binary.compiler.postlink += ['-lrt']
+4
View File
@@ -2,6 +2,10 @@
import os import os
binary = SM.ExtLibrary(builder, 'geoip.ext') binary = SM.ExtLibrary(builder, 'geoip.ext')
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
if builder.target_platform == 'windows': if builder.target_platform == 'windows':
binary.compiler.postlink += ['wsock32.lib'] binary.compiler.postlink += ['wsock32.lib']
+4
View File
@@ -7,6 +7,10 @@ if SM.mysql_root:
os.path.join(SM.mysql_root, 'include'), os.path.join(SM.mysql_root, 'include'),
os.path.join(SM.mms_root, 'core', 'sourcehook') os.path.join(SM.mms_root, 'core', 'sourcehook')
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
if builder.target_platform == 'linux' or builder.target_platform == 'mac': if builder.target_platform == 'linux' or builder.target_platform == 'mac':
binary.compiler.postlink += [ binary.compiler.postlink += [
+4
View File
@@ -5,6 +5,10 @@ binary = SM.ExtLibrary(builder, 'regex.ext')
binary.compiler.cxxincludes += [ binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'), os.path.join(SM.mms_root, 'core', 'sourcehook'),
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
if builder.target_platform == 'linux': if builder.target_platform == 'linux':
path = os.path.join(builder.sourcePath, 'extensions', 'regex', 'lib_linux', 'libpcre.a') path = os.path.join(builder.sourcePath, 'extensions', 'regex', 'lib_linux', 'libpcre.a')
+4
View File
@@ -5,6 +5,10 @@ binary = SM.ExtLibrary(builder, 'dbi.sqlite.ext')
binary.compiler.cxxincludes += [ binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'), os.path.join(SM.mms_root, 'core', 'sourcehook'),
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.compiler.defines += [ binary.compiler.defines += [
'SQLITE_OMIT_LOAD_EXTENSION', 'SQLITE_OMIT_LOAD_EXTENSION',
+4
View File
@@ -5,6 +5,10 @@ binary = SM.ExtLibrary(builder, 'topmenus.ext')
binary.compiler.cxxincludes += [ binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'), os.path.join(SM.mms_root, 'core', 'sourcehook'),
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.sources += [ binary.sources += [
'extension.cpp', 'extension.cpp',
+4
View File
@@ -5,6 +5,10 @@ binary = SM.ExtLibrary(builder, 'updater.ext')
binary.compiler.cxxincludes += [ binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'), os.path.join(SM.mms_root, 'core', 'sourcehook'),
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.sources += [ binary.sources += [
'extension.cpp', 'extension.cpp',
+3 -1
View File
@@ -24,9 +24,11 @@
"plugin_f99d77668e7aa0adb6a960322ab05568" "" /* UCP Server (Endi) - Version 7.8 */ "plugin_f99d77668e7aa0adb6a960322ab05568" "" /* UCP Server (Endi) - Version 7.8 */
"plugin_7b3ce69f15e61cc896228cb8424be589" "" /* UCP Server (Endi) - Version 7.8.2 */ "plugin_7b3ce69f15e61cc896228cb8424be589" "" /* UCP Server (Endi) - Version 7.8.2 */
"plugin_24602c74f183cfcd157b3d50dee96c52" "" /* UCP Server (Endi) - Version 7.8.3 */ "plugin_24602c74f183cfcd157b3d50dee96c52" "" /* UCP Server (Endi) - Version 7.8.3 */
"plugin_43bd225c5fdcd3af35729ca9d481b20d" "" /* UCP Server (Endi) - Version 8.3 */
"plugin_78140f1a0f26cd3297767d0598eac4b1" "" /* [Any] PReplay (DarthNinja) - Version 1.0.0 */ "plugin_78140f1a0f26cd3297767d0598eac4b1" "" /* [Any] PReplay (DarthNinja) - Version 1.0.0 */
"plugin_55923ba6bfe41569a3e4fbd7ca4606e5" "" /* VIP Plugin (World-Source.Ru) - Version 2.0 */ "plugin_55923ba6bfe41569a3e4fbd7ca4606e5" "" /* VIP Plugin (World-Source.Ru) - Version 2.0 */
"plugin_4bf983e1d5b61ba0b1ab9a7e53bfda27" "" /* WarMod CS:GO (Twelve-60) */ "plugin_4bf983e1d5b61ba0b1ab9a7e53bfda27" "" /* WarMod CS:GO (Twelve-60) */
"plugin_08574c4295afdaa5f613b8ceef96ecc3" "" /* AlliedBans (TommY) - Version 3.140902A */
} }
} }
} }
+27 -27
View File
@@ -12,9 +12,9 @@
} }
"FireBullets" "FireBullets"
{ {
"windows" "112" "windows" "113"
"linux" "113" "linux" "114"
"mac" "113" "mac" "114"
} }
"OnTakeDamage" "OnTakeDamage"
{ {
@@ -24,15 +24,15 @@
} }
"PreThink" "PreThink"
{ {
"windows" "331" "windows" "333"
"linux" "332" "linux" "334"
"mac" "332" "mac" "334"
} }
"PostThink" "PostThink"
{ {
"windows" "332" "windows" "334"
"linux" "333" "linux" "335"
"mac" "333" "mac" "335"
} }
"SetTransmit" "SetTransmit"
{ {
@@ -78,39 +78,39 @@
} }
"VPhysicsUpdate" "VPhysicsUpdate"
{ {
"windows" "157" "windows" "158"
"linux" "158" "linux" "159"
"mac" "158" "mac" "159"
} }
"Weapon_CanSwitchTo" "Weapon_CanSwitchTo"
{ {
"windows" "265" "windows" "267"
"linux" "266" "linux" "268"
"mac" "266" "mac" "268"
} }
"Weapon_CanUse" "Weapon_CanUse"
{ {
"windows" "259" "windows" "261"
"linux" "260" "linux" "262"
"mac" "260" "mac" "262"
} }
"Weapon_Drop" "Weapon_Drop"
{
"windows" "264"
"linux" "265"
"mac" "265"
}
"Weapon_Equip"
{ {
"windows" "262" "windows" "262"
"linux" "263" "linux" "263"
"mac" "263" "mac" "263"
} }
"Weapon_Equip"
{
"windows" "260"
"linux" "261"
"mac" "261"
}
"Weapon_Switch" "Weapon_Switch"
{ {
"windows" "263" "windows" "265"
"linux" "264" "linux" "266"
"mac" "264" "mac" "266"
} }
} }
} }
+3 -3
View File
@@ -30,9 +30,9 @@
} }
"PreThink" "PreThink"
{ {
"windows" "344" "windows" "345"
"linux" "345" "linux" "346"
"mac" "345" "mac" "346"
} }
"PostThink" "PostThink"
{ {
@@ -48,21 +48,6 @@
} }
} }
/* No longer necessary. Remove later. */
"#default"
{
"Signatures"
{
"EntityFactory"
{
"library" "server"
"windows" "\xB8\x01\x00\x00\x00\x84\x2A\x2A\x2A\x2A\x2A\x75\x1D\x09\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\xC4\x04\xB8\x2A\x2A\x2A\x2A\xC3"
"linux" "@_Z23EntityFactoryDictionaryv"
"mac" "@_Z23EntityFactoryDictionaryv"
}
}
}
/* SetUserInfo data */ /* SetUserInfo data */
"#default" "#default"
{ {
+36 -36
View File
@@ -131,57 +131,57 @@
{ {
"GiveNamedItem" "GiveNamedItem"
{ {
"windows" "400" "windows" "402"
"linux" "401" "linux" "403"
"mac" "401" "mac" "403"
} }
"RemovePlayerItem" "RemovePlayerItem"
{
"windows" "271"
"linux" "272"
"mac" "272"
}
"Weapon_GetSlot"
{ {
"windows" "269" "windows" "269"
"linux" "270" "linux" "270"
"mac" "270" "mac" "270"
} }
"Weapon_GetSlot"
{
"windows" "267"
"linux" "268"
"mac" "268"
}
"Ignite" "Ignite"
{ {
"windows" "208" "windows" "210"
"linux" "209" "linux" "211"
"mac" "209" "mac" "211"
} }
"Extinguish" "Extinguish"
{ {
"windows" "212" "windows" "214"
"linux" "213" "linux" "215"
"mac" "213" "mac" "215"
} }
"Teleport" "Teleport"
{ {
"windows" "108" "windows" "109"
"linux" "109" "linux" "110"
"mac" "109" "mac" "110"
} }
"CommitSuicide" "CommitSuicide"
{ {
"windows" "442" "windows" "444"
"linux" "442" "linux" "444"
"mac" "442" "mac" "444"
} }
"GetVelocity" "GetVelocity"
{ {
"windows" "140" "windows" "141"
"linux" "141" "linux" "142"
"mac" "141" "mac" "142"
} }
"EyeAngles" "EyeAngles"
{ {
"windows" "131" "windows" "132"
"linux" "132" "linux" "133"
"mac" "132" "mac" "133"
} }
"AcceptInput" "AcceptInput"
{ {
@@ -197,9 +197,9 @@
} }
"WeaponEquip" "WeaponEquip"
{ {
"windows" "260" "windows" "262"
"linux" "261" "linux" "263"
"mac" "261" "mac" "263"
} }
"Activate" "Activate"
{ {
@@ -209,15 +209,15 @@
} }
"PlayerRunCmd" "PlayerRunCmd"
{ {
"windows" "418" "windows" "420"
"linux" "419" "linux" "421"
"mac" "419" "mac" "421"
} }
"GiveAmmo" "GiveAmmo"
{ {
"windows" "251" "windows" "253"
"linux" "252" "linux" "254"
"mac" "252" "mac" "254"
} }
} }
} }
+9 -9
View File
@@ -131,9 +131,9 @@
{ {
"GiveNamedItem" "GiveNamedItem"
{ {
"windows" "412" "windows" "413"
"linux" "413" "linux" "414"
"mac" "413" "mac" "414"
} }
"RemovePlayerItem" "RemovePlayerItem"
{ {
@@ -167,9 +167,9 @@
} }
"CommitSuicide" "CommitSuicide"
{ {
"windows" "451" "windows" "452"
"linux" "451" "linux" "452"
"mac" "451" "mac" "452"
} }
"GetVelocity" "GetVelocity"
{ {
@@ -209,9 +209,9 @@
} }
"PlayerRunCmd" "PlayerRunCmd"
{ {
"windows" "430" "windows" "431"
"linux" "431" "linux" "432"
"mac" "431" "mac" "432"
} }
"GiveAmmo" "GiveAmmo"
{ {
+4 -4
View File
@@ -33,27 +33,27 @@
"CTTeamScoreOffset" "CTTeamScoreOffset"
{ {
"windows" "98" "windows" "98"
"linux" "124" "linux" "109"
"mac" "150" "mac" "150"
} }
//Offset into CheckRestartRound //Offset into CheckRestartRound
"TTeamScoreOffset" "TTeamScoreOffset"
{ {
"windows" "122" "windows" "122"
"linux" "159" "linux" "142"
"mac" "185" "mac" "185"
} }
"ClanTagOffset" "ClanTagOffset"
{ {
"windows" "12" "windows" "12"
"linux" "41" "linux" "29"
"mac" "22" "mac" "22"
} }
//Offset into HandleCommand_Buy_Internal //Offset into HandleCommand_Buy_Internal
"CCSPlayerInventoryOffset" "CCSPlayerInventoryOffset"
{ {
"windows" "285" "windows" "285"
"linux" "87" "linux" "32"
"mac" "109" "mac" "109"
} }
"GetItemInLoadout" "GetItemInLoadout"
+4
View File
@@ -13,6 +13,10 @@ binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core'), os.path.join(SM.mms_root, 'core'),
os.path.join(SM.mms_root, 'sourcehook') os.path.join(SM.mms_root, 'sourcehook')
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
binary.compiler.linkflags += extra_ldflags binary.compiler.linkflags += extra_ldflags
binary.sources = [ binary.sources = [
'loader.cpp' 'loader.cpp'
+36 -2
View File
@@ -45,6 +45,25 @@ enum NetFlow
NetFlow_Both, /**< Both values added together */ NetFlow_Both, /**< Both values added together */
}; };
/**
* Auth string types.
*
* Note that for the Steam2 and Steam3 types, the following ids are
* also valid values:
* "STEAM_ID_PENDING" - Authentication is pending.
* "STEAM_ID_LAN" - Authentication is disabled because of being on a LAN server.
* "BOT" - The client is a bot.
*/
enum AuthIdType
{
AuthId_Engine = 0, /**< The game-specific auth string as returned from the engine */
// The following are only available on games that support Steam authentication.
AuthId_Steam2, /**< Steam2 rendered format, ex "STEAM_1:1:4153990" */
AuthId_Steam3, /**< Steam3 rendered format, ex "[U:1:8307981]" */
AuthId_SteamID64, /**< A SteamID64 (uint64) as a String, ex "76561197968573709" */
};
/** /**
* MAXPLAYERS is not the same as MaxClients. * MAXPLAYERS is not the same as MaxClients.
* MAXPLAYERS is a hardcoded value as an upper limit. MaxClients changes based on the server. * MAXPLAYERS is a hardcoded value as an upper limit. MaxClients changes based on the server.
@@ -261,14 +280,29 @@ native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
* @param client Player index. * @param client Player index.
* @param auth Buffer to store the client's auth string. * @param auth Buffer to store the client's auth string.
* @param maxlen Maximum length of string buffer (includes NULL terminator). * @param maxlen Maximum length of string buffer (includes NULL terminator).
* @param validate Check backend validation status. * @param validate Check backend validation status.
* DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES,
* You WILL KNOW if you need to use this, MOST WILL NOT. * You WILL KNOW if you need to use this, MOST WILL NOT.
* @return True on success, false otherwise. * @return True on success, false otherwise.
* @error If the client is not connected or the index is invalid. * @error If the client is not connected or the index is invalid.
*/ */
native bool:GetClientAuthString(client, String:auth[], maxlen, bool:validate=true); native bool:GetClientAuthString(client, String:auth[], maxlen, bool:validate=true);
/**
* Retrieves a client's authentication string (SteamID).
*
* @param client Player index.
* @param authType Auth id type and format to use.
* @param auth Buffer to store the client's auth id.
* @param maxlen Maximum length of string buffer (includes NULL terminator).
* @param validate Check backend validation status.
* DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES,
* You WILL KNOW if you need to use this, MOST WILL NOT.
* @return True on success, false otherwise.
* @error If the client is not connected or the index is invalid.
*/
native bool:GetClientAuthId(client, AuthIdType:authType, String:auth[], maxlen, bool:validate=true);
/** /**
* Returns the client's Steam account ID. * Returns the client's Steam account ID.
* *
+4
View File
@@ -153,6 +153,10 @@ enum TFCond
TFCond_HalloweenTiny, TFCond_HalloweenTiny,
TFCond_HalloweenInHell, TFCond_HalloweenInHell,
TFCond_HalloweenGhostMode, TFCond_HalloweenGhostMode,
TFCond_DodgeChance = 79,
TFCond_Parachute,
TFCond_BlastJumping,
}; };
const Float:TFCondDuration_Infinite = -1.0; const Float:TFCondDuration_Infinite = -1.0;
+1
View File
@@ -249,6 +249,7 @@ enum {
TF_WEAPON_SPELLBOOK, TF_WEAPON_SPELLBOOK,
TF_WEAPON_SPELLBOOK_PROJECTILE, TF_WEAPON_SPELLBOOK_PROJECTILE,
TF_WEAPON_SNIPERRIFLE_CLASSIC, TF_WEAPON_SNIPERRIFLE_CLASSIC,
TF_WEAPON_PARACHUTE,
}; };
// TF2 Weapon Loadout Slots // TF2 Weapon Loadout Slots
+1 -1
View File
@@ -1 +1 @@
1.6.1 1.6.2
+1
View File
@@ -10,6 +10,7 @@ i
D D
S S
! !
she calls it a mayonegg
joys of buildbot, part 5: a watermelon's diatribes need not be cause for spilling the queen's tea joys of buildbot, part 5: a watermelon's diatribes need not be cause for spilling the queen's tea
crab crab
joys of buildbot, part 6: a merry metal matchturtle mocks mostly and mainly in Madrid. joys of buildbot, part 6: a merry metal matchturtle mocks mostly and mainly in Madrid.
+5
View File
@@ -14,6 +14,11 @@ binary.compiler.includes += [
os.path.join(builder.sourcePath, 'knight', 'shared'), os.path.join(builder.sourcePath, 'knight', 'shared'),
] ]
if binary.compiler.vendor == 'gcc' or binary.compiler.vendor == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.vendor == 'msvc':
binary.compiler.cxxflags += ['/GR-']
if builder.target_platform == 'linux': if builder.target_platform == 'linux':
binary.compiler.postlink += ['-lpthread', '-lrt'] binary.compiler.postlink += ['-lpthread', '-lrt']