Added debugging engine

This commit is contained in:
David Anderson 2004-10-03 22:33:55 +00:00
parent 601bb30b7e
commit 846ef95c58
5 changed files with 122 additions and 112 deletions

View File

@ -35,7 +35,7 @@
static cell AMX_NATIVE_CALL get_weapon_name(AMX *amx, cell *params){ // from id to name 3 params id, name, len static cell AMX_NATIVE_CALL get_weapon_name(AMX *amx, cell *params){ // from id to name 3 params id, name, len
int id = params[1]; int id = params[1];
if (id<0 || id>=TSMAX_WEAPONS){ if (id<0 || id>=TSMAX_WEAPONS){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id %d", id);
return 0; return 0;
} }
return MF_SetAmxString(amx,params[2],weaponData[id].name,params[3]); return MF_SetAmxString(amx,params[2],weaponData[id].name,params[3]);
@ -67,7 +67,7 @@ static cell AMX_NATIVE_CALL wpnlog_to_id(AMX *amx, cell *params){ // from log to
static cell AMX_NATIVE_CALL get_weapon_logname(AMX *amx, cell *params){ // from id to log static cell AMX_NATIVE_CALL get_weapon_logname(AMX *amx, cell *params){ // from id to log
int id = params[1]; int id = params[1];
if (id<0 || id>=TSMAX_WEAPONS){ if (id<0 || id>=TSMAX_WEAPONS){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id %d", id);
return 0; return 0;
} }
return MF_SetAmxString(amx,params[2],weaponData[id].logname,params[3]); return MF_SetAmxString(amx,params[2],weaponData[id].logname,params[3]);
@ -76,7 +76,7 @@ static cell AMX_NATIVE_CALL get_weapon_logname(AMX *amx, cell *params){ // from
static cell AMX_NATIVE_CALL is_melee(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL is_melee(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if (id<1 || id>=TSMAX_WEAPONS){ if (id<1 || id>=TSMAX_WEAPONS){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id %d", id);
return 0; return 0;
} }
if ( weaponData[id].melee ) if ( weaponData[id].melee )
@ -86,10 +86,7 @@ static cell AMX_NATIVE_CALL is_melee(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL ts_get_user_weapon(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL ts_get_user_weapon(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
int wpn = pPlayer->current; int wpn = pPlayer->current;
@ -108,10 +105,7 @@ static cell AMX_NATIVE_CALL ts_get_user_weapon(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_user_weapon(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_user_weapon(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
int wpn = pPlayer->current; int wpn = pPlayer->current;
@ -126,10 +120,7 @@ static cell AMX_NATIVE_CALL get_user_weapon(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_user_cash(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_user_cash(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
return pPlayer->money; return pPlayer->money;
@ -139,10 +130,7 @@ static cell AMX_NATIVE_CALL get_user_cash(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_user_space(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_user_space(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
return pPlayer->space; return pPlayer->space;
@ -152,10 +140,7 @@ static cell AMX_NATIVE_CALL get_user_space(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_user_pwup(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_user_pwup(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
cell *cpTemp = MF_GetAmxAddr(amx,params[2]); cell *cpTemp = MF_GetAmxAddr(amx,params[2]);
@ -167,10 +152,7 @@ static cell AMX_NATIVE_CALL get_user_pwup(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_user_items(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_user_items(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
return pPlayer->items; return pPlayer->items;
@ -180,10 +162,7 @@ static cell AMX_NATIVE_CALL get_user_items(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_killingStreak(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_killingStreak(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
return pPlayer->killingSpree; return pPlayer->killingSpree;
@ -193,10 +172,7 @@ static cell AMX_NATIVE_CALL get_killingStreak(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_lastFrag(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_lastFrag(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
return pPlayer->lastFrag; return pPlayer->lastFrag;
@ -206,10 +182,7 @@ static cell AMX_NATIVE_CALL get_lastFrag(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL get_killflags(AMX *amx, cell *params){ static cell AMX_NATIVE_CALL get_killflags(AMX *amx, cell *params){
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( pPlayer->ingame ){ if ( pPlayer->ingame ){
return pPlayer->killFlags; return pPlayer->killFlags;
@ -219,10 +192,7 @@ static cell AMX_NATIVE_CALL get_killflags(AMX *amx, cell *params){
static cell AMX_NATIVE_CALL give_weapon(AMX *amx, cell *params){ // index,weapon,clips,extra static cell AMX_NATIVE_CALL give_weapon(AMX *amx, cell *params){ // index,weapon,clips,extra
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( !pPlayer->ingame || !pPlayer->IsAlive() ){ if ( !pPlayer->ingame || !pPlayer->IsAlive() ){
return 0; return 0;
@ -342,10 +312,7 @@ static cell AMX_NATIVE_CALL give_pwup(AMX *amx, cell *params){ // index,pwupenti
} }
int id = params[1]; int id = params[1];
if ( id<1 || id>gpGlobals->maxClients ){ CHECK_PLAYER(id);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer *pPlayer = GET_PLAYER_POINTER_I(id); CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
if ( !pPlayer->ingame || !pPlayer->IsAlive() ){ if ( !pPlayer->ingame || !pPlayer->IsAlive() ){
REMOVE_ENTITY(pent); REMOVE_ENTITY(pent);
@ -370,23 +337,24 @@ 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 static cell AMX_NATIVE_CALL register_forward(AMX *amx, cell *params){ // forward
int iFunctionIndex; int iFunctionIndex;
int err;
switch( params[1] ){ switch( params[1] ){
case 0: case 0:
if( MF_AmxFindPublic(amx, "client_damage", &iFunctionIndex) == AMX_ERR_NONE ) if( (err=MF_AmxFindPublic(amx, "client_damage", &iFunctionIndex)) == AMX_ERR_NONE )
g_damage_info.put( amx , iFunctionIndex ); g_damage_info.put( amx , iFunctionIndex );
else else
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, err, "Error finding function \"client_damage\"");
return 0; return 0;
break; break;
case 1: case 1:
if( MF_AmxFindPublic(amx, "client_death", &iFunctionIndex) == AMX_ERR_NONE ) if( (err=MF_AmxFindPublic(amx, "client_death", &iFunctionIndex)) == AMX_ERR_NONE )
g_death_info.put( amx , iFunctionIndex ); g_death_info.put( amx , iFunctionIndex );
else else
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, err, "Error finding function \"client_death\"");
return 0; return 0;
break; break;
default: default:
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid forward id %d", params[1]);
return 0; return 0;
} }
return 1; return 1;

View File

@ -36,15 +36,9 @@
static cell AMX_NATIVE_CALL get_user_astats(AMX *amx, cell *params) /* 6 param */ static cell AMX_NATIVE_CALL get_user_astats(AMX *amx, cell *params) /* 6 param */
{ {
int index = params[1]; int index = params[1];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
int attacker = params[2]; int attacker = params[2];
if (attacker<0||attacker>gpGlobals->maxClients){ CHECK_PLAYER(attacker);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
if (pPlayer->attackers[attacker].hits){ if (pPlayer->attackers[attacker].hits){
cell *cpStats = MF_GetAmxAddr(amx,params[3]); cell *cpStats = MF_GetAmxAddr(amx,params[3]);
@ -69,15 +63,9 @@ static cell AMX_NATIVE_CALL get_user_astats(AMX *amx, cell *params) /* 6 param *
static cell AMX_NATIVE_CALL get_user_vstats(AMX *amx, cell *params) /* 6 param */ static cell AMX_NATIVE_CALL get_user_vstats(AMX *amx, cell *params) /* 6 param */
{ {
int index = params[1]; int index = params[1];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
int victim = params[2]; int victim = params[2];
if (victim<0||victim>gpGlobals->maxClients){ CHECK_PLAYER(victim);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
if (pPlayer->victims[victim].hits){ if (pPlayer->victims[victim].hits){
cell *cpStats = MF_GetAmxAddr(amx,params[3]); cell *cpStats = MF_GetAmxAddr(amx,params[3]);
@ -102,13 +90,10 @@ static cell AMX_NATIVE_CALL get_user_vstats(AMX *amx, cell *params) /* 6 param *
static cell AMX_NATIVE_CALL get_user_wrstats(AMX *amx, cell *params) /* 4 param */ // DEC-Weapon (round) stats (end) static cell AMX_NATIVE_CALL get_user_wrstats(AMX *amx, cell *params) /* 4 param */ // DEC-Weapon (round) stats (end)
{ {
int index = params[1]; int index = params[1];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
int weapon = params[2]; int weapon = params[2];
if (weapon<0||weapon>=TSMAX_WEAPONS){ if (weapon<0||weapon>=TSMAX_WEAPONS){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id %d", weapon);
return 0; return 0;
} }
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
@ -133,13 +118,10 @@ static cell AMX_NATIVE_CALL get_user_wrstats(AMX *amx, cell *params) /* 4 param
static cell AMX_NATIVE_CALL get_user_wstats(AMX *amx, cell *params) /* 4 param */ static cell AMX_NATIVE_CALL get_user_wstats(AMX *amx, cell *params) /* 4 param */
{ {
int index = params[1]; int index = params[1];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
int weapon = params[2]; int weapon = params[2];
if (weapon<0||weapon>=TSMAX_WEAPONS){ if (weapon<0||weapon>=TSMAX_WEAPONS){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid weapon id %d", weapon);
return 0; return 0;
} }
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
@ -164,10 +146,7 @@ static cell AMX_NATIVE_CALL get_user_wstats(AMX *amx, cell *params) /* 4 param *
static cell AMX_NATIVE_CALL reset_user_wstats(AMX *amx, cell *params) /* 6 param */ static cell AMX_NATIVE_CALL reset_user_wstats(AMX *amx, cell *params) /* 6 param */
{ {
int index = params[1]; int index = params[1];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
GET_PLAYER_POINTER_I(index)->restartStats(); GET_PLAYER_POINTER_I(index)->restartStats();
return 1; return 1;
} }
@ -175,10 +154,7 @@ static cell AMX_NATIVE_CALL reset_user_wstats(AMX *amx, cell *params) /* 6 param
static cell AMX_NATIVE_CALL get_user_stats(AMX *amx, cell *params) /* 3 param */ static cell AMX_NATIVE_CALL get_user_stats(AMX *amx, cell *params) /* 3 param */
{ {
int index = params[1]; int index = params[1];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
if ( pPlayer->rank ){ if ( pPlayer->rank ){
cell *cpStats = MF_GetAmxAddr(amx,params[2]); cell *cpStats = MF_GetAmxAddr(amx,params[2]);
@ -202,10 +178,7 @@ static cell AMX_NATIVE_CALL get_user_stats(AMX *amx, cell *params) /* 3 param */
static cell AMX_NATIVE_CALL get_user_rstats(AMX *amx, cell *params) /* 3 param */ static cell AMX_NATIVE_CALL get_user_rstats(AMX *amx, cell *params) /* 3 param */
{ {
int index = params[1]; int index = params[1];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
if (pPlayer->rank){ if (pPlayer->rank){
cell *cpStats = MF_GetAmxAddr(amx,params[2]); cell *cpStats = MF_GetAmxAddr(amx,params[2]);
@ -282,31 +255,25 @@ static cell AMX_NATIVE_CALL register_cwpn(AMX *amx, cell *params){ // name,logna
static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params){ // wid,att,vic,dmg,hp=0 static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params){ // wid,att,vic,dmg,hp=0
int weapon = params[1]; int weapon = params[1];
if ( weapon < TSMAX_WEAPONS-TSMAX_CUSTOMWPNS ){ // only for custom weapons if ( weapon < TSMAX_WEAPONS-TSMAX_CUSTOMWPNS ){ // only for custom weapons
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid custom weapon id %d", weapon);
return 0; return 0;
} }
int att = params[2]; int att = params[2];
if (att<1||att>gpGlobals->maxClients){ CHECK_PLAYER(att);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
int vic = params[3]; int vic = params[3];
if (vic<1||vic>gpGlobals->maxClients){ CHECK_PLAYER(vic);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
int dmg = params[4]; int dmg = params[4];
if ( dmg<1 ){ if ( dmg<1 ){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid damage %d", dmg);
return 0; return 0;
} }
int aim = params[5]; int aim = params[5];
if ( aim < 0 || aim > 7 ){ if ( aim < 0 || aim > 7 ){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid aim %d", aim);
return 0; return 0;
} }
@ -333,14 +300,11 @@ static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params){ // wid,att,vic,dmg
static cell AMX_NATIVE_CALL cwpn_shot(AMX *amx, cell *params){ // player,wid static cell AMX_NATIVE_CALL cwpn_shot(AMX *amx, cell *params){ // player,wid
int index = params[2]; int index = params[2];
if (index<1||index>gpGlobals->maxClients){ CHECK_PLAYER(index);
MF_RaiseAmxError(amx,AMX_ERR_NATIVE);
return 0;
}
int weapon = params[1]; int weapon = params[1];
if ( weapon < TSMAX_WEAPONS-TSMAX_CUSTOMWPNS ){ if ( weapon < TSMAX_WEAPONS-TSMAX_CUSTOMWPNS ){
MF_RaiseAmxError(amx,AMX_ERR_NATIVE); MF_LogError(amx, AMX_ERR_NATIVE, "Invalid custom weapon id %d", weapon);
return 0; return 0;
} }

View File

@ -45,6 +45,16 @@
enginefuncs_t g_engfuncs; enginefuncs_t g_engfuncs;
globalvars_t *gpGlobals; globalvars_t *gpGlobals;
DLL_FUNCTIONS *g_pFunctionTable;
DLL_FUNCTIONS *g_pFunctionTable_Post;
enginefuncs_t *g_pengfuncsTable;
enginefuncs_t *g_pengfuncsTable_Post;
NEW_DLL_FUNCTIONS *g_pNewFunctionsTable;
NEW_DLL_FUNCTIONS *g_pNewFunctionsTable_Post;
// GetEntityAPI2 functions // GetEntityAPI2 functions
static DLL_FUNCTIONS g_EntityAPI_Table = static DLL_FUNCTIONS g_EntityAPI_Table =
{ {
@ -2114,6 +2124,7 @@ C_DLLEXPORT int GetEntityAPI2(DLL_FUNCTIONS *pFunctionTable, int *interfaceVersi
return(FALSE); return(FALSE);
} }
memcpy(pFunctionTable, &g_EntityAPI_Table, sizeof(DLL_FUNCTIONS)); memcpy(pFunctionTable, &g_EntityAPI_Table, sizeof(DLL_FUNCTIONS));
g_pFunctionTable=pFunctionTable;
return(TRUE); return(TRUE);
} }
@ -2131,7 +2142,7 @@ C_DLLEXPORT int GetEntityAPI2_Post(DLL_FUNCTIONS *pFunctionTable, int *interface
return(FALSE); return(FALSE);
} }
memcpy( pFunctionTable, &g_EntityAPI_Post_Table, sizeof( DLL_FUNCTIONS ) ); memcpy( pFunctionTable, &g_EntityAPI_Post_Table, sizeof( DLL_FUNCTIONS ) );
g_pFunctionTable_Post=pFunctionTable;
return(TRUE); return(TRUE);
} }
@ -2154,6 +2165,7 @@ C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *inte
return(FALSE); return(FALSE);
} }
memcpy(pengfuncsFromEngine, &g_EngineFuncs_Table, sizeof(enginefuncs_t)); memcpy(pengfuncsFromEngine, &g_EngineFuncs_Table, sizeof(enginefuncs_t));
g_pengfuncsTable=pengfuncsFromEngine;
return TRUE; return TRUE;
} }
@ -2171,6 +2183,7 @@ C_DLLEXPORT int GetEngineFunctions_Post(enginefuncs_t *pengfuncsFromEngine, int
return(FALSE); return(FALSE);
} }
memcpy(pengfuncsFromEngine, &g_EngineFuncs_Post_Table, sizeof(enginefuncs_t)); memcpy(pengfuncsFromEngine, &g_EngineFuncs_Post_Table, sizeof(enginefuncs_t));
g_pengfuncsTable_Post=pengfuncsFromEngine;
return TRUE; return TRUE;
} }
@ -2195,6 +2208,7 @@ C_DLLEXPORT int GetNewDLLFunctions(NEW_DLL_FUNCTIONS *pNewFunctionTable,
return(FALSE); return(FALSE);
} }
memcpy(pNewFunctionTable, &g_NewFuncs_Table, sizeof(NEW_DLL_FUNCTIONS)); memcpy(pNewFunctionTable, &g_NewFuncs_Table, sizeof(NEW_DLL_FUNCTIONS));
g_pNewFunctionsTable=pNewFunctionTable;
return TRUE; return TRUE;
} }
@ -2212,6 +2226,7 @@ C_DLLEXPORT int GetNewDLLFunctions_Post( NEW_DLL_FUNCTIONS *pNewFunctionTable, i
return(FALSE); return(FALSE);
} }
memcpy(pNewFunctionTable, &g_NewFuncs_Post_Table, sizeof(NEW_DLL_FUNCTIONS)); memcpy(pNewFunctionTable, &g_NewFuncs_Post_Table, sizeof(NEW_DLL_FUNCTIONS));
g_pNewFunctionsTable_Post=pNewFunctionTable;
return TRUE; return TRUE;
} }
@ -2439,11 +2454,14 @@ PFN_GET_AMXSTRINGLEN g_fn_GetAmxStringLen;
PFN_FORMAT_AMXSTRING g_fn_FormatAmxString; PFN_FORMAT_AMXSTRING g_fn_FormatAmxString;
PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory; PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory;
PFN_LOG g_fn_Log; PFN_LOG g_fn_Log;
PFN_LOG_ERROR g_fn_LogError;
PFN_RAISE_AMXERROR g_fn_RaiseAmxError; PFN_RAISE_AMXERROR g_fn_RaiseAmxError;
PFN_REGISTER_FORWARD g_fn_RegisterForward; PFN_REGISTER_FORWARD g_fn_RegisterForward;
PFN_EXECUTE_FORWARD g_fn_ExecuteForward; PFN_EXECUTE_FORWARD g_fn_ExecuteForward;
PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray; PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray;
PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray; PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray;
PFN_PREPARE_CELLARRAY_A g_fn_PrepareCellArrayA;
PFN_PREPARE_CHARARRAY_A g_fn_PrepareCharArrayA;
PFN_IS_PLAYER_VALID g_fn_IsPlayerValid; PFN_IS_PLAYER_VALID g_fn_IsPlayerValid;
PFN_GET_PLAYER_NAME g_fn_GetPlayerName; PFN_GET_PLAYER_NAME g_fn_GetPlayerName;
PFN_GET_PLAYER_IP g_fn_GetPlayerIP; PFN_GET_PLAYER_IP g_fn_GetPlayerIP;
@ -2453,6 +2471,7 @@ PFN_IS_PLAYER_AUTHORIZED g_fn_IsPlayerAuthorized;
PFN_GET_PLAYER_TIME g_fn_GetPlayerTime; PFN_GET_PLAYER_TIME g_fn_GetPlayerTime;
PFN_GET_PLAYER_PLAYTIME g_fn_GetPlayerPlayTime; PFN_GET_PLAYER_PLAYTIME g_fn_GetPlayerPlayTime;
PFN_GET_PLAYER_CURWEAPON g_fn_GetPlayerCurweapon; PFN_GET_PLAYER_CURWEAPON g_fn_GetPlayerCurweapon;
PFN_GET_PLAYER_TEAM g_fn_GetPlayerTeam;
PFN_GET_PLAYER_TEAMID g_fn_GetPlayerTeamID; PFN_GET_PLAYER_TEAMID g_fn_GetPlayerTeamID;
PFN_GET_PLAYER_DEATHS g_fn_GetPlayerDeaths; PFN_GET_PLAYER_DEATHS g_fn_GetPlayerDeaths;
PFN_GET_PLAYER_MENU g_fn_GetPlayerMenu; PFN_GET_PLAYER_MENU g_fn_GetPlayerMenu;
@ -2525,6 +2544,7 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
REQFUNC("PrintSrvConsole", g_fn_PrintSrvConsole, PFN_PRINT_SRVCONSOLE); REQFUNC("PrintSrvConsole", g_fn_PrintSrvConsole, PFN_PRINT_SRVCONSOLE);
REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME); REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME);
REQFUNC("Log", g_fn_Log, PFN_LOG); REQFUNC("Log", g_fn_Log, PFN_LOG);
REQFUNC("LogError", g_fn_LogError, PFN_LOG_ERROR);
REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE); REQFUNC("MergeDefinitionFile", g_fn_MergeDefinition_File, PFN_MERGEDEFINITION_FILE);
REQFUNC("Format", g_fn_Format, PFN_FORMAT); REQFUNC("Format", g_fn_Format, PFN_FORMAT);
@ -2560,7 +2580,8 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
REQFUNC("ExecuteForward", g_fn_ExecuteForward, PFN_EXECUTE_FORWARD); REQFUNC("ExecuteForward", g_fn_ExecuteForward, PFN_EXECUTE_FORWARD);
REQFUNC("PrepareCellArray", g_fn_PrepareCellArray, PFN_PREPARE_CELLARRAY); REQFUNC("PrepareCellArray", g_fn_PrepareCellArray, PFN_PREPARE_CELLARRAY);
REQFUNC("PrepareCharArray", g_fn_PrepareCharArray, PFN_PREPARE_CHARARRAY); REQFUNC("PrepareCharArray", g_fn_PrepareCharArray, PFN_PREPARE_CHARARRAY);
REQFUNC("PrepareCellArrayA", g_fn_PrepareCellArrayA, PFN_PREPARE_CELLARRAY_A);
REQFUNC("PrepareCharArrayA", g_fn_PrepareCharArrayA, PFN_PREPARE_CHARARRAY_A);
// Player // Player
REQFUNC("IsPlayerValid", g_fn_IsPlayerValid, PFN_IS_PLAYER_VALID); REQFUNC("IsPlayerValid", g_fn_IsPlayerValid, PFN_IS_PLAYER_VALID);
REQFUNC("GetPlayerName", g_fn_GetPlayerName, PFN_GET_PLAYER_NAME); REQFUNC("GetPlayerName", g_fn_GetPlayerName, PFN_GET_PLAYER_NAME);
@ -2572,6 +2593,7 @@ C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc)
REQFUNC("GetPlayerPlayTime", g_fn_GetPlayerPlayTime, PFN_GET_PLAYER_PLAYTIME); REQFUNC("GetPlayerPlayTime", g_fn_GetPlayerPlayTime, PFN_GET_PLAYER_PLAYTIME);
REQFUNC("GetPlayerCurweapon", g_fn_GetPlayerCurweapon, PFN_GET_PLAYER_CURWEAPON); REQFUNC("GetPlayerCurweapon", g_fn_GetPlayerCurweapon, PFN_GET_PLAYER_CURWEAPON);
REQFUNC("GetPlayerTeamID", g_fn_GetPlayerTeamID, PFN_GET_PLAYER_TEAMID); REQFUNC("GetPlayerTeamID", g_fn_GetPlayerTeamID, PFN_GET_PLAYER_TEAMID);
REQFUNC("GetPlayerTeam",g_fn_GetPlayerTeam, PFN_GET_PLAYER_TEAM);
REQFUNC("GetPlayerDeaths", g_fn_GetPlayerDeaths, PFN_GET_PLAYER_DEATHS); REQFUNC("GetPlayerDeaths", g_fn_GetPlayerDeaths, PFN_GET_PLAYER_DEATHS);
REQFUNC("GetPlayerMenu", g_fn_GetPlayerMenu, PFN_GET_PLAYER_MENU); REQFUNC("GetPlayerMenu", g_fn_GetPlayerMenu, PFN_GET_PLAYER_MENU);
REQFUNC("GetPlayerKeys", g_fn_GetPlayerKeys, PFN_GET_PLAYER_KEYS); REQFUNC("GetPlayerKeys", g_fn_GetPlayerKeys, PFN_GET_PLAYER_KEYS);
@ -2649,11 +2671,14 @@ void ValidateMacros_DontCallThis_Smiley()
MF_GetAmxStringLen(NULL); MF_GetAmxStringLen(NULL);
MF_CopyAmxMemory(NULL, NULL, 0); MF_CopyAmxMemory(NULL, NULL, 0);
MF_Log("str", "str", 0); MF_Log("str", "str", 0);
MF_LogError(NULL, 0, NULL);
MF_RaiseAmxError(NULL, 0); MF_RaiseAmxError(NULL, 0);
MF_RegisterForward("str", (ForwardExecType)0, 0, 0, 0); MF_RegisterForward("str", (ForwardExecType)0, 0, 0, 0);
MF_ExecuteForward(0, 0, 0); MF_ExecuteForward(0, 0, 0);
MF_PrepareCellArray(NULL, 0); MF_PrepareCellArray(NULL, 0);
MF_PrepareCharArray(NULL, 0); MF_PrepareCharArray(NULL, 0);
MF_PrepareCellArrayA(NULL, 0, true);
MF_PrepareCharArrayA(NULL, 0, true);
MF_IsPlayerValid(0); MF_IsPlayerValid(0);
MF_GetPlayerName(0); MF_GetPlayerName(0);
MF_GetPlayerIP(0); MF_GetPlayerIP(0);
@ -2664,6 +2689,7 @@ void ValidateMacros_DontCallThis_Smiley()
MF_GetPlayerPlayTime(0); MF_GetPlayerPlayTime(0);
MF_GetPlayerCurweapon(0); MF_GetPlayerCurweapon(0);
MF_GetPlayerTeamID(0); MF_GetPlayerTeamID(0);
MF_GetPlayerTeam(0);
MF_GetPlayerDeaths(0); MF_GetPlayerDeaths(0);
MF_GetPlayerMenu(0); MF_GetPlayerMenu(0);
MF_GetPlayerKeys(0); MF_GetPlayerKeys(0);

View File

@ -55,7 +55,7 @@ struct amxx_module_info_s
// The next section is copied from the amx.h file // The next section is copied from the amx.h file
// Copyright (c) ITB CompuPhase, 1997-2004 // Copyright (c) ITB CompuPhase, 1997-2004
#if defined __LCC__ || defined __DMC__ || defined __linux__ #if defined __LCC__ || defined __DMC__ || defined __linux__ || defined __GNUC__
#include <stdint.h> #include <stdint.h>
#elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L #elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
/* The ISO C99 defines the int16_t and int_32t types. If the compiler got /* The ISO C99 defines the int16_t and int_32t types. If the compiler got
@ -929,7 +929,7 @@ void FN_EngineFprintf(FILE *pfile, char *szFmt, ...);
#endif // FN_EngineFprintf #endif // FN_EngineFprintf
#ifdef FN_PvAllocEntPrivateData #ifdef FN_PvAllocEntPrivateData
void *FN_PvAllocEntPrivateData(edict_t *pEdict, long cb); void *FN_PvAllocEntPrivateData(edict_t *pEdict, int32 cb);
#endif // FN_PvAllocEntPrivateData #endif // FN_PvAllocEntPrivateData
#ifdef FN_PvEntPrivateData #ifdef FN_PvEntPrivateData
@ -1919,11 +1919,14 @@ typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr);
typedef char * (*PFN_FORMAT_AMXSTRING) (AMX * /*amx*/, cell * /*params*/, int /*startParam*/, int * /*pLen*/); typedef char * (*PFN_FORMAT_AMXSTRING) (AMX * /*amx*/, cell * /*params*/, int /*startParam*/, int * /*pLen*/);
typedef void (*PFN_COPY_AMXMEMORY) (cell * /*dest*/, const cell * /*src*/, int /*len*/); typedef void (*PFN_COPY_AMXMEMORY) (cell * /*dest*/, const cell * /*src*/, int /*len*/);
typedef void (*PFN_LOG) (const char * /*fmt*/, ...); typedef void (*PFN_LOG) (const char * /*fmt*/, ...);
typedef void (*PFN_LOG_ERROR) (AMX * /*amx*/, int /*err*/, const char * /*fmt*/, ...);
typedef int (*PFN_RAISE_AMXERROR) (AMX * /*amx*/, int /*error*/); typedef int (*PFN_RAISE_AMXERROR) (AMX * /*amx*/, int /*error*/);
typedef int (*PFN_REGISTER_FORWARD) (const char * /*funcname*/, ForwardExecType /*exectype*/, ... /*paramtypes terminated by PF_DONE*/); typedef int (*PFN_REGISTER_FORWARD) (const char * /*funcname*/, ForwardExecType /*exectype*/, ... /*paramtypes terminated by PF_DONE*/);
typedef int (*PFN_EXECUTE_FORWARD) (int /*id*/, ... /*params*/); typedef int (*PFN_EXECUTE_FORWARD) (int /*id*/, ... /*params*/);
typedef cell (*PFN_PREPARE_CELLARRAY) (cell * /*ptr*/, unsigned int /*size*/); typedef cell (*PFN_PREPARE_CELLARRAY) (cell * /*ptr*/, unsigned int /*size*/);
typedef cell (*PFN_PREPARE_CHARARRAY) (char * /*ptr*/, unsigned int /*size*/); typedef cell (*PFN_PREPARE_CHARARRAY) (char * /*ptr*/, unsigned int /*size*/);
typedef cell (*PFN_PREPARE_CELLARRAY_A) (cell * /*ptr*/, unsigned int /*size*/, bool /*copyBack*/);
typedef cell (*PFN_PREPARE_CHARARRAY_A) (char * /*ptr*/, unsigned int /*size*/, bool /*copyBack*/);
typedef int (*PFN_IS_PLAYER_VALID) (int /*id*/); typedef int (*PFN_IS_PLAYER_VALID) (int /*id*/);
typedef const char * (*PFN_GET_PLAYER_NAME) (int /*id*/); typedef const char * (*PFN_GET_PLAYER_NAME) (int /*id*/);
typedef const char * (*PFN_GET_PLAYER_IP) (int /*id*/); typedef const char * (*PFN_GET_PLAYER_IP) (int /*id*/);
@ -1934,6 +1937,7 @@ typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/);
typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/); typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/);
typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/); typedef int (*PFN_GETPLAYERFLAGS) (int /* id*/);
typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/); typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/);
typedef const char * (*PFN_GET_PLAYER_TEAM) (int /*id*/);
typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/); typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/);
typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/); typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/);
typedef int (*PFN_GET_PLAYER_MENU) (int /*id*/); typedef int (*PFN_GET_PLAYER_MENU) (int /*id*/);
@ -1986,11 +1990,14 @@ extern PFN_GET_AMXSTRINGLEN g_fn_GetAmxStringLen;
extern PFN_FORMAT_AMXSTRING g_fn_FormatAmxString; extern PFN_FORMAT_AMXSTRING g_fn_FormatAmxString;
extern PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory; extern PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory;
extern PFN_LOG g_fn_Log; extern PFN_LOG g_fn_Log;
extern PFN_LOG_ERROR g_fn_LogError;
extern PFN_RAISE_AMXERROR g_fn_RaiseAmxError; extern PFN_RAISE_AMXERROR g_fn_RaiseAmxError;
extern PFN_REGISTER_FORWARD g_fn_RegisterForward; extern PFN_REGISTER_FORWARD g_fn_RegisterForward;
extern PFN_EXECUTE_FORWARD g_fn_ExecuteForward; extern PFN_EXECUTE_FORWARD g_fn_ExecuteForward;
extern PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray; extern PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray;
extern PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray; extern PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray;
extern PFN_PREPARE_CELLARRAY_A g_fn_PrepareCellArrayA;
extern PFN_PREPARE_CHARARRAY_A g_fn_PrepareCharArrayA;
extern PFN_IS_PLAYER_VALID g_fn_IsPlayerValid; extern PFN_IS_PLAYER_VALID g_fn_IsPlayerValid;
extern PFN_GET_PLAYER_NAME g_fn_GetPlayerName; extern PFN_GET_PLAYER_NAME g_fn_GetPlayerName;
extern PFN_GET_PLAYER_IP g_fn_GetPlayerIP; extern PFN_GET_PLAYER_IP g_fn_GetPlayerIP;
@ -2026,6 +2033,7 @@ extern PFN_AMX_FINDNATIVE g_fn_AmxFindNative;
extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags; extern PFN_GETPLAYERFLAGS g_fn_GetPlayerFlags;
extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict; extern PFN_GET_PLAYER_EDICT g_fn_GetPlayerEdict;
extern PFN_FORMAT g_fn_Format; extern PFN_FORMAT g_fn_Format;
extern PFN_GET_PLAYER_TEAM g_fn_GetPlayerTeam;
#ifdef MAY_NEVER_BE_DEFINED #ifdef MAY_NEVER_BE_DEFINED
// Function prototypes for intellisense and similar systems // Function prototypes for intellisense and similar systems
@ -2045,11 +2053,14 @@ int MF_GetAmxStringLen (const cell *ptr) { }
char * MF_FormatAmxString (AMX * amx, cell * params, int startParam, int * pLen) { } char * MF_FormatAmxString (AMX * amx, cell * params, int startParam, int * pLen) { }
void MF_CopyAmxMemory (cell * dest, const cell * src, int len) { } void MF_CopyAmxMemory (cell * dest, const cell * src, int len) { }
void MF_Log (const char * fmt, ...) { } void MF_Log (const char * fmt, ...) { }
void MF_LogError (AMX * amx, int err, const char *fmt, ...) { }
int MF_RaiseAmxError (AMX * amx, int error) { } int MF_RaiseAmxError (AMX * amx, int error) { }
int MF_RegisterForward (const char * funcname, ForwardExecType exectype, ...) { } int MF_RegisterForward (const char * funcname, ForwardExecType exectype, ...) { }
int MF_ExecuteForward (int id, ...) { } int MF_ExecuteForward (int id, ...) { }
cell MF_PrepareCellArray (cell * ptr, unsigned int size) { } cell MF_PrepareCellArray (cell * ptr, unsigned int size) { }
cell MF_PrepareCharArray (char * ptr, unsigned int size) { } cell MF_PrepareCharArray (char * ptr, unsigned int size) { }
cell MF_PrepareCellArrayA (cell * ptr, unsigned int size, bool copyBack) { }
cell MF_PrepareCharArrayA (char * ptr, unsigned int size, bool copyBack) { }
int MF_IsPlayerValid (int id) { } int MF_IsPlayerValid (int id) { }
const char * MF_GetPlayerName (int id) { } const char * MF_GetPlayerName (int id) { }
const char * MF_GetPlayerIP (int id) { } const char * MF_GetPlayerIP (int id) { }
@ -2059,6 +2070,7 @@ int MF_IsPlayerAuthorized (int id) { }
float MF_GetPlayerTime (int id) { } float MF_GetPlayerTime (int id) { }
float MF_GetPlayerPlayTime (int id) { } float MF_GetPlayerPlayTime (int id) { }
int MF_GetPlayerCurweapon (int id) { } int MF_GetPlayerCurweapon (int id) { }
const char * MF_GetPlayerTeam (int id) { }
int MF_GetPlayerTeamID (int id) { } int MF_GetPlayerTeamID (int id) { }
int MF_GetPlayerDeaths (int id) { } int MF_GetPlayerDeaths (int id) { }
int MF_GetPlayerMenu (int id) { } int MF_GetPlayerMenu (int id) { }
@ -2094,11 +2106,14 @@ const char * MF_Format (const char *fmt, ...) { }
#define MF_GetAmxStringLen g_fn_GetAmxStringLen #define MF_GetAmxStringLen g_fn_GetAmxStringLen
#define MF_CopyAmxMemory g_fn_CopyAmxMemory #define MF_CopyAmxMemory g_fn_CopyAmxMemory
void MF_Log(const char *fmt, ...); void MF_Log(const char *fmt, ...);
#define MF_LogError g_fn_LogError
#define MF_RaiseAmxError g_fn_RaiseAmxError #define MF_RaiseAmxError g_fn_RaiseAmxError
#define MF_RegisterForward g_fn_RegisterForward #define MF_RegisterForward g_fn_RegisterForward
#define MF_ExecuteForward g_fn_ExecuteForward #define MF_ExecuteForward g_fn_ExecuteForward
#define MF_PrepareCellArray g_fn_PrepareCellArray #define MF_PrepareCellArray g_fn_PrepareCellArray
#define MF_PrepareCharArray g_fn_PrepareCharArray #define MF_PrepareCharArray g_fn_PrepareCharArray
#define MF_PrepareCellArrayA g_fn_PrepareCellArrayA
#define MF_PrepareCharArrayA g_fn_PrepareCharArrayA
#define MF_IsPlayerValid g_fn_IsPlayerValid #define MF_IsPlayerValid g_fn_IsPlayerValid
#define MF_GetPlayerName g_fn_GetPlayerName #define MF_GetPlayerName g_fn_GetPlayerName
#define MF_GetPlayerIP g_fn_GetPlayerIP #define MF_GetPlayerIP g_fn_GetPlayerIP
@ -2108,6 +2123,7 @@ void MF_Log(const char *fmt, ...);
#define MF_GetPlayerTime g_fn_GetPlayerTime #define MF_GetPlayerTime g_fn_GetPlayerTime
#define MF_GetPlayerPlayTime g_fn_GetPlayerPlayTime #define MF_GetPlayerPlayTime g_fn_GetPlayerPlayTime
#define MF_GetPlayerCurweapon g_fn_GetPlayerCurweapon #define MF_GetPlayerCurweapon g_fn_GetPlayerCurweapon
#define MF_GetPlayerTeam g_fn_GetPlayerTeam
#define MF_GetPlayerTeamID g_fn_GetPlayerTeamID #define MF_GetPlayerTeamID g_fn_GetPlayerTeamID
#define MF_GetPlayerDeaths g_fn_GetPlayerDeaths #define MF_GetPlayerDeaths g_fn_GetPlayerDeaths
#define MF_GetPlayerMenu g_fn_GetPlayerMenu #define MF_GetPlayerMenu g_fn_GetPlayerMenu
@ -2133,7 +2149,7 @@ void MF_Log(const char *fmt, ...);
#define MF_UnregisterSPForward g_fn_UnregisterSPForward #define MF_UnregisterSPForward g_fn_UnregisterSPForward
#define MF_GetPlayerFlags g_fn_GetPlayerFlags #define MF_GetPlayerFlags g_fn_GetPlayerFlags
#define MF_GetPlayerEdict g_fn_GetPlayerEdict #define MF_GetPlayerEdict g_fn_GetPlayerEdict
#define MF_Format g_fn_Format; #define MF_Format g_fn_Format
/*** Memory ***/ /*** Memory ***/
void *operator new(size_t reportedSize); void *operator new(size_t reportedSize);

View File

@ -108,6 +108,42 @@ extern weapon_t weaponData[TSMAX_WEAPONS];
bool isModuleActive(); bool isModuleActive();
bool ignoreBots (edict_t *pEnt, edict_t *pOther = NULL); bool ignoreBots (edict_t *pEnt, edict_t *pOther = NULL);
#define CHECK_ENTITY(x) \
if (x <= 0 || x > gpGlobals->maxEntities) { \
MF_LogError(amx, AMX_ERR_NATIVE, "Entity out of range (%d)", x); \
} else { \
if (x <= gpGlobals->maxClients) { \
if (!MF_IsPlayerIngame(x)) { \
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid player %d (not in-game)", x); \
} \
} else { \
if (FNullEnt(INDEXENT(x))) { \
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid entity %d", x); \
} \
} \
}
#define CHECK_PLAYER(x) \
if (x < 1 || x > gpGlobals->maxClients) { \
MF_LogError(amx, AMX_ERR_NATIVE, "Player out of range (%d)", x); \
} else { \
if (!MF_IsPlayerIngame(x) || FNullEnt(MF_GetPlayerEdict(x))) { \
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid player %d", x); \
} \
}
#define CHECK_NONPLAYER(x) \
if (x < 1 || x <= gpGlobals->maxClients || x > gpGlobals->maxEntities) { \
MF_LogError(amx, AMX_ERR_NATIVE, "Non-player entity %d out of range", x); \
} else { \
if (FNullEnt(INDEXENT(x))) { \
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid non-player entity %d", x); \
} \
}
#define GETEDICT(n) \
((n >= 1 && n <= gpGlobals->maxClients) ? MF_GetPlayerEdict(n) : INDEXENT(n))
#endif //TSX_H #endif //TSX_H