Compare commits

..

No commits in common. "master" and "0.1.0.6" have entirely different histories.

8 changed files with 2372 additions and 2554 deletions

View File

@ -173,11 +173,13 @@ class ExtensionConfig(object):
'-Wno-unused', '-Wno-unused',
'-Wno-switch', '-Wno-switch',
'-Wno-array-bounds', '-Wno-array-bounds',
'-Wno-register',
'-msse', '-msse',
'-m32', '-m32',
'-fvisibility=hidden', '-fvisibility=hidden',
] ]
cxx.cxxflags += [ cxx.cxxflags += [
'-std=gnu++2a',
'-fno-exceptions', '-fno-exceptions',
'-fno-threadsafe-statics', '-fno-threadsafe-statics',
'-Wno-non-virtual-dtor', '-Wno-non-virtual-dtor',
@ -186,11 +188,6 @@ class ExtensionConfig(object):
] ]
cxx.linkflags += ['-m32'] cxx.linkflags += ['-m32']
if cxx.version >= 'clang-5':
cxx.cxxflags += ['-Wno-register','-std=c++17']
else:
cxx.cxxflags += ['-std=c++14']
have_gcc = cxx.vendor == 'gcc' have_gcc = cxx.vendor == 'gcc'
have_clang = cxx.vendor == 'clang' have_clang = cxx.vendor == 'clang'
if cxx.version >= 'clang-3.6': if cxx.version >= 'clang-3.6':

View File

@ -30,7 +30,7 @@ def CopyFiles(src, dest, files):
# Include files # Include files
CopyFiles('sourcemod/scripting/include', 'addons/sourcemod/scripting/include', CopyFiles('sourcemod/scripting/include', 'addons/sourcemod/scripting/include',
[ 'proxysend.inc', 'proxysend_tf2.inc' ] [ 'proxysend.inc', ]
) )
# GameData files # GameData files

File diff suppressed because it is too large Load Diff

View File

