|
ATTENTION : Pour des raisons de compatibilité, précisées juste ICI, ce post a été édité.
Je passais quelques temps à contempler ce système un peu bancal mais ô combien pratique, que l'on nomme TagBased Scripts, quand soudain... Une lueur... Je me suis souvenue que quelqu'un avait parlé d'une autre manière d'utiliser ce système. (il me semble que c'est Garrath, je ne sais plus trop) J'ai donc décidé de modifier ce système à ma convenance, en utilisant non plus le module comme support, mais le principal intéressé : Le possesseur de l'item. Les modifications ne sont pas énormes, et je n'ai pas eu autant de travail que la longueur du post pourrait laisser prétendre. J'ai donc écrit une nouvelle bibliothèque, que je nommerai ici "inc_tagbased", déterminant les nouvelles fonctions ainsi que les constantes : Code PHP:
Code PHP:
- int FireItemEventAndReturnValue(int nEvent, object oItem, object oTarget) : Cette fonction est une copie quasi-conforme de la fonction "ExecuteScriptAndReturnInt()". - Elle me permet d'inscrire sur la cible la variable "int" correspondant à la constante "EVEN_####_ITEM" (l'évènement personnalisé "déclenché"), ainsi que la variable "object" correspondant à l'item concerné. Le reste de la fonction s'occupe de lancer le script portant comme nom le tag de l'item. - Il est possible de rajouter un préfixe pour que chaque nom de script corresponde à "[préfixe]+[tag_de_l'item]. La taille d'un nom de script ne pouvant pas dépasser 16 caractères, il vaut mieux faire au plus simple. Ici j'ai rajouté le préfixe "item_". Si cela n'est pas d'une importance capitale, ce préfixe me permet d'avoir une liste de scripts propre et organisée : Code PHP:
- object GetUserDefinedEventItem(object oTarget=OBJECT_SELF) Ces deux fonctions sont peu utiles. Utilisées dans mon script d'item, elles me permettent juste d'avoir un code plus lisible, ainsi qu'une gestion un peu plus propre des variables. Code PHP:
Cette fonction est quasiment la même que l'originale. Elle permet de répondre à la première fonction, en précisant si le script de l'évènement de base doit se poursuivre ou stopper. Code PHP:
Au final, je prends ici pour exemple l'évènement OnAcquireItem et OnEquipItem : Ma bibliothèque (appelée ici "inc_tagbased") : Code PHP:
Code PHP:
Code PHP:
Code PHP:
Voili voila... Si j'ai oublié quoi que ce soit n'hésitez pas. |
06/03/2005, 17h16 |
|
Aller à la page... |
TagBasedScript : Modifications
Suivre Répondre |
|
Partager | Rechercher |
|
Sympatouille tous ca, j'aime bien les fonctions, qui modifient un peu l'organisation du TagBased, et groupe le posage de variable
mais, quelle est l'utilité de changer l'objet sur lequel sont stockées les variables ? Ca "réduit" la probabilité que deux scripts soient lancés en même temps sur l'objet où elles sont stockées et que les variables se téléscopent, mais elle est sensée être nulle Cela dit, je trouve cela plus "propre" dans l'idée, et celon les modules et la facon de scripter, il peut y avoir bcp de variables sur le module ou sur les PJs/PNJs, il vaut mieux répartir il parait, même si ca tient plus de l'intégrisme que de l'optimisation je crois Enfin, je n'ai aucune idée du fonctionnement de cela une fois les scripts lancés, cmt sont gérées les variables, l'exécution de scripts sur les objets, tout ca . . . Dans l'idée, il aurait pu être interessant de rajouter des fonctions ajoutant divers paramètres, entiers, strings, etc. passés en variables sur l'objet "stockeur" et réutilisable dans le script. C'est vrai quoi, il est bien "sec" ce ExecuteScript, on peut pas lui passer bcp de paramètres Dans le même genre, pousser le boucher un peu (loin ?) en permettant le coup des "préfixe" posés sur les objets : pouvoir modifier le fonctionnement de toute une gamme de scripts (en fait, changer de d'ensemble de scripts) pour un joueur par exemple, en changeant simplement une variable posée dessus. La variable retour peut être utilisée pour savoir si un script a été lancé ou pas, et déclencher un script générique sinon. Mais je m'emballe, je veux toujours en faire *trop* Alors là le coup de passer par l'objet sur lequel le script est lancé pour stocker les variable "temporelle" prendrait un interêt tout autre
__________________
scripteur à mi-temps amateur brouillon flemmard et pas si compétent, encore un scienteux qui ne sait aligner deux mots correctement quelques messages d'erreurs classiques |
08/03/2005, 00h48 |
|
Camelia d'Oriel |
Voir le profil public |
Trouver plus de messages par Camelia d'Oriel |
|
Là, je dois avouer que tes questions ne sont pas claires du tout, ou alors c'est juste moi qui n'ai rien compris...
|
09/03/2005, 14h34 |
|
Camelia d'Oriel |
Voir le profil public |
Trouver plus de messages par Camelia d'Oriel |
Camelia d'Oriel |
Voir le profil public |
Trouver plus de messages par Camelia d'Oriel |
|
Il faudra donc modifier les tags et les scripts des peaux pour qu'ils concordent avec ma version. J'ai mis en deuxième partie de CE POST un exemple d'un item basique prêt à être modifié.
|
09/03/2005, 15h26 |
|
|
Oki merci !
Je vais m'y pencher et je reviendrai avec mes questions idiotes ! |
09/03/2005, 15h50 |
|
Camelia d'Oriel |
Voir le profil public |
Trouver plus de messages par Camelia d'Oriel |
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|