mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-26 06:45:37 +03:00
Fixed bug at17117 (Twilight Suzuka)
This commit is contained in:
parent
80e6d31998
commit
1768ae4b23
@ -2766,7 +2766,7 @@ static cell AMX_NATIVE_CALL callfunc_push_str(AMX *amx, cell *params)
|
|||||||
// copy it to the allocated memory
|
// copy it to the allocated memory
|
||||||
// we assume it's unpacked
|
// we assume it's unpacked
|
||||||
// :NOTE: 4th parameter use_wchar since Small Abstract Machine 2.5.0
|
// :NOTE: 4th parameter use_wchar since Small Abstract Machine 2.5.0
|
||||||
amx_SetString(phys_addr, str, 0, 0, 0);
|
amx_SetStringOld(phys_addr, str, 0, 0);
|
||||||
|
|
||||||
// push the address and set the reference flag so that memory is released after function call.
|
// push the address and set the reference flag so that memory is released after function call.
|
||||||
g_CallFunc_ParamInfo[g_CallFunc_CurParam].flags = CALLFUNC_FLAG_BYREF;
|
g_CallFunc_ParamInfo[g_CallFunc_CurParam].flags = CALLFUNC_FLAG_BYREF;
|
||||||
|
@ -93,6 +93,7 @@ bool g_initialized = false;
|
|||||||
bool g_IsNewMM = false;
|
bool g_IsNewMM = false;
|
||||||
bool g_NeedsP = false;
|
bool g_NeedsP = false;
|
||||||
bool g_coloredmenus;
|
bool g_coloredmenus;
|
||||||
|
bool g_activated = false;
|
||||||
|
|
||||||
#ifdef MEMORY_TEST
|
#ifdef MEMORY_TEST
|
||||||
float g_next_memreport_time;
|
float g_next_memreport_time;
|
||||||
@ -196,9 +197,12 @@ const char* get_localinfo( const char* name , const char* def )
|
|||||||
// Load AMX modules for new native functions
|
// Load AMX modules for new native functions
|
||||||
// Initialize AMX stuff and load it's plugins from plugins.ini list
|
// Initialize AMX stuff and load it's plugins from plugins.ini list
|
||||||
// Call precache forward function from plugins
|
// Call precache forward function from plugins
|
||||||
int C_Spawn( edict_t *pent ) {
|
int C_Spawn( edict_t *pent )
|
||||||
|
{
|
||||||
if (g_initialized)
|
if (g_initialized)
|
||||||
RETURN_META_VALUE(MRES_IGNORED, 0);
|
RETURN_META_VALUE(MRES_IGNORED, 0);
|
||||||
|
|
||||||
|
g_activated = false;
|
||||||
g_initialized = true;
|
g_initialized = true;
|
||||||
g_forcedmodules = false;
|
g_forcedmodules = false;
|
||||||
g_forcedsounds = false;
|
g_forcedsounds = false;
|
||||||
@ -360,8 +364,8 @@ Much more later after precache. All is precached, server
|
|||||||
will be flaged as ready to use so call
|
will be flaged as ready to use so call
|
||||||
plugin_init forward function from plugins
|
plugin_init forward function from plugins
|
||||||
*/
|
*/
|
||||||
void C_ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ){
|
void C_ServerActivate( edict_t *pEdictList, int edictCount, int clientMax )
|
||||||
|
{
|
||||||
int id;
|
int id;
|
||||||
for (int i = 0; g_user_msg[ i ].name; ++i )
|
for (int i = 0; g_user_msg[ i ].name; ++i )
|
||||||
{
|
{
|
||||||
@ -383,9 +387,10 @@ void C_ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ){
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_ServerActivate_Post( edict_t *pEdictList, int edictCount, int clientMax ){
|
void C_ServerActivate_Post( edict_t *pEdictList, int edictCount, int clientMax )
|
||||||
|
{
|
||||||
// g_edict_point = (int)pEdictList;
|
if (g_activated)
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
|
||||||
for(int i = 1; i <= gpGlobals->maxClients; ++i) {
|
for(int i = 1; i <= gpGlobals->maxClients; ++i) {
|
||||||
CPlayer *pPlayer = GET_PLAYER_POINTER_I(i);
|
CPlayer *pPlayer = GET_PLAYER_POINTER_I(i);
|
||||||
@ -412,12 +417,16 @@ void C_ServerActivate_Post( edict_t *pEdictList, int edictCount, int clientMax )
|
|||||||
g_memreport_enabled = true;
|
g_memreport_enabled = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
g_activated = true;
|
||||||
|
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call plugin_end forward function from plugins.
|
// Call plugin_end forward function from plugins.
|
||||||
void C_ServerDeactivate() {
|
void C_ServerDeactivate()
|
||||||
|
{
|
||||||
|
if (!g_activated)
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
for(int i = 1; i <= gpGlobals->maxClients; ++i){
|
for(int i = 1; i <= gpGlobals->maxClients; ++i){
|
||||||
CPlayer *pPlayer = GET_PLAYER_POINTER_I(i);
|
CPlayer *pPlayer = GET_PLAYER_POINTER_I(i);
|
||||||
if (pPlayer->initialized)
|
if (pPlayer->initialized)
|
||||||
@ -438,8 +447,10 @@ void C_ServerDeactivate() {
|
|||||||
|
|
||||||
// After all clear whole AMX configuration
|
// After all clear whole AMX configuration
|
||||||
// However leave AMX modules which are loaded only once
|
// However leave AMX modules which are loaded only once
|
||||||
void C_ServerDeactivate_Post() {
|
void C_ServerDeactivate_Post()
|
||||||
|
{
|
||||||
|
if (!g_initialized)
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
detachReloadModules();
|
detachReloadModules();
|
||||||
g_auth.clear();
|
g_auth.clear();
|
||||||
g_commands.clear();
|
g_commands.clear();
|
||||||
@ -519,7 +530,8 @@ void C_ServerDeactivate_Post() {
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL C_ClientConnect_Post( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] ){
|
BOOL C_ClientConnect_Post( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] )
|
||||||
|
{
|
||||||
CPlayer* pPlayer = GET_PLAYER_POINTER(pEntity);
|
CPlayer* pPlayer = GET_PLAYER_POINTER(pEntity);
|
||||||
if (!pPlayer->bot) {
|
if (!pPlayer->bot) {
|
||||||
|
|
||||||
@ -541,7 +553,8 @@ BOOL C_ClientConnect_Post( edict_t *pEntity, const char *pszName, const char *ps
|
|||||||
RETURN_META_VALUE(MRES_IGNORED, TRUE);
|
RETURN_META_VALUE(MRES_IGNORED, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_ClientDisconnect( edict_t *pEntity ) {
|
void C_ClientDisconnect( edict_t *pEntity )
|
||||||
|
{
|
||||||
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
||||||
if (pPlayer->initialized)
|
if (pPlayer->initialized)
|
||||||
executeForwards(FF_ClientDisconnect, pPlayer->index);
|
executeForwards(FF_ClientDisconnect, pPlayer->index);
|
||||||
@ -553,7 +566,8 @@ void C_ClientDisconnect( edict_t *pEntity ) {
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_ClientPutInServer_Post( edict_t *pEntity ) {
|
void C_ClientPutInServer_Post( edict_t *pEntity )
|
||||||
|
{
|
||||||
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
||||||
if (!pPlayer->bot) {
|
if (!pPlayer->bot) {
|
||||||
pPlayer->PutInServer();
|
pPlayer->PutInServer();
|
||||||
@ -565,7 +579,8 @@ void C_ClientPutInServer_Post( edict_t *pEntity ) {
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_ClientUserInfoChanged_Post( edict_t *pEntity, char *infobuffer ) {
|
void C_ClientUserInfoChanged_Post( edict_t *pEntity, char *infobuffer )
|
||||||
|
{
|
||||||
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
||||||
|
|
||||||
executeForwards(FF_ClientInfoChanged, pPlayer->index);
|
executeForwards(FF_ClientInfoChanged, pPlayer->index);
|
||||||
@ -596,7 +611,8 @@ void C_ClientUserInfoChanged_Post( edict_t *pEntity, char *infobuffer ) {
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_ClientCommand( edict_t *pEntity ) {
|
void C_ClientCommand( edict_t *pEntity )
|
||||||
|
{
|
||||||
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
|
||||||
META_RES result = MRES_IGNORED;
|
META_RES result = MRES_IGNORED;
|
||||||
cell ret = 0;
|
cell ret = 0;
|
||||||
@ -708,8 +724,8 @@ void C_ClientCommand( edict_t *pEntity ) {
|
|||||||
RETURN_META( result );
|
RETURN_META( result );
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_StartFrame_Post( void ) {
|
void C_StartFrame_Post( void )
|
||||||
|
{
|
||||||
if (g_auth_time < gpGlobals->time )
|
if (g_auth_time < gpGlobals->time )
|
||||||
{
|
{
|
||||||
g_auth_time = gpGlobals->time + 0.7;
|
g_auth_time = gpGlobals->time + 0.7;
|
||||||
@ -802,7 +818,8 @@ void C_StartFrame_Post( void ) {
|
|||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C_MessageBegin_Post(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed) {
|
void C_MessageBegin_Post(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
|
||||||
|
{
|
||||||
if (ed)
|
if (ed)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -836,47 +853,56 @@ void C_MessageBegin_Post(int msg_dest, int msg_type, const float *pOrigin, edict
|
|||||||
g_events.parserInit(msg_type, &gpGlobals->time, mPlayer ,mPlayerIndex);
|
g_events.parserInit(msg_type, &gpGlobals->time, mPlayer ,mPlayerIndex);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteByte_Post(int iValue) {
|
void C_WriteByte_Post(int iValue)
|
||||||
|
{
|
||||||
g_events.parseValue(iValue);
|
g_events.parseValue(iValue);
|
||||||
if (function) (*function)((void *)&iValue);
|
if (function) (*function)((void *)&iValue);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteChar_Post(int iValue) {
|
void C_WriteChar_Post(int iValue)
|
||||||
|
{
|
||||||
g_events.parseValue(iValue);
|
g_events.parseValue(iValue);
|
||||||
if (function) (*function)((void *)&iValue);
|
if (function) (*function)((void *)&iValue);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteShort_Post(int iValue) {
|
void C_WriteShort_Post(int iValue)
|
||||||
|
{
|
||||||
g_events.parseValue(iValue);
|
g_events.parseValue(iValue);
|
||||||
if (function) (*function)((void *)&iValue);
|
if (function) (*function)((void *)&iValue);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteLong_Post(int iValue) {
|
void C_WriteLong_Post(int iValue)
|
||||||
|
{
|
||||||
g_events.parseValue(iValue);
|
g_events.parseValue(iValue);
|
||||||
if (function) (*function)((void *)&iValue);
|
if (function) (*function)((void *)&iValue);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteAngle_Post(float flValue) {
|
void C_WriteAngle_Post(float flValue)
|
||||||
|
{
|
||||||
g_events.parseValue(flValue);
|
g_events.parseValue(flValue);
|
||||||
if (function) (*function)((void *)&flValue);
|
if (function) (*function)((void *)&flValue);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteCoord_Post(float flValue) {
|
void C_WriteCoord_Post(float flValue)
|
||||||
|
{
|
||||||
g_events.parseValue(flValue);
|
g_events.parseValue(flValue);
|
||||||
if (function) (*function)((void *)&flValue);
|
if (function) (*function)((void *)&flValue);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteString_Post(const char *sz) {
|
void C_WriteString_Post(const char *sz)
|
||||||
|
{
|
||||||
g_events.parseValue(sz);
|
g_events.parseValue(sz);
|
||||||
if (function) (*function)((void *)sz);
|
if (function) (*function)((void *)sz);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_WriteEntity_Post(int iValue) {
|
void C_WriteEntity_Post(int iValue)
|
||||||
|
{
|
||||||
g_events.parseValue(iValue);
|
g_events.parseValue(iValue);
|
||||||
if (function) (*function)((void *)&iValue);
|
if (function) (*function)((void *)&iValue);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
void C_MessageEnd_Post(void) {
|
void C_MessageEnd_Post(void)
|
||||||
|
{
|
||||||
g_events.executeEvents();
|
g_events.executeEvents();
|
||||||
if (endfunction) (*endfunction)(NULL);
|
if (endfunction) (*endfunction)(NULL);
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
@ -923,14 +949,16 @@ int C_Cmd_Argc( void )
|
|||||||
|
|
||||||
// Grenade has been thrown.
|
// Grenade has been thrown.
|
||||||
// Only here we may find out who is an owner.
|
// Only here we may find out who is an owner.
|
||||||
void C_SetModel(edict_t *e, const char *m){
|
void C_SetModel(edict_t *e, const char *m)
|
||||||
|
{
|
||||||
if(e->v.owner&&m[7]=='w'&&m[8]=='_'&&m[9]=='h')
|
if(e->v.owner&&m[7]=='w'&&m[8]=='_'&&m[9]=='h')
|
||||||
g_grenades.put( e , 1.75, 4, GET_PLAYER_POINTER(e->v.owner) );
|
g_grenades.put( e , 1.75, 4, GET_PLAYER_POINTER(e->v.owner) );
|
||||||
RETURN_META(MRES_IGNORED);
|
RETURN_META(MRES_IGNORED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save at what part of body a player is aiming
|
// Save at what part of body a player is aiming
|
||||||
void C_TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *e, TraceResult *ptr) {
|
void C_TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *e, TraceResult *ptr)
|
||||||
|
{
|
||||||
if ( e && ( e->v.flags & (FL_CLIENT | FL_FAKECLIENT) ) ) {
|
if ( e && ( e->v.flags & (FL_CLIENT | FL_FAKECLIENT) ) ) {
|
||||||
CPlayer* pPlayer = GET_PLAYER_POINTER(e);
|
CPlayer* pPlayer = GET_PLAYER_POINTER(e);
|
||||||
if (ptr->pHit&&(ptr->pHit->v.flags& (FL_CLIENT | FL_FAKECLIENT) ))
|
if (ptr->pHit&&(ptr->pHit->v.flags& (FL_CLIENT | FL_FAKECLIENT) ))
|
||||||
|
Loading…
Reference in New Issue
Block a user