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 22:59:12
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 |
Yoyo Seigneur Messages: 223 |
Bonjour tout le monde
Alors comme le titre du topic le montre j'aimerai faire un pattern mais sans PNJ, je m'explique... J'aimerais que lorsque le joueur entre dans le module, puis quand il tapera quelque chose avec le clavier il se passe quelque chose (dans mon cas un sort) mais sans qu'il y ait de PNJ pour "entendre" ce qu'il dit. Je pourrais mettre un PNJ invisible, mais beuark ... Donc si quelqu'un saurait faire cela bah ça m'aiderait beaucoup Merci d'avance... |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
C'est impossible (à ma conaissance) sauf utilisation de logiciel externe.
C'est pas pour rien que tout le monde mets des pnj... _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
Aussi tu peux ruser .... mais il faut le CEP !
Sans forcément mettre de pnj " invisible " , mais en mettant un pnj " caché " ! Donc là , normalement aprés avoir lu ma phrase ci dessus , tu te demande " mais qu'est ce qu'il raconte comme connerie celui là ? si un pnj est caché , il est invisible ! " Et bien ... non ! La subtilité du truc consisterais a placer un pnj prés de là ou ton perso doit prononcer sa phrase , mais sur le pnj , tu régle sa capacité de " déplacement " en " immobile " , et tu donne a ton pnj l'apparence d'une " chaise " , d'une " table " ou de ce que tu veux , et naturelement , tu lui donnera le nom d'un objet , tu ne lui donne pas de voix et pas de dial. Ainsi , ton pnj ne sera pas invisible , sera caché , et pourtant bien là . Concrétement , pour l'éditeur , ce sera un pnj , mais pour le joueur lambda qui passera , ce sera un objet banal qui n'aura rien a voir avec un pnj ! C'est une solution ... _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Amphiprion Ecuyer Messages: 56 |
Je pense que ca demande vient du fait de vouloir intercepter des commandes et ce quelque soit l'endroit ou est le joueur au moment ou il tape le texte, comme pour les commandes.
Donc ce serait l'equivalent d'un PNJ invisible qui suis constament le joueur... |
Revenir en haut | |
Semcatala Grand Sage du Conseil Messages: 951 |
je proposais ça juste pour " l'entrée " dans le mod , si jamais le pj se retrouve dans une sorte de " hall" .
Peut être avec nwn2 .... _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Bon si jamais il n'y a pas d'autre solution, pourquoi pas...
mais ca va etre hasardeux de mettre des PNJ cachés dans toutes les zones parce que enfait je veux quand le joueur dit une phrase (spécifique) bah il se passe un effet proche de sa position. Mais je veux que l'on puisse dire cette phrase dans TOUT le module. Si vraiment il n'y a pas d'autre solution... bah des PNJs caché partout... EN fait, on peu donner l'aparence a un PNJ l'apparence de l'objet invisible?? et si il y a beaucoup de PNJs cachés cela ne va t-il pas "fatiguer" l'ordinateur?? Merci pour vos réponses.... |
Revenir en haut | |
Amphiprion Ecuyer Messages: 56 |
Essai sur le heartbeat du module ou sur le HeartBeat du joueur (script qui doit s'appeler 'default')
il est déclenché toutes les 6s et aussi dans certains autres cas. Dans ce script à chaque fois qu'il est appele, tu bouges le PNJ pour le placer sur le joueur. Essaye on sait jamais, mais aucune idée du temps de réponse et de la pertinence de la solution (eloignement possible du joueur en 6s) Si 6s c'est trop tu peux crer ton propre heartbeat, en faisant un DelayCommand(3.0, ExecuteScript("MovePNJ")); et voir si ça marche mieux. Pour faire ca, sur OnPlayerEnter du module, tu execute le script "MovePNJ", et à la fin de ce script, tu met la commande que je t'ai données, ce qui rappelera dans 3s ce même script et ce indefiniment Encore une fois je ne sais pas ce que va donner le resultat au niveau qualité. |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Non mais à l'entré du module tu lui colle un pnj avec l'effet cutscene_invisibility en ForceFollow.
La il le suivra partout et sa devrait marcher. (Dans le OnClientLeave tu detruit le PNJ) _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Et si le joueur il entre dans une autre zone (par un porte ou un déclencheur ou une téléportation) le PNJ il va suivre le joueur quand même?
|
Revenir en haut | |
Amphiprion Ecuyer Messages: 56 |
Le probleme du ForceFollow, c'est les risques tes courants de probleme de PathFinding, il y a des chances que le NPC reste bloque et ne suive plus.
Donc peut etre un cumul des deux methodes sur heartbeat du module... pourquoi pas |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Sinon tu applique un aoe sur le joueur, dans le OnExit on test si c'est le pattern affilié au joueur (par LocalObject) et tu le téléporte auprès du PJ.
_________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Euh c'est quoi un AOE??
Citation : Sinon tu applique un aoe sur le joueur, dans le OnExit on test si c'est le pattern affilié au joueur (par LocalObject) et tu le téléporte auprès du PJ. Euh... j'ai rien compris |
Revenir en haut | |
Amphiprion Ecuyer Messages: 56 |
AOE = Area Of Effect, en gros un volume autour du joueur. Il y a des méthodes en script pour parcourir tous les objets dans un volume (GetFirstObjectInShape et GetNextObjectInShape).
Mais le Follow seul ne marchera pas assez bien, en interieur il y a beaucoup de problème de path finding De plus tu n'as pas besoin de parcourir les objets car en le mettant comme variable local (SetLocalObject) tu peux directement le déplacer sur onEnter de la nouvelle zone sans avoir à le chercher |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Ou alors une autre idée...
lorsque le joueur sort de la zone maximum ou le PNJ peut entendre ce que dit le joueur (j'imagine que ce n'est pas a l'infini...) hop on téléporte le pnj a un endroit plus proche du joueur de maniere a ce que le pnj puisse a nouveau entnedre les paroles du joueur Mais pour le scriptage , je ne sait pas omment faire |
Revenir en haut | |
Amphiprion Ecuyer Messages: 56 |
il n'y a pas d'evenement qui se denclenche quand tu t'eloigne de quelque chose.
Pour moi la seule solution, c'est de teleporter toutes les x secondes, le NPC sur le joueur, comme explique plus haut, auquel tu peux rajouter si besoin le ForceFollow pour limiter les risque d'eloignement trop important dans l'intervale des x secondes. |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Aussi une question...
Si je met un PNJ invisble qui se téléporte toutes les x secondes Est-ce que il va attaquer les ennemis du joueur?? et inversement??(les ennemis des ennemis...) Parce que lors d'un test (le PNJ n'était pas encore invisible) lorsque je mentrainait sur des ennemis, le PNJ les attaquez comme pour me proteger... pourtant, j'ai creé une nouvelle faction ou dedans "hostiles" est ami avec "nouvelle faction du pnj pour test" et inversement et la faction "nouvelle faction du pnj pour test" est ami avec le joueur et inversement. (bien sur j'ai mis le pnj dans la faction "nouvelle faction du pnj pour test" ) Voila |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
faut pas les mettre "ami" mais "neutre" me semble, non?
_________________ 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 | |
Yoyo Seigneur Messages: 223 |
Si je met les faction "neutre" envers elles est-ce que si un monstre lance un sort de zone ce sort va toucher le pnj? (qui est censé te suivre partou partou) et dans ce cas le PNJ peux riposter
Autre chose... j'ai mis ca dans le OnClienEnter du module : (sans l'effet d'invisibilité pour tester si le pnj te suit vraiment) NWScript :
void main() { object oSort = GetObjectByTag("Sort"); object oPC = GetFirstPC(); location lPC = GetLocation(oPC); AssignCommand(oSort, ActionJumpToLocation(lPC)); } et ca dans le onHeartBeath du module : NWScript :
void main() { object oSort = GetObjectByTag("Sort"); object oPC = GetFirstPC(); location lPC = GetLocation(oPC); AssignCommand(oSort, ActionJumpToLocation(lPC)); DelayCommand(0.5, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(1.0, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(1.5, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(2.0, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(2.5, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(3.0, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(3.5, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(4.0, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(4.5, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(5.0, AssignCommand(oSort, ActionJumpToLocation(lPC))); DelayCommand(5.5, AssignCommand(oSort, ActionJumpToLocation(lPC))); } (c'est peu etre un peu beaucoup) dans le jeu lorsque je me déplace par exemple d'un point A a un point B pui a point C (assez distant des uns des autres et en courant) 2 minutes plus tard (je ne sais pas si c'est vraiment 2minutes...) le PNJ se téléporte au point A 2 minutes plus tard le PNJ se téléporte au point B et 2minutes plus tard encore (ce qui nous fait en tout 6minutes) il se rend au point C, entre temps j'ai vite fait de bouger quand même. Donc comment fair pour que le PNJ se téléporte vraiment toutes les 0.5 secondes a coté du joueur?? |
Revenir en haut | |
Amphiprion Ecuyer Messages: 56 |
Le problème des DelayCommand c'est qu'il les empiles et les exécutes n fonction des queues, ce aui veut dire que des fois il fait toutes tes commandes d'un coup. (surtout avec un AssignCommand)
Je l'ai observé quand je voulais faire un système de DoT (Damage over time), qui faisait x point de degats toutes les x secondes, résultat il se passait rien, jusqu'au moment où il declenchait tout d'un coup, et tuait la creature dessuite (en voyant tout les chiffre de degat dérouler sur sa tête, on comprend qu'il a tout enchainé, et il n'a pas pris en compte exactement le delayCommand) Si j'ai le temps je vais faire un test ce soir pour voir si je trouve une solution satisfaisante. |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
A je crois avoir résolu mon probleme pour le PNJ qui se téléporte (ici toutes les secondes) pres du joueur :
dans le OnHeartBeath du module NWScript :
void main() { ExecuteScript("onhbmodule2", OBJECT_SELF); DelayCommand(1.0, ExecuteScript("onhbmodule2", OBJECT_SELF)); DelayCommand(2.0, ExecuteScript("onhbmodule2", OBJECT_SELF)); DelayCommand(3.0, ExecuteScript("onhbmodule2", OBJECT_SELF)); DelayCommand(4.0, ExecuteScript("onhbmodule2", OBJECT_SELF)); DelayCommand(5.0, ExecuteScript("onhbmodule2", OBJECT_SELF)); DelayCommand(6.0, ExecuteScript("onhbmodule2", OBJECT_SELF)); } et voila le fichier "onhbmodule2" (a mettre nul part ) NWScript : void main() { object oSort = GetObjectByTag("Sort"); object oPC = GetFirstPC(); // les secondes aupres du joueur location lPC = GetLocation(oPC); AssignCommand(oSort, ActionJumpToLocation(lPC)); } |
Revenir en haut | |
Amphiprion Ecuyer Messages: 56 |
oui ça doit marcher effectivement car il n'empile pas les appelle de script dans la queue
|
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Par contre un autre petit probleme...
Lorsque je tabasse un monstre, il se peut que le monstre attaque le PNJ (bien sur il n'y arrive pas puisqu'il est invisible et immortelle) Ca peu tres vite devenir trop facile : le monstre essaie d'attaquer le PNJ alors que le joueur attaque le monstre tranquilement.... Si quelqu'un pourrait me sortir de ce probleme... |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Euh finallement lorsque le PNJ toute les seconde se téléporte pres du joueur cela peu gener le joueur lorsqu'il avance (il sarrete de courir comme si il avait rencontré un obstacle (le PNJ))
Donc vous n'avez pas une autre solution pour parler n'importe ou et activer tel ou tel script? |
Revenir en haut | |
diraen Novice Messages: 15 |
Je pense que le plus simple est d'utiliser le script de The Voice :
The voice est un pnj invisible qui te suis partout et affiche les paroles des PJ en language elfes, naines etc. Tu auras donc un pnj, invisible, te suivant partout avec un pattern intégré Tu n'auras plus qu'a retirer les système de langue exotiques. Cette fonction est intégrée dans le DMFI Wand, il va te falloir décortiquer un peu. Si j'ai le temps en rentrant du boulot je jetterai un coup d'oeil Tout est là Sinon tu trouvera ici un pack de créature "suiveuses" déjà toutes faites. Tu n'auras alors qu'a leur coller un pattern, quoique apparement il y'en ai déjà un d'office. J'espère que ca t'aidera. Et pour finir si je peux me permettre un conseil : Evite au maximum de mettre un script sur le onheartbeat de ton mod ou de plusieurs PNJ, cette fonction s'examine toutes les 6 secondes, je te laissse imaginer a quel point cela peut allourdir ton mod et faire lagger le jeu (On a dû refondre tout notre module a cause de ça ) |
Revenir en haut | |
Yoyo Seigneur Messages: 223 |
Merci c'est cool
Mais on a déja vu que à cause du pathfinding les pnj suiveurs peuvent se bloquer dans le décors... Je viens d'expérimenter, dans des petits passages le PNJ se met dedans et il ne veut plus bouger et dans ce cas la, le joueur est piégé!! Mais je vais quand même y jeter un oeil, Sinon si vous avez une autre solution... |
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