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 27/11/2024 03:58:52
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 |
Hell Ork Acolyte Messages: 20 Localisation: Lost In Hell |
Kikou les gens d'ici ( serait je un neeb ? a vi possible .. )
J'essaye de faire quelque chose de l'editeur ( c pas un module, meme si ca lui en donne le nom enfin bon .. ). Donc je fait des tests dans plusieurs zones pour voir les possibilités. Et je cherche des scripts qui marchent .. J'ai vu dans la section OnItemAcquire qu'y dit que ca execute un script du nom du tag de l'objet si je sait plus quoi est sur TRUE .. mais il dit pas ou le mettre .. Fin en gros, je cherche un truc pour que des que le joueur prend un objet, son journal soit mis a jour. J'ai vu AddJournalQuestEntry mais j'ai pas bien compris je crois, il marche pas si je fait la demande de recuperation du tag, sa comparaison puis l'ajout de la quête, j'ai une erreur de compilation. Serait ce du au fait que je l'ai placé en plein milieu du script original, juste aprés le code plot wizard ? J'ai aussi vu ca : PWSetMinLocalIntAndJournalForItemAcquired.. c kawaaaa ? fin a kwa ca sert plutôt .. Enfin, si quelqu'un dans le coin a trouvé un p'tit script qui marche, je veut bien .. ( je me debrouille en anglais mais c'est pas ca du tout .. j'ai renoncé a nwn vault ) Mici de me dire si y'en a des tout fait ou si y'a des explications comprehensible par un barbare demi-orque _________________ Lord Nova, Black Angel Lost In Hell |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
J'ai pas tout compris ce que tu veux mais si je résume : tu veux que lorsque le joueur prend un objet particulier, le journal est mis à jour, c'est ça ?
Si oui, le principe est simple, dans le OnAquire du module (tu peux créer ton propre script, pas la peine d'utiliser celui de la campagne NWN), tu dois récupérer le tag de l'objet aquis : 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. Ensuite tu testes ton tag d'objet pour savoir si c'est celui qui t'interesse : NWScript :
if (tTag == "Tag_de_l_objet") Si le test est ok, il faut mettre à jour le journal : NWScript :
AddJournalQuestEntry(...) Je ne connais plus les paramètres comme ça mais il y a à mettre le tag de la quête et le numéro de l'entrée. (il faut bien évidemment créer la quête dans le journel de quête avant). Voilà si tu veux plus d'explications sur un exemple concrèt, dit exactement ce que tu veux et on te fera un script. _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Hell Ork Acolyte Messages: 20 Localisation: Lost In Hell |
C exactement ca que je veut... Mais ce qui est ecrit dans l'ancien script, j'en fait kwa ??
Je l'enlève direct ou je le remet après ? .. Je vais essayer ce soir de le faire en écrasant l'ancien, si j'y arrive pas ( je crois que j'ai pas compris pour addquest.. quand j'avait essayé y me mettait je sait plus trop quelle erreur de compilation et j'ai vu qu'il mettaient un void avant dans l'exemple, ca sert a quoi le void en fait ? ) Mici bien kan mm _________________ Lord Nova, Black Angel Lost In Hell |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Le script que tu mets dans le OnAquireItem du module est là pour faire des traitements particuliers quand un joueur prend un objet particulier, donc si tu ne fais aucun traitement particulier, il ne faut rien mettre dans cet évenement. Ca ne sert donc à rien de récupérer celui de la campagne officielle car il traite les objets aquis dans le jeu (objet que tu ne retrouveras pas dans ton module), tu peux donc mettre ton script à la place.
Pour le void ça veut dire que la fonction renvoie "rien", elle fait une action mais ne renvoie pas de variable quelconque... C'est un peu tard pour faire un cours de script... Comme exemple, je te mets le script que j'ai mis dans l'évenement On de mon module, NWScript :
void main() { object oItem = GetModuleItemAcquired(); object oPJ = GetModuleItemAcquiredBy(); string TagItem = GetTag(oItem); // si l'acquereur est un PJ if (GetIsPC(oPJ)) { // Si c'est le parchemin code if (TagItem == "tParcheminCode") { // Si le PJ a le carnet de code if (HasItem(oPJ, "tCarnetdecode")) { // detruit le parchemin code DestroyObject(oItem); // test d'intelligence reussi if (AutoDC(DC_MEDIUM, SKILL_LORE, oPJ)) { CreateItemOnObject("parchemin002", oPJ, 1); // mot de passe ok SetLocalString(GetModule(),"vMotPasseBron", "harpe doree"); // XP GiveXPToCreature(oPJ, 200); // Mise a jour journal AddJournalQuestEntry("tQueteBron", 42, oPJ); } // test d'intelligence rate else { CreateItemOnObject("parchemin003", oPJ, 1); } } } // Si c'est le carnet de code if (TagItem == "tCarnetdecode") { // Si le PJ a le carnet de code if (HasItem(oPJ, "tParcheminCode")) { // detruit le parchemin code DestroyObject(GetObjectByTag("tParcheminCode")); // test d'intelligence reussi if (AutoDC(DC_MEDIUM, SKILL_LORE, oPJ)) { CreateItemOnObject("parchemin002", oPJ, 1); // mot de passe ok SetLocalString(GetModule(),"vMotPasseBron", "harpe doree"); // XP GiveXPToCreature(oPJ, 200); // Mise a jour journal AddJournalQuestEntry("tQueteBron", 42, oPJ); } // test d'intelligence rate else { CreateItemOnObject("parchemin003", oPJ, 1); } } } } } Voilà, c'est moi qui l'ai écrit de toute pièce.... Par contre j'ai constaté un truc, si on utilise l'assistant d'intrigue, il met des trucs en plus dedans.. C'est ton cas ? Si c'est toujours pas clair, dit-le je regarderai de plus près ton problème et mets également le script qui est dans le OnAquireItem (s'il est pas trop long, comme ça je t'indiquerai où placer la partie de script qui t'interesse. _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Hell Ork Acolyte Messages: 20 Localisation: Lost In Hell |
pour le void ce que j'avait pas compris c'etait comment on l'utilise en fait parce que dans les explications de l'editeur pour la moitié des exemples y met void devant alors que en realité tu le met pas, et comme tout ce que je faisait ne marchait pas, je me disait que c'était ptet ca .. ( si j'ai compris : si tu met void avec un intitulé de fonction par exemple void Teleport(), la tu met la definition de ta fonction entre les parenthèses avec toutes les variables & tt ca aprés dans void main(), tu met Teleport avec entre les parenthèses tes variables dans l'ordre que t'a mis avant .. si tu comprend ske j'veut dire, dit moi si c bien ca, sinon ba c tt..)
Pour l'assistant intrigue je l'utilise pour avoir les objets, les persos et un squelette pour les dialogues, sinon tu me dit de rien mettre dans OnAquireItem, mais c l'editeur qui l'a mis tout seul, avec l'assistant intrigue je pense ( PWSetMinLocalIntAndJournalForItemAcquired je sait pa d'ou ca vient, c pas de moi et c'était dans une section Plot Wizard je sé pu koi) et c'etait très court donc ptet pas officiel En attendant, mon script ne marche pas encore, je sait pas où est le problème, y fo que je revoie les tag et aussi a chaque fois pour trouver le pj je met GetPCSpeaker alors y faut que je remplace Wala tt .. je vais voir demain si ca marche, la ce soir j'ai reglé les convesations pour que les quetes defilent bien ... c long .. donc la je vais essayer de voir les objets & tt ce qui est placable... ( pour le script j'ai viré l'ancien) J'ai aussi essayé de faire une echelle qui parle avec Dialogue, j'ai crée le dialogue ( c juste pour faire une echelle qui donne vers une autre zone) mais j'ai voulu mettre dans le OnUsed au depart et ca voulait pas. Normalement pour pouvoir lui parler ou l'utilise y faut que sa faction soit non-hostile avec le pj je pense, nan ? NWScript :
//fichier 1 void main() { Teleport(oTag); } // fichier 2 void Teleport( object oToJumpTo = GetObjectByTag("oTag"); object oPJ = GetFirstPC(); AssignCommand( oPJ, JumpToObject(oToJumpTo)); ); Le voila ... dit moi cske t'en pense ..( je rempace mon oTag par le tag de la ou je me teleporte ( genre oPortail avec je ne sait que nombre), je rajoute un include du fichier 2 dans le 1 et ca devrait marcher ) PS : Si t'a lu tout ca, t'est vachement courageux... Bravo .. _________________ Lord Nova, Black Angel Lost In Hell |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
Comme tu utilise la fonction Teleport dans ton main,
il faut la définir avant. donc met void Teleport avant ton void main. Ensuite, c'est pas entre parenthese, mais entre 2 accolades : {} Et attention, un tag est de type string, ce n'est pas un object. Et enfin, le joueur oPC est définit selon l'endroit où tu met ton script.
GetFirstPC, lui, est assez délicat: c'est le premier joueur trouvé. Donc en effet, dans le cadre d'un module solo, il est tentant de l'utiliser à chaque fois, il marchera toujours! Cependant, question ressource c'est pas top, et si c'est du multi, c'est encore pire, il renvoit le premier PJ qu'il trouve, au hasard... En réalité, GetFirstPC est le plus souvent utilisé dans le cadre d'une boucle while ou for, associé à GetLastPC, afin d'effectuer une action sur tous les joueurs du module. (sauvegarder leur positions par exemple) ----------------- Tu obtiens donc : NWScript :
void Teleport { string sTag = "Tag du truc ou tu veux aller"; object oToJumpTo = GetObjectByTag("sTag"); object oPJ = GetLastUsedBy(); //on est dans le OnUsed AssignCommand( oPJ, JumpToObject(oToJumpTo)); } void main() { Teleport(); } Tu avais mit oPJ en attribut pour appliquer la fonction, mais pas dans sa définition, c pas bon... Voici un exemple avec oPJ et sTag comme attributs : NWScript :
// fichier 2 void Teleport(object oPJ, string sTag) //on met oPJ et sTag en attribut { object oToJumpTo = GetObjectByTag("sTag"); AssignCommand( oPJ, JumpToObject(oToJumpTo)); } void main() { object oPJ = GetLastUsedBy(); //on est dans le OnUsed string sTag = "Tag du truc ou tu veux aller"; Teleport(oPJ, sTag); } Bon, là c'était pour t'expliquer, mais le plus simple aurait quand même été de ne pas passer par cette fonction Teleport qui, au fond, ne sert pas à grand chose : NWScript :
void main() { object oPJ = GetLastUsedBy(); //on est dans le OnUsed string sTag = "Tag du truc ou tu veux aller"; object oToJumpTo = GetObjectByTag("sTag"); AssignCommand( oPJ, JumpToObject(oToJumpTo)); } Voilà, j'espère t'avoir un peu éclairé dans le voie nébuleuse du scripting _________________ 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 | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Voilà, kiki a tout expliqué... Tu devrais avoir compris le principe maintenant (tu n'étais pas loin avec tes "explications" et avec les commentaires de kiki...). Si tu as encore des soucis, n'hésite pas.
Pour ton OnAquireItem, les lignes que tu me décrits sont effectivement ajoutées par l'assistant d'intrigue, il est donc nécessaire de les laisser si tu veux continuer à l'utiliser (perso j'ai fait toutes mes quêtes tout seul c'est bien plus simple). Ta partie personnalisée devra donc être mise après (ou avant d'ailleurs ça n'a pas grande importance, il faut juste pas les mélanger . _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Hell Ork Acolyte Messages: 20 Localisation: Lost In Hell |
Oki, mici les gens
Juste un ti truk : si je met le void Teleport dans un fichier, si je met dans mon fichier de script la ou ca doit aller a la fin, celui avec void main, un include avec pour cible le premier fichier ( celui ou y'a teleport ), ca marchera ? Paske comme je suis un peu feignant sur les bords ( et y'en a beaucoup des bords ), je veut le réutiliser plusieurs fois donc je fait tout avec include sur ce fichier ou j'ai juste le ti bout avec Teleport.. fin si un de vous 2 comprend ce que je veut dire .. Mici kan mm pr m'avoir répondu (& avoir lu paske mes idée sont ... un peu en bazar et mes textes, la plupart des gens s'arrache les cheveux en les lisant.. a moins que .. si t'est chauve .. ) _________________ Lord Nova, Black Angel Lost In Hell |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
Nan, être feignant est une chose, mais de là à faire plus compliqué pour ça...
T'as juste à faire un copier coller puis changer le tag de destination, c'est quand même pas la mort! mdr! Bon, bien sûr, c'est tout à fait possible, mais ça n'a pas grand intéret, tu aura toujours un script par destination, et une ligne d'include à remettre à chaque fois, alors quitte afaire un copier coller de l'include, autant faire un copier coller du script entier, ça ira aussi vite! _________________ 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 | |
Hell Ork Acolyte Messages: 20 Localisation: Lost In Hell |
rohlalalala ... t'a rien compris .. paske le truk c ke si ca marche pour ce script, ca riske de marcher pour d'autres, donc comme celui la est simple, pas besoin de reflechir trop.. donc moins d'effort ...
La feignantise, en dehors de ma classe bien sûr, c de reflechir a comment faire le moins d'effort possible tout en faisant compliqué ( oui, je sui en scientifique ) Une pitite frase ke j'adore : "Pourquoi faire simple quand on peut faire compliqué" Enfin si t'a rien compris, cherche pas, moi non plus Mici kan mm PS : kiky.le.magnifique .. je vais testationner ton module, kom ca je pourrait y mettre une note, ca a l'air de te traumatiser k'y en ait pas .. _________________ Lord Nova, Black Angel Lost In Hell |
Revenir en haut | |
kiky.le.magnifique Homme très gay Messages: 907 Localisation: Camping de la nation martienne... |
Hell Ork a écrit : Enfin si t'a rien compris, cherche pas, moi non plus Oui, j'ai du mal à comprendre là...
M'enfin si tu dit que c pas grave! Hell Ork a écrit : je vais testationner ton module, kom ca je pourrait y mettre une note, ca a l'air de te traumatiser k'y en ait pas .. C'est la vie qui me traumatise,
depuis qu'un enfoiré de docteur m'a taper sur les fesses à la naissance, jusqu'au texte sms'style du genre : "lut all, need scripters pr mod de ouf, thx." dont il faut traduire chaque mot, pour éventuellement trouver un début de commencement de sens, en passant par le concours de dessinateur de la mairie de paris, qui demande une planche à dessin des années 60 à 70€... _________________ 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 | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Hell Ork a écrit : rohlalalala ... t'a rien compris .. paske le truk c ke si ca marche pour ce script, ca riske de marcher pour d'autres, donc comme celui la est simple, pas besoin de reflechir trop.. donc moins d'effort ...
Hell Ork, tu es prié de lire tes messages privés (surtout s'ils viennent d'un modérateur), ne serait-ce que pour savoir que ton style semi-SMS n'est qu'à peine toléré et qu'après avoir vu un sujet relativement bien écrit de toi, il est permi de penser que tu es capable de faire un effort sur la qualité du langage. Merci de faire disparaître la profusion de "k" et de racourcis phonétiques de tes futurs messages. Considère ceci comme un second avertissement (le premier a été fait par message privé).La feignantise, en dehors de ma classe bien sûr, c de reflechir a comment faire le moins d'effort possible tout en faisant compliqué ( oui, je sui en scientifique ) Une pitite frase ke j'adore : "Pourquoi faire simple quand on peut faire compliqué" Enfin si t'a rien compris, cherche pas, moi non plus Mici kan mm PS : kiky.le.magnifique .. je vais testationner ton module, kom ca je pourrait y mettre une note, ca a l'air de te traumatiser k'y en ait pas .. _________________ 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