global MyFunc(whatever)
{
// Do the code here...
}
foreign MyFunc(whatever);
I've written a tutorial on this in the past, the short answer is "YSI":
https://sampforum.blast.hk/showthread.php?tid=296907 Basically, you split your mode up in to logical pieces, such as streamer, vehicles, fishing job, etc. Each of these systems is in a separate file and all are included in to the main mode. However, you also include each system in to a separate filterscript and compile those individually. If you wrote your mode well (with minimal coupling between independent parts) this should be easy. Anyway, the key to this is y_master, so you declare a function as: pawn Code:
pawn Code:
The other advantage of this method is that when they send you their code, you can compile all the separate parts in to one huge script and not need to use the filterscripts and remote calls at all - without altering ANY code. These links might also help: https://sampforum.blast.hk/showthread.php?tid=194509 (old) https://sampforum.blast.hk/showthread.php?tid=475106 (new) |
I think that ColeMiner (Y_Less) has a point, YSI is probably yhe best system to use for script security, but I have another question, is there another way to give my script source code to 'developers' w/o having to email it/upload it to mediafire?
|
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"} };