From a35b96fb7ebe2e71910401c02275b0580b32a550 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Mon, 1 Aug 2005 04:55:55 +0000 Subject: [PATCH] Finished correcting your stuff SidLuke --- dlls/ts/tsx/CMisc.cpp | 42 ------------------------------------ dlls/ts/tsx/CMisc.h | 18 ---------------- dlls/ts/tsx/CRank.cpp | 6 ++++-- dlls/ts/tsx/NBase.cpp | 24 ++------------------- dlls/ts/tsx/NRank.cpp | 4 ++-- dlls/ts/tsx/amxxmodule.cpp | 4 +++- dlls/ts/tsx/amxxmodule.h | 7 +++++- dlls/ts/tsx/moduleconfig.cpp | 19 +++++++++------- dlls/ts/tsx/moduleconfig.h | 4 ++-- dlls/ts/tsx/tsx.h | 4 ++-- dlls/ts/tsx/usermsg.cpp | 4 ++-- 11 files changed, 34 insertions(+), 102 deletions(-) diff --git a/dlls/ts/tsx/CMisc.cpp b/dlls/ts/tsx/CMisc.cpp index 44321075..e1f44281 100755 --- a/dlls/ts/tsx/CMisc.cpp +++ b/dlls/ts/tsx/CMisc.cpp @@ -196,45 +196,3 @@ void CPlayer::saveShot(int weapon){ weaponsRnd[0].shots++; // DEC-Weapon (round) stats } - -// ***************************************************** -// class Forward -// ***************************************************** - -void Forward::put( AMX *a , int i ){ - head = new AmxCall( a, i , head ); -} - - -void Forward::clear(){ - while ( head ) { - AmxCall* a = head->next; - delete head; - head = a; - } -} - -void Forward::exec(int p1,int p2,int p3,int p4,int p5,int p6){ - AmxCall* a = head; - while ( a ){ - MF_AmxExec(a->amx, NULL, a->iFunctionIdx, 6,p1, p2, p3, p4, p5, p6); - a = a->next; - } -} - -void Forward::exec(int p1,int p2,int p3,int p4,int p5){ - AmxCall* a = head; - while ( a ){ - MF_AmxExec(a->amx, NULL, a->iFunctionIdx, 5,p1, p2, p3, p4, p5); - a = a->next; - } -} - -void Forward::exec(int p1,int p2){ - AmxCall* a = head; - while ( a ){ - MF_AmxExec(a->amx, NULL, a->iFunctionIdx, 2,p1, p2); - a = a->next; - } -} - diff --git a/dlls/ts/tsx/CMisc.h b/dlls/ts/tsx/CMisc.h index 5f21e401..ee361a77 100755 --- a/dlls/ts/tsx/CMisc.h +++ b/dlls/ts/tsx/CMisc.h @@ -130,23 +130,5 @@ struct CPlayer { // class Forward // ***************************************************** -class Forward -{ - struct AmxCall { - AMX *amx; - int iFunctionIdx; - AmxCall* next; - AmxCall( AMX *a , int i, AmxCall* n ): amx(a), iFunctionIdx(i), next(n) {} - } *head; -public: - Forward() { head = 0; } - ~Forward() { clear(); } - void clear(); - void put( AMX *a , int i ); - void exec(int p1,int p2,int p3,int p4,int p5,int p6); - void exec(int p1,int p2,int p3,int p4,int p5); - void exec(int p1,int p2); -}; - #endif // CMISC_H diff --git a/dlls/ts/tsx/CRank.cpp b/dlls/ts/tsx/CRank.cpp index 93247c61..4b856d76 100755 --- a/dlls/ts/tsx/CRank.cpp +++ b/dlls/ts/tsx/CRank.cpp @@ -194,8 +194,10 @@ void RankSystem::updatePos( RankStats* rr , Stats* s ) calc.physAddr2[i] = rr->bodyHits[i]; cell result = 0; int err; - if ((err = MF_AmxExec(&calc.amx,&result, calc.func ,2,calc.amxAddr1,calc.amxAddr2 )) != AMX_ERR_NONE) - LOG_CONSOLE( PLID, "Run time error %d on line %ld (plugin \"%s\")", err,calc.amx.curline,LOCALINFO("csstats_score")); + MF_AmxPush(&calc.amx, calc.amxAddr2); + MF_AmxPush(&calc.amx, calc.amxAddr1); + if ((err = MF_AmxExec(&calc.amx,&result, calc.func)) != AMX_ERR_NONE) + MF_LogError(&calc.amx, err, "Fatal error calculating stats"); rr->score = result; } else rr->score = rr->kills - rr->deaths; diff --git a/dlls/ts/tsx/NBase.cpp b/dlls/ts/tsx/NBase.cpp index 351a47ab..f229db84 100755 --- a/dlls/ts/tsx/NBase.cpp +++ b/dlls/ts/tsx/NBase.cpp @@ -335,28 +335,8 @@ static cell AMX_NATIVE_CALL ts_setup(AMX *amx, cell *params){ // index,pwupentin } -static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward - int iFunctionIndex; - int err; - switch( params[1] ){ - case 0: - if( (err=MF_AmxFindPublic(amx, "client_damage", &iFunctionIndex)) == AMX_ERR_NONE ) - g_damage_info.put( amx , iFunctionIndex ); - else - MF_LogError(amx, err, "Error finding function \"client_damage\""); - return 0; - break; - case 1: - if( (err=MF_AmxFindPublic(amx, "client_death", &iFunctionIndex)) == AMX_ERR_NONE ) - g_death_info.put( amx , iFunctionIndex ); - else - MF_LogError(amx, err, "Error finding function \"client_death\""); - return 0; - break; - default: - MF_LogError(amx, AMX_ERR_NATIVE, "Invalid forward id %d", params[1]); - return 0; - } +static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params) +{ return 1; } diff --git a/dlls/ts/tsx/NRank.cpp b/dlls/ts/tsx/NRank.cpp index 62d92100..4ae91409 100755 --- a/dlls/ts/tsx/NRank.cpp +++ b/dlls/ts/tsx/NRank.cpp @@ -287,13 +287,13 @@ static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params){ // wid,att,vic,dmg int TA = 0; if ( (pVic->pEdict->v.team == pAtt->pEdict->v.team ) && ( pVic != pAtt) ) TA = 1; - g_damage_info.exec( pAtt->index, pVic->index, dmg, weapon, aim, TA ); + MF_ExecuteForward(g_damage_info, pAtt->index, pVic->index, dmg, weapon, aim, TA ); if ( pVic->IsAlive() ) return 1; pAtt->saveKill(pVic,weapon,( aim == 1 ) ? 1:0 ,TA); - g_death_info.exec( pAtt->index, pVic->index, weapon, aim, TA ); + MF_ExecuteForward(g_death_info, pAtt->index, pVic->index, weapon, aim, TA ); return 1; } diff --git a/dlls/ts/tsx/amxxmodule.cpp b/dlls/ts/tsx/amxxmodule.cpp index aa649e2b..c38a396b 100755 --- a/dlls/ts/tsx/amxxmodule.cpp +++ b/dlls/ts/tsx/amxxmodule.cpp @@ -2502,6 +2502,7 @@ PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict; PFN_FORMAT g_fn_Format; PFN_REGISTERFUNCTION g_fn_RegisterFunction; PFN_REQ_FNPTR g_fn_RequestFunction; +PFN_AMX_PUSH g_fn_AmxPush; // *** Exports *** C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo) @@ -2610,6 +2611,7 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc) REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH); REQFUNC("GetPlayerFlags", g_fn_GetPlayerFlags, PFN_GETPLAYERFLAGS); REQFUNC("GetPlayerEdict", g_fn_GetPlayerEdict, PFN_GET_PLAYER_EDICT); + REQFUNC("amx_Push", g_fn_AmxPush, PFN_AMX_PUSH); // Memory REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR); @@ -2717,7 +2719,7 @@ void ValidateMacros_DontCallThis_Smiley() MF_IsPlayerHLTV(0); MF_GetPlayerArmor(0); MF_GetPlayerHealth(0); - MF_AmxExec(0, 0, 0, 0); + MF_AmxExec(0, 0, 0); MF_AmxExecv(0, 0, 0, 0, 0); MF_AmxFindPublic(0, 0, 0); MF_AmxAllot(0, 0, 0, 0); diff --git a/dlls/ts/tsx/amxxmodule.h b/dlls/ts/tsx/amxxmodule.h index bbaec2f5..baf6d259 100755 --- a/dlls/ts/tsx/amxxmodule.h +++ b/dlls/ts/tsx/amxxmodule.h @@ -1987,7 +1987,7 @@ typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, const unsigned int /*type*/, const void* /*addr*/ ); -typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, ... /*params*/); +typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/); typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); @@ -2002,6 +2002,7 @@ typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/); typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/); typedef void (*PFN_REGISTERFUNCTION) (void * /*pfn*/, const char * /*desc*/); +typedef int (*PFN_AMX_PUSH) (AMX * /*amx*/, cell /*value*/); extern PFN_ADD_NATIVES g_fn_AddNatives; extern PFN_BUILD_PATHNAME g_fn_BuildPathname; @@ -2065,6 +2066,7 @@ extern PFN_FORMAT g_fn_Format; extern PFN_GET_PLAYER_TEAM g_fn_GetPlayerTeam; extern PFN_REGISTERFUNCTION g_fn_RegisterFunction; extern PFN_REQ_FNPTR g_fn_RequestFunction; +extern PFN_AMX_PUSH g_fn_AmxPush; #ifdef MAY_NEVER_BE_DEFINED // Function prototypes for intellisense and similar systems @@ -2123,6 +2125,8 @@ edict_t* MF_GetPlayerEdict (int id) { } const char * MF_Format (const char *fmt, ...) { } void MF_RegisterFunction (void *pfn, const char *description) { } void * MF_RequestFunction (const char *description) { } +int MF_AmxPush (AMX *amx, cell *params) { } +int MF_AmxExec (AMX *amx, cell *retval, int idx) { } #endif // MAY_NEVER_BE_DEFINED #define MF_AddNatives g_fn_AddNatives @@ -2187,6 +2191,7 @@ void MF_LogError(AMX *amx, int err, const char *fmt, ...); #define MF_Format g_fn_Format #define MF_RegisterFunction g_fn_RegisterFunction #define MF_RequestFunction g_fn_RequestFunction; +#define MF_AmxPush g_fn_AmxPush /*** Memory ***/ void *operator new(size_t reportedSize); diff --git a/dlls/ts/tsx/moduleconfig.cpp b/dlls/ts/tsx/moduleconfig.cpp index f5486131..de31ba9d 100755 --- a/dlls/ts/tsx/moduleconfig.cpp +++ b/dlls/ts/tsx/moduleconfig.cpp @@ -43,8 +43,8 @@ CPlayer players[33]; bool is_theonemode; bool rankBots; -Forward g_death_info; -Forward g_damage_info; +int g_death_info; +int g_damage_info; int gKnifeOffset; @@ -146,7 +146,8 @@ void PlayerPreThink_Post( edict_t *pEntity ) { RETURN_META(MRES_IGNORED); } -void ServerDeactivate() { +void ServerDeactivate() +{ int i; for(i = 1;i<=gpGlobals->maxClients; ++i){ CPlayer *pPlayer = GET_PLAYER_POINTER_I(i); @@ -164,6 +165,9 @@ void ServerDeactivate() { for ( i=TSMAX_WEAPONS-TSMAX_CUSTOMWPNS;isaveShot(weapon); - g_damage_info.exec( pAttacker->index, mPlayer->index, damage, weapon, aim, TA ); + MF_ExecuteForward(g_damage_info, pAttacker->index, mPlayer->index, damage, weapon, aim, TA ); if ( mPlayer->IsAlive() ) return; @@ -219,7 +219,7 @@ void Client_TSHealth_End(void* mValue){ pAttacker->killFlags = killFlags; pAttacker->saveKill(mPlayer,weapon,( aim == 1 ) ? 1:0 ,TA); - g_death_info.exec( pAttacker->index, mPlayer->index, weapon, aim, TA ); + MF_ExecuteForward(g_death_info, pAttacker->index, mPlayer->index, weapon, aim, TA ); }