@ -48,8 +48,7 @@
class Sample final : public SDKExtension, public IPluginsListener, public ISMEntityListener, public IConCommandBaseAccessor, public proxysend class Sample final : public SDKExtension, public IPluginsListener, public ISMEntityListener, public IConCommandBaseAccessor, public proxysend
{ {
public: public:
using pack_ent_listeners_t = std::vector<const parallel_pack_listener *>; std::vector<const parallel_pack_listener *> pack_ent_listeners;
pack_ent_listeners_t pack_ent_listeners{};
bool add_listener(const parallel_pack_listener *ptr) noexcept override final; bool add_listener(const parallel_pack_listener *ptr) noexcept override final;
bool remove_listener(const parallel_pack_listener *ptr) noexcept override final; bool remove_listener(const parallel_pack_listener *ptr) noexcept override final;

View File

@ -40,7 +40,7 @@
/* Basic information exposed publicly */ /* Basic information exposed publicly */
#define SMEXT_CONF_NAME "proxysend" #define SMEXT_CONF_NAME "proxysend"
#define SMEXT_CONF_DESCRIPTION "proxysend" #define SMEXT_CONF_DESCRIPTION "proxysend"
#define SMEXT_CONF_VERSION "0.1.0.8" #define SMEXT_CONF_VERSION "0.1.0.6"
#define SMEXT_CONF_AUTHOR "Arthurdead" #define SMEXT_CONF_AUTHOR "Arthurdead"
#define SMEXT_CONF_URL "" #define SMEXT_CONF_URL ""
#define SMEXT_CONF_LOGTAG "PROXYSEND" #define SMEXT_CONF_LOGTAG "PROXYSEND"

View File

@ -1,80 +1,65 @@
"Games" "Games"
{ {
"#default" "tf"
{ {
"Offsets" "Offsets"
{ {
"CBaseClient::UpdateSendState" "CBaseClient::UpdateSendState"
{ {
"linux" "46" "linux" "46"
} }
"CBaseClient::SendSnapshot" "CBaseClient::SendSnapshot"
{ {
"linux" "52" "linux" "52"
} }
} }
"Signatures" "Signatures"
{ {
"SendTable_CalcDelta" "SendTable_CalcDelta"
{ {
"library" "engine" "library" "engine"
"linux" "@_Z19SendTable_CalcDeltaPK9SendTablePKviS3_iPiii" "linux" "@_Z19SendTable_CalcDeltaPK9SendTablePKviS3_iPiii"
} }
"SendTable_Encode" "SendTable_Encode"
{ {
"library" "engine" "library" "engine"
"linux" "@_Z16SendTable_EncodePK9SendTablePKvP8bf_writeiP10CUtlMemoryI20CSendProxyRecipientsiEb" "linux" "@_Z16SendTable_EncodePK9SendTablePKvP8bf_writeiP10CUtlMemoryI20CSendProxyRecipientsiEb"
} }
"SV_ComputeClientPacks" "SV_ComputeClientPacks"
{ {
"library" "engine" "library" "engine"
"linux" "@_Z21SV_ComputeClientPacksiPP11CGameClientP14CFrameSnapshot" "linux" "@_Z21SV_ComputeClientPacksiPP11CGameClientP14CFrameSnapshot"
} }
"CGameServer::SendClientMessages" "CGameServer::SendClientMessages"
{ {
"library" "engine" "library" "engine"
"linux" "@_ZN11CGameServer18SendClientMessagesEb" "linux" "@_ZN11CGameServer18SendClientMessagesEb"
} }
"CFrameSnapshotManager::GetPackedEntity" "CFrameSnapshotManager::GetPackedEntity"
{ {
"library" "engine" "library" "engine"
"linux" "@_ZN21CFrameSnapshotManager15GetPackedEntityEP14CFrameSnapshoti" "linux" "@_ZN21CFrameSnapshotManager15GetPackedEntityEP14CFrameSnapshoti"
} }
"CGameClient::GetSendFrame" "CGameClient::GetSendFrame"
{ {
"library" "engine" "library" "engine"
"linux" "@_ZN11CGameClient12GetSendFrameEv" "linux" "@_ZN11CGameClient12GetSendFrameEv"
} }
"SV_PackEntity" "SV_PackEntity"
{ {
"library" "engine" "library" "engine"
"linux" "@_ZL13SV_PackEntityiP7edict_tP11ServerClassP14CFrameSnapshot" "linux" "@_ZL13SV_PackEntityiP7edict_tP11ServerClassP14CFrameSnapshot"
} }
"InvalidateSharedEdictChangeInfos" "InvalidateSharedEdictChangeInfos"
{ {
"library" "engine" "library" "engine"
"linux" "@_Z32InvalidateSharedEdictChangeInfosv" "linux" "@_Z32InvalidateSharedEdictChangeInfosv"
} }
"PackWork_t::Process" "PackWork_t::Process"
{ {
"library" "engine" "library" "engine"
"linux" "@_ZN10PackWork_t7ProcessERS_" "linux" "@_ZN10PackWork_t7ProcessERS_"
} }
"SendProxy_StringT_To_String" }
{ }
"library" "server" }
"linux" "@_Z27SendProxy_StringT_To_StringPK8SendPropPKvS3_P8DVariantii"
}
"SendProxy_Color32ToInt"
{
"library" "server"
"linux" "@_Z22SendProxy_Color32ToIntPK8SendPropPKvS3_P8DVariantii"
}
"SendProxy_EHandleToInt"
{
"library" "server"
"linux" "@_Z22SendProxy_EHandleToIntPK8SendPropPKvS3_P8DVariantii"
}
}
}
}

View File

@ -3,6 +3,7 @@
#endif #endif
#define __PROXYSEND_INC #define __PROXYSEND_INC
#include <tf2>
#include <sdktools> #include <sdktools>
typeset proxysend_callbacks typeset proxysend_callbacks
@ -11,6 +12,7 @@ typeset proxysend_callbacks
function Action (int entity, const char[] prop, RoundState &value, int element, int client); function Action (int entity, const char[] prop, RoundState &value, int element, int client);
function Action (int entity, const char[] prop, RenderMode &value, int element, int client); function Action (int entity, const char[] prop, RenderMode &value, int element, int client);
function Action (int entity, const char[] prop, RenderFx &value, int element, int client); function Action (int entity, const char[] prop, RenderFx &value, int element, int client);
function Action (int entity, const char[] prop, TFClassType &value, int element, int client);
function Action (int entity, const char[] prop, bool &value, int element, int client); function Action (int entity, const char[] prop, bool &value, int element, int client);
@ -26,9 +28,58 @@ typeset proxysend_callbacks
native void proxysend_hook(int entity, const char[] prop, proxysend_callbacks callback, bool per_client); native void proxysend_hook(int entity, const char[] prop, proxysend_callbacks callback, bool per_client);
native void proxysend_unhook(int entity, const char[] prop, proxysend_callbacks callback); native void proxysend_unhook(int entity, const char[] prop, proxysend_callbacks callback);
#if defined _tf2_included || defined _tf2_stocks_included stock int get_bit_for_cond(TFCond cond)
#include <proxysend_tf2> {
#endif int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: return (1 << icond);
case 1: return (1 << (icond - 32));
case 2: return (1 << (icond - 64));
case 3: return (1 << (icond - 96));
case 4: return (1 << (icond - 128));
default: ThrowError("Invalid TFCond value %d", icond);
}
return 0;
}
stock void get_prop_name_for_cond(TFCond cond, char[] name, int len)
{
int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: strcopy(name, len, "m_nPlayerCond");
case 1: strcopy(name, len, "m_nPlayerCondEx");
case 2: strcopy(name, len, "m_nPlayerCondEx2");
case 3: strcopy(name, len, "m_nPlayerCondEx3");
case 4: strcopy(name, len, "m_nPlayerCondEx4");
default: ThrowError("Invalid TFCond value %d", icond);
}
}
stock void proxysend_hook_cond(int entity, TFCond cond, proxysend_callbacks callback, bool per_client)
{
int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: proxysend_hook(entity, "m_nPlayerCond", callback, per_client);
case 1: proxysend_hook(entity, "m_nPlayerCondEx", callback, per_client);
case 2: proxysend_hook(entity, "m_nPlayerCondEx2", callback, per_client);
case 3: proxysend_hook(entity, "m_nPlayerCondEx3", callback, per_client);
case 4: proxysend_hook(entity, "m_nPlayerCondEx4", callback, per_client);
default: ThrowError("Invalid TFCond value %d", icond);
}
}
stock void proxysend_unhook_cond(int entity, TFCond cond, proxysend_callbacks callback)
{
int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: proxysend_unhook(entity, "m_nPlayerCond", callback);
case 1: proxysend_unhook(entity, "m_nPlayerCondEx", callback);
case 2: proxysend_unhook(entity, "m_nPlayerCondEx2", callback);
case 3: proxysend_unhook(entity, "m_nPlayerCondEx3", callback);
case 4: proxysend_unhook(entity, "m_nPlayerCondEx4", callback);
default: ThrowError("Invalid TFCond value %d", icond);
}
}
#if !defined REQUIRE_EXTENSIONS #if !defined REQUIRE_EXTENSIONS
public __ext_proxysend_SetNTVOptional() public __ext_proxysend_SetNTVOptional()
@ -52,4 +103,4 @@ public Extension __ext_proxysend =
#else #else
required = 0, required = 0,
#endif #endif
}; };

