diff --git a/dlls/dod2/dodx/CMisc.cpp b/dlls/dod2/dodx/CMisc.cpp index b8cae595..38d88023 100755 --- a/dlls/dod2/dodx/CMisc.cpp +++ b/dlls/dod2/dodx/CMisc.cpp @@ -332,55 +332,3 @@ void CMapInfo::Init(){ } -#ifdef FORWARD_OLD_SYSTEM - -// ***************************************************** -// 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,int p3){ - AmxCall* a = head; - while ( a ){ - MF_AmxExec(a->amx, NULL, a->iFunctionIdx, 3,p1, p2, p3); - 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; - } -} - -#endif \ No newline at end of file diff --git a/dlls/dod2/dodx/CMisc.h b/dlls/dod2/dodx/CMisc.h index 627c1db0..caae6974 100755 --- a/dlls/dod2/dodx/CMisc.h +++ b/dlls/dod2/dodx/CMisc.h @@ -160,31 +160,5 @@ public: void Init(); }; -#ifdef FORWARD_OLD_SYSTEM - -// ***************************************************** -// 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,int p3); - void exec(int p1,int p2); -}; -#endif - #endif // CMISC_H diff --git a/dlls/dod2/dodx/CRank.cpp b/dlls/dod2/dodx/CRank.cpp index df536bbc..6885cf05 100755 --- a/dlls/dod2/dodx/CRank.cpp +++ b/dlls/dod2/dodx/CRank.cpp @@ -197,8 +197,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("dodstats_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/dod2/dodx/NBase.cpp b/dlls/dod2/dodx/NBase.cpp index a596ae9d..2f109265 100755 --- a/dlls/dod2/dodx/NBase.cpp +++ b/dlls/dod2/dodx/NBase.cpp @@ -170,7 +170,8 @@ static cell AMX_NATIVE_CALL get_user_weapon(AMX *amx, cell *params){ return 0; } -static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward +static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params) +{ // forward #ifdef FORWARD_OLD_SYSTEM @@ -269,22 +270,14 @@ static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params){ // wid,att,vic,dmg if ( (pVic->pEdict->v.team == pAtt->pEdict->v.team ) && ( pVic != pAtt) ) TA = 1; -#ifdef FORWARD_OLD_SYSTEM - g_damage_info.exec( pAtt->index, pVic->index, dmg, weapon, aim, TA ); -#else MF_ExecuteForward( iFDamage,pAtt->index, pVic->index, dmg, weapon, aim, TA ); -#endif - + if ( pVic->IsAlive() ) return 1; pAtt->saveKill(pVic,weapon,( aim == 1 ) ? 1:0 ,TA); -#ifdef FORWARD_OLD_SYSTEM - g_death_info.exec( pAtt->index, pVic->index, weapon, aim, TA ); -#else MF_ExecuteForward( iFDeath,pAtt->index, pVic->index, weapon, aim, TA ); -#endif return 1; } diff --git a/dlls/dod2/dodx/amxxmodule.cpp b/dlls/dod2/dodx/amxxmodule.cpp index aa649e2b..c38a396b 100755 --- a/dlls/dod2/dodx/amxxmodule.cpp +++ b/dlls/dod2/dodx/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/dod2/dodx/amxxmodule.h b/dlls/dod2/dodx/amxxmodule.h index bbaec2f5..baf6d259 100755 --- a/dlls/dod2/dodx/amxxmodule.h +++ b/dlls/dod2/dodx/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/dod2/dodx/dodx.h b/dlls/dod2/dodx/dodx.h index 2246097b..f63fad14 100755 --- a/dlls/dod2/dodx/dodx.h +++ b/dlls/dod2/dodx/dodx.h @@ -77,19 +77,10 @@ extern int gmsgScoreShort; extern int gmsgPTeam; -#ifdef FORWARD_OLD_SYSTEM - -extern Forward g_death_info; -extern Forward g_damage_info; -extern Forward g_score_info; - -#else - extern int iFDamage; extern int iFDeath; extern int iFScore; -#endif extern cvar_t* dodstats_maxsize; extern cvar_t* dodstats_rank; diff --git a/dlls/dod2/dodx/moduleconfig.cpp b/dlls/dod2/dodx/moduleconfig.cpp index 0856fd8c..fd5a9f2a 100755 --- a/dlls/dod2/dodx/moduleconfig.cpp +++ b/dlls/dod2/dodx/moduleconfig.cpp @@ -47,20 +47,10 @@ int mPlayerIndex; int AlliesScore; int AxisScore; -#ifdef FORWARD_OLD_SYSTEM - -Forward g_death_info; -Forward g_damage_info; -Forward g_score_info; - -#else - int iFDamage; int iFDeath; int iFScore; -#endif - int gmsgCurWeapon; int gmsgHealth; int gmsgResetHUD; @@ -173,11 +163,7 @@ void PlayerPreThink_Post( edict_t *pEntity ) { if (pPlayer->sendScore && pPlayer->sendScore < gpGlobals->time){ pPlayer->sendScore = 0.0f; -#ifdef FORWARD_OLD_SYSTEM - g_score_info.exec( pPlayer->index, pPlayer->lastScore, pPlayer->savedScore ); -#else MF_ExecuteForward( iFScore,pPlayer->index, pPlayer->lastScore, pPlayer->savedScore ); -#endif } RETURN_META(MRES_IGNORED); @@ -197,14 +183,6 @@ void ServerDeactivate() { g_rank.saveRank( MF_BuildPathname("%s",get_localinfo("dodstats") ) ); -#ifdef FORWARD_OLD_SYSTEM - - g_damage_info.clear(); - g_death_info.clear(); - g_score_info.clear(); - -#endif - // clear custom weapons info for ( i=DODMAX_WEAPONS-DODMAX_CUSTOMWPNS;iindex, mPlayer->index, damage, weapon, aim, TA ); -#else MF_ExecuteForward( iFDamage,pAttacker->index, mPlayer->index, damage, weapon, aim, TA ); -#endif if ( !mPlayer->IsAlive() ){ pAttacker->saveKill(mPlayer,weapon,( aim == 1 ) ? 1:0 ,TA); -#ifdef FORWARD_OLD_SYSTEM - g_death_info.exec( pAttacker->index, mPlayer->index, weapon, aim, TA ); -#else MF_ExecuteForward( iFDeath,pAttacker->index, mPlayer->index, weapon, aim, TA ); -#endif - - } }