Quote:
Originally Posted by Y_Less
Anyway, I would still recommend using y_master - I used to do what you're doing here and developed that to prevent duplication (because I got royally frustrated with writing everything twice):
pawn Code:
#if defined AC_SLAVE AC_STOCK AC_GetPlayerMoney(playerid) { return CallRemoteFunction(#AC_GetPlayerMoney, "i", playerid); } #if defined _ALS_GetPlayerMoney #undef GetPlayerMoney #else #define _ALS_GetPlayerMoney #endif #define GetPlayerMoney AC_GetPlayerMoney #else AC_PUBLIC AC_GetPlayerMoney(playerid) { if (IsPlayerConnected(playerid)) { new bad_money = U_GetPlayerMoney(playerid); return bad_money < AC_players[playerid][AC_pMoney] ? bad_money : AC_players[playerid][AC_pMoney]; } return 0; } #if defined _ALS_GetPlayerMoney #undef GetPlayerMoney #else #define _ALS_GetPlayerMoney #endif #define GetPlayerMoney AC_GetPlayerMoney #endif
|
Including y_master means I have to include whole YSI and that's not something I'd really like to do (increases the size of the project much more than needed). Writing code in that way I realised I can do it like this (which looks a little better):
pawn Code:
#if defined AC_SLAVE
AC_STOCK AC_GetPlayerMoney(playerid) {
return CallRemoteFunction(#AC_GetPlayerMoney, "i", playerid);
}
#else
AC_PUBLIC AC_GetPlayerMoney(playerid) {
if (IsPlayerConnected(playerid)) {
new bad_money = U_GetPlayerMoney(playerid);
return bad_money < AC_players[playerid][AC_pMoney] ? bad_money : AC_players[playerid][AC_pMoney];
}
return 0;
}
#endif
#if defined _ALS_GetPlayerMoney
#undef GetPlayerMoney
#else
#define _ALS_GetPlayerMoney
#endif
#define GetPlayerMoney AC_GetPlayerMoney
Quote:
Originally Posted by Y_Less
Also, I don't tend to rely on using the "FILTERSCRIPT" macro as people are rubbish at using it:
pawn Code:
new bool:AC_FILTERSCRIPT = false;
public OnFilterScriptInit() { AC_FILTERSCRIPT = true; AC_OnScriptInit(); }
public OnGameModeInit() { if (!AC_FILTERSCRIPT) AC_OnScriptInit(); }
|
Whoever uses it must declare AC_MASTER or AC_SLAVE since now. This way I'm sure everything is fine and they aren't confused by master and slave scripts.