Compare commits
103 Commits
1.10-fork
...
sourcemod-
Author | SHA1 | Date | |
---|---|---|---|
|
8c0a53cfdb | ||
|
5d485df4b8 | ||
|
0656857960 | ||
|
af69434738 | ||
|
d713c52524 | ||
|
ef59237dad | ||
|
049f99a658 | ||
|
ffe50ed9f1 | ||
|
f2266b45a3 | ||
|
c5f57cb3e4 | ||
|
21a645e1c6 | ||
|
e4505b981b | ||
|
30c9d56e3f | ||
|
e29cf999a9 | ||
|
df9ae818db | ||
|
f725ee4fb4 | ||
|
ce51189e9a | ||
|
84ffb3de43 | ||
|
cc5d87578f | ||
|
123a5c6f66 | ||
|
9e20e01ee4 | ||
|
c275bcdb96 | ||
|
0036fe29cd | ||
|
6e6655f577 | ||
|
66220ba56a | ||
|
d0e54cafe7 | ||
|
20bdc2b435 | ||
|
ad2650b0aa | ||
|
4ac8430608 | ||
|
c6405bfb63 | ||
|
cdbaac15a1 | ||
|
d2cf4e3364 | ||
|
bce587edca | ||
|
f55a11b8cf | ||
|
71f73ddc3a | ||
|
693c0cf41b | ||
|
ce77a86808 | ||
|
a8242fd7e3 | ||
|
cfe8757570 | ||
|
896d949a82 | ||
|
391807c8ce | ||
|
39539757cf | ||
|
479b1e8225 | ||
|
956259b336 | ||
|
e6b7b79127 | ||
|
a1f6c94f1e | ||
|
5f312fb76e | ||
|
b231caae50 | ||
|
5596e65f6d | ||
|
fc7f7efc4b | ||
|
8a73628451 | ||
|
1928cb7e33 | ||
|
67b7df2a4e | ||
|
fd5033120a | ||
|
080ee88b17 | ||
|
7951515ff3 | ||
|
d1568472c6 | ||
|
227e2e1b0c | ||
|
7b0bbbd463 | ||
|
b1a904c7a5 | ||
|
7a124f2aa2 | ||
|
b002adc509 | ||
|
2e34f2e67c | ||
|
315a5c642e | ||
|
3697bc3866 | ||
|
a63ea2a68d | ||
|
e299092ff5 | ||
|
f0b69facb3 | ||
|
ab8563f0d4 | ||
|
1d666b09e2 | ||
|
8fcd0478a1 | ||
|
3c50ed1cf2 | ||
|
3a28a09f15 | ||
|
8e8f284cc3 | ||
|
fa4e61b877 | ||
|
a39d94ffe9 | ||
|
4326c3d431 | ||
|
dc5aca5f20 | ||
|
9182d92d86 | ||
|
8dc95a114c | ||
|
caf22b7233 | ||
|
465bebb170 | ||
|
f3006a478f | ||
|
9887f9da48 | ||
|
cfe11be9c9 | ||
|
4118905620 | ||
|
3b7b0d27cb | ||
|
9a1713a9f8 | ||
|
2995531ca6 | ||
|
46e10e10a0 | ||
|
8fadaff281 | ||
|
fccc1ebb50 | ||
|
03b183e492 | ||
|
0e37d2c1bf | ||
|
f7daefc76e | ||
|
071b013f5e | ||
|
e69d16ff71 | ||
|
1f599c8771 | ||
|
9389a0f138 | ||
|
997687c3ab | ||
|
fe05b6c2d0 | ||
|
097ca03761 | ||
|
f182cd1d6a |
4
.hgtags
4
.hgtags
@ -3,3 +3,7 @@ e6ef5ecdf8d75740ca2685a709bf321f8873bc3b sourcemod-1.1.0
|
||||
e877885fac80be71822641f7a9122cebc9812521 sourcemod-1.1.1
|
||||
b3ffa8a4511c4eadaf533fc790aa6b14f7f0c6ea sourcemod-1.1.2
|
||||
3a73bbf60f34befa9b66be03fa5974b394bb3411 sourcemod-1.2.0
|
||||
ddd707c3454c382db5db9d28148cd19227f44759 sourcemod-1.4.0
|
||||
f74e1dea2ef2c5a12b5238badc0e877106804191 sourcemod-1.4.1
|
||||
0026e1394254c392244c7b140e3075974ab5a6db sourcemod-1.4.2
|
||||
608f4c94872e3624404a1d105284163bc57fadf7 sourcemod-1.4.3
|
||||
|
@ -79,8 +79,9 @@ class SM:
|
||||
oldhead = head
|
||||
head, tail = os.path.split(head)
|
||||
if i.startswith('HL2SDK'):
|
||||
(info, sdk) = findDictByKey(self.possibleSdks, 'sdk', i)
|
||||
self.sdkInfo[sdk] = info
|
||||
if head != None and head != oldhead:
|
||||
(info, sdk) = findDictByKey(self.possibleSdks, 'sdk', i)
|
||||
self.sdkInfo[sdk] = info
|
||||
elif head == None or head == oldhead:
|
||||
raise Exception('Could not find a valid path for {0}'.format(i))
|
||||
AMBuild.cache.CacheVariable(i, path)
|
||||
@ -119,6 +120,9 @@ class SM:
|
||||
self.compiler.AddToListVar('CXXFLAGS', '-fno-threadsafe-statics')
|
||||
self.compiler.AddToListVar('CXXFLAGS', '-Wno-non-virtual-dtor')
|
||||
self.compiler.AddToListVar('CXXFLAGS', '-Wno-overloaded-virtual')
|
||||
if (self.vendor == 'gcc' and cxx.majorVersion >= 4 and cxx.minorVersion >= 3) or \
|
||||
(self.vendor == 'clang' and cxx.majorVersion >= 3):
|
||||
self.compiler.AddToListVar('CXXFLAGS', '-Wno-delete-non-virtual-dtor')
|
||||
self.compiler.AddToListVar('CDEFINES', 'HAVE_STDINT_H')
|
||||
self.compiler.AddToListVar('CDEFINES', 'GNUC')
|
||||
if self.vendor == 'gcc':
|
||||
@ -183,8 +187,6 @@ class SM:
|
||||
if self.vendor == 'clang':
|
||||
self.compiler.AddToListVar('POSTLINKFLAGS', '-lgcc_eh')
|
||||
elif AMBuild.target['platform'] == 'darwin':
|
||||
self.compiler.AddToListVar('CFLAGS', ['-isysroot',
|
||||
'/Developer/SDKs/MacOSX10.5.sdk'])
|
||||
self.compiler.AddToListVar('POSTLINKFLAGS', '-mmacosx-version-min=10.5')
|
||||
self.compiler.AddToListVar('POSTLINKFLAGS', ['-arch', 'i386'])
|
||||
self.compiler.AddToListVar('POSTLINKFLAGS', '-lstdc++')
|
||||
|
234
changelog.txt
234
changelog.txt
@ -1,5 +1,239 @@
|
||||
SourceMod Changelog
|
||||
|
||||
-----------------------------
|
||||
|
||||
SourceMod 1.4.4 [2012-07-03]
|
||||
|
||||
URL: http://wiki.alliedmods.net/SourceMod_1.4.4_Release_Notes
|
||||
|
||||
User Changes:
|
||||
|
||||
- Updated support for latest Source 2009 engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
|
||||
- Updated Nuclear Dawn gamedata.
|
||||
- Fixed a crash that could occur when selecting an option on a clientprefs prefab menu (bug 5374).
|
||||
|
||||
Developer Changes:
|
||||
|
||||
- Added new TF2 weapon and custom dmg defines.
|
||||
- Added new TF2 TFHoliday value (bug 5364) (Powerlord).
|
||||
- Updated sample extension to properly fill ninvoke with INativeInvoker ptr (bug 5340) (Afronanny).
|
||||
|
||||
-----------------------------
|
||||
|
||||
SourceMod 1.4.3 [2012-06-09]
|
||||
|
||||
URL: http://wiki.alliedmods.net/SourceMod_1.4.3_Release_Notes
|
||||
|
||||
User Changes:
|
||||
|
||||
- Updated support for latest OrangeBox engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
|
||||
- Made clientprefs attempt to reconnect to the database on map change (bug 4745).
|
||||
- Log functions now respect sv_logecho (bug 5135).
|
||||
- Fixed client console vote output (bug 5290, bug 5205) (FlaminSarge).
|
||||
- Fixed error when reloading dependant plugins using aliased natives (bug 5302).
|
||||
- Fixed intermittent crash when looking for an invalid signature (bug 5301).
|
||||
- Fixed possible crash when reloading a plugin with an invalid binary (bug 5288).
|
||||
- Exposed extensions list to clients (bug 5221) (VoiDeD).
|
||||
- Fixed intermittent crashes in clientprefs (bug 4660).
|
||||
- Fixed crash when passing an invalid entity reference to ReferenceToEntity (bug 5330).
|
||||
- Fixed cstrike extension crash on shutdown (bug 5328).
|
||||
- Lowered threading API think time to 20ms, making threaded MySQL queries complete faster (bug 4733).
|
||||
|
||||
Developer Changes:
|
||||
|
||||
- Fixed client serials not being unique on Windows (bug 5285).
|
||||
- Fixed broken SourceTV detection on L4D1 (bug 5216).
|
||||
- Fixed Float negation operator (bug 5292).
|
||||
- Updated TF2 condition defines (bug 5259) (FlaminSarge).
|
||||
- Adding missing SetMenuNoVoteButton native declaration (bug 4522) (GoD-Tony).
|
||||
- Fixed erroneous const-qualification of name param of GetAdminUsername (bug 5267).
|
||||
- Added GetGameTickCount native (bug 5209) (GoD-Tony).
|
||||
|
||||
-----------------------------
|
||||
|
||||
SourceMod 1.4.2 [2011-04-13]
|
||||
|
||||
URL: http://wiki.alliedmods.net/SourceMod_1.4.2_Release_Notes
|
||||
|
||||
User Changes:
|
||||
- Updated support for latest OrangeBox engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
|
||||
- Fixed regression in SourceMod 1.4.0 causing SM to cause load errors on The Ship (bug 5216).
|
||||
- Fixed toggling and player lag issues with sm_drug command (bugs 5217, 5218) (FlaminSarge).
|
||||
|
||||
Developer Changes:
|
||||
- Updated TF2-specific defines and enums (bug 5194).
|
||||
- Fixed StoreToAddress always writing 32 bits and throwing an error (bug 5248) (ProdigySim).
|
||||
- Fixed crash with StoreToAddress if memory wasn't writable (bug 5252) (Dr!fter).
|
||||
- Fixed return value of VoteMenuToAll (bug 5254) (VoiDeD).
|
||||
- Fixed bug in command lower-casing API guarantee
|
||||
|
||||
-----------------------------
|
||||
|
||||
SourceMod 1.4.1 [2011-12-07]
|
||||
|
||||
URL: http://wiki.alliedmods.net/SourceMod_1.4.1_Release_Notes
|
||||
|
||||
User Changes:
|
||||
|
||||
- Updated support for latest OrangeBox engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
|
||||
- Added gamedata for Adrenaline Gamer 2 and No More Room in Hell.
|
||||
- Fixed "not connected" error in reserve slots plugin (bug 5158) (ostrel).
|
||||
- Fixed ff trigger output printing to all in triggerer's language (rather than viewer's language) (bug 5161).
|
||||
- Fixed typo in one of basebans ban reasons (bug 5188).
|
||||
- Fixed formatting error in Swedish "Vote Count" phrase (bug 5174).
|
||||
|
||||
Developer Changes:
|
||||
|
||||
- Fixed sp MaxClients not being updated on map changes after load (bug 5160).
|
||||
- Removed GLIBC_2.7 dependency from spcomp.
|
||||
- Increased buffer for sm_rcon command to fit larger responses (bug 5169).
|
||||
- BaseComm now properly registers a library allowing it to be required by other plugins (bug 5156).
|
||||
- Fixed TFHoliday enum values (bug 5155).
|
||||
- Updated TF2_OnIsHolidayActive ret behavior to match doc (bug 5155).
|
||||
- Added new TF2 deathflag and dmg custom defines (bug 5157).
|
||||
|
||||
-----------------------------
|
||||
|
||||
SourceMod 1.4.0 [2011-10-28]
|
||||
|
||||
URL: http://wiki.alliedmods.net/SourceMod_1.4.0_Release_Notes
|
||||
|
||||
User Changes:
|
||||
|
||||
- Added support for Max OS X (bug 4392).
|
||||
- Added support for Bloody Good Time (bug 4780).
|
||||
- Added support for E.Y.E Divine Cybermancy (bug 5035).
|
||||
- Added gamedata for Nuclear Dawn.
|
||||
- Added gamedata for International Online Soccer: Source (bug 5019).
|
||||
- Added gamedata for Half-Life 2 Capture the Flag (bug 5114).
|
||||
- Updated mapchooser and other base plugins with Nuclear Dawn specific fixes (bug 5117).
|
||||
- Fixed ServerLang value not being read properly on startup (bug 4675).
|
||||
- Added support for aliases in languages.cfg (bug 4858).
|
||||
- Added output display to sm_rcon command (bug 5018).
|
||||
- Flood protection bypass access can now be overridden with command name sm_flood_access (bug 4584).
|
||||
- Added a reset argument to sm cvars command to revset cvar values to default (bug 5043).
|
||||
- Fixed incorrect language identifiers for Chinese (both Trad. and Simplified) and Brazilian Portuguese not matching cl_language values (bug 5067).
|
||||
- Added translation support for Bulgarian (bg).
|
||||
- Fixed incorrect number of slots being hidden for reserve with sm_hideslots on Source 2009 with SourceTV or replay (bug 5094).
|
||||
- sm_hideslots changes now take effect immediately instead of waiting until a client joins or leaves (bug 5094).
|
||||
- Fixed sv_visiblemaxplayers getting stuck at previous max clients in some cases with reserves and SourceTV or replay (bug 5094).
|
||||
- Removed error logging if an optional extension is not found (bug 5112).
|
||||
- Fixed bots with semicolon in name being unkickable (bug 5120).
|
||||
- Changed strings in ice-related funcommands to be translatable (bug 4540).
|
||||
- Changed Bintools extension to use a single build for every engine (bug 4548).
|
||||
|
||||
Developer Changes:
|
||||
- Provided native interface for basecomm (bug 2594).
|
||||
- Client language detection is too late. (bug 3714) (Tony A. "GoD-Tony").
|
||||
- Added ServerCommandEx native to execute server command and retrieve output (bug 3873).
|
||||
- Added ability to update clientprefs cookies values on clients not currently connected (bug 3882) (databomb).
|
||||
- Added library "matchmaking_ds" support to gamedata lookups (bug 4158).
|
||||
- Rooted menu handles to callbacks (bug 4353).
|
||||
- Fixed corner cases with ExplodeString (bug 4629). (Michael "LumiStance").
|
||||
- Fixed return omission with else-after-return (bug 4852).
|
||||
- Added OnConditionAdded and OnConditionRemoved forwards to TF2 extension (bug 4851).
|
||||
- Added new natives and forward to the cstrike extension (bug 4732, bug 4985) (Dr!fter).
|
||||
- Added WaitingForPlayers forwards to the TF2 extension (bug 4704) (CrimsonGT).
|
||||
- Updated and added more TF2 condition, weapon, and damagecustom defines (multiple bug#s).
|
||||
- Fixed TF2_RemoveCondition not always removing conditions (bug 4981).
|
||||
- Fixed MaxClients not being updated correctly in some places with SourceTV or replay active (bug 4986).
|
||||
- Fixed some vars not being marked for init on first compile pass (bug 4643).
|
||||
- Increased symbol name limit to 63 characters (bug 4564) (javalia).
|
||||
- Fixed crash when dynamic arrays run out of memory (bug 4632).
|
||||
- Fixed a crash that could happen from looking up out-of-bounds edict or entity indexes (bug 5080).
|
||||
- Fixed client serials not getting cleared on disconnect (bug 5121).
|
||||
- Added error on declaring arrays that the compiler is too buggy to handle (bug 4977).
|
||||
- Removed reliance on gamedata for multiple SDKTools functions in ep2 and later (bug 4899).
|
||||
- Added InvalidateClient and ReconnectClient natives to SDKTools (bug 4931) (Brian "Afronanny" Simon).
|
||||
- Added ability to lookup and set values on the gamerules class (bug 4983.
|
||||
- BaseComm now uses AddCommandListener for chat hooks (bug 4991).
|
||||
- Fixed shutdown bug in SDKTools (bug 5063).
|
||||
- Fixed MM-enabled extensions continuing to load after failing MM attach (bug 5042).
|
||||
- Added GetDistGainFromSoundLevel native to SDKTools (bug 5066) (javalia).
|
||||
- Added CheckAccess native to check an AdminId's command access (bug 5083).
|
||||
- Fixed GetEntProp not sign-extending unsigned values less than 32 bits (bug 5105).
|
||||
- Fixed crashing when calling CreateEntityByName or CreateFakeClient when no map is running (now errors) (bug 5119).
|
||||
- Fixed erring in kick function (e. bad translation) causing client to become unkickable until disconnect (bug 5120).
|
||||
- Fixed KickClientEx not immediately kicking client if client was in kick queue (bug 5120).
|
||||
- Added IsClientSourceTV and IsClientReplay natives (bug 5124).
|
||||
- Added support for getting and setting individual array elements with Get/Set EntProp functions (bug 4160).
|
||||
- Added support for threaded query handles to SQL_GetInsertId and SQL_GetAffectedRows (bug 4699) (Nephyrin).
|
||||
- Added a GetGameRules function to ISDKTools for extensions to easily get the GameRules class pointer (bug 4707).
|
||||
- Added GetMessageName to IUserMessages (bug 4573) (Zach "theY4Kman" Kanzler)
|
||||
- Added HintTextMsg to IGameHelpers (bug 4950).
|
||||
- Added ProcessTargetString simple filter API (bug 4404).
|
||||
- Moved much functionality from core bins to logic bin (bug 4406, bug 4402).
|
||||
- Fixed bogus asserts in sp compiler (bug 4486, bug 4487).
|
||||
- Greatly improved sp compiler performance (~5x overall speedup) (bug 3820, bug 4493, bug 4495).
|
||||
- Changed entity output detours to use CDetour (bug 4416).
|
||||
- Enhanced nominations API (bug 4677) (CrimsonGT).
|
||||
- Added Linux support for profiling natives (bug 4927).
|
||||
- Added a new ValveCallType that allows for arbitrary |this| parameters, as well as associated features in gamedata and for reading/writing memory (bug 3520) (Downtown1).
|
||||
- Updated TF2 extension to handle Valve's changes to the "holiday" system (bug 5150).
|
||||
|
||||
-----------------------------
|
||||
|
||||
SourceMod 1.3.8 [2011-06-23]
|
||||
|
||||
URL: http://wiki.alliedmods.net/SourceMod_1.3.8_Release_Notes
|
||||
|
||||
User Changes:
|
||||
|
||||
- Updated support for latest OrangeBox engine changes (CS:S, DoD:S, TF2, HL2DM, GMod).
|
||||
- Updated support for various games, including Garry's Mod, Zombie Panic, and Dino D-Day.
|
||||
- Added gamedata for Eternal Silence.
|
||||
- Fixed libgcc_s.so.1 load error present on some systems (bug 4876).
|
||||
- Handle leak notices now print to error log (in addition fatal log) (bug 4929).
|
||||
- Translator now properly falls back on bad server language (bug 4861).
|
||||
- Fixed invalid client errors from bad MaxClients value when SourceTV is late-loaded (bug 4881).
|
||||
- Fixed crash on plugin unload when two commands exist with same name, different casing (bug 4698).
|
||||
|
||||
Developer Changes:
|
||||
|
||||
- Updated TF2 condition defines (bug 4916).
|
||||
- Fixed var names and docs for TF2_MakeBleed native (bug 4928).
|
||||
- Removed compiler double include check (bug 4863).
|
||||
- Fixed plugin compile errors when using GetEntityClassname (bug 4798).
|
||||
|
||||
---------------------------
|
||||
|
||||
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]
|
||||
|
@ -664,6 +664,11 @@ cell_t ConsoleDetours::InternalDispatch(int client, const CCommand& args)
|
||||
char name[255];
|
||||
const char *realname = args.Arg(0);
|
||||
size_t len = strlen(realname);
|
||||
|
||||
// Disallow command strings that are too long, for now.
|
||||
if (len >= sizeof(name) - 1)
|
||||
return Pl_Continue;
|
||||
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
if (realname[i] >= 'A' && realname[i] <= 'Z')
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "sourcemm_api.h"
|
||||
#include "sm_srvcmds.h"
|
||||
#include "sm_stringutil.h"
|
||||
#include "PlayerManager.h"
|
||||
|
||||
CExtensionManager g_Extensions;
|
||||
IdentityType_t g_ExtType;
|
||||
@ -1284,6 +1285,94 @@ void CExtensionManager::OnRootConsoleCommand(const char *cmdname, const CCommand
|
||||
g_RootMenu.DrawGenericOption("unload", "Unload an extension");
|
||||
}
|
||||
|
||||
void CExtensionManager::ListExtensionsToClient(CPlayer *player, const CCommand &args)
|
||||
{
|
||||
char buffer[256];
|
||||
int numExtensions = m_Libs.size();
|
||||
edict_t *edict = player->GetEdict();
|
||||
unsigned int id = 0;
|
||||
unsigned int start = 0;
|
||||
|
||||
if (!numExtensions)
|
||||
{
|
||||
ClientConsolePrint(edict, "[SM] No extensions found.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.ArgC() > 2)
|
||||
{
|
||||
start = atoi(args.Arg(2));
|
||||
}
|
||||
|
||||
CExtension *ext;
|
||||
SourceHook::List<CExtension *>::iterator iter;
|
||||
|
||||
for (iter = m_Libs.begin();
|
||||
iter != m_Libs.end();
|
||||
iter++)
|
||||
{
|
||||
ext = (*iter);
|
||||
|
||||
char error[255];
|
||||
if (!ext->IsRunning(error, sizeof(error)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
id++;
|
||||
if (id < start)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (id - start > 10)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
IExtensionInterface *api = ext->GetAPI();
|
||||
|
||||
const char *name = api->GetExtensionName();
|
||||
const char *version = api->GetExtensionVerString();
|
||||
const char *author = api->GetExtensionAuthor();
|
||||
const char *description = api->GetExtensionDescription();
|
||||
|
||||
size_t len = UTIL_Format(buffer, sizeof(buffer), " \"%s\"", name);
|
||||
|
||||
if (version != NULL && IS_STR_FILLED(version))
|
||||
{
|
||||
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " (%s)", version);
|
||||
}
|
||||
|
||||
if (author != NULL && IS_STR_FILLED(author))
|
||||
{
|
||||
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, " by %s", author);
|
||||
}
|
||||
|
||||
if (description != NULL && IS_STR_FILLED(description))
|
||||
{
|
||||
len += UTIL_Format(&buffer[len], sizeof(buffer)-len, ": %s", description);
|
||||
}
|
||||
|
||||
|
||||
ClientConsolePrint(edict, "%s", buffer);
|
||||
}
|
||||
|
||||
while (iter != m_Libs.end())
|
||||
{
|
||||
char error[255];
|
||||
if ((*iter)->IsRunning(error, sizeof(error)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (iter != m_Libs.end())
|
||||
{
|
||||
ClientConsolePrint(edict, "To see more, type \"sm exts %d\"", id);
|
||||
}
|
||||
}
|
||||
|
||||
CExtension *CExtensionManager::GetExtensionFromIdent(IdentityToken_t *ptr)
|
||||
{
|
||||
if (ptr->type == g_ExtType)
|
||||
|
@ -45,6 +45,8 @@
|
||||
#include "PluginSys.h"
|
||||
#include "NativeOwner.h"
|
||||
|
||||
class CPlayer;
|
||||
|
||||
using namespace SourceMod;
|
||||
using namespace SourceHook;
|
||||
|
||||
@ -175,6 +177,8 @@ public:
|
||||
bool LibraryExists(const char *library);
|
||||
void CallOnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax);
|
||||
void AddRawDependency(IExtension *ext, IdentityToken_t *other, void *iface);
|
||||
public:
|
||||
void ListExtensionsToClient(CPlayer *player, const CCommand &args);
|
||||
public:
|
||||
CExtension *GetExtensionFromIdent(IdentityToken_t *ptr);
|
||||
void Shutdown();
|
||||
|
@ -38,8 +38,28 @@
|
||||
#include <IGameConfigs.h>
|
||||
#include <compat_wrappers.h>
|
||||
#include <Logger.h>
|
||||
#include "LibrarySys.h"
|
||||
#include "logic_bridge.h"
|
||||
|
||||
|
||||
typedef ICommandLine *(*FakeGetCommandLine)();
|
||||
|
||||
#if defined _WIN32
|
||||
#define TIER0_NAME "tier0.dll"
|
||||
#define VSTDLIB_NAME "vstdlib.dll"
|
||||
#elif defined __APPLE__
|
||||
#define TIER0_NAME "libtier0.dylib"
|
||||
#define VSTDLIB_NAME "libvstdlib.dylib"
|
||||
#elif defined __linux__
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE || SOURCE_ENGINE == SE_LEFT4DEAD || SOURCE_ENGINE == SE_LEFT4DEAD2
|
||||
#define TIER0_NAME "libtier0.so"
|
||||
#define VSTDLIB_NAME "libvstdlib.so"
|
||||
#else
|
||||
#define TIER0_NAME "tier0_i486.so"
|
||||
#define VSTDLIB_NAME "vstdlib_i486.so"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
CHalfLife2 g_HL2;
|
||||
ConVar *sv_lan = NULL;
|
||||
|
||||
@ -131,6 +151,12 @@ void CHalfLife2::OnSourceModAllInitialized()
|
||||
}
|
||||
|
||||
void CHalfLife2::OnSourceModAllInitialized_Post()
|
||||
{
|
||||
InitLogicalEntData();
|
||||
InitCommandLine();
|
||||
}
|
||||
|
||||
void CHalfLife2::InitLogicalEntData()
|
||||
{
|
||||
char *addr = NULL;
|
||||
|
||||
@ -196,6 +222,64 @@ void CHalfLife2::OnSourceModAllInitialized_Post()
|
||||
}
|
||||
}
|
||||
|
||||
void CHalfLife2::InitCommandLine()
|
||||
{
|
||||
char path[PLATFORM_MAX_PATH];
|
||||
char error[256];
|
||||
|
||||
g_SourceMod.BuildPath(Path_Game, path, sizeof(path), "../bin/" TIER0_NAME);
|
||||
|
||||
if (!g_LibSys.IsPathFile(path))
|
||||
{
|
||||
g_Logger.LogError("Could not find path for: " TIER0_NAME);
|
||||
return;
|
||||
}
|
||||
|
||||
ILibrary *lib = g_LibSys.OpenLibrary(path, error, sizeof(error));
|
||||
m_pGetCommandLine = lib->GetSymbolAddress("CommandLine_Tier0");
|
||||
|
||||
/* '_Tier0' dropped on Alien Swarm version */
|
||||
if (m_pGetCommandLine == NULL)
|
||||
{
|
||||
m_pGetCommandLine = lib->GetSymbolAddress("CommandLine");
|
||||
}
|
||||
|
||||
if (m_pGetCommandLine == NULL)
|
||||
{
|
||||
/* We probably have a Ship engine. */
|
||||
lib->CloseLibrary();
|
||||
g_SourceMod.BuildPath(Path_Game, path, sizeof(path), "../bin/" VSTDLIB_NAME);
|
||||
if (!g_LibSys.IsPathFile(path))
|
||||
{
|
||||
g_Logger.LogError("Could not find path for: " VSTDLIB_NAME);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((lib = g_LibSys.OpenLibrary(path, error, sizeof(error))) == NULL)
|
||||
{
|
||||
g_Logger.LogError("Could not load %s: %s", path, error);
|
||||
return;
|
||||
}
|
||||
|
||||
m_pGetCommandLine = lib->GetSymbolAddress("CommandLine");
|
||||
|
||||
if (m_pGetCommandLine == NULL)
|
||||
{
|
||||
g_Logger.LogError("Could not locate any command line functionality");
|
||||
}
|
||||
|
||||
lib->CloseLibrary();
|
||||
}
|
||||
}
|
||||
|
||||
ICommandLine *CHalfLife2::GetValveCommandLine()
|
||||
{
|
||||
if (!m_pGetCommandLine)
|
||||
return NULL;
|
||||
|
||||
return ((FakeGetCommandLine)((FakeGetCommandLine *)m_pGetCommandLine))();
|
||||
}
|
||||
|
||||
#if !defined METAMOD_PLAPI_VERSION || PLAPI_VERSION < 11
|
||||
bool CHalfLife2::IsOriginalEngine()
|
||||
{
|
||||
@ -748,6 +832,11 @@ cell_t CHalfLife2::EntityToReference(CBaseEntity *pEntity)
|
||||
|
||||
CBaseEntity *CHalfLife2::ReferenceToEntity(cell_t entRef)
|
||||
{
|
||||
if ((unsigned)entRef == INVALID_EHANDLE_INDEX)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CEntInfo *pInfo = NULL;
|
||||
|
||||
if (entRef & (1<<31))
|
||||
@ -757,7 +846,7 @@ CBaseEntity *CHalfLife2::ReferenceToEntity(cell_t entRef)
|
||||
CBaseHandle hndl(hndlValue);
|
||||
|
||||
pInfo = LookupEntity(hndl.GetEntryIndex());
|
||||
if (pInfo->m_SerialNumber != hndl.GetSerialNumber())
|
||||
if (!pInfo || pInfo->m_SerialNumber != hndl.GetSerialNumber())
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <server_class.h>
|
||||
#include <datamap.h>
|
||||
#include <ihandleentity.h>
|
||||
#include <tier0/icommandline.h>
|
||||
|
||||
class CCommand;
|
||||
|
||||
@ -136,6 +137,7 @@ public: //IGameHelpers
|
||||
cell_t EntityToBCompatRef(CBaseEntity *pEntity);
|
||||
void *GetGlobalEntityList();
|
||||
int GetSendPropOffset(SendProp *prop);
|
||||
ICommandLine *GetValveCommandLine();
|
||||
public:
|
||||
void AddToFakeCliCmdQueue(int client, int userid, const char *cmd);
|
||||
void ProcessFakeCliCmdQueue();
|
||||
@ -151,6 +153,9 @@ public:
|
||||
#endif
|
||||
private:
|
||||
DataTableInfo *_FindServerClass(const char *classname);
|
||||
private:
|
||||
void InitLogicalEntData();
|
||||
void InitCommandLine();
|
||||
private:
|
||||
Trie *m_pClasses;
|
||||
List<DataTableInfo *> m_Tables;
|
||||
@ -163,6 +168,7 @@ private:
|
||||
CStack<DelayedFakeCliCmd *> m_FreeCmds;
|
||||
CStack<CachedCommandInfo> m_CommandStack;
|
||||
Queue<DelayedKickInfo> m_DelayedKicks;
|
||||
void *m_pGetCommandLine;
|
||||
};
|
||||
|
||||
extern CHalfLife2 g_HL2;
|
||||
|
@ -265,6 +265,8 @@ void Logger::LogToOpenFileEx(FILE *fp, const char *msg, va_list ap)
|
||||
return;
|
||||
}
|
||||
|
||||
static ConVar *sv_logecho = icvar->FindVar("sv_logecho");
|
||||
|
||||
char buffer[3072];
|
||||
UTIL_FormatArgs(buffer, sizeof(buffer), msg, ap);
|
||||
|
||||
@ -275,7 +277,11 @@ void Logger::LogToOpenFileEx(FILE *fp, const char *msg, va_list ap)
|
||||
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
|
||||
|
||||
fprintf(fp, "L %s: %s\n", date, buffer);
|
||||
g_SMAPI->ConPrintf("L %s: %s\n", date, buffer);
|
||||
|
||||
if (!sv_logecho || sv_logecho->GetBool())
|
||||
{
|
||||
g_SMAPI->ConPrintf("L %s: %s\n", date, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
void Logger::LogToFileOnlyEx(FILE *fp, const char *msg, va_list ap)
|
||||
|
@ -331,6 +331,9 @@ void BaseMenuStyle::ClientPressedKey(int client, unsigned int key_press)
|
||||
ATTN_NORM,
|
||||
0,
|
||||
PITCH_NORM,
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
0,
|
||||
#endif
|
||||
&pos);
|
||||
}
|
||||
}
|
||||
|
@ -518,7 +518,7 @@ void VoteMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int ite
|
||||
m_Votes[item]++;
|
||||
m_NumVotes++;
|
||||
|
||||
if (sm_vote_chat.GetBool() || sm_vote_console.GetBool())
|
||||
if (sm_vote_chat.GetBool() || sm_vote_console.GetBool() || sm_vote_client_console.GetBool())
|
||||
{
|
||||
static char buffer[1024];
|
||||
ItemDrawInfo dr;
|
||||
@ -560,7 +560,7 @@ void VoteMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int ite
|
||||
|
||||
if (sm_vote_client_console.GetBool())
|
||||
{
|
||||
engine->ClientPrintf(pPlayer->GetEdict(), buffer);
|
||||
ClientConsolePrint(pPlayer->GetEdict(), buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,6 @@
|
||||
#include "HalfLife2.h"
|
||||
#include <inetchannel.h>
|
||||
#include <iclient.h>
|
||||
#include <tier0/icommandline.h>
|
||||
#include <IGameConfigs.h>
|
||||
#include "ExtensionSys.h"
|
||||
#include <sourcemod_version.h>
|
||||
@ -244,7 +243,8 @@ void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int cl
|
||||
// clientMax will not necessarily be correct here (such as on late SourceTV enable)
|
||||
m_maxClients = gpGlobals->maxClients;
|
||||
|
||||
m_bIsSourceTVActive = (tv_enable && tv_enable->GetBool() && CommandLine()->FindParm("-nohltv") == 0);
|
||||
ICommandLine *commandLine = g_HL2.GetValveCommandLine();
|
||||
m_bIsSourceTVActive = (tv_enable && tv_enable->GetBool() && (!commandLine || commandLine->FindParm("-nohltv") == 0));
|
||||
m_bIsReplayActive = false;
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
m_bIsReplayActive = (replay_enable && replay_enable->GetBool());
|
||||
@ -263,10 +263,10 @@ void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int cl
|
||||
memset(m_AuthQueue, 0, sizeof(unsigned int) * (ABSOLUTE_PLAYER_LIMIT + 1));
|
||||
|
||||
g_NumPlayersToAuth = &m_AuthQueue[0];
|
||||
|
||||
g_PluginSys.SyncMaxClients(m_maxClients);
|
||||
}
|
||||
|
||||
g_PluginSys.SyncMaxClients(m_maxClients);
|
||||
|
||||
g_OnMapStarted = true;
|
||||
|
||||
g_Extensions.CallOnCoreMapStart(pEdictList, edictCount, m_maxClients);
|
||||
@ -745,6 +745,11 @@ void PlayerManager::OnClientCommand(edict_t *pEntity)
|
||||
g_PluginSys.ListPluginsToClient(pPlayer, args);
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
else if (args.ArgC() > 1 && strcmp(args.Arg(1), "exts") == 0)
|
||||
{
|
||||
g_Extensions.ListExtensionsToClient(pPlayer, args);
|
||||
RETURN_META(MRES_SUPERCEDE);
|
||||
}
|
||||
else if (args.ArgC() > 1 && strcmp(args.Arg(1), "credits") == 0)
|
||||
{
|
||||
ClientConsolePrint(pEntity,
|
||||
@ -854,6 +859,20 @@ void PlayerManager::OnClientSettingsChanged(edict_t *pEntity)
|
||||
const char *new_name = info ? info->GetName() : engine->GetClientConVarValue(client, "name");
|
||||
const char *old_name = pPlayer->m_Name.c_str();
|
||||
|
||||
#if SOURCE_ENGINE >= SE_LEFT4DEAD
|
||||
const char *networkid_force;
|
||||
if ((networkid_force = engine->GetClientConVarValue(client, "networkid_force")) && networkid_force[0] != '\0')
|
||||
{
|
||||
unsigned long long *steamId = (unsigned long long *)engine->GetClientSteamID(pEntity);
|
||||
unsigned int accountId = steamId ? (*steamId & 0xFFFFFFFF) : 0;
|
||||
g_Logger.LogMessage("\"%s<%d><STEAM_1:%d:%d><>\" has bad networkid (id \"%s\") (ip \"%s\")",
|
||||
new_name, pPlayer->GetUserId(), accountId & 1, accountId >> 1, networkid_force, pPlayer->GetIPAddress());
|
||||
|
||||
pPlayer->Kick("NetworkID spoofing detected.");
|
||||
RETURN_META(MRES_IGNORED);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (strcmp(old_name, new_name) != 0)
|
||||
{
|
||||
AdminId id = g_Admins.FindAdminByIdentity("name", new_name);
|
||||
|
@ -56,7 +56,7 @@ union serial_t
|
||||
uint32_t value;
|
||||
struct
|
||||
{
|
||||
uint8_t index;
|
||||
uint32_t index : 8;
|
||||
uint32_t serial : 24;
|
||||
} bits;
|
||||
};
|
||||
|
@ -1005,11 +1005,14 @@ LoadRes CPluginManager::_LoadPlugin(CPlugin **_plugin, const char *path, bool de
|
||||
pPlugin->m_pRuntime = g_pSourcePawn2->LoadPlugin(co, fullpath, &err);
|
||||
if (pPlugin->m_pRuntime == NULL)
|
||||
{
|
||||
UTIL_Format(error,
|
||||
maxlength,
|
||||
"Unable to load plugin (error %d: %s)",
|
||||
err,
|
||||
g_pSourcePawn2->GetErrorString(err));
|
||||
if (error)
|
||||
{
|
||||
UTIL_Format(error,
|
||||
maxlength,
|
||||
"Unable to load plugin (error %d: %s)",
|
||||
err,
|
||||
g_pSourcePawn2->GetErrorString(err));
|
||||
}
|
||||
pPlugin->m_status = Plugin_BadLoad;
|
||||
}
|
||||
else
|
||||
@ -1020,7 +1023,10 @@ LoadRes CPluginManager::_LoadPlugin(CPlugin **_plugin, const char *path, bool de
|
||||
}
|
||||
else
|
||||
{
|
||||
UTIL_Format(error, maxlength, "%s", pPlugin->m_errormsg);
|
||||
if (error)
|
||||
{
|
||||
UTIL_Format(error, maxlength, "%s", pPlugin->m_errormsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1504,7 +1510,9 @@ void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (native->status == SP_NATIVE_UNBOUND && !(native->flags & SP_NTVFLAG_OPTIONAL))
|
||||
if (native->status == SP_NATIVE_UNBOUND
|
||||
&& native->name[0] != '@'
|
||||
&& !(native->flags & SP_NTVFLAG_OPTIONAL))
|
||||
{
|
||||
pPlugin->SetErrorState(Plugin_Error, "Native not found: %s", native->name);
|
||||
return;
|
||||
|
@ -116,7 +116,7 @@ void *MemoryUtils::FindPattern(const void *libPtr, const char *pattern, size_t l
|
||||
}
|
||||
|
||||
ptr = reinterpret_cast<char *>(lib.baseAddress);
|
||||
end = ptr + lib.memorySize;
|
||||
end = ptr + lib.memorySize - 1;
|
||||
|
||||
while (ptr < end)
|
||||
{
|
||||
|
@ -62,7 +62,7 @@ IGameHelpers *gamehelpers;
|
||||
|
||||
static void AddCorePhraseFile(const char *filename)
|
||||
{
|
||||
g_pCorePhrases->AddPhraseFile("antiflood.phrases");
|
||||
g_pCorePhrases->AddPhraseFile(filename);
|
||||
}
|
||||
|
||||
static IGameConfig *GetCoreGameConfig()
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
#include "BaseWorker.h"
|
||||
|
||||
#define DEFAULT_THINK_TIME_MS 50
|
||||
#define DEFAULT_THINK_TIME_MS 20
|
||||
|
||||
class ThreadWorker : public BaseWorker, public IThread
|
||||
{
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include "Logger.h"
|
||||
#include "ExtensionSys.h"
|
||||
#include <sm_trie_tpl.h>
|
||||
#include <sh_memory.h>
|
||||
|
||||
#if defined PLATFORM_WINDOWS
|
||||
#include <windows.h>
|
||||
@ -729,11 +730,17 @@ static cell_t StoreToAddress(IPluginContext *pContext, const cell_t *params)
|
||||
switch(size)
|
||||
{
|
||||
case NumberType_Int8:
|
||||
SourceHook::SetMemAccess(addr, sizeof(uint8_t), SH_MEM_READ|SH_MEM_WRITE|SH_MEM_EXEC);
|
||||
*reinterpret_cast<uint8_t*>(addr) = data;
|
||||
break;
|
||||
case NumberType_Int16:
|
||||
SourceHook::SetMemAccess(addr, sizeof(uint16_t), SH_MEM_READ|SH_MEM_WRITE|SH_MEM_EXEC);
|
||||
*reinterpret_cast<uint16_t*>(addr) = data;
|
||||
break;
|
||||
case NumberType_Int32:
|
||||
SourceHook::SetMemAccess(addr, sizeof(uint32_t), SH_MEM_READ|SH_MEM_WRITE|SH_MEM_EXEC);
|
||||
*reinterpret_cast<uint32_t*>(addr) = data;
|
||||
break;
|
||||
default:
|
||||
pContext->ThrowNativeError("Invalid number types %d", size);
|
||||
}
|
||||
|
@ -87,6 +87,11 @@ static cell_t GetGameTime(IPluginContext *pContext, const cell_t *params)
|
||||
return sp_ftoc(gpGlobals->curtime);
|
||||
}
|
||||
|
||||
static cell_t GetGameTickCount(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
return gpGlobals->tickcount;
|
||||
}
|
||||
|
||||
static cell_t CreateFakeClient(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
if (!g_SourceMod.IsMapRunning())
|
||||
@ -467,7 +472,7 @@ static cell_t GuessSDKVersion(IPluginContext *pContext, const cell_t *params)
|
||||
case SOURCE_ENGINE_BLOODYGOODTIME:
|
||||
return 32;
|
||||
case SOURCE_ENGINE_EYE:
|
||||
return 34;
|
||||
return 33;
|
||||
case SOURCE_ENGINE_ORANGEBOXVALVE:
|
||||
return 35;
|
||||
case SOURCE_ENGINE_LEFT4DEAD:
|
||||
@ -520,6 +525,7 @@ REGISTER_NATIVES(halflifeNatives)
|
||||
{"GetGameDescription", GetGameDescription},
|
||||
{"GetGameFolderName", GetGameFolderName},
|
||||
{"GetGameTime", GetGameTime},
|
||||
{"GetGameTickCount", GetGameTickCount},
|
||||
{"GetRandomFloat", GetRandomFloat},
|
||||
{"GetRandomInt", GetRandomInt},
|
||||
{"IsDedicatedServer", IsDedicatedServer},
|
||||
|
@ -396,7 +396,7 @@ void CookieManager::OnPluginDestroyed(IPlugin *plugin)
|
||||
{
|
||||
ItemDrawInfo draw;
|
||||
const char *info = clientMenu->GetItemInfo(i, &draw);
|
||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
||||
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||
|
||||
if (data->handler->forward != NULL)
|
||||
{
|
||||
|
@ -105,6 +105,7 @@ bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
||||
|
||||
sharesys->AddNatives(myself, g_ClientPrefNatives);
|
||||
sharesys->RegisterLibrary(myself, "clientprefs");
|
||||
identity = sharesys->CreateIdentity(sharesys->CreateIdentType("ClientPrefs"), this);
|
||||
g_CookieManager.cookieDataLoadedForward = forwards->CreateForward("OnClientCookiesCached", ET_Ignore, 1, NULL, Param_Cell);
|
||||
|
||||
g_CookieType = handlesys->CreateType("Cookie",
|
||||
@ -124,7 +125,7 @@ bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
||||
NULL);
|
||||
|
||||
IMenuStyle *style = menus->GetDefaultStyle();
|
||||
g_CookieManager.clientMenu = style->CreateMenu(&g_Handler, NULL);
|
||||
g_CookieManager.clientMenu = style->CreateMenu(&g_Handler, identity);
|
||||
g_CookieManager.clientMenu->SetDefaultTitle("Client Settings:");
|
||||
|
||||
plsys->AddPluginsListener(&g_CookieManager);
|
||||
@ -191,10 +192,17 @@ void ClientPrefs::SDK_OnUnload()
|
||||
|
||||
forwards->ReleaseForward(g_CookieManager.cookieDataLoadedForward);
|
||||
|
||||
g_CookieManager.clientMenu->Destroy();
|
||||
HandleSecurity sec = HandleSecurity(identity, identity);
|
||||
HandleError err = handlesys->FreeHandle(g_CookieManager.clientMenu->GetHandle(), &sec);
|
||||
if (HandleError_None != err)
|
||||
{
|
||||
g_pSM->LogError(myself, "Error %d when attempting to free client menu handle", err);
|
||||
}
|
||||
|
||||
phrases->Destroy();
|
||||
|
||||
sharesys->DestroyIdentity( identity );
|
||||
|
||||
plsys->RemovePluginsListener(&g_CookieManager);
|
||||
playerhelpers->RemoveClientListener(&g_CookieManager);
|
||||
|
||||
@ -202,6 +210,19 @@ void ClientPrefs::SDK_OnUnload()
|
||||
cookieMutex->DestroyThis();
|
||||
}
|
||||
|
||||
void ClientPrefs::OnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax)
|
||||
{
|
||||
if (Database == NULL && !databaseLoading)
|
||||
{
|
||||
g_pSM->LogMessage(myself, "Attempting to reconnect to database...");
|
||||
|
||||
databaseLoading = true;
|
||||
|
||||
TQueryOp *op = new TQueryOp(Query_Connect, 0);
|
||||
dbi->AddToThreadQueue(op, PrioQueue_High);
|
||||
}
|
||||
}
|
||||
|
||||
void ClientPrefs::DatabaseConnect()
|
||||
{
|
||||
char error[256];
|
||||
@ -457,6 +478,11 @@ bool Translate(char *buffer,
|
||||
return true;
|
||||
}
|
||||
|
||||
IdentityToken_t *ClientPrefs::GetIdentity() const
|
||||
{
|
||||
return identity;
|
||||
}
|
||||
|
||||
const char *ClientPrefs::GetExtensionVerString()
|
||||
{
|
||||
return SM_FULL_VERSION;
|
||||
|
@ -87,6 +87,8 @@ public:
|
||||
const char *GetExtensionVerString();
|
||||
const char *GetExtensionDateString();
|
||||
|
||||
virtual void OnCoreMapStart(edict_t *pEdictList, int edictCount, int clientMax);
|
||||
|
||||
void DatabaseConnect();
|
||||
|
||||
bool AddQueryToQueue(TQueryOp *query);
|
||||
@ -138,6 +140,8 @@ public:
|
||||
*/
|
||||
//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
|
||||
#endif
|
||||
public:
|
||||
IdentityToken_t *GetIdentity() const;
|
||||
public:
|
||||
IDBDriver *Driver;
|
||||
IDatabase *Database;
|
||||
@ -150,6 +154,7 @@ public:
|
||||
private:
|
||||
SourceHook::List<TQueryOp *> cachedQueries;
|
||||
IMutex *queryMutex;
|
||||
IdentityToken_t *identity;
|
||||
};
|
||||
|
||||
class CookieTypeHandler : public IHandleTypeDispatch
|
||||
|
@ -40,7 +40,7 @@ void ClientMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int i
|
||||
|
||||
const char *info = menu->GetItemInfo(item, &draw);
|
||||
|
||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
||||
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||
|
||||
if (data->handler->forward != NULL)
|
||||
{
|
||||
@ -57,7 +57,7 @@ void ClientMenuHandler::OnMenuSelect(IBaseMenu *menu, int client, unsigned int i
|
||||
return;
|
||||
}
|
||||
|
||||
IBaseMenu *submenu = menus->GetDefaultStyle()->CreateMenu(&g_AutoHandler, NULL);
|
||||
IBaseMenu *submenu = menus->GetDefaultStyle()->CreateMenu(&g_AutoHandler, g_ClientPrefs.GetIdentity());
|
||||
|
||||
char message[256];
|
||||
|
||||
@ -94,7 +94,7 @@ unsigned int ClientMenuHandler::OnMenuDisplayItem(IBaseMenu *menu,
|
||||
|
||||
const char *info = menu->GetItemInfo(item, &draw);
|
||||
|
||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
||||
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||
|
||||
if (data->handler->forward != NULL)
|
||||
{
|
||||
@ -122,7 +122,7 @@ void AutoMenuHandler::OnMenuSelect(SourceMod::IBaseMenu *menu, int client, unsig
|
||||
|
||||
const char *info = menu->GetItemInfo(item, &draw);
|
||||
|
||||
AutoMenuData *data = (AutoMenuData *)strtol(info, NULL, 16);
|
||||
AutoMenuData *data = (AutoMenuData *)strtoul(info, NULL, 16);
|
||||
|
||||
switch (data->type)
|
||||
{
|
||||
@ -175,5 +175,10 @@ void AutoMenuHandler::OnMenuSelect(SourceMod::IBaseMenu *menu, int client, unsig
|
||||
|
||||
void AutoMenuHandler::OnMenuEnd(IBaseMenu *menu, MenuEndReason reason)
|
||||
{
|
||||
menu->Destroy(true);
|
||||
HandleSecurity sec = HandleSecurity(g_ClientPrefs.GetIdentity(), g_ClientPrefs.GetIdentity());
|
||||
HandleError err = handlesys->FreeHandle(menu->GetHandle(), &sec);
|
||||
if (HandleError_None != err)
|
||||
{
|
||||
g_pSM->LogError(myself, "Error %d when attempting to free automenu handle", err);
|
||||
}
|
||||
}
|
||||
|
@ -47,4 +47,6 @@ void RegNatives::UnregisterAll()
|
||||
{
|
||||
(*iter)->Destroy();
|
||||
}
|
||||
|
||||
m_List.clear();
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ def BuildCURL():
|
||||
env = os.environ.copy()
|
||||
env['CFLAGS'] = '-m32'
|
||||
if AMBuild.target['platform'] == 'darwin':
|
||||
env['CFLAGS'] += ' -isysroot /Developer/SDKs/MacOSX10.5.sdk'
|
||||
env['LDFLAGS'] = '-mmacosx-version-min=10.5'
|
||||
else:
|
||||
env['CFLAGS'] += ' -D_GNU_SOURCE'
|
||||
|
@ -528,7 +528,12 @@ static cell_t SlapPlayer(IPluginContext *pContext, const cell_t *params)
|
||||
CellRecipientFilter rf;
|
||||
rf.SetToReliable(true);
|
||||
rf.Initialize(player_list, total_players);
|
||||
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
engsound->EmitSound(rf, params[1], CHAN_AUTO, sound_name, VOL_NORM, ATTN_NORM, 0, PITCH_NORM, 0, &pos);
|
||||
#else
|
||||
engsound->EmitSound(rf, params[1], CHAN_AUTO, sound_name, VOL_NORM, ATTN_NORM, 0, PITCH_NORM, &pos);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,8 +33,13 @@
|
||||
#include <IForwardSys.h>
|
||||
|
||||
SH_DECL_HOOK8_void(IVEngineServer, EmitAmbientSound, SH_NOATTRIB, 0, int, const Vector &, const char *, float, soundlevel_t, int, int, float);
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
SH_DECL_HOOK15_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||
SH_DECL_HOOK15_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||
#else
|
||||
SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 0, IRecipientFilter &, int, int, const char *, float, float, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||
SH_DECL_HOOK14_void(IEngineSound, EmitSound, SH_NOATTRIB, 1, IRecipientFilter &, int, int, const char *, float, soundlevel_t, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int);
|
||||
#endif
|
||||
|
||||
bool g_InSoundHook = false;
|
||||
|
||||
@ -252,10 +257,17 @@ void SoundHooks::OnEmitAmbientSound(int entindex, const Vector &pos, const char
|
||||
}
|
||||
}
|
||||
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||
float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
float soundtime, int speakerentity)
|
||||
#else
|
||||
void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||
float flVolume, soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
float soundtime, int speakerentity)
|
||||
#endif
|
||||
{
|
||||
SoundHookIter iter;
|
||||
IPluginFunction *pFunc;
|
||||
@ -293,6 +305,15 @@ void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChann
|
||||
{
|
||||
CellRecipientFilter crf;
|
||||
crf.Initialize(players, size);
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
RETURN_META_NEWPARAMS(
|
||||
MRES_IGNORED,
|
||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, soundlevel_t,
|
||||
int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>(&IEngineSound::EmitSound),
|
||||
(crf, iEntIndex, iChannel, buffer, flVolume, iSoundlevel, iFlags, iPitch, iSpecialDSP, pOrigin,
|
||||
pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||
);
|
||||
#else
|
||||
RETURN_META_NEWPARAMS(
|
||||
MRES_IGNORED,
|
||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, soundlevel_t,
|
||||
@ -300,15 +321,23 @@ void SoundHooks::OnEmitSound(IRecipientFilter &filter, int iEntIndex, int iChann
|
||||
(crf, iEntIndex, iChannel, buffer, flVolume, iSoundlevel, iFlags, iPitch, pOrigin,
|
||||
pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||
);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||
float flVolume, float flAttenuation, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
float soundtime, int speakerentity)
|
||||
#else
|
||||
void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChannel, const char *pSample,
|
||||
float flVolume, float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
float soundtime, int speakerentity)
|
||||
#endif
|
||||
{
|
||||
SoundHookIter iter;
|
||||
IPluginFunction *pFunc;
|
||||
@ -347,6 +376,15 @@ void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChan
|
||||
{
|
||||
CellRecipientFilter crf;
|
||||
crf.Initialize(players, size);
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
RETURN_META_NEWPARAMS(
|
||||
MRES_IGNORED,
|
||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, float,
|
||||
int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>(&IEngineSound::EmitSound),
|
||||
(crf, iEntIndex, iChannel, buffer, flVolume, SNDLVL_TO_ATTN(static_cast<soundlevel_t>(sndlevel)),
|
||||
iFlags, iPitch, iSpecialDSP, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||
);
|
||||
#else
|
||||
RETURN_META_NEWPARAMS(
|
||||
MRES_IGNORED,
|
||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float, float,
|
||||
@ -354,6 +392,7 @@ void SoundHooks::OnEmitSound2(IRecipientFilter &filter, int iEntIndex, int iChan
|
||||
(crf, iEntIndex, iChannel, buffer, flVolume, SNDLVL_TO_ATTN(static_cast<soundlevel_t>(sndlevel)),
|
||||
iFlags, iPitch, pOrigin, pDirection, pUtlVecOrigins, bUpdatePositions, soundtime, speakerentity)
|
||||
);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -547,6 +586,48 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
|
||||
player[0] = cl_array[i];
|
||||
crf.Reset();
|
||||
crf.Initialize(player, 1);
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
if (g_InSoundHook)
|
||||
{
|
||||
SH_CALL(enginesoundPatch,
|
||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float,
|
||||
soundlevel_t, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>
|
||||
(&IEngineSound::EmitSound))
|
||||
(crf,
|
||||
player[0],
|
||||
channel,
|
||||
sample,
|
||||
vol,
|
||||
(soundlevel_t)level,
|
||||
flags,
|
||||
pitch,
|
||||
0,
|
||||
pOrigin,
|
||||
pDir,
|
||||
pOrigVec,
|
||||
updatePos,
|
||||
soundtime,
|
||||
speakerentity);
|
||||
}
|
||||
else
|
||||
{
|
||||
engsound->EmitSound(crf,
|
||||
player[0],
|
||||
channel,
|
||||
sample,
|
||||
vol,
|
||||
(soundlevel_t)level,
|
||||
flags,
|
||||
pitch,
|
||||
0,
|
||||
pOrigin,
|
||||
pDir,
|
||||
pOrigVec,
|
||||
updatePos,
|
||||
soundtime,
|
||||
speakerentity);
|
||||
}
|
||||
#else
|
||||
if (g_InSoundHook)
|
||||
{
|
||||
SH_CALL(enginesoundPatch,
|
||||
@ -585,8 +666,51 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
|
||||
soundtime,
|
||||
speakerentity);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
if (g_InSoundHook)
|
||||
{
|
||||
SH_CALL(enginesoundPatch,
|
||||
static_cast<void (IEngineSound::*)(IRecipientFilter &, int, int, const char*, float,
|
||||
soundlevel_t, int, int, int, const Vector *, const Vector *, CUtlVector<Vector> *, bool, float, int)>
|
||||
(&IEngineSound::EmitSound))
|
||||
(crf,
|
||||
entity,
|
||||
channel,
|
||||
sample,
|
||||
vol,
|
||||
(soundlevel_t)level,
|
||||
flags,
|
||||
pitch,
|
||||
0,
|
||||
pOrigin,
|
||||
pDir,
|
||||
pOrigVec,
|
||||
updatePos,
|
||||
soundtime,
|
||||
speakerentity);
|
||||
}
|
||||
else
|
||||
{
|
||||
engsound->EmitSound(crf,
|
||||
entity,
|
||||
channel,
|
||||
sample,
|
||||
vol,
|
||||
(soundlevel_t)level,
|
||||
flags,
|
||||
pitch,
|
||||
0,
|
||||
pOrigin,
|
||||
pDir,
|
||||
pOrigVec,
|
||||
updatePos,
|
||||
soundtime,
|
||||
speakerentity);
|
||||
}
|
||||
#else
|
||||
if (g_InSoundHook)
|
||||
{
|
||||
SH_CALL(enginesoundPatch,
|
||||
@ -625,6 +749,7 @@ static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
|
||||
soundtime,
|
||||
speakerentity);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return 1;
|
||||
@ -714,6 +839,9 @@ static cell_t EmitSentence(IPluginContext *pContext, const cell_t *params)
|
||||
(soundlevel_t)level,
|
||||
flags,
|
||||
pitch,
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
0,
|
||||
#endif
|
||||
pOrigin,
|
||||
pDir,
|
||||
pOrigVec,
|
||||
|
@ -52,6 +52,16 @@ public:
|
||||
bool RemoveHook(int type, IPluginFunction *pFunc);
|
||||
void OnEmitAmbientSound(int entindex, const Vector &pos, const char *samp, float vol,
|
||||
soundlevel_t soundlevel, int fFlags, int pitch, float delay);
|
||||
#if SOURCE_ENGINE == SE_ORANGEBOXVALVE
|
||||
void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume,
|
||||
soundlevel_t iSoundlevel, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
float soundtime, int speakerentity);
|
||||
void OnEmitSound2(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume,
|
||||
float flAttenuation, int iFlags, int iPitch, int iSpecialDSP, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
float soundtime, int speakerentity);
|
||||
#else
|
||||
void OnEmitSound(IRecipientFilter& filter, int iEntIndex, int iChannel, const char *pSample, float flVolume,
|
||||
soundlevel_t iSoundlevel, int iFlags, int iPitch, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
@ -60,6 +70,7 @@ public:
|
||||
float flAttenuation, int iFlags, int iPitch, const Vector *pOrigin,
|
||||
const Vector *pDirection, CUtlVector<Vector> *pUtlVecOrigins, bool bUpdatePositions,
|
||||
float soundtime, int speakerentity);
|
||||
#endif
|
||||
private:
|
||||
size_t _FillInPlayers(int *pl_array, IRecipientFilter *pFilter);
|
||||
void _IncRefCounter(int type);
|
||||
|
@ -112,7 +112,7 @@ bool TF2Tools::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
||||
playerhelpers->AddClientListener(this);
|
||||
|
||||
g_critForward = forwards->CreateForward("TF2_CalcIsAttackCritical", ET_Hook, 4, NULL, Param_Cell, Param_Cell, Param_String, Param_CellByRef);
|
||||
g_getHolidayForward = forwards->CreateForward("TF2_OnGetHoliday", ET_Event, 1, NULL, Param_CellByRef);
|
||||
g_isHolidayForward = forwards->CreateForward("TF2_OnIsHolidayActive", ET_Event, 2, NULL, Param_Cell, Param_CellByRef);
|
||||
g_addCondForward = forwards->CreateForward("TF2_OnConditionAdded", ET_Ignore, 2, NULL, Param_Cell, Param_Cell);
|
||||
g_removeCondForward = forwards->CreateForward("TF2_OnConditionRemoved", ET_Ignore, 2, NULL, Param_Cell, Param_Cell);
|
||||
g_waitingPlayersStartForward = forwards->CreateForward("TF2_OnWaitingForPlayersStart", ET_Ignore, 0, NULL);
|
||||
@ -121,7 +121,7 @@ bool TF2Tools::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
||||
g_pCVar = icvar;
|
||||
|
||||
m_CritDetoursEnabled = false;
|
||||
m_GetHolidayDetourEnabled = false;
|
||||
m_IsHolidayDetourEnabled = false;
|
||||
m_CondChecksEnabled = false;
|
||||
m_RulesDetoursEnabled = false;
|
||||
|
||||
@ -168,7 +168,7 @@ void TF2Tools::SDK_OnUnload()
|
||||
plsys->RemovePluginsListener(this);
|
||||
|
||||
forwards->ReleaseForward(g_critForward);
|
||||
forwards->ReleaseForward(g_getHolidayForward);
|
||||
forwards->ReleaseForward(g_isHolidayForward);
|
||||
forwards->ReleaseForward(g_addCondForward);
|
||||
forwards->ReleaseForward(g_removeCondForward);
|
||||
forwards->ReleaseForward(g_waitingPlayersStartForward);
|
||||
@ -320,9 +320,9 @@ void TF2Tools::OnPluginLoaded(IPlugin *plugin)
|
||||
m_CritDetoursEnabled = InitialiseCritDetours();
|
||||
}
|
||||
|
||||
if (!m_GetHolidayDetourEnabled && g_getHolidayForward->GetFunctionCount())
|
||||
if (!m_IsHolidayDetourEnabled && g_isHolidayForward->GetFunctionCount())
|
||||
{
|
||||
m_GetHolidayDetourEnabled = InitialiseGetHolidayDetour();
|
||||
m_IsHolidayDetourEnabled = InitialiseIsHolidayDetour();
|
||||
}
|
||||
|
||||
if (!m_CondChecksEnabled
|
||||
@ -347,10 +347,10 @@ void TF2Tools::OnPluginUnloaded(IPlugin *plugin)
|
||||
RemoveCritDetours();
|
||||
m_CritDetoursEnabled = false;
|
||||
}
|
||||
if (m_GetHolidayDetourEnabled && !g_getHolidayForward->GetFunctionCount())
|
||||
if (m_IsHolidayDetourEnabled && !g_isHolidayForward->GetFunctionCount())
|
||||
{
|
||||
RemoveGetHolidayDetour();
|
||||
m_GetHolidayDetourEnabled = false;
|
||||
RemoveIsHolidayDetour();
|
||||
m_IsHolidayDetourEnabled = false;
|
||||
}
|
||||
if (m_CondChecksEnabled)
|
||||
{
|
||||
@ -451,6 +451,6 @@ TFClassType ClassnameToType(const char *classname)
|
||||
/**
|
||||
* A picture of a blue crab given to me as a gift and stored here for safe keeping
|
||||
*
|
||||
* http://www.democracycellproject.net/blog/archives/Clown%20car.jpg
|
||||
* http://sourcemod.net/Clown%20car.jpg
|
||||
*/
|
||||
|
||||
|
@ -118,7 +118,7 @@ public:
|
||||
#endif
|
||||
private:
|
||||
bool m_CritDetoursEnabled;
|
||||
bool m_GetHolidayDetourEnabled;
|
||||
bool m_IsHolidayDetourEnabled;
|
||||
bool m_CondChecksEnabled;
|
||||
bool m_RulesDetoursEnabled;
|
||||
};
|
||||
|
@ -31,48 +31,49 @@
|
||||
|
||||
#include "holiday.h"
|
||||
|
||||
CDetour *getHolidayDetour = NULL;
|
||||
CDetour *isHolidayDetour = NULL;
|
||||
|
||||
IForward *g_getHolidayForward = NULL;
|
||||
IForward *g_isHolidayForward = NULL;
|
||||
|
||||
DETOUR_DECL_STATIC0(GetHoliday, int)
|
||||
DETOUR_DECL_STATIC1(IsHolidayActive, bool, int, holiday)
|
||||
{
|
||||
int actualres = DETOUR_STATIC_CALL(GetHoliday)();
|
||||
if (!g_getHolidayForward)
|
||||
bool actualres = DETOUR_STATIC_CALL(IsHolidayActive)(holiday);
|
||||
if (!g_isHolidayForward)
|
||||
{
|
||||
g_pSM->LogMessage(myself, "Invalid Forward");
|
||||
return actualres;
|
||||
}
|
||||
|
||||
cell_t result = 0;
|
||||
int newres = actualres;
|
||||
cell_t newres = actualres ? 1 : 0;
|
||||
|
||||
g_getHolidayForward->PushCellByRef(&newres);
|
||||
g_getHolidayForward->Execute(&result);
|
||||
g_isHolidayForward->PushCell(holiday);
|
||||
g_isHolidayForward->PushCellByRef(&newres);
|
||||
g_isHolidayForward->Execute(&result);
|
||||
|
||||
if (result == Pl_Changed)
|
||||
if (result > Pl_Continue)
|
||||
{
|
||||
return newres;
|
||||
return (newres == 0) ? false : true;
|
||||
}
|
||||
|
||||
return actualres;
|
||||
}
|
||||
|
||||
bool InitialiseGetHolidayDetour()
|
||||
bool InitialiseIsHolidayDetour()
|
||||
{
|
||||
getHolidayDetour = DETOUR_CREATE_STATIC(GetHoliday, "GetHoliday");
|
||||
isHolidayDetour = DETOUR_CREATE_STATIC(IsHolidayActive, "IsHolidayActive");
|
||||
|
||||
if (getHolidayDetour != NULL)
|
||||
if (isHolidayDetour != NULL)
|
||||
{
|
||||
getHolidayDetour->EnableDetour();
|
||||
isHolidayDetour->EnableDetour();
|
||||
return true;
|
||||
}
|
||||
|
||||
g_pSM->LogError(myself, "GetHoliday detour failed");
|
||||
g_pSM->LogError(myself, "IsHolidayActive detour failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
void RemoveGetHolidayDetour()
|
||||
void RemoveIsHolidayDetour()
|
||||
{
|
||||
getHolidayDetour->Destroy();
|
||||
isHolidayDetour->Destroy();
|
||||
}
|
||||
|
@ -37,9 +37,9 @@
|
||||
#include <jit/x86/x86_macros.h>
|
||||
#include "CDetour/detours.h"
|
||||
|
||||
bool InitialiseGetHolidayDetour();
|
||||
void RemoveGetHolidayDetour();
|
||||
bool InitialiseIsHolidayDetour();
|
||||
void RemoveIsHolidayDetour();
|
||||
|
||||
extern IForward *g_getHolidayForward;
|
||||
extern IForward *g_isHolidayForward;
|
||||
|
||||
#endif //_INCLUDE_SOURCEMOD_HOLIDAY_H_
|
||||
|
@ -216,6 +216,8 @@
|
||||
"game" "eye"
|
||||
"game" "nucleardawn"
|
||||
"game" "hl2ctf"
|
||||
"game" "ag2"
|
||||
"game" "nmrih"
|
||||
}
|
||||
|
||||
"Keys"
|
||||
|
@ -28,6 +28,8 @@
|
||||
"game" "fas"
|
||||
"game" "fistful_of_frags"
|
||||
"game" "cspromod"
|
||||
"game" "ag2"
|
||||
"game" "nmrih"
|
||||
}
|
||||
|
||||
"Offsets"
|
||||
|
@ -26,6 +26,7 @@
|
||||
"game" "fas"
|
||||
"game" "fistful_of_frags"
|
||||
"game" "cspromod"
|
||||
"game" "ag2"
|
||||
}
|
||||
|
||||
"Offsets"
|
||||
@ -76,6 +77,7 @@
|
||||
"game" "pvkii"
|
||||
"game" "fistful_of_frags"
|
||||
"game" "cspromod"
|
||||
"game" "ag2"
|
||||
}
|
||||
|
||||
"Signatures"
|
||||
@ -107,6 +109,8 @@
|
||||
"game" "fas"
|
||||
"game" "fistful_of_frags"
|
||||
"game" "cspromod"
|
||||
"game" "ag2"
|
||||
"game" "nmrih"
|
||||
}
|
||||
|
||||
"Offsets"
|
||||
@ -198,6 +202,7 @@
|
||||
{
|
||||
"game" "ageofchivalry"
|
||||
"game" "cspromod"
|
||||
"game" "ag2"
|
||||
}
|
||||
"Signatures"
|
||||
{
|
||||
|
@ -18,9 +18,9 @@
|
||||
{
|
||||
"game" "dod"
|
||||
"game" "tf"
|
||||
"game" "hl2mp"
|
||||
"game" "cstrike"
|
||||
"game" "garrysmod"
|
||||
"game" "hl2mp"
|
||||
}
|
||||
|
||||
"Offsets"
|
||||
@ -28,7 +28,7 @@
|
||||
/* Offset into CBaseTempEntity constructor */
|
||||
"s_pTempEntities"
|
||||
{
|
||||
"windows" "17"
|
||||
"windows" "19"
|
||||
}
|
||||
"GetTEName"
|
||||
{
|
||||
@ -55,7 +55,7 @@
|
||||
"CBaseTempEntity"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x8B\xC1\x8B\x4C\x24\x04\xC7\x00\x2A\x2A\x2A\x2A\x89\x48\x04\x8B\x15\x2A\x2A\x2A\x2A\x89\x50\x08\xA3\x2A\x2A\x2A\x2A\xC2\x04\x00"
|
||||
"windows" "\x55\x8B\xEC\x8B\xC1\x8B\x4D\x2A\xC7\x00\x2A\x2A\x2A\x2A\x89\x48"
|
||||
}
|
||||
"s_pTempEntities"
|
||||
{
|
||||
@ -65,7 +65,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* CGlobalEntityList */
|
||||
"#default"
|
||||
{
|
||||
@ -73,8 +73,9 @@
|
||||
{
|
||||
"game" "dod"
|
||||
"game" "tf"
|
||||
"game" "cstrike"
|
||||
"game" "hl2mp"
|
||||
"game" "cstrike"
|
||||
"game" "garrysmod"
|
||||
}
|
||||
|
||||
"Signatures"
|
||||
@ -83,7 +84,7 @@
|
||||
"FindEntityByClassname"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
|
||||
"windows" "\x55\x8B\xEC\x53\x56\x8B\xF1\x8B\x4D\x2A\x85\xC9\x57\x74\x2A\x8B\x01\x8B\x50\x2A\xFF\xD2\x8B\x00\x25\x2A\x2A\x2A\x2A\x83\xC0\x2A\xC1\xE0\x04\x8B\x3C\x30\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5D\x2A\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x15\x2A\x2A\x2A\x2A\x83\xC4\x2A\xEB\x2A\x39"
|
||||
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
||||
"mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
||||
}
|
||||
@ -148,7 +149,7 @@
|
||||
* the expected code. A pointer to sv (IServer interface) is used
|
||||
* here.
|
||||
*/
|
||||
"CreateFakeClient_Windows" "\x8B\x44\x24\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8"
|
||||
"CreateFakeClient_Windows" "\x55\x8B\xEC\x8B\x45\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x85\xC0"
|
||||
}
|
||||
|
||||
"Offsets"
|
||||
@ -156,7 +157,7 @@
|
||||
/* Offset into IVEngineServer::CreateFakeClient */
|
||||
"sv"
|
||||
{
|
||||
"windows" "6"
|
||||
"windows" "8"
|
||||
}
|
||||
}
|
||||
|
||||
@ -194,15 +195,16 @@
|
||||
{
|
||||
"game" "dod"
|
||||
"game" "tf"
|
||||
"game" "cstrike"
|
||||
"game" "hl2mp"
|
||||
"game" "cstrike"
|
||||
"game" "garrysmod"
|
||||
}
|
||||
"Signatures"
|
||||
{
|
||||
"FireOutput"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x81\xEC\x2A\x2A\x00\x00\x53\x55\x56\x8B\x71\x14\x85\xF6"
|
||||
"windows" "\x55\x8B\xEC\x81\xEC\x2A\x2A\x2A\x2A\x53\x56\x8B\x71\x2A\x85\xF6"
|
||||
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
||||
"mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
||||
}
|
||||
@ -212,6 +214,15 @@
|
||||
/* SetUserInfo data */
|
||||
"#default"
|
||||
{
|
||||
"#supported"
|
||||
{
|
||||
"game" "dod"
|
||||
"game" "tf"
|
||||
"game" "garrysmod"
|
||||
"game" "hl2mp"
|
||||
"game" "cstrike"
|
||||
}
|
||||
|
||||
"Offsets"
|
||||
{
|
||||
/**
|
||||
@ -222,9 +233,9 @@
|
||||
*/
|
||||
"SetUserCvar"
|
||||
{
|
||||
"windows" "17"
|
||||
"linux" "57"
|
||||
"mac" "57"
|
||||
"windows" "18"
|
||||
"linux" "58"
|
||||
"mac" "58"
|
||||
}
|
||||
/**
|
||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||
|
91
gamedata/sdktools.games/game.ag2.txt
Normal file
91
gamedata/sdktools.games/game.ag2.txt
Normal file
@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Do not edit this file. Any changes will be overwritten by the gamedata
|
||||
* updater or by upgrading your SourceMod install.
|
||||
*
|
||||
* To override data in this file, create a subdirectory named "custom" and
|
||||
* place your own gamedata file(s) inside of it. Such files will be parsed
|
||||
* after SM's own.
|
||||
*
|
||||
* For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(SourceMod)
|
||||
*/
|
||||
|
||||
"Games"
|
||||
{
|
||||
/* Adrenaline Gamer 2 v1.02 */
|
||||
"ag2"
|
||||
{
|
||||
"Offsets"
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "350"
|
||||
"linux" "351"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "238"
|
||||
"linux" "239"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "236"
|
||||
"linux" "237"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "193"
|
||||
"linux" "194"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "197"
|
||||
"linux" "198"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
"windows" "100"
|
||||
"linux" "101"
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "391"
|
||||
"linux" "391"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
"windows" "130"
|
||||
"linux" "131"
|
||||
}
|
||||
"EyeAngles"
|
||||
{
|
||||
"windows" "122"
|
||||
"linux" "123"
|
||||
}
|
||||
"AcceptInput"
|
||||
{
|
||||
"windows" "34"
|
||||
"linux" "35"
|
||||
}
|
||||
"SetEntityModel"
|
||||
{
|
||||
"windows" "23"
|
||||
"linux" "24"
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "229"
|
||||
"linux" "230"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
"windows" "31"
|
||||
"linux" "32"
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "370"
|
||||
"linux" "371"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -28,33 +28,33 @@
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "391"
|
||||
"linux" "392"
|
||||
"mac" "392"
|
||||
"windows" "393"
|
||||
"linux" "394"
|
||||
"mac" "394"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "264"
|
||||
"linux" "265"
|
||||
"mac" "265"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "262"
|
||||
"linux" "263"
|
||||
"mac" "263"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "260"
|
||||
"linux" "261"
|
||||
"mac" "261"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "204"
|
||||
"linux" "205"
|
||||
"mac" "205"
|
||||
"windows" "205"
|
||||
"linux" "206"
|
||||
"mac" "206"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "208"
|
||||
"linux" "209"
|
||||
"mac" "209"
|
||||
"windows" "209"
|
||||
"linux" "210"
|
||||
"mac" "210"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
@ -64,9 +64,9 @@
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "432"
|
||||
"linux" "432"
|
||||
"mac" "432"
|
||||
"windows" "434"
|
||||
"linux" "434"
|
||||
"mac" "434"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
@ -94,9 +94,9 @@
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "253"
|
||||
"linux" "254"
|
||||
"mac" "254"
|
||||
"windows" "255"
|
||||
"linux" "256"
|
||||
"mac" "256"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
@ -106,9 +106,9 @@
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "409"
|
||||
"linux" "410"
|
||||
"mac" "410"
|
||||
"windows" "411"
|
||||
"linux" "412"
|
||||
"mac" "412"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "422"
|
||||
"windows" "423"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
@ -31,7 +31,7 @@
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "466"
|
||||
"windows" "468"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
@ -59,7 +59,7 @@
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "442"
|
||||
"windows" "444"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,33 +18,33 @@
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "390"
|
||||
"linux" "391"
|
||||
"mac" "391"
|
||||
"windows" "392"
|
||||
"linux" "393"
|
||||
"mac" "393"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "264"
|
||||
"linux" "265"
|
||||
"mac" "265"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "262"
|
||||
"linux" "263"
|
||||
"mac" "263"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "260"
|
||||
"linux" "261"
|
||||
"mac" "261"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "204"
|
||||
"linux" "205"
|
||||
"mac" "205"
|
||||
"windows" "205"
|
||||
"linux" "206"
|
||||
"mac" "206"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "208"
|
||||
"linux" "209"
|
||||
"mac" "209"
|
||||
"windows" "209"
|
||||
"linux" "210"
|
||||
"mac" "210"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
@ -54,9 +54,9 @@
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "428"
|
||||
"linux" "429"
|
||||
"mac" "429"
|
||||
"windows" "430"
|
||||
"linux" "431"
|
||||
"mac" "431"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
@ -84,9 +84,9 @@
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "253"
|
||||
"linux" "254"
|
||||
"mac" "254"
|
||||
"windows" "255"
|
||||
"linux" "256"
|
||||
"mac" "256"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
@ -96,9 +96,9 @@
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "408"
|
||||
"linux" "409"
|
||||
"mac" "409"
|
||||
"windows" "410"
|
||||
"linux" "411"
|
||||
"mac" "411"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,40 +11,40 @@
|
||||
|
||||
"Games"
|
||||
{
|
||||
/* Garry's Mod - No symbol names in linux bin */
|
||||
/* Garry's Mod */
|
||||
"garrysmod"
|
||||
{
|
||||
"Offsets"
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "432"
|
||||
"linux" "433"
|
||||
"mac" "433"
|
||||
"windows" "434"
|
||||
"linux" "435"
|
||||
"mac" "435"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "306"
|
||||
"linux" "307"
|
||||
"mac" "307"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "304"
|
||||
"linux" "305"
|
||||
"mac" "305"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "302"
|
||||
"linux" "303"
|
||||
"mac" "303"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "240"
|
||||
"linux" "241"
|
||||
"mac" "241"
|
||||
"windows" "241"
|
||||
"linux" "242"
|
||||
"mac" "242"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "244"
|
||||
"linux" "245"
|
||||
"mac" "245"
|
||||
"windows" "245"
|
||||
"linux" "246"
|
||||
"mac" "246"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
@ -54,9 +54,9 @@
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "471"
|
||||
"linux" "471"
|
||||
"mac" "471"
|
||||
"windows" "473"
|
||||
"linux" "473"
|
||||
"mac" "473"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
@ -84,9 +84,9 @@
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "295"
|
||||
"linux" "296"
|
||||
"mac" "296"
|
||||
"windows" "297"
|
||||
"linux" "298"
|
||||
"mac" "298"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
@ -96,26 +96,9 @@
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "450"
|
||||
"linux" "451"
|
||||
"mac" "451"
|
||||
}
|
||||
}
|
||||
"Signatures"
|
||||
{
|
||||
"FindEntityByClassname"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x57\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x40\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\x8D\xA4\x24\x00\x00\x00\x00\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x04\xEB\x2A\x39\x2A\x2A\x74\x2A\x53"
|
||||
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
||||
"mac" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
||||
}
|
||||
"FireOutput"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\x53\x55\x56\x8B\x71\x2A\x57\x89"
|
||||
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
||||
"mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
||||
"windows" "452"
|
||||
"linux" "453"
|
||||
"mac" "453"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,33 +18,33 @@
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "390"
|
||||
"linux" "391"
|
||||
"mac" "391"
|
||||
"windows" "392"
|
||||
"linux" "393"
|
||||
"mac" "393"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "264"
|
||||
"linux" "265"
|
||||
"mac" "265"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "262"
|
||||
"linux" "263"
|
||||
"mac" "263"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "260"
|
||||
"linux" "261"
|
||||
"mac" "261"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "204"
|
||||
"linux" "205"
|
||||
"mac" "205"
|
||||
"windows" "205"
|
||||
"linux" "206"
|
||||
"mac" "206"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "208"
|
||||
"linux" "209"
|
||||
"mac" "209"
|
||||
"windows" "209"
|
||||
"linux" "210"
|
||||
"mac" "210"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
@ -54,9 +54,9 @@
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "429"
|
||||
"linux" "429"
|
||||
"mac" "429"
|
||||
"windows" "431"
|
||||
"linux" "431"
|
||||
"mac" "431"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
@ -84,9 +84,9 @@
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "253"
|
||||
"linux" "254"
|
||||
"mac" "254"
|
||||
"windows" "255"
|
||||
"linux" "256"
|
||||
"mac" "256"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
@ -96,9 +96,9 @@
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "408"
|
||||
"linux" "409"
|
||||
"mac" "409"
|
||||
"windows" "410"
|
||||
"linux" "411"
|
||||
"mac" "411"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
137
gamedata/sdktools.games/game.nmrih.txt
Normal file
137
gamedata/sdktools.games/game.nmrih.txt
Normal file
@ -0,0 +1,137 @@
|
||||
/**
|
||||
* Do not edit this file. Any changes will be overwritten by the gamedata
|
||||
* updater or by upgrading your SourceMod install.
|
||||
*
|
||||
* To override data in this file, create a subdirectory named "custom" and
|
||||
* place your own gamedata file(s) inside of it. Such files will be parsed
|
||||
* after SM's own.
|
||||
*
|
||||
* For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(SourceMod)
|
||||
*/
|
||||
|
||||
"Games"
|
||||
{
|
||||
/* No More Room in Hell 1.02 */
|
||||
"nmrih"
|
||||
{
|
||||
"Offsets"
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "361"
|
||||
"linux" "362"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "240"
|
||||
"linux" "241"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "238"
|
||||
"linux" "239"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "195"
|
||||
"linux" "196"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "199"
|
||||
"linux" "200"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
"windows" "102"
|
||||
"linux" "103"
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "402"
|
||||
"linux" "402"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
"windows" "132"
|
||||
"linux" "133"
|
||||
}
|
||||
"EyeAngles"
|
||||
{
|
||||
"windows" "124"
|
||||
"linux" "125"
|
||||
}
|
||||
"AcceptInput"
|
||||
{
|
||||
"windows" "34"
|
||||
"linux" "35"
|
||||
}
|
||||
"SetEntityModel"
|
||||
{
|
||||
"windows" "23"
|
||||
"linux" "24"
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "231"
|
||||
"linux" "232"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
"windows" "31"
|
||||
"linux" "32"
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "381"
|
||||
"linux" "382"
|
||||
}
|
||||
|
||||
/* Offset into CBaseTempEntity constructor (vs2010 moved it!) */
|
||||
"s_pTempEntities"
|
||||
{
|
||||
"windows" "19"
|
||||
}
|
||||
"GetTEName"
|
||||
{
|
||||
"windows" "4"
|
||||
"linux" "4"
|
||||
}
|
||||
"GetTENext"
|
||||
{
|
||||
"windows" "8"
|
||||
"linux" "8"
|
||||
}
|
||||
"TE_GetServerClass"
|
||||
{
|
||||
"windows" "0"
|
||||
"linux" "0"
|
||||
}
|
||||
}
|
||||
"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"
|
||||
}
|
||||
"s_pTempEntities"
|
||||
{
|
||||
"library" "server"
|
||||
"linux" "@_ZN15CBaseTempEntity15s_pTempEntitiesE"
|
||||
}
|
||||
"FindEntityByClassname"
|
||||
{
|
||||
"library" "server"
|
||||
"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"
|
||||
"linux" "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
|
||||
}
|
||||
"FireOutput"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x55\x8B\xEC\x81\xEC\x2A\x2A\x2A\x2A\x53\x56\x8B\x2A\x2A\x57\x89"
|
||||
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -7,33 +7,33 @@
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "442"
|
||||
"linux" "443"
|
||||
"mac" "443"
|
||||
"windows" "443"
|
||||
"linux" "444"
|
||||
"mac" "444"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "300"
|
||||
"linux" "301"
|
||||
"mac" "301"
|
||||
"windows" "301"
|
||||
"linux" "302"
|
||||
"mac" "302"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "298"
|
||||
"linux" "299"
|
||||
"mac" "299"
|
||||
"windows" "299"
|
||||
"linux" "300"
|
||||
"mac" "300"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "233"
|
||||
"linux" "234"
|
||||
"mac" "234"
|
||||
"windows" "234"
|
||||
"linux" "235"
|
||||
"mac" "235"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "236"
|
||||
"linux" "237"
|
||||
"mac" "237"
|
||||
"windows" "237"
|
||||
"linux" "238"
|
||||
"mac" "238"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
@ -43,9 +43,9 @@
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "487"
|
||||
"linux" "487"
|
||||
"mac" "487"
|
||||
"windows" "488"
|
||||
"linux" "488"
|
||||
"mac" "488"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
@ -73,9 +73,9 @@
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "291"
|
||||
"linux" "292"
|
||||
"mac" "292"
|
||||
"windows" "292"
|
||||
"linux" "293"
|
||||
"mac" "293"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
@ -85,9 +85,9 @@
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "465"
|
||||
"linux" "466"
|
||||
"mac" "466"
|
||||
"windows" "466"
|
||||
"linux" "467"
|
||||
"mac" "467"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,45 +18,45 @@
|
||||
{
|
||||
"GiveNamedItem"
|
||||
{
|
||||
"windows" "392"
|
||||
"linux" "393"
|
||||
"mac" "393"
|
||||
"windows" "393"
|
||||
"linux" "394"
|
||||
"mac" "394"
|
||||
}
|
||||
"RemovePlayerItem"
|
||||
{
|
||||
"windows" "264"
|
||||
"linux" "265"
|
||||
"mac" "265"
|
||||
"windows" "265"
|
||||
"linux" "266"
|
||||
"mac" "266"
|
||||
}
|
||||
"Weapon_GetSlot"
|
||||
{
|
||||
"windows" "262"
|
||||
"linux" "263"
|
||||
"mac" "263"
|
||||
"windows" "263"
|
||||
"linux" "264"
|
||||
"mac" "264"
|
||||
}
|
||||
"Ignite"
|
||||
{
|
||||
"windows" "205"
|
||||
"linux" "206"
|
||||
"mac" "206"
|
||||
"windows" "206"
|
||||
"linux" "207"
|
||||
"mac" "207"
|
||||
}
|
||||
"Extinguish"
|
||||
{
|
||||
"windows" "209"
|
||||
"linux" "210"
|
||||
"mac" "210"
|
||||
"windows" "210"
|
||||
"linux" "211"
|
||||
"mac" "211"
|
||||
}
|
||||
"Teleport"
|
||||
{
|
||||
"windows" "106"
|
||||
"linux" "107"
|
||||
"mac" "107"
|
||||
"windows" "107"
|
||||
"linux" "108"
|
||||
"mac" "108"
|
||||
}
|
||||
"CommitSuicide"
|
||||
{
|
||||
"windows" "433"
|
||||
"linux" "433"
|
||||
"mac" "433"
|
||||
"windows" "434"
|
||||
"linux" "434"
|
||||
"mac" "434"
|
||||
}
|
||||
"GetVelocity"
|
||||
{
|
||||
@ -72,33 +72,33 @@
|
||||
}
|
||||
"SetEntityModel"
|
||||
{
|
||||
"windows" "23"
|
||||
"linux" "24"
|
||||
"mac" "24"
|
||||
"windows" "24"
|
||||
"linux" "25"
|
||||
"mac" "25"
|
||||
}
|
||||
"AcceptInput"
|
||||
{
|
||||
"windows" "35"
|
||||
"linux" "36"
|
||||
"mac" "36"
|
||||
"windows" "36"
|
||||
"linux" "37"
|
||||
"mac" "37"
|
||||
}
|
||||
"WeaponEquip"
|
||||
{
|
||||
"windows" "255"
|
||||
"linux" "256"
|
||||
"mac" "256"
|
||||
"windows" "256"
|
||||
"linux" "257"
|
||||
"mac" "257"
|
||||
}
|
||||
"Activate"
|
||||
{
|
||||
"windows" "32"
|
||||
"linux" "33"
|
||||
"mac" "33"
|
||||
"windows" "33"
|
||||
"linux" "34"
|
||||
"mac" "34"
|
||||
}
|
||||
"PlayerRunCmd"
|
||||
{
|
||||
"windows" "410"
|
||||
"linux" "411"
|
||||
"mac" "411"
|
||||
"windows" "411"
|
||||
"linux" "412"
|
||||
"mac" "412"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -205,4 +205,12 @@
|
||||
{
|
||||
"game" "hl2ctf"
|
||||
}
|
||||
"game.ag2.txt"
|
||||
{
|
||||
"game" "ag2"
|
||||
}
|
||||
"game.nmrih.txt"
|
||||
{
|
||||
"game" "nmrih"
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
||||
"ClanTagOffset"
|
||||
{
|
||||
"windows" "24"
|
||||
"linux" "41"
|
||||
"linux" "42"
|
||||
"mac" "29"
|
||||
}
|
||||
}
|
||||
@ -76,21 +76,21 @@
|
||||
"TerminateRound"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x83\xEC\x2A\x53\x8B\x5C\x2A\x2A\x55\x56\x57\x33\xF6\x8B\xE9\x33"
|
||||
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x53\x8B\x2A\x2A\x56\x57\x33\xFF\x83"
|
||||
"linux" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
||||
"mac" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
||||
}
|
||||
"GetTranslatedWeaponAlias"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x56\x57\x8B\x7C\x2A\x2A\x33\xF6\xEB\x2A\x2A\x2A\x00\x00\x00\x00\x8B\x04\x2A\x2A\x2A\x2A\x2A\x57\x50\xE8\x2A\x2A\x2A\x00\x83\xC4\x08\x85\xC0\x74\x2A\x83\x2A\x01\x83\x2A\x2A\x72\x2A\x8B\xC7\x5F\x5E"
|
||||
"windows" "\x55\x8B\xEC\x56\x57\x8B\x2A\x2A\x33\xF6\x8D\x2A\x00\x00\x00\x00\x8B\x04\xF5\x2A\x2A\x2A\x2A\x57\x50\xE8\x2A\x2A\x2A\x2A\x83\xC4\x2A\x85\xC0\x74\x2A\x83\xC6\x01\x83\x2A\x1A"
|
||||
"linux" "@_Z24GetTranslatedWeaponAliasPKc"
|
||||
"mac" "@_Z24GetTranslatedWeaponAliasPKc"
|
||||
}
|
||||
"GetWeaponInfo"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x8B\x4C\x2A\x2A\x85\xC9\x75\x2A\x33\xC0\xC3"
|
||||
"windows" "\x55\x8B\xEC\x8B\x4D\x2A\x85\xC9\x75\x2A\x33\xC0\x5D\xC3\x83\xF9\x2A\x7C\x2A\x69\xC9\x2A\x2A\x00\x00"
|
||||
"linux" "@_Z13GetWeaponInfo10CSWeaponID"
|
||||
"mac" "@_Z13GetWeaponInfo10CSWeaponID"
|
||||
}
|
||||
|
@ -18,21 +18,21 @@
|
||||
"Burn"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x51\x56\x8B\xF1\x8B\x8E\x2A\x2A\x00\x00\x8B\x01\x8B\x90\x2A\x2A\x00\x00\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x57\x8D\xBE\x2A\x2A\x2A\x2A\x6A"
|
||||
"windows" "\x55\x8B\xEC\x51\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x01\x8B\x2A\x2A\x2A\x2A\x2A\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x57\x8D"
|
||||
"linux" "@_ZN15CTFPlayerShared4BurnEP9CTFPlayerP13CTFWeaponBase"
|
||||
"mac" "@_ZN15CTFPlayerShared4BurnEP9CTFPlayerP13CTFWeaponBase"
|
||||
}
|
||||
"RemoveDisguise"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x51\x56\x8B\xF1\x8B\x8E\x2A\x2A\x2A\x2A\x57\x8B\xBE\x2A\x2A\x2A\x2A\xE8"
|
||||
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\x57\x8B"
|
||||
"linux" "@_ZN15CTFPlayerShared14RemoveDisguiseEv"
|
||||
"mac" "@_ZN15CTFPlayerShared14RemoveDisguiseEv"
|
||||
}
|
||||
"Disguise"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x51\x53\x56\x8B\xF1\x8B\x8E\x2A\x2A\x00\x00\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x8B\x86\x2A\x2A\x00\x00\x8B\x80"
|
||||
"windows" "\x55\x8B\xEC\x51\x53\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x8B"
|
||||
"linux" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb"
|
||||
"mac" "@_ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb"
|
||||
}
|
||||
@ -41,14 +41,14 @@
|
||||
"library" "server"
|
||||
"linux" "@_ZN13CTFWeaponBase26CalcIsAttackCriticalHelperEv"
|
||||
"mac" "@_ZN13CTFWeaponBase26CalcIsAttackCriticalHelperEv"
|
||||
"windows" "\x55\x8B\xEC\x83\x2A\x2A\x83\x2A\x2A\x53\x56\x57\x6A\x00\x68\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\x6A"
|
||||
"windows" "\x53\x8B\xDC\x83\xEC\x08\x83\xE4\x2A\x83\xC4\x2A\x55\x8B\x6B\x2A\x89\x6C\x24\x2A\x8B\xEC\x83\xEC\x2A\x56\x57\x6A\x00"
|
||||
}
|
||||
"CalcCriticalMelee"
|
||||
{
|
||||
"library" "server"
|
||||
"linux" "@_ZN18CTFWeaponBaseMelee26CalcIsAttackCriticalHelperEv"
|
||||
"mac" "@_ZN18CTFWeaponBaseMelee26CalcIsAttackCriticalHelperEv"
|
||||
"windows" "\x51\x53\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x85\xDB\x74\x2A\x8B\x03\x8B"
|
||||
"windows" "\x55\x8B\xEC\x51\x53\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x8B\xD8\x85\xDB\x74\x2A\x8B\x03"
|
||||
}
|
||||
"CalcCriticalBow"
|
||||
{
|
||||
@ -60,63 +60,63 @@
|
||||
"Regenerate"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x83\xEC\x08\xF3\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x53\x55\x56\x8B\xF1\x8B"
|
||||
"windows" "\x55\x8B\xEC\x83\xEC\x2A\xF3\x0F\x10\x05\x2A\x2A\x2A\x2A\x53\x56\x8B\xF1\x8B\x86"
|
||||
"linux" "@_ZN9CTFPlayer10RegenerateEv"
|
||||
"mac" "@_ZN9CTFPlayer10RegenerateEv"
|
||||
}
|
||||
"AddCondition"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x83\xFF\x2A\x8B\xF1\x7C\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8D\x6F\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8B\xEF\x8B\x86\x2A\x2A\x2A\x2A\xD9"
|
||||
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x53\x56\x57\x8B\x7D\x2A\x83\xFF\x2A\x8B\xF1\x7C\x2A\x8D\x47\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x45\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x7D\x2A\x8B\x8E\x2A\x2A\x2A\x2A\xD9"
|
||||
"linux" "@_ZN15CTFPlayerShared7AddCondE7ETFCondf"
|
||||
"mac" "@_ZN15CTFPlayerShared7AddCondE7ETFCondf"
|
||||
}
|
||||
"RemoveCondition"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x83\xFF\x20\x8B\xF1\x7C\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8D\x6F\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x8B\xEF\x8B\x2A\x2A\x2A\x50\x57\x8D"
|
||||
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x53\x56\x57\x8B\x7D\x2A\x83\xFF\x2A\x8B\xF1\x7C\x2A\x8D\x47\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x45\x2A\xEB\x2A\x8D\x9E\x2A\x2A\x2A\x2A\x89\x7D\x2A\x8B\x4D"
|
||||
"linux" "@_ZN15CTFPlayerShared10RemoveCondE7ETFCondb"
|
||||
"mac" "@_ZN15CTFPlayerShared10RemoveCondE7ETFCondb"
|
||||
}
|
||||
"SetPowerplayEnabled"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x80\x7C\x2A\x2A\x2A\x56\x8B\xF1\x74\x2A\x57\x8D\x44\x24\x2A\x50"
|
||||
"windows" "\x55\x8B\xEC\x80\x7D\x2A\x2A\x56\x8B\xF1\x74\x2A\x57\x8D\x45"
|
||||
"linux" "@_ZN9CTFPlayer19SetPowerplayEnabledEb"
|
||||
"mac" "@_ZN9CTFPlayer19SetPowerplayEnabledEb"
|
||||
}
|
||||
"SetInWaitingForPlayers"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x85\x2A\x2A\x2A\x2A\xA1"
|
||||
"windows" "\x55\x8B\xEC\x56\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x84\xC0\x0F\x85\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A"
|
||||
"linux" "@_ZN24CTeamplayRoundBasedRules22SetInWaitingForPlayersEb"
|
||||
"mac" "@_ZN24CTeamplayRoundBasedRules22SetInWaitingForPlayersEb"
|
||||
}
|
||||
"StunPlayer"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x51\xD9\x2A\x2A\x2A\x2A\x2A\x56\x57\x83\xEC\x2A\xD9\x2A\x2A\x2A\x8B\xF1\xD9\xEE\xD9\x2A\x2A\x2A\xD9\xE8\xD9"
|
||||
"windows" "\x55\x8B\xEC\x51\xD9\x05\x2A\x2A\x2A\x2A\x56\x57\x83\xEC\x14"
|
||||
"linux" "@_ZN15CTFPlayerShared10StunPlayerEffiP9CTFPlayer"
|
||||
"mac" "@_ZN15CTFPlayerShared10StunPlayerEffiP9CTFPlayer"
|
||||
}
|
||||
"GetHoliday"
|
||||
"IsHolidayActive"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x81\xEC\x2A\x2A\x2A\x2A\x53\x55\x56\x57\x6A\x00\xE8\x2A\x2A\x2A\x2A\x89"
|
||||
"linux" "@_Z15UTIL_GetHolidayv"
|
||||
"mac" "@_Z15UTIL_GetHolidayv"
|
||||
"windows" "\x55\x8B\xEC\x80\x3D\x2A\x2A\x2A\x2A\x2A\x75\x2A\xE8"
|
||||
"linux" "@_Z20UTIL_IsHolidayActivei"
|
||||
"mac" "@_Z20UTIL_IsHolidayActivei"
|
||||
}
|
||||
"MakeBleed"
|
||||
{
|
||||
"library" "server"
|
||||
"windows" "\x51\x56\x8B\xF1\x8B\x8E\x2A\x2A\x2A\x2A\x8B\x01\x8B\x90\x2A\x2A\x2A\x2A\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x6A\x19\x8D"
|
||||
"windows" "\x55\x8B\xEC\x51\x56\x8B\xF1\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x01\x8B\x2A\x2A\x2A\x2A\x2A\xFF\xD2\x84\xC0\x0F\x2A\x2A\x2A\x2A\x2A\x6A\x19"
|
||||
"linux" "@_ZN15CTFPlayerShared9MakeBleedEP9CTFPlayerP13CTFWeaponBasef"
|
||||
"mac" "@_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"
|
||||
"windows" "\x55\x8B\xEC\x83\xEC\x2A\x8B\x4D\x2A\x33\xC0\x89\x45\x2A\x89\x45"
|
||||
"linux" "@_Z21DuelMiniGame_IsInDuelP9CTFPlayer"
|
||||
"mac" "@_Z21DuelMiniGame_IsInDuelP9CTFPlayer"
|
||||
}
|
||||
@ -125,9 +125,9 @@
|
||||
{
|
||||
"ForceRespawn"
|
||||
{
|
||||
"windows" "319"
|
||||
"linux" "320"
|
||||
"mac" "320"
|
||||
"windows" "320"
|
||||
"linux" "321"
|
||||
"mac" "321"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ DisplayBanReasonMenu(client)
|
||||
AddMenuItem(menu, "Aimbot", "Aimbot");
|
||||
AddMenuItem(menu, "Speedhacking", "Speedhacking");
|
||||
AddMenuItem(menu, "Mic spamming", "Mic spamming");
|
||||
AddMenuItem(menu, "Admin disrepect", "Admin disrepect");
|
||||
AddMenuItem(menu, "Admin disrespect", "Admin disrespect");
|
||||
AddMenuItem(menu, "Camping", "Camping");
|
||||
AddMenuItem(menu, "Team killing", "Team killing");
|
||||
AddMenuItem(menu, "Unacceptable Spray", "Unacceptable Spray");
|
||||
|
@ -67,6 +67,7 @@ public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
|
||||
CreateNative("BaseComm_IsClientMuted", Native_IsClientMuted);
|
||||
CreateNative("BaseComm_SetClientGag", Native_SetClientGag);
|
||||
CreateNative("BaseComm_SetClientMute", Native_SetClientMute);
|
||||
RegPluginLibrary("basecomm");
|
||||
|
||||
return APLRes_Success;
|
||||
}
|
||||
|
@ -421,7 +421,7 @@ public Action:Command_Rcon(client, args)
|
||||
{
|
||||
ServerCommand("%s", argstring);
|
||||
} else {
|
||||
new String:responseBuffer[1024];
|
||||
new String:responseBuffer[4096];
|
||||
ServerCommandEx(responseBuffer, sizeof(responseBuffer), "%s", argstring);
|
||||
ReplyToCommand(client, responseBuffer);
|
||||
}
|
||||
|
@ -270,23 +270,23 @@ public Action:Command_Say(client, const String:command[], argc)
|
||||
{
|
||||
if (g_Cvar_FriendlyFire != INVALID_HANDLE)
|
||||
{
|
||||
decl String:message[64];
|
||||
decl String:phrase[24];
|
||||
if (GetConVarBool(g_Cvar_FriendlyFire))
|
||||
{
|
||||
Format(message, sizeof(message), "%T", "Friendly Fire On", client);
|
||||
strcopy(phrase, sizeof(phrase), "Friendly Fire On");
|
||||
}
|
||||
else
|
||||
{
|
||||
Format(message, sizeof(message), "%T", "Friendly Fire Off", client);
|
||||
strcopy(phrase, sizeof(phrase), "Friendly Fire Off");
|
||||
}
|
||||
|
||||
if(GetConVarInt(g_Cvar_TriggerShow))
|
||||
{
|
||||
PrintToChatAll("[SM] %s", message);
|
||||
PrintToChatAll("[SM] %t", phrase);
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintToChat(client,"[SM] %s", message);
|
||||
PrintToChat(client,"[SM] %t", phrase);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,14 +43,12 @@ KillDrug(client)
|
||||
{
|
||||
KillDrugTimer(client);
|
||||
|
||||
new Float:pos[3];
|
||||
GetClientAbsOrigin(client, pos);
|
||||
new Float:angs[3];
|
||||
GetClientEyeAngles(client, angs);
|
||||
|
||||
angs[2] = 0.0;
|
||||
|
||||
TeleportEntity(client, pos, angs, NULL_VECTOR);
|
||||
TeleportEntity(client, NULL_VECTOR, angs, NULL_VECTOR);
|
||||
|
||||
new clients[2];
|
||||
clients[0] = client;
|
||||
@ -144,15 +142,12 @@ public Action:Timer_Drug(Handle:timer, any:client)
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
new Float:pos[3];
|
||||
GetClientAbsOrigin(client, pos);
|
||||
|
||||
new Float:angs[3];
|
||||
GetClientEyeAngles(client, angs);
|
||||
|
||||
angs[2] = g_DrugAngles[GetRandomInt(0,100) % 20];
|
||||
|
||||
TeleportEntity(client, pos, angs, NULL_VECTOR);
|
||||
TeleportEntity(client, NULL_VECTOR, angs, NULL_VECTOR);
|
||||
|
||||
new clients[2];
|
||||
clients[0] = client;
|
||||
@ -264,7 +259,7 @@ public Action:Command_Drug(client, args)
|
||||
{
|
||||
decl String:arg2[2];
|
||||
GetCmdArg(2, arg2, sizeof(arg2));
|
||||
if (arg2[0])
|
||||
if (StringToInt(arg2))
|
||||
{
|
||||
toggle = 1;
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ native AdminId:CreateAdmin(const String:name[]="");
|
||||
* @param maxlength Maximum size of string buffer.
|
||||
* @return Number of bytes written.
|
||||
*/
|
||||
native GetAdminUsername(AdminId:id, const String:name[], maxlength);
|
||||
native GetAdminUsername(AdminId:id, String:name[], maxlength);
|
||||
|
||||
/**
|
||||
* Binds an admin to an identity for fast lookup later on. The bind must be unique.
|
||||
|
@ -88,7 +88,7 @@ native ClearArray(Handle:array);
|
||||
* @return New handle to the cloned array object
|
||||
* @error Invalid Handle
|
||||
*/
|
||||
native Handle:CloneArray(Handle:array);
|
||||
native Handle:CloneArray(Handle:array);
|
||||
|
||||
/**
|
||||
* Resizes an array. If the size is smaller than the current size,
|
||||
|
@ -189,7 +189,7 @@ native CS_DropWeapon(client, weaponIndex, bool:toss, bool:blockhook = false);
|
||||
* forward from being called.
|
||||
* @noreturn
|
||||
*/
|
||||
native CS_TerminateRound(Float:delay, CSRoundEndReason:reason, bool:blockhook = false);
|
||||
native CS_TerminateRound(Float:delay, CSRoundEndReason:reason, bool:blockhook = false);
|
||||
|
||||
/**
|
||||
* Gets a weapon name from a weapon alias
|
||||
@ -201,7 +201,7 @@ native CS_DropWeapon(client, weaponIndex, bool:toss, bool:blockhook = false);
|
||||
*
|
||||
* @note Will set the buffer to the original alias if it is not an alias to a weapon.
|
||||
*/
|
||||
native CS_GetTranslatedWeaponAlias(const String:alias[], String:weapon[], size);
|
||||
native CS_GetTranslatedWeaponAlias(const String:alias[], String:weapon[], size);
|
||||
|
||||
/**
|
||||
* Gets a weapon's price
|
||||
@ -214,7 +214,7 @@ native CS_DropWeapon(client, weaponIndex, bool:toss, bool:blockhook = false);
|
||||
* @error Invalid client, failing to get weapon info, or failing to get price offset.
|
||||
* @note c4, knife and shield will always return 0. vest, vest helmet and night vision will always return default price.
|
||||
*/
|
||||
native CS_GetWeaponPrice(client, CSWeaponID:id, bool:defaultprice = false);
|
||||
native CS_GetWeaponPrice(client, CSWeaponID:id, bool:defaultprice = false);
|
||||
|
||||
/**
|
||||
* Gets a clients clan tag
|
||||
@ -225,7 +225,7 @@ native CS_DropWeapon(client, weaponIndex, bool:toss, bool:blockhook = false);
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_GetClientClanTag(client, String:buffer[], size);
|
||||
native CS_GetClientClanTag(client, String:buffer[], size);
|
||||
|
||||
/**
|
||||
* Sets a clients clan tag
|
||||
@ -235,7 +235,7 @@ native CS_DropWeapon(client, weaponIndex, bool:toss, bool:blockhook = false);
|
||||
*
|
||||
* @error Invalid client.
|
||||
*/
|
||||
native CS_SetClientClanTag(client, const String:tag[]);
|
||||
native CS_SetClientClanTag(client, const String:tag[]);
|
||||
|
||||
/**
|
||||
* Do not edit below this line!
|
||||
|
@ -263,7 +263,7 @@ stock Float:operator--(Float:oper)
|
||||
|
||||
stock Float:operator-(Float:oper)
|
||||
{
|
||||
return oper^Float:((-1)^((-1)/2)); /* IEEE values are sign/magnitude */
|
||||
return oper^Float:cellmin; /* IEEE values are sign/magnitude */
|
||||
}
|
||||
|
||||
stock Float:operator*(Float:oper1, oper2)
|
||||
|
@ -41,6 +41,7 @@
|
||||
#define SOURCE_SDK_EPISODE1 20 /**< SDK+Engine released after Episode 1 */
|
||||
#define SOURCE_SDK_EPISODE2 30 /**< SDK+Engine released after Episode 2/Orange Box */
|
||||
#define SOURCE_SDK_BLOODYGOODTIME 32 /**< Modified version of ep2 engine used by Bloody Good Time (no SDK) */
|
||||
#define SOURCE_SDK_EYE 33 /**< Modified version of ep2 engine used by E.Y.E Divine Cybermancy (no SDK) */
|
||||
#define SOURCE_SDK_EPISODE2VALVE 35 /**< SDK+Engine released after Episode 2/Orange Box */
|
||||
#define SOURCE_SDK_LEFT4DEAD 40 /**< Engine released after Left 4 Dead (no SDK yet) */
|
||||
#define SOURCE_SDK_LEFT4DEAD2 50 /**< Engine released after Left 4 Dead 2 (no SDK yet) */
|
||||
@ -126,6 +127,13 @@ native Float:GetEngineTime();
|
||||
*/
|
||||
native Float:GetGameTime();
|
||||
|
||||
/**
|
||||
* Returns the game's internal tick count.
|
||||
*
|
||||
* @return Game tick count.
|
||||
*/
|
||||
native GetGameTickCount();
|
||||
|
||||
/**
|
||||
* Returns the game description from the mod.
|
||||
*
|
||||
|
@ -404,6 +404,16 @@ native bool:GetMenuExitBackButton(Handle:menu);
|
||||
*/
|
||||
native SetMenuExitBackButton(Handle:menu, bool:button);
|
||||
|
||||
/**
|
||||
* Sets whether or not the menu has a "no vote" button in slot 1.
|
||||
* By default, menus do not have a no vote button.
|
||||
*
|
||||
* @param menu Menu Handle.
|
||||
* @param button True to enable the button, false to remove it.
|
||||
* @return True if allowed; false on failure.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
native bool:SetMenuNoVoteButton(Handle:menu, bool:button);
|
||||
|
||||
/**
|
||||
* Cancels a menu from displaying on all clients. While the
|
||||
@ -489,7 +499,7 @@ native bool:VoteMenu(Handle:menu, clients[], numClients, time, flags=0);
|
||||
* in progress.
|
||||
* @error Invalid Handle.
|
||||
*/
|
||||
stock VoteMenuToAll(Handle:menu, time, flags=0)
|
||||
stock bool:VoteMenuToAll(Handle:menu, time, flags=0)
|
||||
{
|
||||
new total;
|
||||
decl players[MaxClients];
|
||||
|
@ -115,14 +115,20 @@ enum TFCond
|
||||
TFCond_CritOnWin,
|
||||
TFCond_CritOnFlagCapture,
|
||||
TFCond_CritOnKill,
|
||||
TFCond_RestrictToMelee
|
||||
TFCond_RestrictToMelee,
|
||||
|
||||
TFCond_CritMmmph = 44,
|
||||
TFCond_DefenseBuffMmmph,
|
||||
};
|
||||
|
||||
enum TFHoliday
|
||||
{
|
||||
TFHoliday_None = 1,
|
||||
TFHoliday_Birthday = 1,
|
||||
TFHoliday_Halloween,
|
||||
TFHoliday_Birthday
|
||||
TFHoliday_Christmas,
|
||||
TFHoliday_MeetThePyro,
|
||||
TFHoliday_FullMoon,
|
||||
TFHoliday_HalloweenOrFullMoon,
|
||||
};
|
||||
|
||||
enum TFObjectType
|
||||
@ -278,15 +284,22 @@ native TFClassType:TF2_GetClass(const String:classname[]);
|
||||
forward Action:TF2_CalcIsAttackCritical(client, weapon, String:weaponname[], &bool:result);
|
||||
|
||||
/**
|
||||
* Called when the game checks to see if the current day is one of its tracked holidays
|
||||
*
|
||||
* @note Change the value of holiday and return Plugin_Changed to override.
|
||||
* Return Plugin_Continue for no change.
|
||||
*
|
||||
* @param holiday Current Holiday
|
||||
* @deprecated No longer called. Use TF2_OnIsHolidayActive.
|
||||
*/
|
||||
#pragma deprecated No longer called. Use TF2_OnIsHolidayActive.
|
||||
forward Action:TF2_OnGetHoliday(&TFHoliday:holiday);
|
||||
|
||||
/**
|
||||
* Called at various times when the game checks to see if the given holiday is active.
|
||||
* Return Plugin_Continue to let the original calculation or return a higher
|
||||
* action to override the decision with the value of 'result'
|
||||
*
|
||||
* @param holiday Holiday being checked.
|
||||
* @param result Buffer param for the result of the decision.
|
||||
* @return Plugin_Continue for original calculation, higher value to use 'result'.
|
||||
*/
|
||||
forward Action:TF2_OnIsHolidayActive(TFHoliday:holiday, &bool:result);
|
||||
|
||||
/**
|
||||
* Returns whether or not a client (Player) is in a duel.
|
||||
*
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define TF_DEATHFLAG_DEADRINGER (1 << 5)
|
||||
#define TF_DEATHFLAG_INTERRUPTED (1 << 6)
|
||||
#define TF_DEATHFLAG_GIBBED (1 << 7)
|
||||
#define TF_DEATHFLAG_PURGATORY (1 << 8)
|
||||
|
||||
// Custom kill identifiers for the customkill property on the player_death event
|
||||
enum {
|
||||
@ -130,6 +131,8 @@ enum {
|
||||
TF_CUSTOM_PLASMA_CHARGED,
|
||||
TF_CUSTOM_PLASMA_GIB,
|
||||
TF_CUSTOM_PRACTICE_STICKY,
|
||||
TF_CUSTOM_EYEBALL_ROCKET,
|
||||
TF_CUSTOM_HEADSHOT_DECAPITATION,
|
||||
};
|
||||
|
||||
// Weapon codes as used in some events, such as player_death
|
||||
@ -216,6 +219,11 @@ enum {
|
||||
TF_WEAPON_RAYGUN,
|
||||
TF_WEAPON_PARTICLE_CANNON,
|
||||
TF_WEAPON_MECHANICAL_ARM,
|
||||
TF_WEAPON_DRG_POMSON,
|
||||
TF_WEAPON_BAT_GIFTWRAP,
|
||||
TF_WEAPON_GRENADE_ORNAMENT,
|
||||
TF_WEAPON_RAYGUN_REVENGE,
|
||||
TF_WEAPON_PEP_BRAWLER_BLASTER,
|
||||
};
|
||||
|
||||
// TF2 Weapon Slots for GetPlayerWeaponSlot
|
||||
|
@ -37,6 +37,6 @@
|
||||
|
||||
#define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */
|
||||
#define SOURCEMOD_V_MINOR 4 /**< SourceMod Minor version */
|
||||
#define SOURCEMOD_V_RELEASE 0 /**< SourceMod Release version */
|
||||
#define SOURCEMOD_V_RELEASE 4 /**< SourceMod Release version */
|
||||
|
||||
#define SOURCEMOD_VERSION "1.4.0-dev" /**< SourceMod version string (major.minor.release.build) */
|
||||
#define SOURCEMOD_VERSION "1.4.4" /**< SourceMod version string (major.minor.release.build) */
|
||||
|
@ -86,6 +86,9 @@ public OnPluginStart()
|
||||
{
|
||||
for (new i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if (!IsClientConnected(i))
|
||||
continue;
|
||||
|
||||
if (IsClientSourceTV(i))
|
||||
{
|
||||
g_SourceTV = i;
|
||||
|
@ -1 +1 @@
|
||||
1.4.0-dev
|
||||
1.4.4
|
||||
|
@ -40,12 +40,13 @@
|
||||
*/
|
||||
|
||||
#define SMINTERFACE_GAMEHELPERS_NAME "IGameHelpers"
|
||||
#define SMINTERFACE_GAMEHELPERS_VERSION 7
|
||||
#define SMINTERFACE_GAMEHELPERS_VERSION 8
|
||||
|
||||
class CBaseEntity;
|
||||
class CBaseHandle;
|
||||
class SendProp;
|
||||
class ServerClass;
|
||||
class ICommandLine;
|
||||
struct edict_t;
|
||||
struct datamap_t;
|
||||
struct typedescription_t;
|
||||
@ -284,6 +285,13 @@ namespace SourceMod
|
||||
* @return True on success, false on failure.
|
||||
*/
|
||||
virtual bool HintTextMsg(int client, const char *msg) =0;
|
||||
|
||||
/**
|
||||
* @brief Retrieves the Valve command line pointer.
|
||||
*
|
||||
* @return ICommandLine ptr or NULL if not found.
|
||||
*/
|
||||
virtual ICommandLine *GetValveCommandLine() =0;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -191,6 +191,9 @@ bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error,
|
||||
#if defined SMEXT_ENABLE_TRANSLATOR
|
||||
SM_GET_IFACE(TRANSLATOR, translator);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_NINVOKE
|
||||
SM_GET_IFACE(NINVOKE, ninvoke);
|
||||
#endif
|
||||
#if defined SMEXT_ENABLE_ROOTCONSOLEMENU
|
||||
SM_GET_IFACE(ROOTCONSOLE, rootconsole);
|
||||
#endif
|
||||
|
@ -20,7 +20,7 @@ Pants will save us from certain death.
|
||||
Invaders' blood marches through my veins, like GIANT RADIOACTIVE RUBBER PANTS!
|
||||
THE PANTS COMMAND COMMAND ME! DO NOT IGNORE MY VEINS.
|
||||
This file sure has gotten big.
|
||||
sawce loves anime, sushi, and macs
|
||||
applesawce loves anime, sushi, and macs
|
||||
u
|
||||
not me
|
||||
skull man was here
|
||||
|
@ -16,7 +16,7 @@ elif compiler.cc.name == 'msvc':
|
||||
compiler['POSTLINKFLAGS'].append('/SUBSYSTEM:CONSOLE')
|
||||
|
||||
if AMBuild.target['platform'] == 'linux':
|
||||
compiler['CDEFINES'].extend(['LINUX', 'HAVE_STDINT_H', 'AMX_ANSIONLY', 'ENABLE_BINRELOC'])
|
||||
compiler['CDEFINES'].extend(['LINUX', 'HAVE_STDINT_H', 'AMX_ANSIONLY', 'ENABLE_BINRELOC', '_GNU_SOURCE'])
|
||||
elif AMBuild.target['platform'] == 'darwin':
|
||||
compiler['CDEFINES'].extend(['DARWIN', 'HAVE_STDINT_H', 'AMX_ANSIONLY', 'ENABLE_BINRELOC'])
|
||||
|
||||
|
@ -30,7 +30,7 @@ LINK = -lgcc -static-libgcc
|
||||
|
||||
INCLUDE = -I. -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn
|
||||
|
||||
CFLAGS += -DLINUX -DHAVE_STDINT_H -DAMX_ANSIONLY -DENABLE_BINRELOC -Dstricmp=strcasecmp -m32
|
||||
CFLAGS += -D_GNU_SOURCE -Wall -Werror -Wno-uninitialized -Wno-unused-result -Wno-unused -Wno-switch -Wno-parentheses -Wno-format -DLINUX -DHAVE_STDINT_H -DAMX_ANSIONLY -DENABLE_BINRELOC -Dstricmp=strcasecmp -m32
|
||||
CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
|
||||
|
||||
################################################
|
||||
|
@ -2923,7 +2923,7 @@ static cell initvector(int ident,int tag,cell size,int fillzero,
|
||||
matchbrace=matchtoken('{');
|
||||
for ( ;; ) {
|
||||
prev2=prev1;
|
||||
prev1=init(iVARIABLE,&ctag,errorfound);
|
||||
prev1=init(ident,&ctag,errorfound);
|
||||
if (!matchbrace)
|
||||
break;
|
||||
if ((ellips=matchtoken(tELLIPS))!=0)
|
||||
|
@ -59,7 +59,7 @@ static short skiplevel; /* level at which we started skipping (including nested
|
||||
static unsigned char term_expr[] = "";
|
||||
static int listline=-1; /* "current line" for the list file */
|
||||
|
||||
#if defined __GNUC__
|
||||
#if defined DARWIN
|
||||
static double pow10(double d)
|
||||
{
|
||||
return pow(10, d);
|
||||
|
@ -47,12 +47,12 @@ if ($reconf) {
|
||||
$argn = $#ARGV + 1;
|
||||
print "Attempting to reconfigure...\n";
|
||||
if ($argn > 0 && $^O !~ /MSWin/) {
|
||||
$result = `CC=$ARGV[0] CXX=$ARGV[0] python3.1 ../build/configure.py --enable-optimize`;
|
||||
$result = `CC=$ARGV[0] CXX=$ARGV[0] python3 ../build/configure.py --enable-optimize`;
|
||||
} else {
|
||||
if ($^O eq "linux") {
|
||||
$result = `CC=gcc-4.4 CXX=gcc-4.4 python3.1 ../build/configure.py --enable-optimize`;
|
||||
$result = `CC=gcc-4.4 CXX=gcc-4.4 python3 ../build/configure.py --enable-optimize`;
|
||||
} elsif ($^O eq "darwin") {
|
||||
$result = `CC=gcc-4.2 CXX=gcc-4.2 python3.1 ../build/configure.py --enable-optimize`;
|
||||
$result = `CC=clang CXX=clang python3 ../build/configure.py --enable-optimize`;
|
||||
} else {
|
||||
$result = `C:\\Python31\\Python.exe ..\\build\\configure.py --enable-optimize`;
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
dev
|
||||
rel
|
||||
|
@ -11,7 +11,7 @@ require 'helpers.pm';
|
||||
chdir('../../../OUTPUT');
|
||||
|
||||
if ($^O eq "linux" || $^O eq "darwin") {
|
||||
system("python3.1 build.py 2>&1");
|
||||
system("python3 build.py 2>&1");
|
||||
} else {
|
||||
system("C:\\Python31\\python.exe build.py 2>&1");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user