I do something like this and give my gamemode.amx and this include which has a set of functions which other developers can use while writing a filterscript.These functions call the functions which are forwarded in my gamemode.Now anyone can write some code for me using my gamemode functions and without my code being exposed.
Code:
ined XACNR_FILTERSCRIPT_ADMIN
#if defined _ALS_SetPlayerHealth
#undef SetPlayerHealth
#else
#define _ALS_SetPlayerHealth
#endif
#define SetPlayerHealth(%0,%1) CallRemoteFunction("AC_SetPlayerHealth","if",%0,%1)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_SetPlayerArmour
#undef SetPlayerArmour
#else
#define _ALS_SetPlayerArmour
#endif
#define SetPlayerArmour(%0,%1) CallRemoteFunction("AC_SetPlayerArmour","if",%0,%1)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_PutPlayerInVehicle
#undef PutPlayerInVehicle
#else
#define _ALS_PutPlayerInVehicle
#endif
#define PutPlayerInVehicle(%0,%1,%2) CallRemoteFunction("AC_PutPlayerInVehicle","iii",%0,%1,%2)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_SetVehiclePos
#undef SetVehiclePos
#else
#define _ALS_SetVehiclePos
#endif
#define SetVehiclePos(%0,%1,%2,%3) CallRemoteFunction("AC_SetVehiclePos","ifff",%0,%1,%2,%3)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_TogglePlayerSpectating
#undef TogglePlayerSpectating
#else
#define _ALS_TogglePlayerSpectating
#endif
#define TogglePlayerSpectating(%0,%1) CallRemoteFunction("AC_TogglePlayerSpectating","ii",%0,%1)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_SetPlayerPos
#undef SetPlayerPos
#else
#define _ALS_SetPlayerPos
#endif
#define SetPlayerPos(%0,%1,%2,%3) CallRemoteFunction("AC_SetPlayerPos","ifff",%0,%1,%2,%3)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_SetPlayerPosFindZ
#undef SetPlayerPosFindZ
#else
#define _ALS_SetPlayerPosFindZ
#endif
#define SetPlayerPosFindZ(%0,%1,%2,%3) CallRemoteFunction("AC_SetPlayerPosFindZ","ifff",%0,%1,%2,%3)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_GivePlayerWeapon
#undef GivePlayerWeapon
#else
#define _ALS_GivePlayerWeapon
#endif
#define GivePlayerWeapon(%0,%1,%2) CallRemoteFunction("AC_GivePlayerWeapon","iii",%0,%1,%2)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_ResetPlayerWeapons
#undef ResetPlayerWeapons
#else
#define _ALS_ResetPlayerWeapons
#endif
#define ResetPlayerWeapons(%0) CallRemoteFunction("AC_ResetPlayerWeapons","i",%0)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_ResetPlayerMoney
#undef ResetPlayerMoney
#else
#define _ALS_ResetPlayerMoney
#endif
#define ResetPlayerMoney(%0) CallRemoteFunction("AC_ResetPlayerMoney","i",%0)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_GivePlayerMoney
#undef GivePlayerMoney
#else
#define _ALS_GivePlayerMoney
#endif
#define GivePlayerMoney(%0,%1) CallRemoteFunction("AC_GivePlayerMoney","ii",%0,%1)
////////////////////////////////////////////////////////////////////////////////
#if defined _ALS_GetPlayerMoney
#undef GetPlayerMoney
#else
#define _ALS_GetPlayerMoney
#endif
#define GetPlayerMoney(%0) CallRemoteFunction("AC_GetPlayerMoney","i",%0);
////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined XACNR_FILTERSCRIPT_VEHICLES
#if defined _ALS_AddStaticVehicle
#undef AddStaticVehicle
#else
#define _ALS_AddStaticVehicle
#endif
#define AddStaticVehicle(%0,%1,%2,%3,%4,%5,%6) CallRemoteFunction("xacnr_AddStaticVehicle","iffffii",%0,%1,%2,%3,%4,%5,%6)
#if defined _ALS_AddStaticVehicleEx
#undef AddStaticVehicleEx
#else
#define _ALS_AddStaticVehicleEx
#endif
#define AddStaticVehicleEx(%0,%1,%2,%3,%4,%5,%6,%7) CallRemoteFunction("xacnr_AddStaticVehicleEx","iffffiii",%0,%1,%2,%3,%4,%5,%6,%7)
#if defined _ALS_CreateVehicle
#undef CreateVehicle
#else
#define _ALS_CreateVehicle
#endif
#define CreateVehicle(%0,%1,%2,%3,%4,%5,%6,%7) CallRemoteFunction("xacnr_CreateVehicle","iffffiii",%0,%1,%2,%3,%4,%5,%6,%7)
#if defined _ALS_DestroyVehicle
#undef DestroyVehicle
#else
#define _ALS_DestroyVehicle
#endif
#define DestroyVehicle(%0) CallRemoteFunction("xacnr_DestroyVehicle","i",%0)
#if defined _ALS_ChangeVehicleColor
#undef ChangeVehicleColor
#else
#define _ALS_ChangeVehicleColor
#endif
#define ChangeVehicleColor(%0,%1,%2) CallRemoteFunction("xacnr_ChangeVehicleColor","iii",%0,%1,%2)
#if defined _ALS_SetVehicleFuel
#undef SetVehicleFuel
#else
#define _ALS_SetVehicleFuel
#endif
#define SetVehicleFuel(%0,%1) CallRemoteFunction("xacnr_SetVehicleFuel","ii",%0,%1)
#endif
////////////////////////////////////////////////////////////////////////////////
#define API: API_
#define API_GetStartupTime(%0,%1,%2,%3) CallRemoteFunction("GetStartupTime","%s%s%i%i",%0,%1,%2,%3)
#define API_GetUserID(%0) CallRemoteFunction("GetUserID","i",%0)
#define API_XA_Kick(%0,%1,%2,%3) CallRemoteFunction("XA_Kick","issi",%0,%1,%2,%3)
#define API_HideBlockScreen(%0) CallRemoteFunction("HideBlockScreen","i",%0)
#define API_SetSpawnInformation(%0,%1,%2) CallRemoteFunction("SetSpawnInformation","iii",%0,%1,%2)
#define API_XA_SetPlayerColor(%0) CallRemoteFunction("XA_SetPlayerColor","i",%0)
#define API_ShowPlayerRules(%0) CallRemoteFunction("ShowPlayerRules","i",%0)
#define API_GiveMoneyToServer(%0,%1) CallRemoteFunction("GiveMoneyToServer","ii",%0,%1)
#define API_GiveMoneyFromServer(%0,%1) CallRemoteFunction("GiveMoneyFromServer","ii",%0,%1)
#define API_GiveSalaryToPlayer(%0,%1) CallRemoteFunction("GiveSalaryToPlayer","ii",%0,%1)
#define API_RemoveMoneyFromPlayer(%0,%1,%2) CallRemoteFunction("RemoveMoneyFromPlayer","iii",%0,%1,%2)
#define API_GiveMoneyToPlayer(%0,%1) CallRemoteFunction("GiveMoneyToPlayer","ii",%0,%1)
#define API_HideTextMessage(%0) CallRemoteFunction("HideTextMessage","i",%0)
#define API_ShowTextMessage(%0,%1) CallRemoteFunction("ShowTextMessage","is",%0,%1)
#define API_HideMidBoxMessage(%0) CallRemoteFunction("HideMidBoxMessage","i",%0)
#define API_ShowMidBoxMessage(%0,%1) CallRemoteFunction("ShowMidBoxMessage","ii",%0,%1)
#define API_ShowBlockScreen(%0,%1,%2) CallRemoteFunction("ShowBlockScreen","iss",%0,%1,%2)
#define API_HideXTextMenu(%0) CallRemoteFunction("HideXTextMenu","i",%0)
#define API_GetCurrentXTextMenu(%0) CallRemoteFunction("GetCurrentXTextMenu","i",%0)
#define API_DrawXTextMenu(%0,%1,%2,%3,%4,%5,%6,%7) CallRemoteFunction("DrawXTextMenu","iiissiii",%0,%1,%2,%3,%4,%5,%6,%7)
#define API_DrawXTextInfoBox(%0,%1,%2,%3,%4,%5,%6,%7) CallRemoteFunction("DrawXTextInfoBox","iiissiii",%0,%1,%2,%3,%4,%5,%6,%7)
#define API_GetCurrentXTextInfo(%0) CallRemoteFunction("GetCurrentXTextInfo","i",%0)
#define API_HideXTextInfo(%0) CallRemoteFunction("HideXTextInfo","i",%0)
#define API_GetPlayerXATeam(%0) CallRemoteFunction("GetPlayerXATeam","i",%0)
#define API_GiveScoreToPlayer(%0) CallRemoteFunction("GiveScoreToPlayer","i",%0)
#define API_RemoveScoreFromPlayer(%0) CallRemoteFunction("RemoveScoreFromPlayer","i",%0)
#define API_RespawnPlayer(%0) CallRemoteFunction("RespawnPlayer","i",%0)
#define API_XA_SetWantedLevel(%0,%1,%2) CallRemoteFunction("XA_SetWantedLevel","iii",%0,%1,%2)
#define API_ForceTakeMoneyFromPlayer(%0,%1) CallRemoteFunction("ForceTakeMoneyFromPlayer","ii",%0,%1)
////////////////////////////////////////////////////////////////////////////////
stock const TeamStrings[][] =
{
{"~w~Dead"},{"~b~Cop"},{"~b~MBI"},{"~b~FBI"},{"~w~CIA"},{"~b~Army"},
{"~p~Medic"},{"~g~Driver"},{"~g~Pilot"},{"~w~Civilian"},{"~r~Terrorist"}
};