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 31/01/2025 16:56:20
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 |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
... ça marche ?
Parce que dans un petit script d'anim j'aimerais que des rayons surgissent de divers objets invisibles vers un WP, j'ai donc créé, dans mon script, les void suivant : NWScript :
void BeamsRed() { AssignCommand (GetObjectByTag("BeamRed1"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0)); AssignCommand (GetObjectByTag("BeamRed2"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0)); AssignCommand (GetObjectByTag("BeamRed3"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0)); AssignCommand (GetObjectByTag("BeamRed4"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0)); } void BeamsBlue() { AssignCommand (GetObjectByTag("BeamBlue1"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0)); AssignCommand (GetObjectByTag("BeamBlue2"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0)); AssignCommand (GetObjectByTag("BeamBlue3"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0)); AssignCommand (GetObjectByTag("BeamBlue4"), ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0)); } void main() { // j'appelle les effets par ces commandes : DelayCommand (10.0, BeamsRed()); DelayCommand (20.0, BeamsBlue()) } et il ne se produit rien... Donc je me demande si un simple placeable (non statique, je précise) a une queue d'action et si on peut lui faire effectuer des actions ? Et si non, comment faire pour déclencher mes effets au moment voulu ? _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Citation : et il ne se produit rien... Donc je me demande si un simple placeable (non statique, je précise) a une queue d'action et si on peut lui faire effectuer des actions ?
En réalité, cela n'a même rien à voir avec les actions car ApplyEffectToObject n'est pas une action et ne se place pas sur la queue d'action. Ensuite, les plaçables n'ont pas de queue d'action. Et enfin, AssignCommand ne place sur la queue d'action que des actions. Dans le cas contraire, AssignCommand a pour effet d'exécuter la commande comme si l'objet cible du assign en devenait l'OBJECT_SELF. Mais s'il ne s'agit pas d'une action, la commande sera immédiate.
Et si non, comment faire pour déclencher mes effets au moment voulu ? Autre problème, un EffectBeam ne peut être créé, je crois, qu'à partir d'une créature (à vérifier), un plaçable ne pourrait donc normallement pas servir de source (même si la cible peut-être un objet d'une autre nature). Je tiens aussi à te signaler que ton OBJECT_SELF dans tes appels à EffectBeam fait référence à l'objet qui exécute le présent script. Lorsque d'un script est exécuté OBJECT_SELF, dans tout le code est immédiatement remplacé par l'objet qui exécute le script. Le AssignCommand ne transmet pas à la fonction cible telle quelle, mais déjà interprétée, avec la valeur courante des paramètres au moment de l'exécution du AssignCommand. Bref... je te propose les changements suivants : NWScript :
void BeamsRed() { ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, GetObjectByTag("BeamRed1"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0); ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, GetObjectByTag("BeamRed2"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0); ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, GetObjectByTag("BeamRed3"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0); ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_FIRE, GetObjectByTag("BeamRed4"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 15.0); } void BeamsBlue() { ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, GetObjectByTag("BeamBlue1"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0); ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, GetObjectByTag("BeamBlue2"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0); ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, GetObjectByTag("BeamBlue3"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0); ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectBeam (VFX_BEAM_COLD, GetObjectByTag("BeamBlue4"), BODY_NODE_CHEST), GetObjectByTag("spWP_antichambre"), 5.0); } void main() { // j'appelle les effets par ces commandes : DelayCommand (10.0, BeamsRed()); DelayCommand (20.0, BeamsBlue()); } Ce script n'étant valable à mes yeux que si tes objets de tag BeamRedx et BeamBluex sont des créatures. Tu peux créer une créature immobile et invisible pour servir de support à ce rayon Encore une chose. J'aimerai être sûr qu'un Waypoint peut servir de cible à un Beam, mais rien n'est moins sûr. Je te suggère donc de remplacer ton Waypoint de même que les sources de Beam. _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum.. Hum...
Il me semble qu'un placeable peut être impliqué dans un effectbeam, par contre on ne peut utiliser de WP dans cet effet... Dans le grand veneur, j'ai utilisé ces effectBeam alliés à des éléments non-statiques et sans qu'ils soient utilisables. Je te conseille des objets invisibles (non-statique) à substituer auw WP _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Longbow a écrit : Il me semble qu'un placeable peut être impliqué dans un effectbeam, par contre on ne peut utiliser de WP dans cet effet... Je n'ai pas écris qu'un plaçable ne pouvait pas être impliqué, puisqu'il peut servir de cible lors de l'application de l'effet. Dans le cas de la source je me demandais si les noeuds utilisables sont tous exploitables sur un plaçable et si non lequel doit être utilisé. Le Lexicon n'est pas très parlant à ce sujet et je n'ai jamais fait le test. Si tu le sais pour l'avoir utilisé, tu peux peut-être le signaler ? _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Longbow a écrit : Il me semble qu'un placeable peut être impliqué dans un effectbeam, par contre on ne peut utiliser de WP dans cet effet...
Oui, c'est d'ailleurs sur ce script que tu avais posté dans le forum Modules que je me suis basé
Dans le grand veneur, j'ai utilisé ces effectBeam alliés à des éléments non-statiques et sans qu'ils soient utilisables. Bon, pour le WP qui sert de cible, en fait c'est parce qu'il me sert à créer un autre truc par la suite, mais je peux très bien poser un objet invisible à la même place, c'était pour éviter de surcharger... Et ben en tous cas, tout faux sur ce coup-là moi Je vais tester ce qu'à proposé Lendraste EDIT : bon ben ça ne marche pas J'ai d'abord essayé en laissant le WP comme cible, et je l'ai ensuite remplacé par un objet invisible, mais ça n'a rien changé... Dans le script de Longbow, les beams sont générés par le OHB des objets invisibles, donc là peut-être qu'en mettant le script de création des beams dans le OnSpawn des objets invisibles puis de les créer lors du script, les beams se lanceraient ? (et les détruire après, une fois le script terminé) Bon, je n'ai pas le temps de tester ça là, mais je le ferais dès que possible Et créer des créatures invisibles à la place des objets, je ne peux pas, les objets sont sur des piliers donc impossible de mettre des créatures là-dessus _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Cassin a écrit : EDIT : bon ben ça ne marche pas
Si comme l'affirme Longbow, on peut faire émaner un rayon d'un plaçable, est-ce que le BODY_NODE_CHEST est bien celui qu'il faut utiliser ? Petite précision utile, le plaçable "cible" du rayon doit obligatoirement être "usable", sans quoi aucun effet ne peut l'affecter. Je pense qu'il en est de même pour un plaçable (même invisible) qui serait source d'un rayon. Par ailleurs, et c'est à vérifier, peut-être peux-tu utiliser ApplyEffectAtLocation plutôt que ApplyEffectOnObject, ainsi tu peux utiliser un Waypoint au lieu d'un objet invisible en capturant la location du waypoint. Cela t'évitera un problème de placement d'un autre objet à ce Waypoint.
J'ai d'abord essayé en laissant le WP comme cible, et je l'ai ensuite remplacé par un objet invisible, mais ça n'a rien changé... Fondamentalement, je pense que le script que je t'ai donné est bon à condition de tenir compte de ces quelques remarques. Mais si le problème persiste, je le testerais moi-même dès que possible. Petite remarque complémentaire, le fait de rendre des plaçables invisibles "usable" va permettre à n'importe qui d'en détecter l'emplacement et le nom avec la touche TAB. Je te suggère d'ajouter de quoi rendre l'objet totalement invisible. Pour cela tu les déclares tous dans la faction "hostile" et tu ajoutes ces lignes de commandes dans le OnSpawn de l'objet : NWScript :
ApplyEffectOnObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(EffectEthereal()), OBJECT_SELF); // ApplyEffectOnObject(DURATION_T YPE_PERMANENT, ExtraordinaryEffect(EffectCuts ceneGhost()), OBJECT_SELF); Je mets une ligne de code en remarque, car elle n'est valable qu'en version 1.61. Elle permet à un objet ou une créature d'être intangible. C'est à dire qu'une créature peut passer à travers sans dévier de sa course et se rendre compte alors qu'il y a quelque chose d'invisible devant lui. _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
aldech Gagnant du Concours Gothic 3 Messages: 61 Localisation: Le Havre |
J'avais fait un test pour un début de module, cela donnait cela :
NWScript :
void main() { int nIdx ; object oTarget ; object oSource = GetObjectByTag("Autel"); //objet source autel effect eBeam = EffectBeam(VFX_BEAM_EVIL,oSource,BODY_NODE_CHEST,FALSE); for(nIdx = 1;nIdx <= 4;nIdx++) { oTarget = GetObjectByTag("rayon" + IntToString(nIdx)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eBeam,oTarget,360.0); } } EDIT : voir ici le résultat. EDIT2 : l'autel source (useable et static non coché), de même pour les 4 objets invisible. [Edit de lendraste : merci d'utiliser de préférence la balise [nwscript] pour présenter du code NWNScript ] Dernière édition par aldech le 15/01/2004 13:15:05; édité 1 fois
|
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Non, même avec un ApplyEffectAtLocation, ça ne fonctionne pas... En fait comme tu le disais si on peut pas donner d'ordre à un placeable, je ne vois pas trop comment faire...
_________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Cassin a écrit : Non, même avec un ApplyEffectAtLocation, ça ne fonctionne pas... En fait comme tu le disais si on peut pas donner d'ordre à un placeable, je ne vois pas trop comment faire... Je testerais la solution complète dès ce soir. Ce problème m'intrigue._________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Bon, j'ai contrôlé mon script. Le premier que je t'ai donné en correction est parfaitement juste. Il faut bien sûr, comme nous en avons parlé, utiliser les créatures invisibles ou des plaçables invisibles, mais s'il s'agit de plaçables il faut impérativement les rendre "utilisables" comme je l'ai déjà précisé (cocher la case "usable" ou "utilisable" dans l'onglet "basic" ou "base" des propriétés du plaçable). J'ai fait le test avec que des plaçables (y compris la cible des rayons) et sans changer une once de code. Cela marche parfaitement. De ce fait l'interrogation sur le noeud BODY_NODE_CHEST ne se pose plus
En revanche, pour ce que je t'ai dit sur les plaçable totalement invisible, c'est pas encore ça. Déjà parce que j'ai écris ApplyEffectOnObject au lieu de ApplyEffectToObject, ensuite parce que je t'ai suggéré de mettre ça dans un OnSpawn alors qu'un plaçable n'en a pas et enfin parce que l'effet Ethérée ne semble pas vouloir s'appliquer sur un plaçable. Je creuse la question pendant que tu résouds la première partie _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
Cassin Papa-poule(t) & poissard intemporel Messages: 7471 Localisation: 6 bis rue de la Couveuse, Poulailler 39b |
Tu es sûr que les placeables "source" doivent être en "utilisable" ? Parce que dans le XPModule v2, les effets de beam qui sont dans la salle principale (que je vais virer d'ailleurs parce que c'est chiant ) fonctionnent sur ce modèle (le script de Longbow sur leur OHB), et j'ai juste décoché "statique", mais ils ne sont pas useables...
Bon, en tous cas je verrais ça demain parce que là j'ai un mal de crâne terrible, donc le scripting n'est pas un remède recommandé _________________ Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ? http://cassin1306.spaces.live.com |
Revenir en haut | |
aldech Gagnant du Concours Gothic 3 Messages: 61 Localisation: Le Havre |
Regarde les commentaires que j'ai mis en dessous de mon script.
|
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
aldech a écrit : Regarde les commentaires que j'ai mis en dessous de mon script. Je confirme : contrairement à ce qui est inscrit dans le Lexicon, il suffit qu'un plaçable soit non statique pour servir de source (ou d'appui) à un effet, il n'a pas besoin d'être utilisable _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 1 sur 1 ¤
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