Compare commits

..
Author SHA1 Message Date
David Anderson ee7413bbdd Bumped version for release. 2011-04-15 13:41:58 -07:00
David Anderson 764d63a533 Updated changelog. 2011-04-15 13:40:44 -07:00
Nicholas Hastings bcbff0b2e9 Updated Garry's Mod gamedata. 2011-04-15 15:00:10 -04:00
Nicholas Hastings 35b74715d8 Added new param to CTFPlayerShared::Disguise call in TF2 ext (bug 4866, r=fyren). 2011-04-15 12:11:32 -04:00
Nicholas Hastings e0639de6a0 Shortened __ext name for ClientPrefs to avoid hitting symbol limit (bug 4839). 2011-04-15 02:07:17 -04:00
Nicholas Hastings f025fd8a05 Gamedata update for CS:S, TF2, DOD:S, and HL2DM. 2011-04-15 01:59:46 -04:00
Nicholas Hastings 625848b95d Triggering build. 2011-04-15 00:47:22 -04:00
Nicholas Hastings 2de9d5f9cb Merge. 2011-04-13 08:32:13 -04:00
Nicholas Hastings ab15436a7f SetEntProp now marks edict state as changed at offset (bug 4855, r=fyren). 2011-04-13 08:14:07 -04:00
Berni e507aa5025 Fix compiler hanging when #including a directory (bug 4822, r=dvander) 2011-04-13 04:04:44 -07:00
Nicholas Hastings 8b205b0d5d Removed gEntList failure notify on Windows. (bug 4832, r=fyren). 2011-04-11 22:30:03 -04:00
Nicholas Hastings e4e54510c8 Added gamedata for Dino D-Day. 2011-04-09 23:55:56 -04:00
Berni d706023c74 Added GetEntityClassname stock (bug 4798, r=dvander). 2011-04-09 00:29:46 -04:00
Nicholas Hastings 8df27acc1f Fixed some gamedata lookups requiring symbols on linux/mac (bug 4832, r=fyren). 2011-04-05 12:07:36 -04:00
Nicholas Hastings 4c5c2eae24 Added better cross-engine entity flag compatibility. (bug 4809, r=fyren). 2011-04-04 13:37:29 -04:00
Nicholas Hastings bc4eecae8f Mark clientprefs natives as optional when ext not required. (bug 4839, r=fyren). 2011-03-24 09:48:36 -04:00
Nicholas Hastings 218b9b1fab Changed some instances of LogMessage to LogAction. (bug 4649, r=fyren). 2011-03-20 19:50:56 -04:00
Nicholas Hastings 0750b93797 Merge. 2011-03-13 14:05:11 -04:00
Nicholas Hastings 41b0e7fc53 Added new TF2 condition defines (bug 4834, r=fyren). 2011-03-13 14:03:26 -04:00
David Anderson 801815b742 Fix symstore. 2011-03-12 22:38:38 -08:00
David Anderson 01a826268b Fix build. 2011-03-12 21:41:06 -08:00
David Anderson 55ec20b215 New symstore. 2011-03-12 20:30:06 -08:00
databomb dc550c25e5 Fix precedence of voice mute flag versus specific client overrides (bug 4826, r+a=fyren) 2011-03-08 12:38:43 -08:00
databomb ad842e4665 Fix mistaken unhooking of voice hooks (bug 4804, r+a=fyren) 2011-03-08 12:38:18 -08:00
GoD-Tony f7398119f4 Added new language natives (bug 4613, r+a13=dvander). 2011-03-08 08:35:35 -05:00
Asher Baker b21337c56d Added missing files to the spcomp project file (bug 4824, r=dvander). 2011-03-07 15:06:22 +07:00
Nicholas Hastings c1d040e153 Fixed SetTeamScore not updating score on client (bug 2736, r=fyren). 2011-02-28 19:40:21 -05:00
Nicholas Hastings 4c3fb52c69 Merge 2011-03-01 21:30:12 -05:00
Nicholas Hastings 31c29fb33e Backed out changeset: 7ad1ac7ca287 2011-03-01 21:30:08 -05:00
Nicholas Hastings 87af9af0f6 Fixed graphical glitches with funcommands effects in L4D1 (bug 3486, r=fyren). 2011-02-28 19:45:36 -05:00
Nicholas Hastings ebb26e6144 Added identifier for new TF2 flag event, 'returned' (bug 4808, r=fyren). 2011-02-28 19:44:41 -05:00
Nicholas Hastings 50c15f4f78 Updated TF2 condition idenifiers (bug 4801, r=fyren).
Added TFCond_InHealRadius (amputator glow) and fixed TFCond_Healing.
2011-02-28 19:43:08 -05:00
Nicholas Hastings e02bdca793 Fixed SetTeamScore not updating score on client (bug 2736, r=fyren). 2011-02-28 19:40:21 -05:00
Nicholas Hastings 8bcbe128e7 Updated Empires Mod gamedata for current version 2.31a. 2011-02-28 19:38:22 -05:00
Nicholas Hastings 68991bc733 Updated ZPS gamedata. 2011-02-07 15:50:37 -05:00
Nicholas Hastings d77d1de462 Asher Baker - Added defines for TF2 weapon slots (r=dvander). 2011-02-01 14:51:42 -05:00
Nicholas Hastings e1081c0a50 Updated CSPromod gamedata. 2011-02-01 14:47:50 -05:00
Nicholas Hastings 2b3f888712 Updated customkill and deathflag defines in tf2_stocks (bug 4799, r=dvander). 2011-01-16 20:26:42 -05:00
Nicholas Hastings b8e530ab7e Raised MAXPLAYERS from 64 to 65 (bug 4490, r=dvander). 2011-01-16 20:07:20 -05:00
Erik Minekus 274539cf49 Fixed bug in nominations that could cause "Unknown command" error (bug 4797, r=psychonic). 2011-01-16 20:01:39 -05:00
Nicholas Hastings 6e92d0df4f Removed tv_enable hook to fix rare max client count issue (bug 4791, r=fyren). 2011-01-12 19:01:32 -05:00
Asher Baker 1bb5f0e52b Added missing unhooking of ClientConnect in PlayerManager (bug 4749, r=fyren). 2010-12-31 20:02:51 -05:00
Zach Kanzler 1af3446593 Fixed namespace-related compile issue in INativeInvoker.h (bug 4750, r=fyren). 2010-12-31 20:00:23 -05:00
Nicholas Hastings b70b8cf0cb Updated Garry's Mod gamedata (bug 4762, r=fyren). 2010-12-19 14:12:10 -05:00
Nicholas Hastings 8dca4bf093 Updated TF2 includes with new weapon and condition identifiers (bug 4761, r=fyren). 2010-12-18 17:10:32 -05:00
Nicholas Hastings a7d170bf13 Updated HL2DM gamedata (bug 4756, r=fyren). 2010-12-18 00:14:34 -05:00
Nicholas Hastings f5865ee46f Updated DOD:S gamedata (bug 4755, r=fyren). 2010-12-18 00:06:56 -05:00
Nicholas Hastings adac0f17c4 Updated CS:S gamedata (bug 4754, r=fyren). 2010-12-18 00:05:02 -05:00
Nicholas Hastings b8b9e4db90 Updated TF2 gamedata (bug 4753, r=DS). 2010-12-17 23:13:53 -05:00
Nicholas Hastings 5fdb4d05fa Updated Goldeneye:Source gamedata (bug 4751, r=fyren). 2010-12-17 23:12:19 -05:00
Nicholas Hastings 93768cfd4d Updated Garry's Mod gamedata (bug 4747, r=fyren). 2010-12-15 21:33:14 -05:00
Nicholas Hastings 8cdd3faa89 Triggering build to fix bug 4729 on L4D1 now. 2010-12-13 15:38:50 -05:00
Nicholas Hastings 98dee0097a Merge. 2010-12-04 15:30:24 -05:00
Erik Minekus 090cc9f818 Fixed sm_rtv printing "unknown command" (bug 4730, r=psychonic). 2010-12-04 15:29:29 -05:00
Scott Ehlert 9abbe96a7f Triggering build to fix bug 4729. 2010-12-03 22:58:04 -08:00
Nicholas Hastings 3aeab98517 Updated TF2_GetPlayerConditionFlags to match Valve's current logic (bug 4726, r=fyren). 2010-12-03 17:14:00 -05:00
Jason Booth 11daaac1b4 Fixed profiler flush not clearing, added 'report' and 'clear' (bug 4674, r=dvander). 2010-11-30 13:08:30 -05:00
Nicholas Hastings 15c5ed1dd3 Fixed voting crash when client console, chat, and SourceTV are enabled (bug 4676, r=fyren). 2010-11-30 13:04:13 -05:00
Nicholas Hastings 1bb9adc767 Fixed CDetour crash in TF2 extension when last plugin using forward is unloaded (bug 4713, r=fyren). 2010-11-29 07:53:44 -05:00
Nicholas Hastings dd83c23cda Fixed TF2 GetHoliday Windows signature (bug 4714, r=fyren). 2010-11-24 20:57:19 -05:00
Nicholas Hastings e8a6040926 TF2 GetHoliday detour now detours UTIL_GetHoliday (bug 4700, r=fyren). 2010-11-09 21:12:38 -05:00
A.W. Stanley 5ff8ec62e0 Added TF2_IsPlayerInDuel native to TF2 extension (bug 4695, r=psychonic). 2010-11-07 19:09:34 -05:00
David Anderson 1f06a6951d Bumped version to 1.3.7-dev. 2010-10-30 17:43:40 -07:00
David Anderson d65f993c53 Added tag sourcemod-1.3.6 for changeset 8036343199ca 2010-10-30 17:43:18 -07:00
David Anderson c5e37e15e6 Strip -dev tags for release. 2010-10-30 16:09:37 -07:00
Scott Ehlert c4473acc4e Fixed sample ext makefiles for L4D Linux builds (bug 4681, r+a13=fyren). 2010-10-28 12:41:13 -07:00
Nicholas Hastings 8e845b0a33 Updated TF2 customkill defines (bug 4682, r=fyren). 2010-10-28 10:23:30 -04:00
Scott Ehlert 26c3193653 Fixed loading L4D on Linux (bug 4681, r+a13=dvander). 2010-10-27 22:07:40 -07:00
David Anderson ee19cf4045 Bumped version to 1.3.6-dev. 2010-10-17 14:51:25 -07:00
David Anderson fca7c4f4a3 Added tag sourcemod-1.3.5 for changeset 9de8baa40cc5 2010-10-17 14:49:42 -07:00
64 changed files with 2209 additions and 1501 deletions
+2
View File
@@ -8,3 +8,5 @@ a71318396392e3c6d0ff31e069a60fbde59e0cea sourcemod-1.3.0
a3e8f7a7fdf7f012dd02ad491a2e1ccdad151687 sourcemod-1.3.2
c5062ca8283033cf33f45da6f19e486ca10835ff sourcemod-1.3.3
4d6afc42522c8f416dc45be7af7b145507b00630 sourcemod-1.3.4
9de8baa40cc593d8ca5f976a3357772e804ae9e8 sourcemod-1.3.5
8036343199caaf2812b21bb24f1fa84bf5a9e2ef sourcemod-1.3.6
+2 -2
View File
@@ -205,7 +205,7 @@ class SM:
else:
staticLibs = os.path.join(sdkPath, 'lib', 'linux')
workFolder = os.path.join(AMBuild.outputFolder, job.workFolder)
if sdk == 'ep2v' or sdk == 'l4d2':
if sdk in ['ep2v', 'l4d', 'l4d2']:
for i in ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib.so', 'libtier0.so']:
link = os.path.join(workFolder, i)
target = os.path.join(staticLibs, i)
@@ -280,7 +280,7 @@ class SM:
if not noLink:
if AMBuild.target['platform'] == 'linux':
compiler['POSTLINKFLAGS'][0:0] = ['-lm']
if sdk == 'ep2v' or sdk == 'l4d2':
if sdk in ['ep2v', 'l4d', 'l4d2']:
compiler['POSTLINKFLAGS'][0:0] = ['libtier0.so']
compiler['POSTLINKFLAGS'][0:0] = ['libvstdlib.so']
else:
+53
View File
@@ -2,6 +2,59 @@ SourceMod Changelog
----------------------------
SourceMod 1.3.7 [2011-04-15]
URL: http://wiki.alliedmods.net/SourceMod_1.3.7_Release_Notes
User Changes:
- Updated support for latest OrangeBox engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
- Updated support for various games, including Zombie Panic, CS ProMod, Empires, and GoldenEye: Source.
- Added gamedata for Dino D-Day.
- Fix precedence of voice mute flag versus specific client overrides (bug 4826).
- Fix mistaken unhooking of voice hooks (bug 4804).
- Fixed graphical glitches with funcommands effects in L4D1 (bug 3486).
- Fixed bug in nominations that could cause "Unknown command" error (bug 4797).
- Removed tv_enable hook to fix rare max client count issue (bug 4791).
- Added missing unhooking of ClientConnect in PlayerManager (bug 4749).
- Fixed sm_rtv printing "unknown command" (bug 4730).
- Fixed voting crash when client console, chat, and SourceTV are enabled (bug 4676).
- Fixed CDetour crash in TF2 extension when last plugin using forward is unloaded (bug 4713).
Developer Changes:
- SetEntProp now marks edict state as changed (bug 4855).
- Added GetEntityClassname stock (bug 4798).
- Fix compiler hanging when #including a directory (bug 4822).
- Added GetEntityFlags and SetEntityFlags natives for better cross-engine compatibility. (bug 4809).
- Fixed ClientPrefs natives not being marked optional when REQUIRE_EXTENSIONS not defined (bug 4839).
- Changed some instances of LogMessage to LogAction (bug 4649).
- Added some new language natives (bug 4613).
- Fixed SetTeamScore not updating score on client (bug 2736).
- Raised MAXPLAYERS from 64 to 65 (bug 4490).
- Added and updated many TF2-specific defines in tf2.inc and tf2_stocks.inc.
- Fixed TF2_GetPlayerConditionFlags no longer necessarily returning all set flags (bug 4726).
- Fixed profiler flush not clearing, added 'report' and 'clear' (bug 4674).
- Fixed GetPlayerDecalFile crash on L4D and L4D2 (bug 4729).
- Fixed TF2_OnGetHoliday detour no longer firing under all circumstances (bug 4700).
- Added TF2_IsPlayerInDuel native to TF2 extension (bug 4695).
----------------------------
SourceMod 1.3.6 [2010-10-31]
URL: http://wiki.alliedmods.net/SourceMod_1.3.6_Release_Notes
User Changes:
- Updated support for latest Left 4 Dead 1 (bug 4681).
Developer Changes:
- Updated TF2 custom kill defines (bug 4682).
----------------------------
SourceMod 1.3.5 [2010-10-17]
URL: http://wiki.alliedmods.net/SourceMod_1.3.5_Release_Notes
+1 -1
View File
@@ -506,7 +506,7 @@ SMCResult CGameConfig::ReadSMC_LeavingSection(const SMCStates *states)
void *handle = dlopen(info.dli_fname, RTLD_NOW);
if (handle)
{
#if (SOURCE_ENGINE == SE_ORANGEBOXVALVE) || (SOURCE_ENGINE == SE_LEFT4DEAD2)
#if (SOURCE_ENGINE == SE_ORANGEBOXVALVE) || (SOURCE_ENGINE == SE_LEFT4DEAD) || (SOURCE_ENGINE == SE_LEFT4DEAD2)
final_addr = g_MemUtils.ResolveSymbol(handle, &s_TempSig.sig[1]);
#else
final_addr = dlsym(handle, &s_TempSig.sig[1]);
+46 -25
View File
@@ -132,40 +132,61 @@ void CHalfLife2::OnSourceModAllInitialized()
void CHalfLife2::OnSourceModAllInitialized_Post()
{
char *addr = NULL;
#ifdef PLATFORM_WINDOWS
int offset;
/* gEntList and/or g_pEntityList */
if (!g_pGameConf->GetMemSig("LevelShutdown", (void **)&addr))
/*
* gEntList and/or g_pEntityList
*
* First try to lookup pointer directly for platforms with symbols.
* If symbols aren't present (Windows or stripped Linux/Mac),
* attempt find via LevelShutdown + offset
*/
if (g_pGameConf->GetMemSig("gEntList", (void **)&addr))
{
g_Logger.LogError("Logical Entities not supported by this mod (LevelShutdown) - Reverting to networkable entities only");
return;
#if !defined PLATFORM_WINDOWS
if (!addr)
{
// Key exists so notify if lookup fails, but try other method.
g_Logger.LogError("Failed lookup of gEntList directly - Reverting to lookup via LevelShutdown");
}
else
{
#endif
g_EntList = reinterpret_cast<void *>(addr);
#if !defined PLATFORM_WINDOWS
}
#endif
}
if (!addr)
if (!g_EntList)
{
g_Logger.LogError("Failed lookup of LevelShutdown - Reverting to networkable entities only");
return;
if (!g_pGameConf->GetMemSig("LevelShutdown", (void **)&addr))
{
g_Logger.LogError("Logical Entities not supported by this mod (LevelShutdown) - Reverting to networkable entities only");
return;
}
if (!addr)
{
g_Logger.LogError("Failed lookup of LevelShutdown - Reverting to networkable entities only");
return;
}
int offset;
if (!g_pGameConf->GetOffset("gEntList", &offset))
{
g_Logger.LogError("Logical Entities not supported by this mod (gEntList) - Reverting to networkable entities only");
return;
}
g_EntList = *reinterpret_cast<void **>(addr + offset);
}
if (!g_pGameConf->GetOffset("gEntList", &offset))
{
g_Logger.LogError("Logical Entities not supported by this mod (gEntList) - Reverting to networkable entities only");
return;
}
g_EntList = *reinterpret_cast<void **>(addr + offset);
#elif defined PLATFORM_LINUX
/* gEntList and/or g_pEntityList */
if (!g_pGameConf->GetMemSig("gEntList", (void **)&addr))
{
g_Logger.LogError("Logical Entities not supported by this mod (gEntList) - Reverting to networkable entities only");
return;
}
if (!addr)
if (!g_EntList)
{
g_Logger.LogError("Failed lookup of gEntList - Reverting to networkable entities only");
return;
}
g_EntList = reinterpret_cast<void *>(addr);
#endif
if (!g_pGameConf->GetOffset("EntInfo", &entInfoOffset))
{
+1 -1
View File
@@ -538,7 +538,7 @@ void VoteMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int ite
CPlayer *pPlayer = g_Players.GetPlayerByIndex(i);
assert(pPlayer);
if (pPlayer->IsInGame())
if (pPlayer->IsInGame() && !pPlayer->IsFakeClient())
{
if (m_Revoting[client])
{
+13 -23
View File
@@ -55,7 +55,7 @@ bool g_OnMapStarted = false;
IForward *PreAdminCheck = NULL;
IForward *PostAdminCheck = NULL;
IForward *PostAdminFilter = NULL;
IForward *OnClientConnected = NULL;
const unsigned int *g_NumPlayersToAuth = NULL;
int lifestate_offset = -1;
List<ICommandTargetProcessor *> target_processors;
@@ -142,6 +142,7 @@ void PlayerManager::OnSourceModAllInitialized()
ParamType p2[] = {Param_Cell};
m_clconnect = g_Forwards.CreateForward("OnClientConnect", ET_LowEvent, 3, p1);
m_clconnect_post = g_Forwards.CreateForward("OnClientConnected", ET_Ignore, 1, p2);
m_clputinserver = g_Forwards.CreateForward("OnClientPutInServer", ET_Ignore, 1, p2);
m_cldisconnect = g_Forwards.CreateForward("OnClientDisconnect", ET_Ignore, 1, p2);
m_cldisconnect_post = g_Forwards.CreateForward("OnClientDisconnect_Post", ET_Ignore, 1, p2);
@@ -150,7 +151,6 @@ void PlayerManager::OnSourceModAllInitialized()
m_clauth = g_Forwards.CreateForward("OnClientAuthorized", ET_Ignore, 2, NULL, Param_Cell, Param_String);
m_onActivate = g_Forwards.CreateForward("OnServerLoad", ET_Ignore, 0, NULL);
m_onActivate2 = g_Forwards.CreateForward("OnMapStart", ET_Ignore, 0, NULL);
OnClientConnected = g_Forwards.CreateForward("OnClientConnected", ET_Ignore, 1, p2);
PreAdminCheck = g_Forwards.CreateForward("OnClientPreAdminCheck", ET_Event, 1, p1);
PostAdminCheck = g_Forwards.CreateForward("OnClientPostAdminCheck", ET_Ignore, 1, p1);
@@ -159,8 +159,6 @@ void PlayerManager::OnSourceModAllInitialized()
m_bIsListenServer = !engine->IsDedicatedServer();
m_ListenClient = 0;
g_ConVarManager.AddConVarChangeListener("tv_enable", this);
ConCommand *pCmd = FindCommand("maxplayers");
if (pCmd != NULL)
{
@@ -172,6 +170,7 @@ void PlayerManager::OnSourceModAllInitialized()
void PlayerManager::OnSourceModShutdown()
{
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientConnect, serverClients, this, &PlayerManager::OnClientConnect, false);
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientConnect, serverClients, this, &PlayerManager::OnClientConnect_Post, true);
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientPutInServer, serverClients, this, &PlayerManager::OnClientPutInServer, true);
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, serverClients, this, &PlayerManager::OnClientDisconnect, false);
SH_REMOVE_HOOK_MEMFUNC(IServerGameClients, ClientDisconnect, serverClients, this, &PlayerManager::OnClientDisconnect_Post, true);
@@ -181,6 +180,7 @@ void PlayerManager::OnSourceModShutdown()
/* Release forwards */
g_Forwards.ReleaseForward(m_clconnect);
g_Forwards.ReleaseForward(m_clconnect_post);
g_Forwards.ReleaseForward(m_clputinserver);
g_Forwards.ReleaseForward(m_cldisconnect);
g_Forwards.ReleaseForward(m_cldisconnect_post);
@@ -189,7 +189,6 @@ void PlayerManager::OnSourceModShutdown()
g_Forwards.ReleaseForward(m_clauth);
g_Forwards.ReleaseForward(m_onActivate);
g_Forwards.ReleaseForward(m_onActivate2);
g_Forwards.ReleaseForward(OnClientConnected);
g_Forwards.ReleaseForward(PreAdminCheck);
g_Forwards.ReleaseForward(PostAdminCheck);
@@ -197,8 +196,6 @@ void PlayerManager::OnSourceModShutdown()
delete [] m_Players;
g_ConVarManager.RemoveConVarChangeListener("tv_enable", this);
if (maxplayersCmd != NULL)
{
SH_REMOVE_HOOK_STATICFUNC(ConCommand, Dispatch, maxplayersCmd, CmdMaxplayersCallback, true);
@@ -478,8 +475,8 @@ bool PlayerManager::OnClientConnect_Post(edict_t *pEntity, const char *pszName,
}
cell_t res;
OnClientConnected->PushCell(client);
OnClientConnected->Execute(&res, NULL);
m_clconnect_post->PushCell(client);
m_clconnect_post->Execute(&res, NULL);
}
else
{
@@ -522,8 +519,8 @@ void PlayerManager::OnClientPutInServer(edict_t *pEntity, const char *playername
}
cell_t res;
OnClientConnected->PushCell(client);
OnClientConnected->Execute(&res, NULL);
m_clconnect_post->PushCell(client);
m_clconnect_post->Execute(&res, NULL);
/* Now do authorization */
for (iter=m_hooks.begin(); iter!=m_hooks.end(); iter++)
@@ -1343,18 +1340,6 @@ void PlayerManager::ProcessCommandTarget(cmd_target_info_t *info)
}
}
void PlayerManager::OnConVarChanged( ConVar *pConVar, const char *oldValue, float flOldValue )
{
if (pConVar->GetBool() && !atoi(oldValue))
{
MaxPlayersChanged(gpGlobals->maxClients + 1);
}
else
{
MaxPlayersChanged();
}
}
void PlayerManager::OnSourceModMaxPlayersChanged( int newvalue )
{
m_maxClients = newvalue;
@@ -1781,6 +1766,11 @@ unsigned int CPlayer::GetLanguageId()
return m_LangId;
}
void CPlayer::SetLanguageId(unsigned int id)
{
m_LangId = id;
}
int CPlayer::GetUserId()
{
if (m_UserId == -1)
+3 -4
View File
@@ -82,6 +82,7 @@ public:
bool IsInKickQueue();
IPlayerInfo *GetPlayerInfo();
unsigned int GetLanguageId();
void SetLanguageId(unsigned int id);
int GetUserId();
bool RunAdminCacheChecks();
void NotifyPostAdminChecks();
@@ -123,8 +124,7 @@ private:
class PlayerManager :
public SMGlobalClass,
public IPlayerManager,
public IConVarChangeListener
public IPlayerManager
{
friend class CPlayer;
public:
@@ -169,8 +169,6 @@ public: //IPlayerManager
void UnregisterCommandTargetProcessor(ICommandTargetProcessor *pHandler);
void ProcessCommandTarget(cmd_target_info_t *info);
int GetClientFromSerial(unsigned int serial);
public: // IConVarChangeListener
void OnConVarChanged(ConVar *pConVar, const char *oldValue, float flOldValue);
public:
inline int MaxClients()
{
@@ -197,6 +195,7 @@ private:
private:
List<IClientListener *> m_hooks;
IForward *m_clconnect;
IForward *m_clconnect_post;
IForward *m_cldisconnect;
IForward *m_cldisconnect_post;
IForward *m_clputinserver;
+31
View File
@@ -341,15 +341,46 @@ void ProfileEngine::OnRootConsoleCommand2(const char *cmdname, const ICommandArg
GenerateReport(fp);
fclose(fp);
Clear();
rootmenu->ConsolePrint("Profiler report generated as: %s\n", path);
return;
}
else if (strcmp(command->Arg(2), "report") == 0)
{
FILE *fp;
char path[256];
g_pSM->BuildPath(Path_SM, path, sizeof(path), "logs/profile_%d.xml", (int)time(NULL));
if ((fp = fopen(path, "wt")) == NULL)
{
rootmenu->ConsolePrint("Failed, could not open file for writing: %s", path);
return;
}
GenerateReport(fp);
fclose(fp);
rootmenu->ConsolePrint("Profiler report generated as: %s\n", path);
return;
}
else if (strcmp(command->Arg(2), "clear") == 0)
{
Clear();
rootmenu->ConsolePrint("Profiler statistics cleared.\n");
return;
}
}
rootmenu->ConsolePrint("Profiler commands:");
rootmenu->DrawGenericOption("flush", "Flushes statistics to disk and starts over");
rootmenu->DrawGenericOption("report", "Flushes statistics to disk");
rootmenu->DrawGenericOption("clear", "Clears statistics");
}
bool ProfileEngine::GenerateReport(FILE *fp)
+293
View File
@@ -37,6 +37,44 @@
#include "GameConfigs.h"
#include "sm_stringutil.h"
// These values need to mirror the values in entity_prop_stocks
#define ENTFLAG_ONGROUND (1 << 0)
#define ENTFLAG_DUCKING (1 << 1)
#define ENTFLAG_WATERJUMP (1 << 2)
#define ENTFLAG_ONTRAIN (1 << 3)
#define ENTFLAG_INRAIN (1 << 4)
#define ENTFLAG_FROZEN (1 << 5)
#define ENTFLAG_ATCONTROLS (1 << 6)
#define ENTFLAG_CLIENT (1 << 7)
#define ENTFLAG_FAKECLIENT (1 << 8)
#define ENTFLAG_INWATER (1 << 9)
#define ENTFLAG_FLY (1 << 10)
#define ENTFLAG_SWIM (1 << 11)
#define ENTFLAG_CONVEYOR (1 << 12)
#define ENTFLAG_NPC (1 << 13)
#define ENTFLAG_GODMODE (1 << 14)
#define ENTFLAG_NOTARGET (1 << 15)
#define ENTFLAG_AIMTARGET (1 << 16)
#define ENTFLAG_PARTIALGROUND (1 << 17)
#define ENTFLAG_STATICPROP (1 << 18)
#define ENTFLAG_GRAPHED (1 << 19)
#define ENTFLAG_GRENADE (1 << 20)
#define ENTFLAG_STEPMOVEMENT (1 << 21)
#define ENTFLAG_DONTTOUCH (1 << 22)
#define ENTFLAG_BASEVELOCITY (1 << 23)
#define ENTFLAG_WORLDBRUSH (1 << 24)
#define ENTFLAG_OBJECT (1 << 25)
#define ENTFLAG_KILLME (1 << 26)
#define ENTFLAG_ONFIRE (1 << 27)
#define ENTFLAG_DISSOLVING (1 << 28)
#define ENTFLAG_TRANSRAGDOLL (1 << 29)
#define ENTFLAG_UNBLOCKABLE_BY_PLAYER (1 << 30)
#define ENTFLAG_FREEZING (1 << 31)
#define ENTFLAG_EP2V_UNKNOWN1 (1 << 31)
// Not defined in the sdk as we have no clue what it is
#define FL_EP2V_UNKNOWN (1 << 2)
enum PropType
{
Prop_Send = 0,
@@ -1142,6 +1180,11 @@ static cell_t SetEntProp(IPluginContext *pContext, const cell_t *params)
*(bool *)((uint8_t *)pEntity + offset) = params[4] ? true : false;
}
if (params[2] == Prop_Send && (pEdict != NULL))
{
g_HL2.SetEdictStateChanged(pEdict, offset);
}
return 0;
}
@@ -1772,6 +1815,254 @@ static cell_t SetEntPropString(IPluginContext *pContext, const cell_t *params)
return len;
}
static int32_t SDKEntFlagToSMEntFlag(int flag)
{
switch (flag)
{
case FL_ONGROUND:
return ENTFLAG_ONGROUND;
case FL_DUCKING:
return ENTFLAG_DUCKING;
case FL_WATERJUMP:
return ENTFLAG_WATERJUMP;
case FL_ONTRAIN:
return ENTFLAG_ONTRAIN;
case FL_INRAIN:
return ENTFLAG_INRAIN;
case FL_FROZEN:
return ENTFLAG_FROZEN;
case FL_ATCONTROLS:
return ENTFLAG_ATCONTROLS;
case FL_CLIENT:
return ENTFLAG_CLIENT;
case FL_FAKECLIENT:
return ENTFLAG_FAKECLIENT;
case FL_INWATER:
return ENTFLAG_INWATER;
case FL_FLY:
return ENTFLAG_FLY;
case FL_SWIM:
return ENTFLAG_SWIM;
case FL_CONVEYOR:
return ENTFLAG_CONVEYOR;
case FL_NPC:
return ENTFLAG_NPC;
case FL_GODMODE:
return ENTFLAG_GODMODE;
case FL_NOTARGET:
return ENTFLAG_NOTARGET;
case FL_AIMTARGET:
return ENTFLAG_AIMTARGET;
case FL_PARTIALGROUND:
return ENTFLAG_PARTIALGROUND;
case FL_STATICPROP:
return ENTFLAG_STATICPROP;
case FL_GRAPHED:
return ENTFLAG_GRAPHED;
case FL_GRENADE:
return ENTFLAG_GRENADE;
case FL_STEPMOVEMENT:
return ENTFLAG_STEPMOVEMENT;
case FL_DONTTOUCH:
return ENTFLAG_DONTTOUCH;
case FL_BASEVELOCITY:
return ENTFLAG_BASEVELOCITY;
case FL_WORLDBRUSH:
return ENTFLAG_WORLDBRUSH;
case FL_OBJECT:
return ENTFLAG_OBJECT;
case FL_KILLME:
return ENTFLAG_KILLME;
case FL_ONFIRE:
return ENTFLAG_ONFIRE;
case FL_DISSOLVING:
return ENTFLAG_DISSOLVING;
case FL_TRANSRAGDOLL:
return ENTFLAG_TRANSRAGDOLL;
case FL_UNBLOCKABLE_BY_PLAYER:
return ENTFLAG_UNBLOCKABLE_BY_PLAYER;
#if SOURCE_ENGINE == SE_ALIENSWARM
case FL_FREEZING:
return ENTFLAG_FREEZING;
#elif SOURCE_ENGINE == SE_ORANGEBOXVALVE
case FL_EP2V_UNKNOWN:
return ENTFLAG_EP2V_UNKNOWN1;
#endif
default:
return 0;
}
}
static int32_t SMEntFlagToSDKEntFlag(int32_t flag)
{
switch (flag)
{
case ENTFLAG_ONGROUND:
return FL_ONGROUND;
case ENTFLAG_DUCKING:
return FL_DUCKING;
case ENTFLAG_WATERJUMP:
return FL_WATERJUMP;
case ENTFLAG_ONTRAIN:
return FL_ONTRAIN;
case ENTFLAG_INRAIN:
return FL_INRAIN;
case ENTFLAG_FROZEN:
return FL_FROZEN;
case ENTFLAG_ATCONTROLS:
return FL_ATCONTROLS;
case ENTFLAG_CLIENT:
return FL_CLIENT;
case ENTFLAG_FAKECLIENT:
return FL_FAKECLIENT;
case ENTFLAG_INWATER:
return FL_INWATER;
case ENTFLAG_FLY:
return FL_FLY;
case ENTFLAG_SWIM:
return FL_SWIM;
case ENTFLAG_CONVEYOR:
return FL_CONVEYOR;
case ENTFLAG_NPC:
return FL_NPC;
case ENTFLAG_GODMODE:
return FL_GODMODE;
case ENTFLAG_NOTARGET:
return FL_NOTARGET;
case ENTFLAG_AIMTARGET:
return FL_AIMTARGET;
case ENTFLAG_PARTIALGROUND:
return FL_PARTIALGROUND;
case ENTFLAG_STATICPROP:
return FL_STATICPROP;
case ENTFLAG_GRAPHED:
return FL_GRAPHED;
case ENTFLAG_GRENADE:
return FL_GRENADE;
case ENTFLAG_STEPMOVEMENT:
return FL_STEPMOVEMENT;
case ENTFLAG_DONTTOUCH:
return FL_DONTTOUCH;
case ENTFLAG_BASEVELOCITY:
return FL_BASEVELOCITY;
case ENTFLAG_WORLDBRUSH:
return FL_WORLDBRUSH;
case ENTFLAG_OBJECT:
return FL_OBJECT;
case ENTFLAG_KILLME:
return FL_KILLME;
case ENTFLAG_ONFIRE:
return FL_ONFIRE;
case ENTFLAG_DISSOLVING:
return FL_DISSOLVING;
case ENTFLAG_TRANSRAGDOLL:
return FL_TRANSRAGDOLL;
case ENTFLAG_UNBLOCKABLE_BY_PLAYER:
return FL_UNBLOCKABLE_BY_PLAYER;
#if SOURCE_ENGINE == SE_ALIENSWARM
case ENTFLAG_FREEZING:
return FL_FREEZING;
#elif SOURCE_ENGINE == SE_ORANGEBOXVALVE
case ENTFLAG_EP2V_UNKNOWN1:
return FL_EP2V_UNKNOWN;
#endif
default:
return 0;
}
}
static cell_t GetEntityFlags(IPluginContext *pContext, const cell_t *params)
{
CBaseEntity *pEntity = g_HL2.ReferenceToEntity(params[1]);
if (!pEntity)
{
return pContext->ThrowNativeError("Entity %d (%d) is invalid", g_HL2.ReferenceToIndex(params[1]), params[1]);
}
const char *prop = g_pGameConf->GetKeyValue("m_fFlags");
if (!prop)
{
return pContext->ThrowNativeError("Could not find m_fFlags prop in gamedata");
}
typedescription_t *td;
datamap_t *pMap;
if ((pMap = CBaseEntity_GetDataDescMap(pEntity)) == NULL)
{
return pContext->ThrowNativeError("Could not retrieve datamap");
}
if ((td = g_HL2.FindInDataMap(pMap, prop)) == NULL)
{
return pContext->ThrowNativeError("Property \"%s\" not found (entity %d)",
prop,
params[1]);
}
int offset = GetTypeDescOffs(td);
int32_t actual_flags = *(int32_t *)((uint8_t *)pEntity + offset);
int32_t sm_flags = 0;
for (int32_t i = 0; i < 32; i++)
{
int32_t flag = (1<<i);
if ((actual_flags & flag) == flag)
{
sm_flags |= SDKEntFlagToSMEntFlag(flag);
}
}
return sm_flags;
}
static cell_t SetEntityFlags(IPluginContext *pContext, const cell_t *params)
{
CBaseEntity *pEntity = g_HL2.ReferenceToEntity(params[1]);
if (!pEntity)
{
return pContext->ThrowNativeError("Entity %d (%d) is invalid", g_HL2.ReferenceToIndex(params[1]), params[1]);
}
const char *prop = g_pGameConf->GetKeyValue("m_fFlags");
if (!prop)
{
return pContext->ThrowNativeError("Could not find m_fFlags prop in gamedata");
}
typedescription_t *td;
datamap_t *pMap;
if ((pMap = CBaseEntity_GetDataDescMap(pEntity)) == NULL)
{
return pContext->ThrowNativeError("Could not retrieve datamap");
}
if ((td = g_HL2.FindInDataMap(pMap, prop)) == NULL)
{
return pContext->ThrowNativeError("Property \"%s\" not found (entity %d)",
prop,
params[1]);
}
int offset = GetTypeDescOffs(td);
int32_t sm_flags = params[2];
int32_t actual_flags = 0;
for (int32_t i = 0; i < 32; i++)
{
int32_t flag = (1<<i);
if ((sm_flags & flag) == flag)
{
actual_flags |= SMEntFlagToSDKEntFlag(flag);
}
}
*(int32_t *)((uint8_t *)pEntity + offset) = actual_flags;
return 0;
}
REGISTER_NATIVES(entityNatives)
{
{"ChangeEdictState", ChangeEdictState},
@@ -1793,6 +2084,7 @@ REGISTER_NATIVES(entityNatives)
{"GetEntPropString", GetEntPropString},
{"GetEntPropVector", GetEntPropVector},
{"GetEntityCount", GetEntityCount},
{"GetEntityFlags", GetEntityFlags},
{"GetEntityNetClass", GetEntityNetClass},
{"GetMaxEntities", GetMaxEntities},
{"IsEntNetworkable", IsEntNetworkable},
@@ -1806,6 +2098,7 @@ REGISTER_NATIVES(entityNatives)
{"SetEntDataFloat", SetEntDataFloat},
{"SetEntDataVector", SetEntDataVector},
{"SetEntDataString", SetEntDataString},
{"SetEntityFlags", SetEntityFlags},
{"SetEntProp", SetEntProp},
{"SetEntPropEnt", SetEntPropEnt},
{"SetEntPropFloat", SetEntPropFloat},
+43
View File
@@ -104,6 +104,46 @@ static cell_t sm_GetLanguageInfo(IPluginContext *pContext, const cell_t *params)
return 1;
}
static cell_t sm_SetClientLanguage(IPluginContext *pContext, const cell_t *params)
{
CPlayer *player = g_Players.GetPlayerByIndex(params[1]);
if (!player || !player->IsInGame())
{
return pContext->ThrowNativeError("Invalid client index %d", params[1]);
}
player->SetLanguageId(params[2]);
return 1;
}
static cell_t sm_GetLanguageByCode(IPluginContext *pContext, const cell_t *params)
{
char *code;
unsigned int langid;
pContext->LocalToString(params[1], &code);
if (g_Translator.GetLanguageByCode(code, &langid))
return langid;
return -1;
}
static cell_t sm_GetLanguageByName(IPluginContext *pContext, const cell_t *params)
{
char *name;
unsigned int langid;
pContext->LocalToString(params[1], &name);
if (g_Translator.GetLanguageByName(name, &langid))
return langid;
return -1;
}
REGISTER_NATIVES(langNatives)
{
{"LoadTranslations", sm_LoadTranslations},
@@ -112,5 +152,8 @@ REGISTER_NATIVES(langNatives)
{"GetServerLanguage", sm_GetServerLanguage},
{"GetLanguageCount", sm_GetLanguageCount},
{"GetLanguageInfo", sm_GetLanguageInfo},
{"SetClientLanguage", sm_SetClientLanguage},
{"GetLanguageByCode", sm_GetLanguageByCode},
{"GetLanguageByName", sm_GetLanguageByName},
{NULL, NULL},
};
+1 -1
View File
@@ -32,7 +32,7 @@
#ifndef _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
#define _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
#define MAXCLIENTS 64
#define MAXCLIENTS 65
#include <stdlib.h>
#include <stdarg.h>
+6 -1
View File
@@ -171,7 +171,12 @@ static cell_t SetTeamScore(IPluginContext *pContext, const cell_t *params)
}
static int offset = g_pGameHelpers->FindInSendTable(g_Teams[teamindex].ClassName, "m_iScore")->GetOffset();
*(int *)((unsigned char *)g_Teams[teamindex].pEnt + offset) = params[2];
CBaseEntity *pTeam = g_Teams[teamindex].pEnt;
*(int *)((unsigned char *)pTeam + offset) = params[2];
edict_t *pEdict = gameents->BaseEntityToEdict(pTeam);
gamehelpers->SetEdictStateChanged(pEdict, offset);
return 1;
}
+23 -16
View File
@@ -285,26 +285,33 @@ void TempEntityManager::Initialize()
int offset;
m_Loaded = false;
/*
* First try to lookup s_pTempEntities directly for platforms with symbols.
* If symbols aren't present (Windows or stripped Linux/Mac),
* attempt find via CBaseTempEntity ctor + offset
*/
/* Read our sigs and offsets from the config file */
#if defined PLATFORM_WINDOWS
if (!g_pGameConf->GetMemSig("CBaseTempEntity", &addr) || !addr)
if (g_pGameConf->GetMemSig("s_pTempEntities", &addr) && addr)
{
/* Store the head of the TE linked list */
m_ListHead = *(void **)addr;
}
else if (g_pGameConf->GetMemSig("CBaseTempEntity", &addr) && addr)
{
if (!g_pGameConf->GetOffset("s_pTempEntities", &offset))
{
return;
}
/* Store the head of the TE linked list */
m_ListHead = **(void ***)((unsigned char *)addr + offset);
}
else
{
return;
}
if (!g_pGameConf->GetOffset("s_pTempEntities", &offset))
{
return;
}
/* Store the head of the TE linked list */
m_ListHead = **(void ***)((unsigned char *)addr + offset);
#else
if (!g_pGameConf->GetMemSig("s_pTempEntities", &addr) || !addr)
{
return;
}
/* Store the head of the TE linked list */
m_ListHead = *(void **)addr;
#endif
if (!g_pGameConf->GetOffset("GetTEName", &m_NameOffs))
{
return;
+17 -18
View File
@@ -39,29 +39,28 @@ void InitializeValveGlobals()
{
g_EntList = gamehelpers->GetGlobalEntityList();
/*
* g_pGameRules
*
* First try to lookup pointer directly for platforms with symbols.
* If symbols aren't present (Windows or stripped Linux/Mac),
* attempt find via CreateGameRulesObject + offset
*/
char *addr;
#ifdef PLATFORM_WINDOWS
/* g_pGameRules */
if (!g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) || !addr)
if (g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) && addr)
{
return;
g_pGameRules = reinterpret_cast<void **>(addr);
}
int offset;
if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset)
else if (g_pGameConf->GetMemSig("CreateGameRulesObject", (void **)&addr) && addr)
{
return;
int offset;
if (!g_pGameConf->GetOffset("g_pGameRules", &offset) || !offset)
{
return;
}
g_pGameRules = *reinterpret_cast<void ***>(addr + offset);
}
g_pGameRules = *reinterpret_cast<void ***>(addr + offset);
#elif defined PLATFORM_LINUX
/* g_pGameRules */
if (!g_pGameConf->GetMemSig("g_pGameRules", (void **)&addr) || !addr)
{
return;
}
g_pGameRules = reinterpret_cast<void **>(addr);
#endif
}
size_t UTIL_StringToSignature(const char *str, char buffer[], size_t maxlength)
+18 -24
View File
@@ -53,7 +53,6 @@ enum ListenOverride
size_t g_VoiceFlags[65];
size_t g_VoiceHookCount = 0;
int g_ClientOverrides[65];
ListenOverride g_VoiceMap[65][65];
bool g_ClientMutes[65][65];
@@ -65,10 +64,10 @@ SH_DECL_HOOK2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *,
SH_DECL_HOOK1_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *);
#endif
bool DecHookCount(int amount = 1);
bool DecHookCount(int amount)
bool DecHookCount()
{
g_VoiceHookCount -= amount;
g_VoiceHookCount--;
if (g_VoiceHookCount == 0)
{
SH_REMOVE_HOOK_MEMFUNC(IVoiceServer, SetClientListening, voiceserver, &g_SdkTools, &SDKTools::OnSetClientListening, false);
@@ -89,7 +88,6 @@ void IncHookCount()
void SDKTools::VoiceInit()
{
memset(g_VoiceMap, 0, sizeof(g_VoiceMap));
memset(g_ClientOverrides, 0, sizeof(g_ClientOverrides));
memset(g_ClientMutes, 0, sizeof(g_ClientMutes));
SH_ADD_HOOK_MEMFUNC(IServerGameClients, ClientCommand, serverClients, this, &SDKTools::OnClientCommand, true);
@@ -130,6 +128,11 @@ bool SDKTools::OnSetClientListening(int iReceiver, int iSender, bool bListen)
RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVoiceServer::SetClientListening, (iReceiver, iSender, false));
}
if (g_VoiceFlags[iSender] & SPEAK_MUTED)
{
RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVoiceServer::SetClientListening, (iReceiver, iSender, false));
}
if (g_VoiceMap[iReceiver][iSender] == Listen_No)
{
RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVoiceServer::SetClientListening, (iReceiver, iSender, false));
@@ -139,11 +142,6 @@ bool SDKTools::OnSetClientListening(int iReceiver, int iSender, bool bListen)
RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVoiceServer::SetClientListening, (iReceiver, iSender, true));
}
if (g_VoiceFlags[iSender] & SPEAK_MUTED)
{
RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVoiceServer::SetClientListening, (iReceiver, iSender, false));
}
if ((g_VoiceFlags[iSender] & SPEAK_ALL) || (g_VoiceFlags[iReceiver] & SPEAK_LISTENALL))
{
RETURN_META_VALUE_NEWPARAMS(MRES_IGNORED, bListen, &IVoiceServer::SetClientListening, (iReceiver, iSender, true));
@@ -193,6 +191,7 @@ void SDKTools::OnClientDisconnecting(int client)
}
g_ClientMutes[i][client] = false;
g_ClientMutes[client][i] = false;
if (g_VoiceMap[i][client] != Listen_Default)
{
@@ -202,22 +201,19 @@ void SDKTools::OnClientDisconnecting(int client)
break;
}
}
}
/* Reset this client's mutes */
memset(&g_ClientMutes[client], 0, sizeof(bool) * 65);
/* Reset other clients who send to this client */
if (g_ClientOverrides[client] > 0)
{
DecHookCount(g_ClientOverrides[client]);
g_ClientOverrides[client] = 0;
memset(&g_VoiceMap[client], false, sizeof(ListenOverride) * 65);
if (g_VoiceMap[client][i] != Listen_Default)
{
g_VoiceMap[client][i] = Listen_Default;
if (DecHookCount())
{
break;
}
}
}
if (g_VoiceFlags[client])
{
g_VoiceFlags[client] = 0;
g_VoiceFlags[client] = SPEAK_NORMAL;
DecHookCount();
}
}
@@ -294,13 +290,11 @@ static cell_t SetClientListening(IPluginContext *pContext, const cell_t *params)
if (g_VoiceMap[r][s] == Listen_Default && params[3] != Listen_Default)
{
g_VoiceMap[r][s] = (ListenOverride) params[3];
g_ClientOverrides[r]++;
IncHookCount();
}
else if (g_VoiceMap[r][s] != Listen_Default && params[3] == Listen_Default)
{
g_VoiceMap[r][s] = (ListenOverride) params[3];
g_ClientOverrides[r]--;
DecHookCount();
}
else
+23 -7
View File
@@ -188,7 +188,7 @@ DETOUR_DECL_MEMBER0(CalcIsAttackCriticalHelperBow, bool)
}
}
void InitialiseCritDetours()
bool InitialiseCritDetours()
{
calcIsAttackCriticalDetour = DETOUR_CREATE_MEMBER(CalcIsAttackCriticalHelper, "CalcCritical");
calcIsAttackCriticalMeleeDetour = DETOUR_CREATE_MEMBER(CalcIsAttackCriticalHelperMelee, "CalcCriticalMelee");
@@ -214,17 +214,33 @@ void InitialiseCritDetours()
HookCreated = true;
}
if (!HookCreated)
if (HookCreated)
{
g_pSM->LogError(myself, "No critical hit forwards could be initialized - Disabled critical hit hooks");
return;
return true;
}
g_pSM->LogError(myself, "No critical hit forwards could be initialized - Disabled critical hit hooks");
return false;
}
void RemoveCritDetours()
{
calcIsAttackCriticalDetour->Destroy();
calcIsAttackCriticalMeleeDetour->Destroy();
calcIsAttackCriticalBowDetour->Destroy();
if (calcIsAttackCriticalDetour != NULL)
{
calcIsAttackCriticalDetour->Destroy();
calcIsAttackCriticalDetour = NULL;
}
if (calcIsAttackCriticalMeleeDetour != NULL)
{
calcIsAttackCriticalMeleeDetour->Destroy();
calcIsAttackCriticalMeleeDetour = NULL;
}
if (calcIsAttackCriticalBowDetour != NULL)
{
calcIsAttackCriticalBowDetour->Destroy();
calcIsAttackCriticalBowDetour = NULL;
}
}
+1 -1
View File
@@ -37,7 +37,7 @@
#include <jit/x86/x86_macros.h>
#include "CDetour/detours.h"
void InitialiseCritDetours();
bool InitialiseCritDetours();
void RemoveCritDetours();
extern IForward *g_critForward;
+2 -4
View File
@@ -303,13 +303,11 @@ void TF2Tools::OnPluginLoaded(IPlugin *plugin)
{
if (!m_CritDetoursEnabled && g_critForward->GetFunctionCount())
{
InitialiseCritDetours();
m_CritDetoursEnabled = true;
m_CritDetoursEnabled = InitialiseCritDetours();
}
if (!m_GetHolidayDetourEnabled && g_getHolidayForward->GetFunctionCount())
{
InitialiseGetHolidayDetour();
m_GetHolidayDetourEnabled = true;
m_GetHolidayDetourEnabled = InitialiseGetHolidayDetour();
}
}
+9 -8
View File
@@ -4,9 +4,9 @@ CDetour *getHolidayDetour = NULL;
IForward *g_getHolidayForward = NULL;
DETOUR_DECL_MEMBER0(GetHoliday, int)
DETOUR_DECL_STATIC0(GetHoliday, int)
{
int actualres = DETOUR_MEMBER_CALL(GetHoliday)();
int actualres = DETOUR_STATIC_CALL(GetHoliday)();
if (!g_getHolidayForward)
{
g_pSM->LogMessage(myself, "Invalid Forward");
@@ -27,17 +27,18 @@ DETOUR_DECL_MEMBER0(GetHoliday, int)
return actualres;
}
void InitialiseGetHolidayDetour()
bool InitialiseGetHolidayDetour()
{
getHolidayDetour = DETOUR_CREATE_MEMBER(GetHoliday, "GetHoliday");
getHolidayDetour = DETOUR_CREATE_STATIC(GetHoliday, "GetHoliday");
if (!getHolidayDetour)
if (getHolidayDetour != NULL)
{
g_pSM->LogError(myself, "GetHoliday detour failed");
return;
getHolidayDetour->EnableDetour();
return true;
}
getHolidayDetour->EnableDetour();
g_pSM->LogError(myself, "GetHoliday detour failed");
return false;
}
void RemoveGetHolidayDetour()
+1 -1
View File
@@ -37,7 +37,7 @@
#include <jit/x86/x86_macros.h>
#include "CDetour/detours.h"
void InitialiseGetHolidayDetour();
bool InitialiseGetHolidayDetour();
void RemoveGetHolidayDetour();
extern IForward *g_getHolidayForward;
+46 -4
View File
@@ -147,7 +147,7 @@ cell_t TF2_Disguise(IPluginContext *pContext, const cell_t *params)
if (!pWrapper)
{
REGISTER_NATIVE_ADDR("Disguise",
PassInfo pass[3]; \
PassInfo pass[4]; \
pass[0].flags = PASSFLAG_BYVAL; \
pass[0].size = sizeof(int); \
pass[0].type = PassType_Basic; \
@@ -157,7 +157,10 @@ cell_t TF2_Disguise(IPluginContext *pContext, const cell_t *params)
pass[2].flags = PASSFLAG_BYVAL; \
pass[2].size = sizeof(CBaseEntity *); \
pass[2].type = PassType_Basic; \
pWrapper = g_pBinTools->CreateCall(addr, CallConv_ThisCall, NULL, pass, 3))
pass[3].flags = PASSFLAG_BYVAL; \
pass[3].size = sizeof(bool); \
pass[3].type = PassType_Basic; \
pWrapper = g_pBinTools->CreateCall(addr, CallConv_ThisCall, NULL, pass, 4))
}
CBaseEntity *pEntity;
@@ -175,7 +178,7 @@ cell_t TF2_Disguise(IPluginContext *pContext, const cell_t *params)
return pContext->ThrowNativeError("Target client index %d is not valid", params[1]);
}
unsigned char vstk[sizeof(void *) + 2*sizeof(int)];
unsigned char vstk[sizeof(void *) + 2*sizeof(int) + sizeof(bool)];
unsigned char *vptr = vstk;
@@ -186,7 +189,9 @@ cell_t TF2_Disguise(IPluginContext *pContext, const cell_t *params)
*(int *)vptr = params[3];
vptr += sizeof(int);
*(CBaseEntity **)vptr = pTarget;
vptr += sizeof(CBaseEntity *);
*(bool *)vptr = true;
pWrapper->Execute(vstk, NULL);
return 1;
@@ -475,6 +480,42 @@ cell_t TF2_GetClass(IPluginContext *pContext, const cell_t *params)
return (cell_t)ClassnameToType(str);
}
// native TF2_IsPlayerInDuel(client)
cell_t TF2_IsPlayerInDuel(IPluginContext *pContext, const cell_t *params)
{
static ICallWrapper *pWrapper = NULL;
// DuelMiniGame_IsPlayerInDuel(CTFPlayer *)
if (!pWrapper)
{
REGISTER_NATIVE_ADDR("IsPlayerInDuel",
PassInfo pass[1]; \
pass[0].flags = PASSFLAG_BYVAL; \
pass[0].size = sizeof(CBaseEntity *); \
pass[0].type = PassType_Basic; \
PassInfo ret; \
ret.flags = PASSFLAG_BYVAL; \
ret.size = sizeof(bool); \
ret.type = PassType_Basic; \
pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &ret, pass, 1))
}
CBaseEntity *pPlayer;
if (!(pPlayer = UTIL_GetCBaseEntity(params[1], true)))
{
return pContext->ThrowNativeError("Client index %d is not valid", params[1]);
}
unsigned char vstk[sizeof(CBaseEntity *)];
unsigned char *vptr = vstk;
*(CBaseEntity **)vptr = pPlayer;
bool retValue;
pWrapper->Execute(vstk, &retValue);
return (retValue) ? 1 : 0;
}
sp_nativeinfo_t g_TFNatives[] =
{
{"TF2_IgnitePlayer", TF2_Burn},
@@ -490,5 +531,6 @@ sp_nativeinfo_t g_TFNatives[] =
{"TF2_SetPlayerPowerPlay", TF2_SetPowerplayEnabled},
{"TF2_StunPlayer", TF2_StunPlayer},
{"TF2_MakeBleed", TF2_MakeBleed},
{"TF2_IsPlayerInDuel", TF2_IsPlayerInDuel},
{NULL, NULL}
};
+1
View File
@@ -202,6 +202,7 @@
"game" "fas"
"game" "fistful_of_frags"
"game" "swarm"
"game" "dinodday"
}
"Keys"
-1
View File
@@ -25,7 +25,6 @@
"game" "hidden"
"game" "zombie_master"
"game" "NeotokyoSource"
"game" "cspromod"
}
"Offsets"
+1
View File
@@ -27,6 +27,7 @@
"game" "synergy"
"game" "fas"
"game" "fistful_of_frags"
"game" "cspromod"
}
"Offsets"
+1
View File
@@ -17,6 +17,7 @@
"#supported"
{
"game" "swarm"
"game" "dinodday"
}
"Offsets"
-1
View File
@@ -25,7 +25,6 @@
"game" "hidden"
"game" "zombie_master"
"game" "NeotokyoSource"
"game" "cspromod"
}
"Offsets"
+5 -2
View File
@@ -25,6 +25,7 @@
"game" "gesource"
"game" "fas"
"game" "fistful_of_frags"
"game" "cspromod"
}
"Offsets"
@@ -72,9 +73,9 @@
"#supported"
{
"game" "ageofchivalry"
"game" "zps"
"game" "pvkii"
"game" "fistful_of_frags"
"game" "cspromod"
}
"Signatures"
@@ -100,9 +101,9 @@
"#supported"
{
"game" "ageofchivalry"
"game" "zps"
"game" "pvkii"
"game" "fistful_of_frags"
"game" "cspromod"
}
"Signatures"
@@ -133,6 +134,7 @@
"game" "obsidian"
"game" "fas"
"game" "fistful_of_frags"
"game" "cspromod"
}
"Offsets"
@@ -223,6 +225,7 @@
"#supported"
{
"game" "ageofchivalry"
"game" "cspromod"
}
"Signatures"
{
+5 -56
View File
@@ -17,6 +17,7 @@
"#supported"
{
"game" "swarm"
"game" "dinodday"
}
"Offsets"
@@ -56,6 +57,7 @@
"#supported"
{
"game" "swarm"
"game" "dinodday"
}
"Signatures"
@@ -79,6 +81,7 @@
"#supported"
{
"game" "swarm"
"game" "dinodday"
}
"Signatures"
@@ -98,6 +101,7 @@
"#supported"
{
"game" "swarm"
"game" "dinodday"
}
"Offsets"
@@ -172,6 +176,7 @@
"#supported"
{
"game" "swarm"
"game" "dinodday"
}
"Signatures"
{
@@ -220,60 +225,4 @@
}
}
}
/* Alien Swarm */
"swarm"
{
"Offsets"
{
"Ignite"
{
"windows" "219"
}
"Extinguish"
{
"windows" "222"
}
"Teleport"
{
"windows" "111"
}
"GetVelocity"
{
"windows" "144"
}
"EyeAngles"
{
"windows" "135"
}
"AcceptInput"
{
"windows" "39"
}
"DispatchKeyValue"
{
"windows" "34"
}
"DispatchKeyValueFloat"
{
"windows" "33"
}
"DispatchKeyValueVector"
{
"windows" "31"
}
"SetEntityModel"
{
"windows" "26"
}
"Activate"
{
"windows" "36"
}
"PlayerRunCmd"
{
"windows" "442"
}
}
}
}
@@ -0,0 +1,58 @@
"Games"
{
/* Alien Swarm */
"swarm"
{
"Offsets"
{
"Ignite"
{
"windows" "219"
}
"Extinguish"
{
"windows" "222"
}
"Teleport"
{
"windows" "111"
}
"GetVelocity"
{
"windows" "144"
}
"EyeAngles"
{
"windows" "135"
}
"AcceptInput"
{
"windows" "39"
}
"DispatchKeyValue"
{
"windows" "34"
}
"DispatchKeyValueFloat"
{
"windows" "33"
}
"DispatchKeyValueVector"
{
"windows" "31"
}
"SetEntityModel"
{
"windows" "26"
}
"Activate"
{
"windows" "36"
}
"PlayerRunCmd"
{
"windows" "442"
}
}
}
}
+35 -81
View File
@@ -1,140 +1,94 @@
"Games"
{
/* CSpromod 1.04 */
/* CSpromod 1.05 */
"cspromod"
{
"Offsets"
{
"GiveNamedItem"
{
"windows" "330"
"linux" "331"
"windows" "353"
"linux" "354"
}
"RemovePlayerItem"
{
"windows" "226"
"linux" "227"
"windows" "239"
"linux" "240"
}
"Weapon_GetSlot"
{
"windows" "224"
"linux" "225"
"windows" "237"
"linux" "238"
}
"Ignite"
{
"windows" "188"
"linux" "189"
"windows" "194"
"linux" "195"
}
"Extinguish"
{
"windows" "189"
"linux" "190"
"windows" "198"
"linux" "199"
}
"Teleport"
{
"windows" "98"
"linux" "99"
"windows" "101"
"linux" "102"
}
"CommitSuicide"
{
"windows" "358"
"linux" "359"
"windows" "389"
"linux" "389"
}
"GetVelocity"
{
"windows" "126"
"linux" "127"
"windows" "131"
"linux" "132"
}
"EyeAngles"
{
"windows" "118"
"linux" "119"
"windows" "123"
"linux" "124"
}
"AcceptInput"
{
"windows" "35"
"linux" "36"
"windows" "34"
"linux" "35"
}
"DispatchKeyValue"
{
"windows" "31"
"linux" "30"
"windows" "29"
"linux" "28"
}
"DispatchKeyValueFloat"
{
"windows" "30"
"linux" "31"
"windows" "28"
"linux" "29"
}
"DispatchKeyValueVector"
{
"windows" "29"
"linux" "32"
"windows" "27"
"linux" "30"
}
"SetEntityModel"
{
"windows" "25"
"linux" "26"
"windows" "23"
"linux" "24"
}
"WeaponEquip"
{
"windows" "217"
"linux" "218"
"windows" "230"
"linux" "231"
}
"Activate"
{
"windows" "32"
"linux" "33"
"windows" "31"
"linux" "32"
}
"PlayerRunCmd"
{
"windows" "348"
"linux" "349"
}
"FireOutputBackup"
{
"windows" "6"
"linux" "6"
}
"g_pGameRules"
{
"windows" "2"
}
}
"Signatures"
{
"FireOutput"
{
"library" "server"
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\x53\x55\x56\x8B\x71\x2A\x85\xF6"
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
}
"DispatchSpawn"
{
"library" "server"
"linux" "@_Z13DispatchSpawnP11CBaseEntity"
"windows" "\x53\x55\x56\x8B\x74\x2A\x2A\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x2A\x2A\x8B\xCB\xFF"
}
"CreateEntityByName"
{
"library" "server"
"linux" "@_Z18CreateEntityByNamePKci"
"windows" "\x56\x8B\x74\x2A\x2A\x83\xFE\xFF\x57\x8B\x7C\x2A\x2A\x74\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x2A\x2A\x56\xFF\xD2"
}
"FindEntityByClassname"
{
"library" "server"
"windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x2A\x85\xC9\x57\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\xFF\x2A\x2A\x2A\x83\xC0\x2A\xC1\xE0\x2A\x8B\x3C\x30\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x2A\x2A\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x2A\x8D\x2A\x2A\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x11\x39"
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
}
"CreateGameRulesObject"
{
"library" "server"
"windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
}
"g_pGameRules"
{
"library" "server"
"linux" "@g_pGameRules"
"windows" "373"
"linux" "374"
}
}
}
+32 -32
View File
@@ -26,68 +26,68 @@
{
"GiveNamedItem"
{
"windows" "387"
"linux" "388"
"windows" "390"
"linux" "391"
}
"RemovePlayerItem"
{
"windows" "259"
"linux" "260"
"windows" "262"
"linux" "263"
}
"Weapon_GetSlot"
{
"windows" "257"
"linux" "258"
"windows" "260"
"linux" "261"
}
"Ignite"
{
"windows" "202"
"linux" "203"
"windows" "204"
"linux" "205"
}
"Extinguish"
{
"windows" "206"
"linux" "207"
"windows" "208"
"linux" "209"
}
"Teleport"
{
"windows" "105"
"linux" "106"
"windows" "106"
"linux" "107"
}
"CommitSuicide"
{
"windows" "428"
"linux" "428"
"windows" "431"
"linux" "431"
}
"GetVelocity"
{
"windows" "137"
"linux" "138"
"windows" "138"
"linux" "139"
}
"EyeAngles"
{
"windows" "128"
"linux" "129"
"windows" "129"
"linux" "130"
}
"AcceptInput"
{
"windows" "34"
"linux" "35"
"windows" "35"
"linux" "36"
}
"DispatchKeyValue"
{
"windows" "29"
"linux" "28"
"windows" "30"
"linux" "29"
}
"DispatchKeyValueFloat"
{
"windows" "28"
"linux" "29"
"windows" "29"
"linux" "30"
}
"DispatchKeyValueVector"
{
"windows" "27"
"linux" "30"
"windows" "28"
"linux" "31"
}
"SetEntityModel"
{
@@ -96,18 +96,18 @@
}
"WeaponEquip"
{
"windows" "250"
"linux" "251"
"windows" "253"
"linux" "254"
}
"Activate"
{
"windows" "31"
"linux" "32"
"windows" "32"
"linux" "33"
}
"PlayerRunCmd"
{
"windows" "405"
"linux" "406"
"windows" "408"
"linux" "409"
}
}
}
+78
View File
@@ -0,0 +1,78 @@
"Games"
{
/* Dino D-Day */
"dinodday"
{
"Offsets"
{
"GiveNamedItem"
{
"windows" "422"
}
"RemovePlayerItem"
{
"windows" "286"
}
"Weapon_GetSlot"
{
"windows" "275"
}
"Ignite"
{
"windows" "219"
}
"Extinguish"
{
"windows" "222"
}
"Teleport"
{
"windows" "111"
}
"CommitSuicide"
{
"windows" "466"
}
"GetVelocity"
{
"windows" "144"
}
"EyeAngles"
{
"windows" "135"
}
"AcceptInput"
{
"windows" "39"
}
"DispatchKeyValue"
{
"windows" "34"
}
"DispatchKeyValueFloat"
{
"windows" "33"
}
"DispatchKeyValueVector"
{
"windows" "31"
}
"SetEntityModel"
{
"windows" "26"
}
"WeaponEquip"
{
"windows" "278"
}
"Activate"
{
"windows" "36"
}
"PlayerRunCmd"
{
"windows" "442"
}
}
}
}
+32 -32
View File
@@ -18,68 +18,68 @@
{
"GiveNamedItem"
{
"windows" "386"
"linux" "387"
"windows" "389"
"linux" "390"
}
"RemovePlayerItem"
{
"windows" "259"
"linux" "260"
"windows" "262"
"linux" "263"
}
"Weapon_GetSlot"
{
"windows" "257"
"linux" "258"
"windows" "260"
"linux" "261"
}
"Ignite"
{
"windows" "202"
"linux" "203"
"windows" "204"
"linux" "205"
}
"Extinguish"
{
"windows" "206"
"linux" "207"
"windows" "208"
"linux" "209"
}
"Teleport"
{
"windows" "105"
"linux" "106"
"windows" "106"
"linux" "107"
}
"CommitSuicide"
{
"windows" "424"
"linux" "425"
"windows" "427"
"linux" "428"
}
"GetVelocity"
{
"windows" "137"
"linux" "138"
"windows" "138"
"linux" "139"
}
"EyeAngles"
{
"windows" "128"
"linux" "129"
"windows" "129"
"linux" "130"
}
"AcceptInput"
{
"windows" "34"
"linux" "35"
"windows" "35"
"linux" "36"
}
"DispatchKeyValue"
{
"windows" "29"
"linux" "28"
"windows" "30"
"linux" "29"
}
"DispatchKeyValueFloat"
{
"windows" "28"
"linux" "29"
"windows" "29"
"linux" "30"
}
"DispatchKeyValueVector"
{
"windows" "27"
"linux" "30"
"windows" "28"
"linux" "31"
}
"SetEntityModel"
{
@@ -88,18 +88,18 @@
}
"WeaponEquip"
{
"windows" "250"
"linux" "251"
"windows" "253"
"linux" "254"
}
"Activate"
{
"windows" "31"
"linux" "32"
"windows" "32"
"linux" "33"
}
"PlayerRunCmd"
{
"windows" "404"
"linux" "405"
"windows" "407"
"linux" "408"
}
}
}
+38 -27
View File
@@ -11,7 +11,7 @@
"Games"
{
/* Empires 2.25b */
/* Empires 2.31a */
"empires"
{
@@ -19,28 +19,28 @@
{
"GiveNamedItem"
{
"windows" "353"
"linux" "354"
"windows" "357"
"linux" "358"
}
"RemovePlayerItem"
{
"windows" "240"
"linux" "241"
"windows" "244"
"linux" "245"
}
"Weapon_GetSlot"
{
"windows" "238"
"linux" "239"
"windows" "242"
"linux" "243"
}
"Ignite"
{
"windows" "195"
"linux" "196"
"windows" "199"
"linux" "200"
}
"Extinguish"
{
"windows" "199"
"linux" "200"
"windows" "203"
"linux" "204"
}
"Teleport"
{
@@ -49,18 +49,18 @@
}
"CommitSuicide"
{
"windows" "392"
"linux" "392"
"windows" "396"
"linux" "396"
}
"GetVelocity"
{
"windows" "132"
"linux" "133"
"windows" "136"
"linux" "137"
}
"EyeAngles"
{
"windows" "124"
"linux" "125"
"windows" "128"
"linux" "129"
}
"DispatchKeyValue"
{
@@ -94,44 +94,55 @@
}
"WeaponEquip"
{
"windows" "231"
"linux" "232"
"windows" "235"
"linux" "236"
}
"PlayerRunCmd"
{
"windows" "372"
"linux" "373"
"windows" "376"
"linux" "377"
}
"FireOutputBackup"
{
"windows" "6"
"linux" "10"
"windows" "9"
"linux" "6"
}
/* Offset into CBaseTempEntity constructor */
"s_pTempEntities"
{
"windows" "19"
}
}
"Signatures"
{
"CBaseTempEntity"
{
"library" "server"
"windows" "\x55\x8B\xEC\x8B\xC1\x8B\x2A\x2A\xC7\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x8B\x15\x2A\x2A\x2A\x2A\x89"
}
"DispatchSpawn"
{
"library" "server"
"windows" "\x53\x55\x56\x8B\x74\x24\x10\x57\x85\xF6\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x64\x8B\xCB"
"windows" "\x55\x8B\xEC\x51\x53\x56\x8B\x75\x2A\x57\x85\xF6\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B"
"linux" "@_Z13DispatchSpawnP11CBaseEntity"
}
"CreateEntityByName"
{
"library" "server"
"windows" "\x56\x8B\x74\x24\x0C\x57\x8B\x7C\x24\x0C\x83\xFE\xFF\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2"
"windows" "\x55\x8B\xEC\x56\x8B\x2A\x2A\x57\x8B\x2A\x2A\x83\x2A\x2A\x74\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x2A\x56\xFF\xD2"
"linux" "@_Z18CreateEntityByNamePKci"
}
"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"
"windows" "\x55\x8B\xEC\x53\x56\x8B\xF1\x8B\x2A\x2A\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\x2A\x2A\x2A\x2A\x40\x03\xC0\x8B\x3C\xC6\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\x2A\x2A\x2A\x2A\x2A\x83\xC4\x2A\xEB\x11\x39"
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
}
"FireOutput"
{
"library" "server"
"windows" "\x55\x8B\xEC\x83\x2A\x2A\x81\xEC\x2A\x2A\x2A\x2A\x53\x56\x8B\x71\x2A\x57\x89"
"windows" "\x55\x8B\xEC\x81\x2A\x2A\x2A\x2A\x2A\x53\x56\x8B\x71\x2A\x57\x89\x2A\x2A\xC7"
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
}
}
+38 -38
View File
@@ -18,68 +18,68 @@
{
"GiveNamedItem"
{
"windows" "428"
"linux" "429"
"windows" "431"
"linux" "432"
}
"RemovePlayerItem"
{
"windows" "301"
"linux" "302"
"windows" "304"
"linux" "305"
}
"Weapon_GetSlot"
{
"windows" "299"
"linux" "300"
"windows" "302"
"linux" "303"
}
"Ignite"
{
"windows" "238"
"linux" "239"
"windows" "240"
"linux" "241"
}
"Extinguish"
{
"windows" "242"
"linux" "243"
"windows" "244"
"linux" "245"
}
"Teleport"
{
"windows" "106"
"linux" "107"
"windows" "107"
"linux" "108"
}
"CommitSuicide"
{
"windows" "466"
"linux" "466"
"windows" "470"
"linux" "470"
}
"GetVelocity"
{
"windows" "138"
"linux" "139"
"windows" "139"
"linux" "140"
}
"EyeAngles"
{
"windows" "129"
"linux" "130"
"windows" "130"
"linux" "131"
}
"AcceptInput"
{
"windows" "34"
"linux" "35"
"windows" "35"
"linux" "36"
}
"DispatchKeyValue"
{
"windows" "29"
"linux" "28"
"windows" "30"
"linux" "29"
}
"DispatchKeyValueFloat"
{
"windows" "28"
"linux" "29"
"windows" "29"
"linux" "30"
}
"DispatchKeyValueVector"
{
"windows" "27"
"linux" "30"
"windows" "28"
"linux" "31"
}
"SetEntityModel"
{
@@ -88,18 +88,18 @@
}
"WeaponEquip"
{
"windows" "292"
"linux" "293"
"windows" "295"
"linux" "296"
}
"Activate"
{
"windows" "31"
"linux" "32"
"windows" "32"
"linux" "33"
}
"PlayerRunCmd"
{
"windows" "446"
"linux" "447"
"windows" "449"
"linux" "450"
}
"FireOutputBackup"
{
@@ -113,31 +113,31 @@
{
"library" "server"
"windows" "\x53\x55\x56\x8B\x74\x24\x10\x57\x85\xF6\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x64\x8B\xCB"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x31\xC0\x8B\x75\x2A\x85\xF6\x0F"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x31\xC0\x85\xF6\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x00\x89"
}
"CreateEntityByName"
{
"library" "server"
"windows" "\x56\x8B\x74\x24\x0C\x57\x8B\x7C\x24\x0C\x83\xFE\xFF\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8B\x75\x2A\x83\xFE\xFF\x74\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x00\x8B"
"windows" "\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x53\x8B\x5C\x2A\x2A\x56\x8B\x74\x2A\x2A\x57\x83"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x83\xFE\xFF\x0F\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\x8D"
}
"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" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8B\x55\x2A\x85\xD2\x74\x75"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x85\xC0\x74\x2A\x8B\x08\x89\x04\x24\x89\x2A\x2A\xFF\x2A\x2A\x8B\x00\x25\xFF\x0F\x00\x00\xC1\xE0\x2A\x8D\x04\x06\x8B\x70\x2A\x8B\x55\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x89"
}
"FireOutput"
{
"library" "server"
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\x53\x55\x56\x8B\x71\x2A\x57\x89"
"linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8B\x45\x2A\x8B\x78\x2A\x85\xFF\x0F"
"linux" "\x55\x89\xE5\x57\x56\x53\x81\xEC\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x2A\x85\xF6\x0F\x2A\x2A\x2A\x2A\x2A\xC7"
}
"EntityFactory"
{
"library" "server"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x80\x2A\x2A\x2A\x2A\x2A\x2A\x74\x2A\x8D\x83\x2A\x2A\x2A\x2A\x83"
"linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2A\xE8\x2A\x2A\x2A\x2A\x81\xC3\x2A\x2A\x2A\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x80\x2A\x2A\x2A\x2A\x2A\x2A\x74\x2A\x89\xF8\x83\xC4\x2A\x5B\x5E\x5F\x5D\xC3\x8D\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x85\xC0\x74\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\xC7\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xC7\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xC7\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xC7"
}
}
}
+20 -11
View File
@@ -6,8 +6,8 @@
{
"GiveNamedItem"
{
"windows" "351"
"linux" "352"
"windows" "352"
"linux" "353"
}
"RemovePlayerItem"
{
@@ -36,8 +36,8 @@
}
"CommitSuicide"
{
"windows" "392"
"linux" "392"
"windows" "393"
"linux" "393"
}
"GetVelocity"
{
@@ -86,39 +86,48 @@
}
"PlayerRunCmd"
{
"windows" "371"
"linux" "372"
"windows" "372"
"linux" "373"
}
"FireOutputBackup"
{
"windows" "6"
"windows" "9"
"linux" "10"
}
"s_pTempEntities"
{
"windows" "19"
}
}
"Signatures"
{
"CBaseTempEntity"
{
"library" "server"
"windows" "\x55\x8B\xEC\x8B\xC1\x8B\x2A\x2A\xC7\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x8B\x15\x2A\x2A\x2A\x2A\x89"
}
"FindEntityByClassname"
{
"library" "server"
"windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x2A\x2A\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\x2A\x2A\x2A\x2A\x40\xC1\xE0\x2A\x8B\x3C\x30\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x2A\x2A\x8B\x2D\x2A\x2A\x2A\x2A\x8D\xA4\x2A\x2A\x2A\x2A\x2A\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x2A\x39"
"windows" "\x55\x8B\xEC\x53\x56\x8B\xF1\x8B\x2A\x2A\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x40\xC1\xE0\x2A\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\x2A\x2A\x2A\x2A\x2A\x83\xC4\x2A\xEB\x2A\x39"
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
}
"CreateEntityByName"
{
"library" "server"
"linux" "@_Z18CreateEntityByNamePKci"
"windows" "\x56\x8B\x74\x24\x2A\x57\x8B\x7C\x24\x2A\x83\xFE\xFF\x74\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x2A\x56\xFF\xD2"
"windows" "\x55\x8B\xEC\x56\x8B\x2A\x2A\x57\x8B\x2A\x2A\x83\x2A\x2A\x74\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x2A\x56\xFF\xD2"
}
"DispatchSpawn"
{
"library" "server"
"linux" "@_Z13DispatchSpawnP11CBaseEntity"
"windows" "\x53\x55\x56\x8B\x74\x2A\x2A\x57\x85\xF6\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x2A\x8B\xCB"
"windows" "\x55\x8B\xEC\x51\x53\x56\x8B\x75\x2A\x57\x85\xF6\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B"
}
"FireOutput"
{
"library" "server"
"windows" "\x81\xEC\x1C\x01\x00\x00\x53\x55\x56\x8B\x71\x14\x57\x89"
"windows" "\x55\x8B\xEC\x81\x2A\x2A\x2A\x2A\x2A\x53\x56\x8B\x71\x2A\x57\x89\x2A\x2A\xC7"
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
}
}
+32 -32
View File
@@ -18,68 +18,68 @@
{
"GiveNamedItem"
{
"windows" "386"
"linux" "387"
"windows" "389"
"linux" "390"
}
"RemovePlayerItem"
{
"windows" "259"
"linux" "260"
"windows" "262"
"linux" "263"
}
"Weapon_GetSlot"
{
"windows" "257"
"linux" "258"
"windows" "260"
"linux" "261"
}
"Ignite"
{
"windows" "202"
"linux" "203"
"windows" "204"
"linux" "205"
}
"Extinguish"
{
"windows" "206"
"linux" "207"
"windows" "208"
"linux" "209"
}
"Teleport"
{
"windows" "105"
"linux" "106"
"windows" "106"
"linux" "107"
}
"CommitSuicide"
{
"windows" "425"
"linux" "425"
"windows" "428"
"linux" "428"
}
"GetVelocity"
{
"windows" "137"
"linux" "138"
"windows" "138"
"linux" "139"
}
"EyeAngles"
{
"windows" "128"
"linux" "129"
"windows" "129"
"linux" "130"
}
"AcceptInput"
{
"windows" "34"
"linux" "35"
"windows" "35"
"linux" "36"
}
"DispatchKeyValue"
{
"windows" "29"
"linux" "28"
"windows" "30"
"linux" "29"
}
"DispatchKeyValueFloat"
{
"windows" "28"
"linux" "29"
"windows" "29"
"linux" "30"
}
"DispatchKeyValueVector"
{
"windows" "27"
"linux" "30"
"windows" "28"
"linux" "31"
}
"SetEntityModel"
{
@@ -88,18 +88,18 @@
}
"WeaponEquip"
{
"windows" "250"
"linux" "251"
"windows" "253"
"linux" "254"
}
"Activate"
{
"windows" "31"
"linux" "32"
"windows" "32"
"linux" "33"
}
"PlayerRunCmd"
{
"windows" "404"
"linux" "405"
"windows" "407"
"linux" "408"
}
}
}
+32 -32
View File
@@ -18,63 +18,63 @@
{
"GiveNamedItem"
{
"windows" "386"
"linux" "387"
"windows" "389"
"linux" "390"
}
"RemovePlayerItem"
{
"windows" "259"
"linux" "259"
"windows" "262"
"linux" "263"
}
"Weapon_GetSlot"
{
"windows" "257"
"linux" "258"
"windows" "260"
"linux" "261"
}
"Ignite"
{
"windows" "202"
"linux" "203"
"windows" "204"
"linux" "205"
}
"Extinguish"
{
"windows" "206"
"linux" "207"
"windows" "208"
"linux" "209"
}
"Teleport"
{
"windows" "105"
"linux" "106"
"windows" "106"
"linux" "107"
}
"CommitSuicide"
{
"windows" "427"
"linux" "427"
"windows" "430"
"linux" "430"
}
"GetVelocity"
{
"windows" "137"
"linux" "138"
"windows" "138"
"linux" "139"
}
"EyeAngles"
{
"windows" "128"
"linux" "129"
"windows" "129"
"linux" "130"
}
"DispatchKeyValue"
{
"windows" "29"
"linux" "28"
"windows" "30"
"linux" "29"
}
"DispatchKeyValueFloat"
{
"windows" "28"
"linux" "29"
"windows" "29"
"linux" "30"
}
"DispatchKeyValueVector"
{
"windows" "27"
"linux" "30"
"windows" "28"
"linux" "31"
}
"SetEntityModel"
{
@@ -83,23 +83,23 @@
}
"AcceptInput"
{
"windows" "34"
"linux" "35"
"windows" "35"
"linux" "36"
}
"WeaponEquip"
{
"windows" "250"
"linux" "251"
"windows" "253"
"linux" "254"
}
"Activate"
{
"windows" "31"
"linux" "32"
"windows" "32"
"linux" "33"
}
"PlayerRunCmd"
{
"windows" "404"
"linux" "405"
"windows" "407"
"linux" "408"
}
}
}
+20 -4
View File
@@ -48,8 +48,8 @@
}
"CommitSuicide"
{
"windows" "397"
"linux" "397"
"windows" "398"
"linux" "398"
}
"GetVelocity"
{
@@ -96,13 +96,23 @@
"windows" "32"
"linux" "33"
}
"PlayerRunCmd"
{
"windows" "375"
"linux" "376"
}
"FireOutputBackup"
{
"windows" "6"
"linux" "10"
}
}
"Signatures"
{
"FindEntityByClassname"
{
"library" "server"
"windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x2A\x2A\x8B\x00\x25\xFF\x0F\x00\x00\x40\xC1\xC1\xE0\x04\x8B\x2A\x2A\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x2A\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\x2A\xEB\x2A\x39"
"windows" "\x53\x55\x56\x8B\xF1\x8B\x2A\x2A\x2A\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x40\xC1\xE0\x2A\x8B\x3C\x30\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x2A\x39"
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
}
"CreateEntityByName"
@@ -116,7 +126,13 @@
"library" "server"
"linux" "@_Z13DispatchSpawnP11CBaseEntity"
"windows" "\x53\x55\x56\x8B\x74\x2A\x2A\x57\x85\xF6\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x2A\x8B\xCB"
}
}
"FireOutput"
{
"library" "server"
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\x53\x55\x56\x8B\x71\x2A\x57\x89"
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
}
}
}
}
+8
View File
@@ -167,4 +167,12 @@
{
"game" "fistful_of_frags"
}
"game.alienswarm.txt"
{
"game" "swarm"
}
"game.dinodday.txt"
{
"game" "dinodday"
}
}
+12 -5
View File
@@ -31,7 +31,7 @@
{
"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"
"linux" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayer"
"linux" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb"
}
"CalcCritical"
{
@@ -84,8 +84,8 @@
"GetHoliday"
{
"library" "server"
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x83\x2A\x2A\x2A\x56\x8B\xF1\x89\x2A\x2A\x2A\x74\x2A\xB8"
"linux" "@_ZN12CTFGameRules10GetHolidayEv"
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\x53\x55\x56\x57\x6A\x00\xE8\x2A\x2A\x2A\x2A\x89"
"linux" "@_Z15UTIL_GetHolidayv"
}
"MakeBleed"
{
@@ -93,13 +93,20 @@
"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"
"linux" "@_ZN15CTFPlayerShared9MakeBleedEP9CTFPlayerP13CTFWeaponBasef"
}
"IsPlayerInDuel"
{
"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"
"linux" "@_Z21DuelMiniGame_IsInDuelP9CTFPlayer"
}
}
"Offsets"
{
"ForceRespawn"
{
"windows" "314"
"linux" "315"
"windows" "317"
"linux" "318"
}
}
}
+2 -1
View File
@@ -169,7 +169,8 @@ public OnMapStart()
PrecacheSound(SOUND_BOOM, true);
PrecacheSound(SOUND_FREEZE, true);
if (GuessSDKVersion() == SOURCE_SDK_LEFT4DEAD2)
new sdkversion = GuessSDKVersion();
if (sdkversion == SOURCE_SDK_LEFT4DEAD || sdkversion == SOURCE_SDK_LEFT4DEAD2)
{
g_BeamSprite = PrecacheModel("materials/sprites/laserbeam.vmt");
g_HaloSprite = PrecacheModel("materials/sprites/glow01.vmt");
+20 -2
View File
@@ -1,7 +1,7 @@
/**
* vim: set ts=4 :
* =============================================================================
* SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved.
* SourceMod (C)2004-2011 AlliedModders LLC. All rights reserved.
* =============================================================================
*
* This file is part of the SourceMod/SourcePawn SDK.
@@ -241,7 +241,7 @@ native GetClientCookieTime(client, Handle:cookie);
/**
* Do not edit below this line!
*/
public Extension:__ext_clientprefs =
public Extension:__ext_cprefs =
{
name = "Client Preferences",
file = "clientprefs.ext",
@@ -252,3 +252,21 @@ public Extension:__ext_clientprefs =
required = 0,
#endif
};
#if !defined REQUIRE_EXTENSIONS
public __ext_cprefs_SetNTVOptional()
{
MarkNativeAsOptional("RegClientCookie");
MarkNativeAsOptional("FindClientCookie");
MarkNativeAsOptional("SetClientCookie");
MarkNativeAsOptional("GetClientCookie");
MarkNativeAsOptional("AreClientCookiesCached");
MarkNativeAsOptional("SetCookiePrefabMenu");
MarkNativeAsOptional("SetCookieMenuItem");
MarkNativeAsOptional("ShowCookieMenu");
MarkNativeAsOptional("GetCookieIterator");
MarkNativeAsOptional("ReadCookieIterator");
MarkNativeAsOptional("GetCookieAccess");
MarkNativeAsOptional("GetClientCookieTime");
}
#endif
+1 -1
View File
@@ -53,7 +53,7 @@ enum NetFlow
* not be used in OnPluginStart().
*/
#define MAXPLAYERS 64 /**< Maximum number of players SourceMod supports */
#define MAXPLAYERS 65 /**< Maximum number of players SourceMod supports */
#define MAX_NAME_LENGTH 32 /**< Maximum buffer required to store a client name */
public const MaxClients; /**< Maximum number of players the server supports (dynamic) */
+15
View File
@@ -162,6 +162,21 @@ native SetEdictFlags(edict, flags);
*/
native bool:GetEdictClassname(edict, String:clsname[], maxlength);
/**
* Retrieves the classname of an entity.
* This is like GetEdictClassname(), except it works for ALL
* entities, not just edicts.
*
* @param edict Index of the entity.
* @param clsname Buffer to store the classname.
* @param maxlength Maximum length of the buffer.
* @return True on success, false if there is no classname set.
*/
stock bool:GetEntityClassname(entity, String:clsname[], maxlength)
{
return !!GetEntPropString(entity, Prop_Data, "m_iClassname", clsname, maxlength);
}
/**
* Retrieves an entity's networkable serverclass name.
* This is not the same as the classname and is used for networkable state changes.
+25 -24
View File
@@ -123,7 +123,8 @@ enum RenderFx
#define IN_GRENADE1 (1 << 23) // grenade 1
#define IN_GRENADE2 (1 << 24) // grenade 2
// CBaseEntity::m_fFlags
// Note: these are only for use with GetEntityFlags and SetEntityFlags
// and may not match the game's actual, internal m_fFlags values.
// PLAYER SPECIFIC FLAGS FIRST BECAUSE WE USE ONLY A FEW BITS OF NETWORK PRECISION
#define FL_ONGROUND (1 << 0) // At rest / on the ground
#define FL_DUCKING (1 << 1) // Player flag -- Player is fully crouched
@@ -159,36 +160,36 @@ enum RenderFx
#define FL_DISSOLVING (1 << 28) // We're dissolving!
#define FL_TRANSRAGDOLL (1 << 29) // In the process of turning into a client side ragdoll.
#define FL_UNBLOCKABLE_BY_PLAYER (1 << 30) // pusher that can't be blocked by the player
// END m_fFlags #defines
#define FL_FREEZING (1 << 31) // We're becoming frozen!
#define FL_EP2V_UNKNOWN1 (1 << 31) // Unknown
// END entity flag #defines
/**
* Get an entity's flags.
*
* @note The game's actual flags are internally translated by SM
* to match the entity flags defined above as the actual values
* can differ per engine.
*
* @param entity Entity index.
* @return Entity's flags, see m_fFlag defines above
* @return Entity's flags, see entity flag defines above.
* @error Invalid entity index, or lack of mod compliance.
*/
stock GetEntityFlags(entity)
{
static bool:gotconfig = false;
static String:datamap[32];
if (!gotconfig)
{
new Handle:gc = LoadGameConfigFile("core.games");
new bool:exists = GameConfGetKeyValue(gc, "m_fFlags", datamap, sizeof(datamap));
CloseHandle(gc);
if (!exists)
{
strcopy(datamap, sizeof(datamap), "m_fFlags");
}
gotconfig = true;
}
return GetEntProp(entity, Prop_Data, datamap);
}
native GetEntityFlags(entity);
/**
* Sets an entity's flags.
*
* @note The entity flags as defined above are internally translated by SM
* to match the current game's expected value for the flags as
* the actual values can differ per engine.
*
* @param entity Entity index.
* @param flags Entity flags, see entity flag defines above.
* @noreturn
* @error Invalid entity index, or lack of mod compliance.
*/
native SetEntityFlags(entity, flags);
/**
+25
View File
@@ -94,3 +94,28 @@ native GetLanguageCount();
*/
native GetLanguageInfo(language, String:code[]="", codeLen=0, String:name[]="", nameLen=0);
/**
* Sets the language number of a client.
*
* @param client Client index.
* @param language Language number.
* @noreturn
* @error Invalid client index or client not in game.
*/
native SetClientLanguage(client, language);
/**
* Retrieves the language number from a language code.
*
* @param code Language code (2-3 characters usually).
* @return Language number. -1 if not found.
*/
native GetLanguageByCode(const String:code[]);
/**
* Retrieves the language number from a language name.
*
* @param name Language name (case insensitive).
* @return Language number. -1 if not found.
*/
native GetLanguageByName(const String:name[]);
+16 -4
View File
@@ -82,7 +82,8 @@ enum TFCond
TFCond_TeleportedGlow,
TFCond_Taunting,
TFCond_UberchargeFading,
TFCond_Unknown1,
TFCond_Unknown1, //9
TFCond_CloakFlicker = 9,
TFCond_Teleporting,
TFCond_Kritzkrieged,
TFCond_Unknown2,
@@ -93,14 +94,16 @@ enum TFCond
TFCond_Charging,
TFCond_DemoBuff,
TFCond_CritCola,
TFCond_InHealRadius,
TFCond_Healing,
TFCond_OnFire = 22,
TFCond_OnFire,
TFCond_Overhealed,
TFCond_Jarated,
TFCond_Bleeding,
TFCond_DefenseBuffed,
TFCond_Milked
TFCond_Milked,
TFCond_RegenBuffed,
TFCond_MarkedForDeath
};
enum TFHoliday
@@ -272,6 +275,14 @@ forward Action:TF2_CalcIsAttackCritical(client, weapon, String:weaponname[], &bo
*/
forward Action:TF2_OnGetHoliday(&TFHoliday:holiday);
/**
* Returns whether or not a client (Player) is in a duel.
*
* @param client Client Index.
* @return Boolean of whether or not the client/player is dueling.
*/
native bool:TF2_IsPlayerInDuel(client);
/**
* Do not edit below this line!
*/
@@ -302,5 +313,6 @@ public __ext_tf2_SetNTVOptional()
MarkNativeAsOptional("TF2_MakeBleed");
MarkNativeAsOptional("TF2_GetResourceEntity");
MarkNativeAsOptional("TF2_GetClass");
MarkNativeAsOptional("TF2_IsPlayerInDuel");
}
#endif
+30 -5
View File
@@ -48,6 +48,7 @@
#define TF_CONDFLAG_TELEPORTGLOW (1 << 6)
#define TF_CONDFLAG_TAUNTING (1 << 7)
#define TF_CONDFLAG_UBERCHARGEFADE (1 << 8)
#define TF_CONDFLAG_CLOAKFLICKER (1 << 9)
#define TF_CONDFLAG_TELEPORTING (1 << 10)
#define TF_CONDFLAG_KRITZKRIEGED (1 << 11)
#define TF_CONDFLAG_DEADRINGERED (1 << 13)
@@ -57,13 +58,16 @@
#define TF_CONDFLAG_CHARGING (1 << 17)
#define TF_CONDFLAG_DEMOBUFF (1 << 18)
#define TF_CONDFLAG_CRITCOLA (1 << 19)
#define TF_CONDFLAG_HEALING (1 << 20)
#define TF_CONDFLAG_INHEALRADIUS (1 << 20)
#define TF_CONDFLAG_HEALING (1 << 21)
#define TF_CONDFLAG_ONFIRE (1 << 22)
#define TF_CONDFLAG_OVERHEALED (1 << 23)
#define TF_CONDFLAG_JARATED (1 << 24)
#define TF_CONDFLAG_BLEEDING (1 << 25)
#define TF_CONDFLAG_DEFENSEBUFFED (1 << 26)
#define TF_CONDFLAG_MILKED (1 << 27)
#define TF_CONDFLAG_REGENBUFFED (1 << 28)
#define TF_CONDFLAG_MARKEDFORDEATH (1 << 29)
#define TF_DEATHFLAG_KILLERDOMINATION (1 << 0)
#define TF_DEATHFLAG_ASSISTERDOMINATION (1 << 1)
@@ -71,6 +75,8 @@
#define TF_DEATHFLAG_ASSISTERREVENGE (1 << 3)
#define TF_DEATHFLAG_FIRSTBLOOD (1 << 4)
#define TF_DEATHFLAG_DEADRINGER (1 << 5)
#define TF_DEATHFLAG_INTERRUPTED (1 << 6)
#define TF_DEATHFLAG_GIBBED (1 << 7)
// Custom kill identifiers for the customkill property on the player_death event
enum {
@@ -112,7 +118,10 @@ enum {
TF_CUSTOM_CARRIED_BUILDING,
TF_CUSTOM_COMBO_PUNCH,
TF_CUSTOM_TAUNT_ENGINEER_ARM,
TF_CUSTOM_FISH_KILL
TF_CUSTOM_FISH_KILL,
TF_CUSTOM_TRIGGER_HURT,
TF_CUSTOM_DECAPITATION_BOSS,
TF_CUSTOM_STICKBOMB_EXPLOSION
};
// Weapon codes as used in some events, such as player_death
@@ -190,7 +199,22 @@ enum {
TF_WEAPON_SENTRY_REVENGE,
TF_WEAPON_JAR_MILK,
TF_WEAPON_HANDGUN_SCOUT_PRIMARY,
TF_WEAPON_BAT_FISH
TF_WEAPON_BAT_FISH,
TF_WEAPON_CROSSBOW,
TF_WEAPON_STICKBOMB
};
// TF2 Weapon Slots for GetPlayerWeaponSlot
enum
{
TFWeaponSlot_Primary,
TFWeaponSlot_Secondary,
TFWeaponSlot_Melee,
TFWeaponSlot_Grenade,
TFWeaponSlot_Building,
TFWeaponSlot_PDA,
TFWeaponSlot_Item1,
TFWeaponSlot_Item2
};
// Identifiers for the eventtype property on the teamplay_flag_event event
@@ -198,7 +222,8 @@ enum {
TF_FLAGEVENT_PICKEDUP = 1,
TF_FLAGEVENT_CAPTURED,
TF_FLAGEVENT_DEFENDED,
TF_FLAGEVENT_DROPPED
TF_FLAGEVENT_DROPPED,
TF_FLAGEVENT_RETURNED
};
enum TFResourceType
@@ -388,7 +413,7 @@ stock TF2_RemoveAllWeapons(client)
*/
stock TF2_GetPlayerConditionFlags(client)
{
return GetEntProp(client, Prop_Send, "m_nPlayerCond");
return GetEntProp(client, Prop_Send, "m_nPlayerCond")|GetEntProp(client, Prop_Send, "_condition_bits");
}
/**
+2 -2
View File
@@ -37,6 +37,6 @@
#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */
#define SOURCEMOD_V_MINOR 3 /**< SourceMod Minor version */
#define SOURCEMOD_V_RELEASE 5 /**< SourceMod Release version */
#define SOURCEMOD_V_RELEASE 7 /**< SourceMod Release version */
#define SOURCEMOD_VERSION "1.3.5" /**< SourceMod version string (major.minor.release.build) */
#define SOURCEMOD_VERSION "1.3.7" /**< SourceMod version string (major.minor.release.build) */
+6 -6
View File
@@ -276,7 +276,7 @@ public Action:Command_SetNextmap(client, args)
}
ShowActivity(client, "%t", "Changed Next Map", map);
LogMessage("\"%L\" changed nextmap to \"%s\"", client, map);
LogAction(client, -1, "\"%L\" changed nextmap to \"%s\"", client, map);
SetNextMap(map);
g_MapVoteCompleted = true;
@@ -635,7 +635,7 @@ InitiateVote(MapChange:when, Handle:inputlist=INVALID_HANDLE)
SetMenuExitButton(g_VoteMenu, false);
VoteMenuToAll(g_VoteMenu, voteDuration);
LogMessage("Voting for next map has started.");
LogAction(-1, -1, "Voting for next map has started.");
PrintToChatAll("[SM] %t", "Nextmap Voting Started");
}
@@ -696,7 +696,7 @@ public Handler_MapVoteFinished(Handle:menu,
}
PrintToChatAll("[SM] %t", "Current Map Extended", RoundToFloor(float(item_info[0][VOTEINFO_ITEM_VOTES])/float(num_votes)*100), num_votes);
LogMessage("Voting for next map has finished. The current map has been extended.");
LogAction(-1, -1, "Voting for next map has finished. The current map has been extended.");
// We extended, so we'll have to vote again.
g_HasVoteStarted = false;
@@ -707,7 +707,7 @@ public Handler_MapVoteFinished(Handle:menu,
else if (strcmp(map, VOTE_DONTCHANGE, false) == 0)
{
PrintToChatAll("[SM] %t", "Current Map Stays", RoundToFloor(float(item_info[0][VOTEINFO_ITEM_VOTES])/float(num_votes)*100), num_votes);
LogMessage("Voting for next map has finished. 'No Change' was the winner");
LogAction(-1, -1, "Voting for next map has finished. 'No Change' was the winner");
g_HasVoteStarted = false;
CreateNextVote();
@@ -736,7 +736,7 @@ public Handler_MapVoteFinished(Handle:menu,
g_MapVoteCompleted = true;
PrintToChatAll("[SM] %t", "Nextmap Voting Finished", map, RoundToFloor(float(item_info[0][VOTEINFO_ITEM_VOTES])/float(num_votes)*100), num_votes);
LogMessage("Voting for next map has finished. Nextmap: %s.", map);
LogAction(-1, -1, "Voting for next map has finished. Nextmap: %s.", map);
}
}
@@ -967,7 +967,7 @@ public Native_InitiateVote(Handle:plugin, numParams)
new MapChange:when = MapChange:GetNativeCell(1);
new Handle:inputarray = Handle:GetNativeCell(2);
LogMessage("Starting map vote because outside request");
LogAction(-1, -1, "Starting map vote because outside request");
InitiateVote(when, inputarray);
}
+2 -2
View File
@@ -192,13 +192,13 @@ public Action:Command_Nominate(client, args)
{
if (!client)
{
return Plugin_Continue;
return Plugin_Handled;
}
if (args == 0)
{
AttemptNominate(client);
return Plugin_Continue;
return Plugin_Handled;
}
decl String:mapname[64];
+1 -1
View File
@@ -104,7 +104,7 @@ public Action:Timer_RandomizeNextmap(Handle:timer)
RemoveFromArray(g_OldMapList, 0);
}
LogMessage("RandomCycle has chosen %s for the nextmap.", map);
LogAction(-1, -1, "RandomCycle has chosen %s for the nextmap.", map);
return Plugin_Stop;
}
+2 -2
View File
@@ -162,12 +162,12 @@ public Action:Command_RTV(client, args)
{
if (!g_CanRTV || !client)
{
return Plugin_Continue;
return Plugin_Handled;
}
AttemptRTV(client);
return Plugin_Continue;
return Plugin_Handled;
}
public Action:Command_Say(client, args)
+1 -1
View File
@@ -1 +1 @@
1.3.5
1.3.7
+3 -2
View File
@@ -38,6 +38,7 @@
*/
#include <IShareSys.h>
#include <sp_vm_api.h>
#define SMINTERFACE_NINVOKE_NAME "INativeInterface"
#define SMINTERFACE_NINVOKE_VERSION 1
@@ -65,7 +66,7 @@ namespace SourceMod
* @param name Name of native.
* @return True if native was found, false otherwise.
*/
virtual bool Start(IPluginContext *pContext, const char *name) = 0;
virtual bool Start(SourcePawn::IPluginContext *pContext, const char *name) = 0;
/**
* @brief Invokes the native. The preparation state is cleared immediately, meaning that
@@ -92,7 +93,7 @@ namespace SourceMod
* @param bytes Number of bytes for memory (NINVOKE_DEFAULT_MEMORY recommended).
* @return New runtime, or NULL on failure.
*/
virtual IPluginRuntime *CreateRuntime(const char *name, size_t bytes) = 0;
virtual SourcePawn::IPluginRuntime *CreateRuntime(const char *name, size_t bytes) = 0;
/**
* @brief Creates an object that can be used to invoke a single native code.
+2 -1
View File
@@ -71,7 +71,8 @@ ifeq "$(ENGINE)" "left4dead"
METAMOD = $(MMSOURCE18)/core
INCLUDE += -I$(HL2SDK)/public/game/server
SRCDS = $(SRCDS_BASE)/l4d
LIB_SUFFIX = _i486.so
LIB_PREFIX = lib
LIB_SUFFIX = .so
override ENGSET = true
endif
ifeq "$(ENGINE)" "left4dead2"
+2 -1
View File
@@ -74,7 +74,8 @@ ifeq "$(ENGINE)" "left4dead"
METAMOD = $(MMSOURCE18)/core
INCLUDE += -I$(HL2SDK)/public/game/server
SRCDS = $(SRCDS_BASE)/l4d
LIB_SUFFIX = _i486.so
LIB_PREFIX = lib
LIB_SUFFIX = .so
override ENGSET = true
endif
ifeq "$(ENGINE)" "left4dead2"
+3 -1
View File
@@ -25,4 +25,6 @@ Ye who reads this line of text shall cease to exist.
u
r
tsu
smalltsu
_
oh
+16
View File
@@ -29,6 +29,11 @@
#include "sc.h"
#include "memfile.h"
#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined DARWIN
#include <sys/types.h>
#include <sys/stat.h>
#endif
/* pc_printf()
* Called for general purpose "console" output. This function prints general
* purpose messages; errors go through pc_error(). The function is modelled
@@ -100,6 +105,17 @@ static char *prefix[3]={ "error", "fatal error", "warning" };
*/
void *pc_opensrc(char *filename)
{
#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined DARWIN
struct stat fileInfo;
if (stat(filename, &fileInfo) != 0) {
return NULL;
}
if (S_ISDIR(fileInfo.st_mode)) {
return NULL;
}
#endif
return fopen(filename,"rt");
}
+474 -466
View File
@@ -1,466 +1,474 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="spcomp"
ProjectGUID="{B4C844FF-008D-4BD5-B82F-DC06E706C64B}"
RootNamespace="spcomp"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="0"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="false"
EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="0"
RuntimeLibrary="1"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="true"
WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\libpawnc.c"
>
</File>
<File
RelativePath="..\lstring.c"
>
</File>
<File
RelativePath="..\memfile.c"
>
</File>
<File
RelativePath="..\pawncc.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc1.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc2.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc3.c"
>
</File>
<File
RelativePath="..\sc4.c"
>
</File>
<File
RelativePath="..\sc5.c"
>
</File>
<File
RelativePath="..\sc6.c"
>
</File>
<File
RelativePath="..\sc7.c"
>
</File>
<File
RelativePath="..\scexpand.c"
>
</File>
<File
RelativePath="..\sci18n.c"
>
</File>
<File
RelativePath="..\sclist.c"
>
</File>
<File
RelativePath="..\scmemfil.c"
>
</File>
<File
RelativePath="..\scstate.c"
>
</File>
<File
RelativePath="..\sctracker.c"
>
</File>
<File
RelativePath="..\scvars.c"
>
</File>
<File
RelativePath="..\sp_file.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\amx.h"
>
</File>
<File
RelativePath="..\amxdbg.h"
>
</File>
<File
RelativePath="..\lstring.h"
>
</File>
<File
RelativePath="..\memfile.h"
>
</File>
<File
RelativePath="..\osdefs.h"
>
</File>
<File
RelativePath="..\sc.h"
>
</File>
<File
RelativePath="..\sctracker.h"
>
</File>
<File
RelativePath="..\sp_file.h"
>
</File>
<File
RelativePath="..\..\..\public\sourcepawn\sp_file_headers.h"
>
</File>
<File
RelativePath="..\svn_version.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\libpawnc.rc"
>
</File>
<File
RelativePath="..\sc5.scp"
>
</File>
<File
RelativePath="..\sc7.scp"
>
</File>
<File
RelativePath="..\svn_version.tpl"
>
</File>
</Filter>
<Filter
Name="zlib"
>
<Filter
Name="Source Files"
>
<File
RelativePath="..\zlib\adler32.c"
>
</File>
<File
RelativePath="..\zlib\compress.c"
>
</File>
<File
RelativePath="..\zlib\crc32.c"
>
</File>
<File
RelativePath="..\zlib\deflate.c"
>
</File>
<File
RelativePath="..\zlib\gzio.c"
>
</File>
<File
RelativePath="..\zlib\infback.c"
>
</File>
<File
RelativePath="..\zlib\inffast.c"
>
</File>
<File
RelativePath="..\zlib\inflate.c"
>
</File>
<File
RelativePath="..\zlib\inftrees.c"
>
</File>
<File
RelativePath="..\zlib\trees.c"
>
</File>
<File
RelativePath="..\zlib\uncompr.c"
>
</File>
<File
RelativePath="..\zlib\zutil.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
>
<File
RelativePath="..\zlib\crc32.h"
>
</File>
<File
RelativePath="..\zlib\deflate.h"
>
</File>
<File
RelativePath="..\zlib\inffast.h"
>
</File>
<File
RelativePath="..\zlib\inffixed.h"
>
</File>
<File
RelativePath="..\zlib\inflate.h"
>
</File>
<File
RelativePath="..\zlib\inftrees.h"
>
</File>
<File
RelativePath="..\zlib\trees.h"
>
</File>
<File
RelativePath="..\zlib\zconf.h"
>
</File>
<File
RelativePath="..\zlib\zlib.h"
>
</File>
<File
RelativePath="..\zlib\zutil.h"
>
</File>
</Filter>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="spcomp"
ProjectGUID="{B4C844FF-008D-4BD5-B82F-DC06E706C64B}"
RootNamespace="spcomp"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="0"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="false"
EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="0"
RuntimeLibrary="1"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="true"
WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\libpawnc.c"
>
</File>
<File
RelativePath="..\lstring.c"
>
</File>
<File
RelativePath="..\memfile.c"
>
</File>
<File
RelativePath="..\pawncc.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc1.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc2.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc3.c"
>
</File>
<File
RelativePath="..\sc4.c"
>
</File>
<File
RelativePath="..\sc5.c"
>
</File>
<File
RelativePath="..\sc6.c"
>
</File>
<File
RelativePath="..\sc7.c"
>
</File>
<File
RelativePath="..\scexpand.c"
>
</File>
<File
RelativePath="..\sci18n.c"
>
</File>
<File
RelativePath="..\sclist.c"
>
</File>
<File
RelativePath="..\scmemfil.c"
>
</File>
<File
RelativePath="..\scstate.c"
>
</File>
<File
RelativePath="..\sctracker.c"
>
</File>
<File
RelativePath="..\scvars.c"
>
</File>
<File
RelativePath="..\sp_file.c"
>
</File>
<File
RelativePath="..\sp_symhash.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\amx.h"
>
</File>
<File
RelativePath="..\amxdbg.h"
>
</File>
<File
RelativePath="..\lstring.h"
>
</File>
<File
RelativePath="..\memfile.h"
>
</File>
<File
RelativePath="..\osdefs.h"
>
</File>
<File
RelativePath="..\sc.h"
>
</File>
<File
RelativePath="..\sctracker.h"
>
</File>
<File
RelativePath="..\sp_file.h"
>
</File>
<File
RelativePath="..\..\..\public\sourcepawn\sp_file_headers.h"
>
</File>
<File
RelativePath="..\sp_symhash.h"
>
</File>
<File
RelativePath="..\svn_version.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\libpawnc.rc"
>
</File>
<File
RelativePath="..\sc5.scp"
>
</File>
<File
RelativePath="..\sc7.scp"
>
</File>
<File
RelativePath="..\svn_version.tpl"
>
</File>
</Filter>
<Filter
Name="zlib"
>
<Filter
Name="Source Files"
>
<File
RelativePath="..\zlib\adler32.c"
>
</File>
<File
RelativePath="..\zlib\compress.c"
>
</File>
<File
RelativePath="..\zlib\crc32.c"
>
</File>
<File
RelativePath="..\zlib\deflate.c"
>
</File>
<File
RelativePath="..\zlib\gzio.c"
>
</File>
<File
RelativePath="..\zlib\infback.c"
>
</File>
<File
RelativePath="..\zlib\inffast.c"
>
</File>
<File
RelativePath="..\zlib\inflate.c"
>
</File>
<File
RelativePath="..\zlib\inftrees.c"
>
</File>
<File
RelativePath="..\zlib\trees.c"
>
</File>
<File
RelativePath="..\zlib\uncompr.c"
>
</File>
<File
RelativePath="..\zlib\zutil.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
>
<File
RelativePath="..\zlib\crc32.h"
>
</File>
<File
RelativePath="..\zlib\deflate.h"
>
</File>
<File
RelativePath="..\zlib\inffast.h"
>
</File>
<File
RelativePath="..\zlib\inffixed.h"
>
</File>
<File
RelativePath="..\zlib\inflate.h"
>
</File>
<File
RelativePath="..\zlib\inftrees.h"
>
</File>
<File
RelativePath="..\zlib\trees.h"
>
</File>
<File
RelativePath="..\zlib\zconf.h"
>
</File>
<File
RelativePath="..\zlib\zlib.h"
>
</File>
<File
RelativePath="..\zlib\zutil.h"
>
</File>
</Filter>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
+473 -465
View File
@@ -1,465 +1,473 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="spcomp"
ProjectGUID="{B4C844FF-008D-4BD5-B82F-DC06E706C64B}"
RootNamespace="spcomp"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="0"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="false"
EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="0"
RuntimeLibrary="1"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
GenerateDebugInformation="true"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="true"
WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\libpawnc.c"
>
</File>
<File
RelativePath="..\lstring.c"
>
</File>
<File
RelativePath="..\memfile.c"
>
</File>
<File
RelativePath="..\pawncc.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc1.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc2.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc3.c"
>
</File>
<File
RelativePath="..\sc4.c"
>
</File>
<File
RelativePath="..\sc5.c"
>
</File>
<File
RelativePath="..\sc6.c"
>
</File>
<File
RelativePath="..\sc7.c"
>
</File>
<File
RelativePath="..\scexpand.c"
>
</File>
<File
RelativePath="..\sci18n.c"
>
</File>
<File
RelativePath="..\sclist.c"
>
</File>
<File
RelativePath="..\scmemfil.c"
>
</File>
<File
RelativePath="..\scstate.c"
>
</File>
<File
RelativePath="..\sctracker.c"
>
</File>
<File
RelativePath="..\scvars.c"
>
</File>
<File
RelativePath="..\sp_file.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\amx.h"
>
</File>
<File
RelativePath="..\amxdbg.h"
>
</File>
<File
RelativePath="..\lstring.h"
>
</File>
<File
RelativePath="..\memfile.h"
>
</File>
<File
RelativePath="..\osdefs.h"
>
</File>
<File
RelativePath="..\sc.h"
>
</File>
<File
RelativePath="..\sctracker.h"
>
</File>
<File
RelativePath="..\sp_file.h"
>
</File>
<File
RelativePath="..\..\..\public\sourcepawn\sp_file_headers.h"
>
</File>
<File
RelativePath="..\svn_version.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\libpawnc.rc"
>
</File>
<File
RelativePath="..\sc5.scp"
>
</File>
<File
RelativePath="..\sc7.scp"
>
</File>
<File
RelativePath="..\svn_version.tpl"
>
</File>
</Filter>
<Filter
Name="zlib"
>
<Filter
Name="Source Files"
>
<File
RelativePath="..\zlib\adler32.c"
>
</File>
<File
RelativePath="..\zlib\compress.c"
>
</File>
<File
RelativePath="..\zlib\crc32.c"
>
</File>
<File
RelativePath="..\zlib\deflate.c"
>
</File>
<File
RelativePath="..\zlib\gzio.c"
>
</File>
<File
RelativePath="..\zlib\infback.c"
>
</File>
<File
RelativePath="..\zlib\inffast.c"
>
</File>
<File
RelativePath="..\zlib\inflate.c"
>
</File>
<File
RelativePath="..\zlib\inftrees.c"
>
</File>
<File
RelativePath="..\zlib\trees.c"
>
</File>
<File
RelativePath="..\zlib\uncompr.c"
>
</File>
<File
RelativePath="..\zlib\zutil.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
>
<File
RelativePath="..\zlib\crc32.h"
>
</File>
<File
RelativePath="..\zlib\deflate.h"
>
</File>
<File
RelativePath="..\zlib\inffast.h"
>
</File>
<File
RelativePath="..\zlib\inffixed.h"
>
</File>
<File
RelativePath="..\zlib\inflate.h"
>
</File>
<File
RelativePath="..\zlib\inftrees.h"
>
</File>
<File
RelativePath="..\zlib\trees.h"
>
</File>
<File
RelativePath="..\zlib\zconf.h"
>
</File>
<File
RelativePath="..\zlib\zlib.h"
>
</File>
<File
RelativePath="..\zlib\zutil.h"
>
</File>
</Filter>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="spcomp"
ProjectGUID="{B4C844FF-008D-4BD5-B82F-DC06E706C64B}"
RootNamespace="spcomp"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="0"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="false"
EnableFiberSafeOptimizations="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="0"
RuntimeLibrary="1"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMT"
GenerateDebugInformation="true"
SubSystem="1"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="false"
FavorSizeOrSpeed="0"
OmitFramePointers="true"
WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\..\..\public\sourcepawn"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
IgnoreDefaultLibraryNames="LIBC;LIBCD;LIBCMTD"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="0"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\libpawnc.c"
>
</File>
<File
RelativePath="..\lstring.c"
>
</File>
<File
RelativePath="..\memfile.c"
>
</File>
<File
RelativePath="..\pawncc.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AssemblerOutput="0"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc1.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc2.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\sc3.c"
>
</File>
<File
RelativePath="..\sc4.c"
>
</File>
<File
RelativePath="..\sc5.c"
>
</File>
<File
RelativePath="..\sc6.c"
>
</File>
<File
RelativePath="..\sc7.c"
>
</File>
<File
RelativePath="..\scexpand.c"
>
</File>
<File
RelativePath="..\sci18n.c"
>
</File>
<File
RelativePath="..\sclist.c"
>
</File>
<File
RelativePath="..\scmemfil.c"
>
</File>
<File
RelativePath="..\scstate.c"
>
</File>
<File
RelativePath="..\sctracker.c"
>
</File>
<File
RelativePath="..\scvars.c"
>
</File>
<File
RelativePath="..\sp_file.c"
>
</File>
<File
RelativePath="..\sp_symhash.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\amx.h"
>
</File>
<File
RelativePath="..\amxdbg.h"
>
</File>
<File
RelativePath="..\lstring.h"
>
</File>
<File
RelativePath="..\memfile.h"
>
</File>
<File
RelativePath="..\osdefs.h"
>
</File>
<File
RelativePath="..\sc.h"
>
</File>
<File
RelativePath="..\sctracker.h"
>
</File>
<File
RelativePath="..\sp_file.h"
>
</File>
<File
RelativePath="..\..\..\public\sourcepawn\sp_file_headers.h"
>
</File>
<File
RelativePath="..\sp_symhash.h"
>
</File>
<File
RelativePath="..\svn_version.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath="..\libpawnc.rc"
>
</File>
<File
RelativePath="..\sc5.scp"
>
</File>
<File
RelativePath="..\sc7.scp"
>
</File>
<File
RelativePath="..\svn_version.tpl"
>
</File>
</Filter>
<Filter
Name="zlib"
>
<Filter
Name="Source Files"
>
<File
RelativePath="..\zlib\adler32.c"
>
</File>
<File
RelativePath="..\zlib\compress.c"
>
</File>
<File
RelativePath="..\zlib\crc32.c"
>
</File>
<File
RelativePath="..\zlib\deflate.c"
>
</File>
<File
RelativePath="..\zlib\gzio.c"
>
</File>
<File
RelativePath="..\zlib\infback.c"
>
</File>
<File
RelativePath="..\zlib\inffast.c"
>
</File>
<File
RelativePath="..\zlib\inflate.c"
>
</File>
<File
RelativePath="..\zlib\inftrees.c"
>
</File>
<File
RelativePath="..\zlib\trees.c"
>
</File>
<File
RelativePath="..\zlib\uncompr.c"
>
</File>
<File
RelativePath="..\zlib\zutil.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
>
<File
RelativePath="..\zlib\crc32.h"
>
</File>
<File
RelativePath="..\zlib\deflate.h"
>
</File>
<File
RelativePath="..\zlib\inffast.h"
>
</File>
<File
RelativePath="..\zlib\inffixed.h"
>
</File>
<File
RelativePath="..\zlib\inflate.h"
>
</File>
<File
RelativePath="..\zlib\inftrees.h"
>
</File>
<File
RelativePath="..\zlib\trees.h"
>
</File>
<File
RelativePath="..\zlib\zconf.h"
>
</File>
<File
RelativePath="..\zlib\zlib.h"
>
</File>
<File
RelativePath="..\zlib\zutil.h"
>
</File>
</Filter>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
+5 -19
View File
@@ -10,13 +10,8 @@ require 'helpers.pm';
chdir('..');
chdir('..');
our $SSH = 'ssh -i ../../smpvkey';
open(PDBLOG, '../OUTPUT/pdblog.txt') or die "Could not open pdblog.txt: $!\n";
#Sync us up with the main symbol store
rsync('[email protected]:~/public_html/symbols/', '..\\..\\symstore');
#Get version info
my ($version);
$version = Build::ProductVersion(Build::PathFormat('product.version'));
@@ -41,14 +36,14 @@ while (<PDBLOG>)
$line = $_;
$line =~ s/\.pdb/\*/;
chomp $line;
Build::Command("symstore add /r /f \"..\\OUTPUT\\$line\" /s ..\\..\\symstore /t \"SourceMod\" /v \"$version\" /c \"$build_type\"");
Build::Command("symstore add /r /f \"..\\OUTPUT\\$line\" /s \"S:\\sourcemod\" /t \"SourceMod\" /v \"$version\" /c \"$build_type\"");
}
close(PDBLOG);
#Lowercase DLLs. Sigh.
my (@files);
opendir(DIR, "..\\..\\symstore");
opendir(DIR, "S:\\sourcemod");
@files = readdir(DIR);
closedir(DIR);
@@ -57,23 +52,14 @@ for ($i = 0; $i <= $#files; $i++)
{
$file = $files[$i];
next unless ($file =~ /\.dll$/);
next unless (-d "..\\..\\symstore\\$file");
opendir(DIR, "..\\..\\symstore\\$file");
next unless (-d "S:\\sourcemod\\$file");
opendir(DIR, "S:\\sourcemod\\$file");
@subdirs = readdir(DIR);
closedir(DIR);
for ($j = 0; $j <= $#subdirs; $j++)
{
next unless ($subdirs[$j] =~ /[A-Z]/);
Build::Command("rename ..\\..\\symstore\\$file\\" . $subdirs[$j] . " " . lc($subdirs[$j]));
Build::Command("rename S:\\sourcemod\\$file\\" . $subdirs[$j] . " " . lc($subdirs[$j]));
}
}
#Now that we're done, rsync back.
rsync('../../symstore/', '[email protected]:~/public_html/symbols');
sub rsync
{
my ($from, $to) = (@_);
Build::Command('rsync -av --delete -e="' . $SSH . '" ' . $from . ' ' . $to);
}