Tiens, voila un truc qui me passait par la tête, donc j'en fait part :
Comment utiliser un système similaire au "TagBased Script" tout objet de la palette personnalisée ? Il suffit de rajouter une petite variable locale sur l'objet en passant par ses propriétés, comme ceci :
Nom Type Valeur
OBJECT_LOCAL_SCRIPT String le_script
Puis on regarde comment est fait le système "TagBased", et on le modifie un tout petit peu :
// Ici j'utilise ce système sur l'évènement "OnAcquiredItem" du module.
#include "x2_inc_switches"
void main() { object oItem = GetModuleItemAcquired();
// Là c'est le code original du "TagBased Script" :
if(GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS)==TRUE) { SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ACQUIRE); int nRet = ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oItem),OBJECT_SELF); if(nRet==X2_EXECUTE_SCRIPT_END) { return; } }
// Là c'est la version un peu modifiée :
if(GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS)==TRUE) { SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ACQUIRE); string sScript = GetLocalString(oItem,"OBJECT_LOCAL_SCRIPT"); string sPrefix = GetLocalString(OBJECT_SELF,"MODULE_VAR_TAGBASED_SCRIPT_PREFIX"); sScript = sPrefix+sScript; int nRet = ExecuteScriptAndReturnInt(sScript,OBJECT_SELF); if(nRet==X2_EXECUTE_SCRIPT_END) { return; } } }
Pour le reste c'est en gros le même fonctionnement que le "TagBased Script". Si un préfixe de script a été défini, il faudra mettre le même dans la variable. Exemple avec un préfixe "item_" :
Nom Type Valeur
OBJECT_LOCAL_SCRIPT String item_le_script
Et ça marche aussi avec les objets individuels posés sur une zone.
|