View File

@ -1,63 +0,0 @@
#if defined __PROXYSEND_TF2_INC
#endinput
#endif
#define __PROXYSEND_TF2_INC
#include <tf2>
#if !defined __PROXYSEND_INC
#include <proxysend>
#endif
stock int get_bit_for_cond(TFCond cond)
{
int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: return (1 << icond);
case 1: return (1 << (icond - 32));
case 2: return (1 << (icond - 64));
case 3: return (1 << (icond - 96));
case 4: return (1 << (icond - 128));
default: ThrowError("Invalid TFCond value %d", icond);
}
return 0;
}
stock void get_prop_name_for_cond(TFCond cond, char[] name, int len)
{
int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: strcopy(name, len, "m_nPlayerCond");
case 1: strcopy(name, len, "m_nPlayerCondEx");
case 2: strcopy(name, len, "m_nPlayerCondEx2");
case 3: strcopy(name, len, "m_nPlayerCondEx3");
case 4: strcopy(name, len, "m_nPlayerCondEx4");
default: ThrowError("Invalid TFCond value %d", icond);
}
}
stock void proxysend_hook_cond(int entity, TFCond cond, proxysend_callbacks callback, bool per_client)
{
int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: proxysend_hook(entity, "m_nPlayerCond", callback, per_client);
case 1: proxysend_hook(entity, "m_nPlayerCondEx", callback, per_client);
case 2: proxysend_hook(entity, "m_nPlayerCondEx2", callback, per_client);
case 3: proxysend_hook(entity, "m_nPlayerCondEx3", callback, per_client);
case 4: proxysend_hook(entity, "m_nPlayerCondEx4", callback, per_client);
default: ThrowError("Invalid TFCond value %d", icond);
}
}
stock void proxysend_unhook_cond(int entity, TFCond cond, proxysend_callbacks callback)
{
int icond = view_as<int>(cond);
switch(icond / 32) {
case 0: proxysend_unhook(entity, "m_nPlayerCond", callback);
case 1: proxysend_unhook(entity, "m_nPlayerCondEx", callback);
case 2: proxysend_unhook(entity, "m_nPlayerCondEx2", callback);
case 3: proxysend_unhook(entity, "m_nPlayerCondEx3", callback);
case 4: proxysend_unhook(entity, "m_nPlayerCondEx4", callback);
default: ThrowError("Invalid TFCond value %d", icond);
}
}