Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Combiner deux scripts

Par Alustriel_LZ le 8/12/2002 à 13:41:43 (#2736751)

Bonjour,

Je cherche à intégrer les HCM à mon module. Problème car certains scripts du fichierHCMbase.erf doivent être sélectionner à certains endroits où j'ai déjà des scripts perso actifs. Entre autres dans le Onacquire du module. J'ai voulu tout bêtement copier coller mais dans ce cas la le script ne se compile plus. SI quelqu'un peut m'aiguiller quant à la démarche à suivre ce serait très sympa, d'avance merci.

Alustriel_LZ
Eveningstar : campagne indépendante dans les Royaumes Oubliés
http://perso.wanadoo.fr/alustriel/nwnperso/nwn.htm

Par coolstar le 8/12/2002 à 13:50:55 (#2736804)

Hi!


Difficile de répondre sans connaître le Script incriminé... :D

...

Par Jedaï le 9/12/2002 à 0:10:16 (#2740938)

Pour fusionner deux scripts, la procédure la plus simple, c'est :

[list=1]
*Copier le contenu entre les accolades du main() à partir de ton script perso
*Coller ce contenu juste avant l'accolade fermante du main() du script HCR
[/list=1]


//ton script perso :
void main()
{/*
Tu copie tout ce qui se trouve ici
*/}



//Le script HCR
void main()
{
//Tout le code HCR

//Tu colle ici
}


Si ça ne compile toujours pas, c'est sans doute que tu as des variables dont le nom est identique dans les deux scripts avec un type différent. Reessaie mais en changeant systématiquement le nom des variables dans ton script perso (rajoute "_p" à la fin par exemple :p ).

Si ça ne compile toujours pas, c'est que tu n'as pas suivi les instructions correctement.:o

Par ailleurs, le fait que ça compile ne garantit rien quand au fonctionnement du script par la suite... Il est même assez peu probable que ça marche, enfin ça vaut le coup d'essayer.;)

Par eMRaistlin le 9/12/2002 à 0:15:47 (#2740960)

Oui :

une deserreur frequente lors d'un copie/coller de script, c'est d'(oublier de mettre a jour les GET :


si tu a un effet sur le OnPlayerDeath qui te plait, et que tu le veux sur le OnPlayerDying, si tu change pas le GetLastPlayerDead() pour un GetPlayerDying(), tu obtiendra rien.


(je sais que ce ne sont pas les bons Get, mais c'est pour illustrer...)

Par coolstar le 9/12/2002 à 0:21:19 (#2740989)

En gros Alustriel, le mieux encore serait (selon moi!) que tu nous soumettes l'objet de tes tentatives si tu veux... ;)


Heeuuu... et d'ailleurs, en parlant des "On" eMR, je n'ai pas encore saisi comment s'utilisait le "OnUserDefined" ??? :confus:

:D

Par Jedaï le 9/12/2002 à 0:42:24 (#2741077)

Oui eMRaistlin, mais il a dit qu'il voulait juste les recopier à la suite des script des HCR qui se trouve dans les mêmes emplacements, donc les GetBidules() ne devrait pas poser problème.

Par ailleurs il est quasi certains que si tu fusionne juste tes scripts, tu auras des interférences...:(

Par Jedaï le 9/12/2002 à 0:48:28 (#2741104)

Coolstar>reporte-toi au tutorial avancé de Bioware sur les Scripts, je crois qu'ils donne donne une bonne explication des OnUserDefined.:)

Par coolstar le 9/12/2002 à 0:49:30 (#2741108)

Ha?? :merci:

Par eMRaistlin le 9/12/2002 à 0:50:07 (#2741112)

En gros :


Tu declare que tu envoi un Signal vers un objet. Ce signal sera ensuite interpreté par cet objet pour verifier si il le comprend. Ca marche un peu comme les SILENT_SHOUT, mais sans notion de perception :



event eSpecialEvent = EventUserDefined(1234);
SignalEvent(oNPC,eSpecialEvent);


ici, tu declare que ce que tu veux declencher va porter le numero 1234. Tu envoi ce signal a a cible oNPC.

Dans le UserDefined du NPC, tu met ca :

event eSpecialEvent = GetUserDefinedEventNumber();

if (eSpecialEvent ==1234)
{}


En gros : le NPC recoit un signal. Il en recupere l'Id. Si celui ci correspond a une evenement parametré specialement pour lui, alors il balance le script prevu a cet effet...

(enfin, c'est comme ca que je l'ai compris.)

Par coolstar le 9/12/2002 à 0:52:17 (#2741123)

Heeuuu... c'était pour ma question subsidiaire eMR??? :D


:merci: :merci:

Par Mastokk le 9/12/2002 à 1:10:30 (#2741194)

Provient du message de eMRaistlin
En gros :


Tu declare que tu envoi un Signal vers un objet. Ce signal sera ensuite interpreté par cet objet pour verifier si il le comprend. Ca marche un peu comme les SILENT_SHOUT, mais sans notion de perception :



event eSpecialEvent = EventUserDefined(1234);
SignalEvent(oNPC,eSpecialEvent);


ici, tu declare que ce que tu veux declencher va porter le numero 1234. Tu envoi ce signal a a cible oNPC.

Dans le UserDefined du NPC, tu met ca :

event eSpecialEvent = GetUserDefinedEventNumber();

if (eSpecialEvent ==1234)
{}


En gros : le NPC recoit un signal. Il en recupere l'Id. Si celui ci correspond a une evenement parametré specialement pour lui, alors il balance le script prevu a cet effet...

(enfin, c'est comme ca que je l'ai compris.)



et bien merci, je cherchais la logique de ce truc depuis pas mal de temps (ouais ok j'ai pas trop cherché :rolleyes: ...) :).

pour l'instant ça marche

Par Alustriel_LZ le 9/12/2002 à 13:33:59 (#2743547)

Apparament le pb venait d'une variable de mon script perso identique à celle dans le script HCM. J'ai modifié la mienne et apparament ça marche.
Merci à tous. :)

JOL Archives 1.0.1
@ JOL / JeuxOnLine