Définir un script en variable locale

Répondre
Partager Rechercher
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 :
Code:
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 :
Code PHP:

// 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_" :
Code:
Nom                     Type       Valeur
OBJECT_LOCAL_SCRIPT     String     item_le_script
Et ça marche aussi avec les objets individuels posés sur une zone.
Bon j'ai un peu modifié parce qu'avec les yeux collés du matin, j'ai oublié le petit détail qui fait que le préfixe marche s'il est défini.


Ceci dit ce n'est pas vraiment du persistant, mais plutôt du générique.


Je dirais donc : Gogo-gadgeto-générification-puis-je-sors-par-la-porte-du-fond-parce-que-voila-quoi-d'abord...
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés