Compare commits
19
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
255e2ef6f0 | ||
|
|
18f8d10f10 | ||
|
|
a626005cc6 | ||
|
|
bf9c96b48f | ||
|
|
dca2596788 | ||
|
|
b491345d78 | ||
|
|
8cb2fcdf65 | ||
|
|
f86c5e9940 | ||
|
|
fd9dbded8b | ||
|
|
404cd28423 | ||
|
|
afaddda8cf | ||
|
|
6c7a6c72aa | ||
|
|
97605a500c | ||
|
|
16b7c576d4 | ||
|
|
f504188854 | ||
|
|
8b2d7a1e49 | ||
|
|
b429c37ab3 | ||
|
|
13cf293f1c | ||
|
|
a2b9c91423 |
@@ -1,5 +1,16 @@
|
|||||||
SourceMod Changelog
|
SourceMod Changelog
|
||||||
|
|
||||||
|
SourceMod 1.7.2 [2015-05-30]
|
||||||
|
|
||||||
|
URL: http://wiki.alliedmods.net/SourceMod_1.7.2_Release_Notes
|
||||||
|
|
||||||
|
User Changes:
|
||||||
|
- Updated game compatibility for the latest CS:GO updates.
|
||||||
|
- Fixed potential crash when using SDKTools GameRules_* natives. (PR 330) (yed).
|
||||||
|
- Fixed regression in v1.7.0 causing admin-sql-threaded plugin to not properly load admins. (bug 6365) (PR 342).
|
||||||
|
- Fixed leak in plugin heap memory that could lead to "Not enough space on the heap" error. (bug 6370).
|
||||||
|
|
||||||
|
----------------------------------------------------------
|
||||||
SourceMod 1.7.1 [2015-04-18]
|
SourceMod 1.7.1 [2015-04-18]
|
||||||
|
|
||||||
URL: http://wiki.alliedmods.net/SourceMod_1.7.1_Release_Notes
|
URL: http://wiki.alliedmods.net/SourceMod_1.7.1_Release_Notes
|
||||||
|
|||||||
@@ -105,8 +105,8 @@ sm_timeleft_interval 0
|
|||||||
// 1 (Enabled)
|
// 1 (Enabled)
|
||||||
// --
|
// --
|
||||||
// Requires: basetriggers.smx
|
// Requires: basetriggers.smx
|
||||||
// Default: 1
|
// Default: 0
|
||||||
sm_trigger_show 1
|
sm_trigger_show 0
|
||||||
|
|
||||||
// Specifies whether or not to display vote progress to clients in the
|
// Specifies whether or not to display vote progress to clients in the
|
||||||
// "hint" box (near the bottom of the screen in most games).
|
// "hint" box (near the bottom of the screen in most games).
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ static CBaseEntity *FindEntityByNetClass(int start, const char *classname)
|
|||||||
for (int i = start; i < maxEntities; i++)
|
for (int i = start; i < maxEntities; i++)
|
||||||
{
|
{
|
||||||
edict_t *current = gamehelpers->EdictOfIndex(i);
|
edict_t *current = gamehelpers->EdictOfIndex(i);
|
||||||
if (current == NULL)
|
if (current == NULL || current->IsFree())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
IServerNetworkable *network = current->GetNetworkable();
|
IServerNetworkable *network = current->GetNetworkable();
|
||||||
|
|||||||
@@ -47,17 +47,17 @@
|
|||||||
"mac" "294"
|
"mac" "294"
|
||||||
}
|
}
|
||||||
"PreThink"
|
"PreThink"
|
||||||
{
|
|
||||||
"windows" "365"
|
|
||||||
"linux" "366"
|
|
||||||
"mac" "366"
|
|
||||||
}
|
|
||||||
"PostThink"
|
|
||||||
{
|
{
|
||||||
"windows" "366"
|
"windows" "366"
|
||||||
"linux" "367"
|
"linux" "367"
|
||||||
"mac" "367"
|
"mac" "367"
|
||||||
}
|
}
|
||||||
|
"PostThink"
|
||||||
|
{
|
||||||
|
"windows" "367"
|
||||||
|
"linux" "368"
|
||||||
|
"mac" "368"
|
||||||
|
}
|
||||||
"Reload"
|
"Reload"
|
||||||
{
|
{
|
||||||
"windows" "308"
|
"windows" "308"
|
||||||
|
|||||||
@@ -263,9 +263,9 @@
|
|||||||
{
|
{
|
||||||
"GiveNamedItem"
|
"GiveNamedItem"
|
||||||
{
|
{
|
||||||
"windows" "445"
|
"windows" "446"
|
||||||
"linux" "446"
|
"linux" "447"
|
||||||
"mac" "446"
|
"mac" "447"
|
||||||
}
|
}
|
||||||
"RemovePlayerItem"
|
"RemovePlayerItem"
|
||||||
{
|
{
|
||||||
@@ -299,9 +299,9 @@
|
|||||||
}
|
}
|
||||||
"CommitSuicide"
|
"CommitSuicide"
|
||||||
{
|
{
|
||||||
"windows" "495"
|
"windows" "496"
|
||||||
"linux" "495"
|
"linux" "496"
|
||||||
"mac" "495"
|
"mac" "496"
|
||||||
}
|
}
|
||||||
"GetVelocity"
|
"GetVelocity"
|
||||||
{
|
{
|
||||||
@@ -341,9 +341,9 @@
|
|||||||
}
|
}
|
||||||
"PlayerRunCmd"
|
"PlayerRunCmd"
|
||||||
{
|
{
|
||||||
"windows" "465"
|
"windows" "466"
|
||||||
"linux" "466"
|
"linux" "467"
|
||||||
"mac" "466"
|
"mac" "467"
|
||||||
}
|
}
|
||||||
"GiveAmmo"
|
"GiveAmmo"
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
//Offset into HandleCommand_Buy_Internal
|
//Offset into HandleCommand_Buy_Internal
|
||||||
"CCSPlayerInventoryOffset"
|
"CCSPlayerInventoryOffset"
|
||||||
{
|
{
|
||||||
"windows" "285"
|
"windows" "55"
|
||||||
"linux" "32"
|
"linux" "32"
|
||||||
"mac" "109"
|
"mac" "109"
|
||||||
}
|
}
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
"HandleCommand_Buy_Internal"//Wildcard first 6 bytes for getting address for weapon price.
|
"HandleCommand_Buy_Internal"//Wildcard first 6 bytes for getting address for weapon price.
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x81\xEC\x2A\x2A\x2A\x2A\x83\x3D\x2A\x2A\x2A\x2A\x00\x53\x56\x57\x8B\xF9"
|
"windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x81\xEC\x64\x01\x00\x00\x53\x56\x57\x6A\x00\x8B\xF9\xE8\x2A\x2A\x2A\x2A\x33\xC9\x84\xC0"
|
||||||
"linux" "@_ZN9CCSPlayer26HandleCommand_Buy_InternalEPKcib"
|
"linux" "@_ZN9CCSPlayer26HandleCommand_Buy_InternalEPKcib"
|
||||||
"mac" "@_ZN9CCSPlayer26HandleCommand_Buy_InternalEPKcib"
|
"mac" "@_ZN9CCSPlayer26HandleCommand_Buy_InternalEPKcib"
|
||||||
}
|
}
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
"TerminateRound"
|
"TerminateRound"
|
||||||
{
|
{
|
||||||
"library" "server"
|
"library" "server"
|
||||||
"windows" "\x55\x8B\xEC\x83\x2A\x2A\x83\x2A\x2A\x53\x56\x57\x8B\xF9\xF3\x0F\x2A\x2A\x2A\x2A\x33\xDB\xC7\x2A\x2A\x2A\x00\x00\x00\x00\x89"
|
"windows" "\x55\x8B\xEC\x83\xE4\xF8\x83\xEC\x3C\x53\x8B\xD9\xF3\x0F\x11\x4C\x24\x18\x56\x57\x89\x2A\x2A\x2A\x83"
|
||||||
"linux" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
"linux" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
||||||
"mac" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
"mac" "@_ZN12CCSGameRules14TerminateRoundEfi"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ public void OnReceiveUser(Database db, DBResultSet rs, const char[] error, any d
|
|||||||
/**
|
/**
|
||||||
* Cache user info -- [0] = db id, [1] = cache id, [2] = groups
|
* Cache user info -- [0] = db id, [1] = cache id, [2] = groups
|
||||||
*/
|
*/
|
||||||
char[][] user_lookup = new char[num_accounts][3];
|
int[][] user_lookup = new int[num_accounts][3];
|
||||||
int total_users = 0;
|
int total_users = 0;
|
||||||
|
|
||||||
while (rs.FetchRow())
|
while (rs.FetchRow())
|
||||||
|
|||||||
@@ -299,17 +299,15 @@ typeset SDKHookCB
|
|||||||
*
|
*
|
||||||
* @param entity Entity index
|
* @param entity Entity index
|
||||||
* @param classname Class name
|
* @param classname Class name
|
||||||
* @noreturn
|
|
||||||
*/
|
*/
|
||||||
forward OnEntityCreated(entity, const String:classname[]);
|
forward void OnEntityCreated(int entity, const char[] classname);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief When an entity is destroyed
|
* @brief When an entity is destroyed
|
||||||
*
|
*
|
||||||
* @param entity Entity index
|
* @param entity Entity index
|
||||||
* @noreturn
|
|
||||||
*/
|
*/
|
||||||
forward OnEntityDestroyed(entity);
|
forward void OnEntityDestroyed(int entity);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief When the game description is retrieved
|
* @brief When the game description is retrieved
|
||||||
@@ -317,18 +315,18 @@ forward OnEntityDestroyed(entity);
|
|||||||
* @note Not supported on ep2v.
|
* @note Not supported on ep2v.
|
||||||
*
|
*
|
||||||
* @param gameDesc Game description
|
* @param gameDesc Game description
|
||||||
* @noreturn
|
* @return Plugin_Changed if gameDesc has been edited, else no change.
|
||||||
*/
|
*/
|
||||||
forward Action:OnGetGameDescription(String:gameDesc[64]);
|
forward Action OnGetGameDescription(char gameDesc[64]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief When the level is initialized
|
* @brief When the level is initialized
|
||||||
*
|
*
|
||||||
* @param mapName Name of the map
|
* @param mapName Name of the map
|
||||||
* @param mapEntities Entities of the map
|
* @param mapEntities Entities of the map
|
||||||
* @noreturn
|
* @return Plugin_Changed if mapEntities has been edited, else no change.
|
||||||
*/
|
*/
|
||||||
forward Action:OnLevelInit(const String:mapName[], String:mapEntities[2097152]);
|
forward Action OnLevelInit(const char[] mapName, char mapEntities[2097152]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Hooks an entity
|
* @brief Hooks an entity
|
||||||
@@ -336,9 +334,8 @@ forward Action:OnLevelInit(const String:mapName[], String:mapEntities[2097152]);
|
|||||||
* @param entity Entity index
|
* @param entity Entity index
|
||||||
* @param type Type of function to hook
|
* @param type Type of function to hook
|
||||||
* @param callback Function to call when hook is called
|
* @param callback Function to call when hook is called
|
||||||
* @noreturn
|
|
||||||
*/
|
*/
|
||||||
native SDKHook(entity, SDKHookType:type, SDKHookCB:callback);
|
native void SDKHook(int entity, SDKHookType type, SDKHookCB callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Hooks an entity
|
* @brief Hooks an entity
|
||||||
@@ -348,7 +345,7 @@ native SDKHook(entity, SDKHookType:type, SDKHookCB:callback);
|
|||||||
* @param callback Function to call when hook is called
|
* @param callback Function to call when hook is called
|
||||||
* @return bool Hook Successful
|
* @return bool Hook Successful
|
||||||
*/
|
*/
|
||||||
native bool:SDKHookEx(entity, SDKHookType:type, SDKHookCB:callback);
|
native bool SDKHookEx(int entity, SDKHookType type, SDKHookCB callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Unhooks an entity
|
* @brief Unhooks an entity
|
||||||
@@ -356,9 +353,8 @@ native bool:SDKHookEx(entity, SDKHookType:type, SDKHookCB:callback);
|
|||||||
* @param entity Entity index
|
* @param entity Entity index
|
||||||
* @param type Type of function to unhook
|
* @param type Type of function to unhook
|
||||||
* @param callback Callback function to unhook
|
* @param callback Callback function to unhook
|
||||||
* @noreturn
|
|
||||||
*/
|
*/
|
||||||
native SDKUnhook(entity, SDKHookType:type, SDKHookCB:callback);
|
native void SDKUnhook(int entity, SDKHookType type, SDKHookCB callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Applies damage to an entity
|
* @brief Applies damage to an entity
|
||||||
@@ -373,9 +369,10 @@ native SDKUnhook(entity, SDKHookType:type, SDKHookCB:callback);
|
|||||||
* @param weapon Weapon index (orangebox and later) or -1 for unspecified
|
* @param weapon Weapon index (orangebox and later) or -1 for unspecified
|
||||||
* @param damageForce Velocity of damage force
|
* @param damageForce Velocity of damage force
|
||||||
* @param damagePosition Origin of damage
|
* @param damagePosition Origin of damage
|
||||||
* @noreturn
|
|
||||||
*/
|
*/
|
||||||
native SDKHooks_TakeDamage(entity, inflictor, attacker, Float:damage, damageType=DMG_GENERIC, weapon=-1, const Float:damageForce[3]=NULL_VECTOR, const Float:damagePosition[3]=NULL_VECTOR);
|
native void SDKHooks_TakeDamage(int entity, int inflictor, int attacker,
|
||||||
|
float damage, int damageType=DMG_GENERIC, int weapon=-1,
|
||||||
|
const float damageForce[3]=NULL_VECTOR, const float damagePosition[3]=NULL_VECTOR);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Forces a client to drop the specified weapon
|
* @brief Forces a client to drop the specified weapon
|
||||||
@@ -384,15 +381,15 @@ native SDKHooks_TakeDamage(entity, inflictor, attacker, Float:damage, damageType
|
|||||||
* @param weapon Weapon entity index.
|
* @param weapon Weapon entity index.
|
||||||
* @param vecTarget Location to toss weapon to, or NULL_VECTOR for default.
|
* @param vecTarget Location to toss weapon to, or NULL_VECTOR for default.
|
||||||
* @param vecVelocity Velocity at which to toss weapon, or NULL_VECTOR for default.
|
* @param vecVelocity Velocity at which to toss weapon, or NULL_VECTOR for default.
|
||||||
* @noreturn
|
|
||||||
* @error Invalid client or weapon entity, weapon not owned by client.
|
* @error Invalid client or weapon entity, weapon not owned by client.
|
||||||
*/
|
*/
|
||||||
native SDKHooks_DropWeapon(client, weapon, const Float:vecTarget[3]=NULL_VECTOR, const Float:vecVelocity[3]=NULL_VECTOR);
|
native void SDKHooks_DropWeapon(int client, int weapon, const float vecTarget[3]=NULL_VECTOR,
|
||||||
|
const float vecVelocity[3]=NULL_VECTOR);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do not edit below this line!
|
* Do not edit below this line!
|
||||||
*/
|
*/
|
||||||
public Extension:__ext_sdkhooks =
|
public Extension __ext_sdkhooks =
|
||||||
{
|
{
|
||||||
name = "SDKHooks",
|
name = "SDKHooks",
|
||||||
file = "sdkhooks.ext",
|
file = "sdkhooks.ext",
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.7.1
|
1.7.2
|
||||||
|
|||||||
+7
-8
@@ -4,6 +4,8 @@
|
|||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define REG_EAX 0
|
#define REG_EAX 0
|
||||||
#define REG_ECX 1
|
#define REG_ECX 1
|
||||||
@@ -13,8 +15,6 @@
|
|||||||
#define IA32_MOV_REG_IMM 0xB8 // encoding is +r <imm32>
|
#define IA32_MOV_REG_IMM 0xB8 // encoding is +r <imm32>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void Msg( const char *, ... );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if a call to a fpic thunk has just been written into dest.
|
* Checks if a call to a fpic thunk has just been written into dest.
|
||||||
* If found replaces it with a direct mov that sets the required register to the value of pc.
|
* If found replaces it with a direct mov that sets the required register to the value of pc.
|
||||||
@@ -25,9 +25,7 @@ extern void Msg( const char *, ... );
|
|||||||
*/
|
*/
|
||||||
void check_thunks(unsigned char *dest, unsigned char *pc)
|
void check_thunks(unsigned char *dest, unsigned char *pc)
|
||||||
{
|
{
|
||||||
#if defined WIN32
|
#ifndef WIN32
|
||||||
return;
|
|
||||||
#else
|
|
||||||
/* Step write address back 4 to the start of the function address */
|
/* Step write address back 4 to the start of the function address */
|
||||||
unsigned char *writeaddr = dest - 4;
|
unsigned char *writeaddr = dest - 4;
|
||||||
unsigned char *calloffset = *(unsigned char **)writeaddr;
|
unsigned char *calloffset = *(unsigned char **)writeaddr;
|
||||||
@@ -64,7 +62,10 @@ void check_thunks(unsigned char *dest, unsigned char *pc)
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
Msg("Unknown thunk: %c\n", *(calladdr+1));
|
printf("Unknown thunk: %c\n", *(calladdr+1));
|
||||||
|
#ifndef NDEBUG
|
||||||
|
abort();
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -81,8 +82,6 @@ void check_thunks(unsigned char *dest, unsigned char *pc)
|
|||||||
*(void **)writeaddr = (void *)pc;
|
*(void **)writeaddr = (void *)pc;
|
||||||
writeaddr += 4;
|
writeaddr += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,12 +117,12 @@ public:
|
|||||||
return table_.findForAdd(aKey);
|
return table_.findForAdd(aKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(Insert &i, const T &value)
|
bool add(Insert &i, const T &value)
|
||||||
{
|
{
|
||||||
return table_.add(i, value);
|
return table_.add(i, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(Insert &i, ke::Moveable<T> value)
|
bool add(Insert &i, ke::Moveable<T> value)
|
||||||
{
|
{
|
||||||
return table_.add(i, value);
|
return table_.add(i, value);
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -9,7 +9,7 @@ h
|
|||||||
i
|
i
|
||||||
D
|
D
|
||||||
S
|
S
|
||||||
!!
|
!!!
|
||||||
joys of buildbot, part 5: a watermelon's diatribes need not be cause for spilling the queen's tea
|
joys of buildbot, part 5: a watermelon's diatribes need not be cause for spilling the queen's tea
|
||||||
crab
|
crab
|
||||||
joys of buildbot, part 6: a merry metal matchturtle mocks mostly and mainly in Madrid.
|
joys of buildbot, part 6: a merry metal matchturtle mocks mostly and mainly in Madrid.
|
||||||
@@ -17,7 +17,7 @@ joys of buildbot, part nana: if you don't do as you are told, buildbot-san, you
|
|||||||
DS saves us from Valve again.
|
DS saves us from Valve again.
|
||||||
Pants will save us from certain death.
|
Pants will save us from certain death.
|
||||||
Invaders' blood marches through my veins, like GIANT RADIOACTIVE RUBBER PANTS!
|
Invaders' blood marches through my veins, like GIANT RADIOACTIVE RUBBER PANTS!
|
||||||
THE PANTS COMMAND COMMAND ME! DO NOT IGNORE MY VEINS.
|
¡ THE PANTS COMMAND COMMAND ME! DO NOT IGNORE MY VEINS. !
|
||||||
This file sure has gotten big.
|
This file sure has gotten big.
|
||||||
sawce is rukia and loves anime, sushi, and macs
|
sawce is rukia and loves anime, sushi, and macs
|
||||||
ur
|
ur
|
||||||
@@ -68,3 +68,5 @@ Buildbot, I hereby challenge you to an honorable prison stabbing to the death!
|
|||||||
Bees.
|
Bees.
|
||||||
Beads.
|
Beads.
|
||||||
snakesssssssss; maple
|
snakesssssssss; maple
|
||||||
|
pie?
|
||||||
|
Your tier1 tower is under attack..
|
||||||
@@ -7253,6 +7253,7 @@ static int dofor(void)
|
|||||||
save_nestlevel=nestlevel;
|
save_nestlevel=nestlevel;
|
||||||
save_endlessloop=endlessloop;
|
save_endlessloop=endlessloop;
|
||||||
pushstacklist();
|
pushstacklist();
|
||||||
|
pushheaplist();
|
||||||
|
|
||||||
addwhile(wq);
|
addwhile(wq);
|
||||||
skiplab=getlabel();
|
skiplab=getlabel();
|
||||||
@@ -7350,6 +7351,8 @@ static int dofor(void)
|
|||||||
setlabel(wq[wqEXIT]);
|
setlabel(wq[wqEXIT]);
|
||||||
delwhile();
|
delwhile();
|
||||||
|
|
||||||
|
popheaplist();
|
||||||
|
|
||||||
assert(nestlevel>=save_nestlevel);
|
assert(nestlevel>=save_nestlevel);
|
||||||
if (nestlevel>save_nestlevel) {
|
if (nestlevel>save_nestlevel) {
|
||||||
/* Clean up the space and the symbol table for the local
|
/* Clean up the space and the symbol table for the local
|
||||||
|
|||||||
Reference in New Issue
Block a user