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 21:01:01
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 |
Le Blaireau Chevalier Messages: 71 |
Je sais que ce sujet a été répété des dizaines de fois, mais y en a comme moi qui ont besoin d'avoir à ce faire expliquer en profondeur car ça fonctionne pas !!
Dans ma zone, il y a un PNJ que je veux assis en permanence sur un objet (ici l'objet est un bloc de glace) Pour y faire asseoir un PJ, pas de prob ça, j'y arrive. Donc je veux qu'à l'arrivé du PJ dans la zone, le PNJ soit déjà assis et y reste. J'ai vu les scripts proposés dans d'autre post, mais ce que je comprends pas dans tout ça c'est (o chaise)....Dans le script. Dois-je remplacer le (o chaise) par le tag du bloc de glace? Que dois-je faire??...Y a t'il autre chose a changé sur le PNJ et le bloc de glace?? Merci |
Revenir en haut | |
grenwald Novice Messages: 11 |
Si tu veux qu'on explique un script, n'hésite pas à poster le code de celui que tu utilise. En plus, sur les scripts de chaises, il doit exister plusieur versions avec à chaque fois des petite nuances.
Mais généralement, tu dois avoir quelque chose du genre Code : object oChaise = GetNearestObjectByTag ("TAG_DE_LA_CHAISE");
et c'est ce fameux TAG_DE_LA_CHAISE qu'il faut que tu modifie en fonction de tes beoins. après l'objet oChaise correspondra (pour la durée du script) à ce qu'il aura trouvé avec la fonction ci-dessus _________________ Un troll???? où ça?........ oups, pardon, je ne l'avais pas vu |
Revenir en haut | |
Le Blaireau Chevalier Messages: 71 |
Bon...Tout dabord merci:smile: car maintenant mon PNJ s'assoit sur le bloc de glace en question avec l'aide du script ci dessous...Mais quand je parle au Pnj, il se lève mais ne se rassoit pas... Comment faire pour quil se ressoit ???
Merci void main() { if (!GetIsInCombat() && !IsInConversation(OBJECT_SELF)) if (GetCurrentAction() != ACTION_SIT) { ClearAllActions(); int i = 1; // trouver la premiere chaise de libre object oChaise = GetNearestObjectByTag("Chaise", OBJECT_SELF,i); int bFoundChair = FALSE; while (bFoundChair == FALSE && GetIsObjectValid(oChaise) == TRUE) { // Cette chaise est libre if (GetIsObjectValid(GetSittingCreature(oChaise)) == FALSE) { bFoundChair = TRUE; ActionSit(oChaise); // le NPJ s'assoit } else // pas de chaise libre, alors on en cherche une autre { i++; oChaise = GetNearestObjectByTag("Chaise", OBJECT_SELF,i); } } if (bFoundChair == FALSE) // on a trouver aucune chaise, objet ou s'assoir { ClearAllActions(); ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD); } } } |
Revenir en haut | |
grenwald Novice Messages: 11 |
pour que ton PNJ fasse des acvtions à la fin d'un dialogue (dans ton cas s'assoir sur une chaise) il faut que tu modifie deux scripts dans les propriétés du dialogue, onglet "fichier actuel"
- 2Normales => s'éxécute quand un dialogue se fini normalement (avec la phrase "FIN DIALOGIE") - abandon => quand le dialogue est iterronpu par un événement externe PS : quand tu post un script, n'hésite pas a mettre les balises nwscript, ca sera tout de suite plus lisible _________________ Un troll???? où ça?........ oups, pardon, je ne l'avais pas vu |
Revenir en haut | |
Le Blaireau Chevalier Messages: 71 |
Si j'ai bien compris, dans le dialogue, dans l'onglet fichier actuel, a abandon(si j'arrete la discution en m'éloignant par exemple)je dois mettre le meme script que j'ai mis au PNJ pour le faire assoir au départ. Si c'est le cas sa ne fonctionne pas....Sinon quel script je dois placé a cette endroit svp:???:
Merci |
Revenir en haut | |
Jaheira 007 Seigneur Messages: 223 |
Essaye de placer ton script dans le OnHeartBeat de ton PNJ.
Dans mon mod, j'ai utilisé ce script: NWScript :
void main() { object oChair = GetNearestObjectByTag( "Tag_de_ta_chaise" ); if ( ( !IsInConversation( OBJECT_SELF ) ) && ( GetIsObjectValid( oChair ) ) ) ActionSit( oChair ); } J'ai placé le script ci-dessus dans le OnSpawn ET dans le OnHeartBeat de mes PNJ. De ce fait, ils sont déjà assis sur leur chaise quant le PJ arrive, et ils se rassoient après la discussion. Donc essaye de faire de même avec ton script! _________________ La nature reprendra ses droits ici, aprés notre passage. |
Revenir en haut | |
Le Blaireau Chevalier Messages: 71 |
Merci...ca fonctionne
|
Revenir en haut | |
Valmoer Novice Messages: 19 |
C'est toujours embêtant de recourir au onHeartBeat... ca bouffe trop de ressources à force, non ?
On avait identifié toutes les situations dans lesquelles le PNJ avait besoin de se rasseoir ... pourquoi utiliser le heartbeat ? |
Revenir en haut | |
omega Grand Chevalier Messages: 116 |
Citation : On avait identifié toutes les situations dans lesquelles le PNJ avait besoin de se rasseoir ... pourquoi utiliser le heartbeat ? Parceque si tu as identifié 3 situations, ca fait 3 scritps, alrs que le OnHeartBeat, il n'en nececite que 1 ! donc, moins de ressources prises ! |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
omega a écrit : 3 situations, ca fait 3 scripts Attend, ces trois evennements étant liés au même PNJ,
on aura à chaque fois objet oPNJ = OBJECT_SELF; donc ce sera le même script à chaque fois, non??? ça serait le PJ, d'accord, mais pour un PNJ, je vois pas... _________________ http://perso.wanadoo.fr/kikitor | Deviant Art | www.VistaEntraide.com | CCLLSELFV! | D-lire_K | Viendez rêver au Pays des fées... | Ne taquinez pas l'admin! |
Revenir en haut | |
Valmoer Novice Messages: 19 |
De plus, il ne faut pas confondre espace disque et ressources mémoire.
*Mode "La Minute du professeur Valmoer" ON* Dans le cas même où cela nécessiterait 3 scripts différents, les resources mémoires seraient plus importantes avec le onHeartBeat. Je m'explique : les 3 scripts serait constitués de suites de caractères ( a-z, 1-9, { } = * et autres) qui occuperaient de l'espace disque sur votre disque dur, c'est-à-dire qu'il auraient besoint d'être stockés. Les 3 scripts occuperaient donc plus d'espace disque qu'un seul correspondant au onHeartBeat. Cependant, la finalité d'un script est d'être éxécuté. Ceci est fait durant les parties à divers moments : lorsqu'on entre quelque part (onEnter), ou lorsqu'on en sort (onExit), lorsqu'on active un objet (onItemActivated)... et également à des intervalles très courts (onHeartBeat; 6 secondes, je crois). Tout script placé dans le onHeartBeat sera donc exécuté à de multiples reprises. Toute éxécution mobilisant des ressources mémoires (de la RAM) , un script d'onHeartBeat demandera sur un temps défini, plus de ressources que les trois autres réunis, qui eux, ne se déclenchent qu'en des moments prédéfinis. Donc, les 3 scripts auronts besoin de plus d'espace disque (disque dur) mais de moins de ressources mémoire (RAM). *mode "La Minute du professeur Valmoer" OFF* Voila pourquoi je rechigne à utiliser les onHeartBeat quand je peux, même de manière plus compliquée, recourir à d'autres scripts. |
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