La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 18:26:17
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
CerberusXt Novice Messages: 12 |
Posté le : 18/06/2004 13:17:28 Sujet du message : Créer un evenement au bout d'un certains temps de jeu
Je cherche a faire en sorte qu'un compteur s'active en debut de jeu ou bien au cours d'une discussion qui va declencher par exemple une embuscade sur le joueur au bout d'un certains nombre de minutes de jeux.
|
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
Tu peux pour cela utiliser la fonction DelayCommand, dans le script d'arrivée de la zone par exemple, mais en verifiant bien que GetEnteringObject()==GetFirstPC() ( si le mod est solo bien sur, sinon il faut verifier sur l'ensemble des pc mais je ne m'y connais pas en multi )
|
Revenir en haut | |
CerberusXt Novice Messages: 12 |
je ne suis pas encore tres autonome niveau code, j'arrive a faire des trucs mais il me faut une idee de structure, est ce que tu pourrais me montrer comment structurer cette commande.
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Je te propose une autre solution que celle évoquée par Bloutiouf, car j'ai du mal a voir où placer le script incluant un delayCommand à "long terme" Ma proposition est un peu sauvage... Tu crées un objet invisible qui servira de compteur avec un test dans son heart beat... D'où l'aspect sauvage du système. 1. Tu crées un objet invisible (ni utilisable, ni statique)... Onglet Placeable/ Divers 2. Tu lui donnes le Tag Compteur 3. Dans ces propriétés/ Script / heart Beat tu places ceci NWScript :
void main() { if (GetLocalInt(OBJECT_SELF, "COMPTEUR") == 10 ) { SendMessageToPC(GetFirstPC(), ""); ExecuteScript("nomduscript de l'embuscade", OBJECT_SELF); DestroyObject (OBJECT_SELF, 5.0); } // sinon le compteur monte d'un else {SetLocalInt(OBJECT_SELF,"COMPTEUR",GetLocalInt(OBJECT_SELF,"COMPTEUR") + 1);} } 4. Bouton droit sur ton objet invisible d'essai / ajouter à la palette / onglet avancée... tu lui mets comptobj 5. Tu détruis l'original. 6. Tu crées un script pour ton embuscade ou autre évènement déclenché par le compteur. Son nom sera reporté dans le 1e script... 7. Tu crées le script de création du compteur. Dans un dialogue par exemple... Onglet Actions Conséquentes de la bonne ligne de dialogue.... NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. Voila, bon courage _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
Effectivement c'est aussi une solution, mais ce n'est pas vraiment très temporisé comme truc ( à moins que le onHearthBeat reviens à temporisation précise mais je n'étais pas au courant )
Le script du DelayCommand est à placer dans le onEnter de n'importe quelle zone ( de toute façon, il y a toujours des pnj qui entrent dans toutes les zones aussi ) mais pour une raison de clarté, il serait préférable de la mettre dans celle de la zone pour la rencontre NWScript :
void rencontre() { // Scripts de la rencontre } void main() { if ( GetEnteringObject()==GetFirstPC() ) DelayCommand(<TEMPS>, rencontre()); } à changer <TEMPS> par un nombre, le fameux temps à attendre avant l'embuscade ( avec un .0 meme si il n'y a pas de virgule ) Donc là, cela concerne le premier pc à rentrer dans la zone de la rencontre, si tu veux que ce script se mette en place dès la rentrée du premier pc dans le module, il faut plutot mettre une variable locale au module blablabla... mais bordel j'en ai marre que personne me comprenne ! |
Revenir en haut | |
CerberusXt Novice Messages: 12 |
Je fais un module solo ca devrait sans doute simplifier les choses. Sinon d'apres ce que j'ai compris de vos deux scripts c'est que le decompte ne sera pas globale. C'est a dire que le decompte risque de ne fonctionner que dans une seule et unique zone, hors, moi je voudrais que au bout d'une 20ene de minutes par exemple, quel que soit l'endroit dans lequel se trouve le joueur j'ai déclenchement. J'ai peu etre mal compris et vos script vont fonctionner quand meme, je n'ai pas eu l'occasion de tester. Je vous tiens au courant si ca fonctionne.
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Pour mon hypothèse de travail, 20 minutes = 20x60 secondes = 200 cycles Le test serait alors: if (GetLocalInt(OBJECT_SELF, "COMPTEUR") == 200 ) _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
pour donner une valeure globale au script, il faut que tu l'appele dans OnClientEnter des proprietes du module
|
Revenir en haut | |
Muad'Dib Maitre de Dune Grand Chevalier Messages: 124 Localisation: Dans un petit trou de ver des sable a coté de nice |
Nan, tu fait ce qu'a dit Longbow, mais dans le OnHeartBeat du module, et pas celui de l'objet invisible.
_________________ Minsc et Bouh sont prets..*Petits bruits de hamster geant miniature* Rejoignez le Module de Bladur's Gate 2, et jouez sur Dune en arene |
Revenir en haut | |
CerberusXt Novice Messages: 12 |
donc en gros pas la peine de creer d'objet invisible
|
Revenir en haut | |
Muad'Dib Maitre de Dune Grand Chevalier Messages: 124 Localisation: Dans un petit trou de ver des sable a coté de nice |
Nan
_________________ Minsc et Bouh sont prets..*Petits bruits de hamster geant miniature* Rejoignez le Module de Bladur's Gate 2, et jouez sur Dune en arene |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Citation : dans le OnHeartBeat du module, et pas celui de l'objet invisible. Atgh... Hérésie... Il faut éviter à tout prix d'impliquer le HB du module... Ca bouffe le système alors qu'une fois le cycle atteint avec un objet tu peux le détruire... Avec le HB du module, le test se fera continuellement..._________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
donc faut prendre ma solution
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Sans vouloir froisser ton ego, je ne comprends pas l'utilisation du OnEnter dans une zone. Ca veut dire que l'évènement est dépendant de l'entrée du joueur dans une zone ?? Mais alors, la temporisation n'est plus contrôlée par le scénar mais le déplacement du joueur... Une fois entré dans une zone, pendant combien de temps le script est "actif" (voila une question qui m'interesse à titre personnel), d'autre part, cela implique de coller ce script dans toutes les zones (si j'ai bien saisi). Encore une fois, nous sommes là pour réfléchir à la meilleure solution et j'ai bien conscience des faiblesses de l'ojet invisible mais au moins il est indépendant des actions du joueur et son cycle se fait toutes les 6 secondes. _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
pas du OnEnter d'une zone, tu le met dans le OnClientEnter, mais de toute façon, meme si la zone n'est pas affichée, au lancement du module, s'il ya des pnjs, ils activent la procédure OnEnter
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Donc une temporisation dépendante d'éléments extérieurs ?
_________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
Si on place un DelayCommand dans le OnEnterClient du module, ça permet d'executer le script de la rencontre un certain temps après l'arrivée du joueur dans le module, non ?
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
C'est justement la question qui m'interesse... Combieb de temps un script reste-t-il "actif" après son déclenchement... J'ai rencontré ce problème avec des Actions conséquentes qui lancent un script mais dès que le dialogue est fermé, le script s'arrête, idem avec des triggers qui lance un script mais celui ne va pas jusqu'au bout... Et encore, il s'agissait d'actions à court terme (ex: après une phrase, le PNJ s'enfuit...) alors pour plusieurs minutes... je suis perplexe mais interessé par le résultat.
|
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
normalement le script reste jusqu'à tant qu'il soit fini...
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
J'attends les conclusions de CerberusXt... En attendant je retourne dans mon volcan... modeler du tileset duegar...
_________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Muad'Dib Maitre de Dune Grand Chevalier Messages: 124 Localisation: Dans un petit trou de ver des sable a coté de nice |
Faut aussi prendre en compte que le DelayCommand bug au dela d'ine certaine limite. Faudrait demander à Lendraste, mais je pense que c'est environ 30 min max.
_________________ Minsc et Bouh sont prets..*Petits bruits de hamster geant miniature* Rejoignez le Module de Bladur's Gate 2, et jouez sur Dune en arene |
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
Et si on fait un DelayCommand(20.0, DelayCommand(20.0... pour obtenir 40 minutes ? de toute façon 30 min max, c'est suffisant pour les 20 min qu'il voulait
|
Revenir en haut | |
Muad'Dib Maitre de Dune Grand Chevalier Messages: 124 Localisation: Dans un petit trou de ver des sable a coté de nice |
Je pencherai plutot pour un ActionWait() déclanché dans le OnEnter d'un trigger/zone deja...
_________________ Minsc et Bouh sont prets..*Petits bruits de hamster geant miniature* Rejoignez le Module de Bladur's Gate 2, et jouez sur Dune en arene |
Revenir en haut | |
Bloutiouf Chevalier Messages: 70 |
Ce n'est pas une action annodine qu'il veut, du genre ouvrir une porte ou tout ça, mais un ensemble de commandes qui permetraient de faire beaucoup plus de choses, donc un DelayCmd avec un appel de procédure, enfin après faut voir
|
Revenir en haut | |
Muad'Dib Maitre de Dune Grand Chevalier Messages: 124 Localisation: Dans un petit trou de ver des sable a coté de nice |
ActionWait suivie de ExecuteScript marche aussi bien...
_________________ Minsc et Bouh sont prets..*Petits bruits de hamster geant miniature* Rejoignez le Module de Bladur's Gate 2, et jouez sur Dune en arene |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum