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:56:42
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 |
madjawa Voyageur Messages: 3 |
Bonjour!
Je voudrais savoir si cela est possible : J'ai un PNJ dans mon module avec un dialogue. Quand on lui parle, il nous donne le choix de nous téléporter vers plusieurs destinations genre : Ou voulez vous aller? --Zone 1 --Zone 2 --Zone 3 Je doit faire un script par destination ou y a t-il un moyen de faire un seul script pour cela?? Merci d'avance madjawa |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Malheureusement faudra un script par destination. Car tu peux pas savoir quelle réponse à été choisie (le numero de la réponse). Donc si tu mets le même script, il saura pas de quelle ligne il vient, donc aucun moyen de retrouver la destination qui convient.
Un truc possible en revanche, et très utile, mais qui demande pas mal de reflexion sur comment le gérer c'est de faire un script générique justement pour savoir quelle ligne à été choisie (un peu comme dans le dmfi ou le cnr ou d'autres systèmes). Comme ça tu réduis grosso modo tous tes dialogues basés sur des listes à 2 scripts : dans le premier (la racine du dialogue) tu crées une liste de variable ordonnée (la ça serait les zones de destination) et dans le dernier (tu rajoutes une phrase après que le joueur ait choisi la destination qu'il veut, genre "ok je vous envoie là-bas") tu récupère le numero de la réponse et tu as ta zone selon la liste fixée au début. Exemple : tes scripts génériques de choix (sur les actions conséquentes des choix d'un PJ lors d'un 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. Sur l'action conséquente du "Bonjour où voulez vous aller ?" : NWScript :
void main() { SetLocalObject(OBJECT_SELF,"DESTINATION_1",GetObjectByTag("WP_PREMIER_CHOIX")); SetLocalObject(OBJECT_SELF,"DESTINATION_2",GetObjectByTag("WP_DEUXIEME_CHOIX")); SetLocalObject(OBJECT_SELF,"DESTINATION_3",GetObjectByTag("WP_TROISIEME_CHOIX")); //et ainsi de suite } Sur l'action conséquente de "Ok je vous envoie là bas : NWScript :
void main() { object oPC = GetPCSpeaker(); int nReponse = GetLocalInt(OBJECT_SELF,"REPONSE"); object oDestination = GetLocalObject(OBJECT_SELF,"DESTINATION_"+IntToString(nReponse)); AssignCommand(oPC,JumpToObject(oDestination)); } Bon là ça te fait faire plein de scripts mais l'avantage c'est que tous les scripts de choix tu peux t'en resservir dans d'autres dialogues. Exemple : PNJ : Salut, qu'est-ce que tu veux ? choix PJ : 1- Une dague 2- Une epee longue 3- Une bouteille de bière ... 6-un grec frite PNJ : Tenez. Sur les réponses du PJ tu mets les même scripts de choix en action conséquente. Sur le "Salut ..." : NWScript :
void main() { SetLocalString(OBJECT_SELF,"CHOIX_1","resrefdeladague"); SetLocalString(OBJECT_SELF,"CHOIX_2","resrefdelepee"); SetLocalString(OBJECT_SELF,"CHOIX_3","resrefdelabiere"); //... SetLocalString(OBJECT_SELF,"CHOIX_6","resrefdugrecfrite"); } et action conséquente du "tenez" : NWScript :
void main() { object oPC = GetPCSpeaker(); int nReponse = GetLocalInt(OBJECT_SELF,"REPONSE"); CreateItemOnObject(oPC,GetLocalString(OBJECT_SELF,"CHOIX_"+IntToString(nReponse))); } Enfin tu vois quoi ^^ Globalement c'pas mal d'avoir un système comme ça en général, paske souvent les scripts de dialogues tu refais 5 ou six fois la même chose, et ça te fait une liste de scripts immense, donc là même si ça te fais pas beaucoup moins de lignes à écrire, ça te réduit de beaucoup les scripts à faire. |
Revenir en haut | |
madjawa Voyageur Messages: 3 |
Merci pour ta solution, j'y avais pas pensé, mais je pense que ça réduira le nombre de script (je ferais plusieurs dialgues de ce genre)
|
Revenir en haut | |
lylver Héros Messages: 274 |
Il y a quelque chose d'approchant de présenté ici
http://www.system-tek.com/nwinter/phpbb2/viewtopic.php?p=125411#p125411 |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Oui, ton système est top pour les conditions, mais là c'est sur les conséquences qu'il veut génériser (?) ses scripts, et là ça ne fonctionne plus de la même manière.
Mais les 2 systèmes ensemble ça donne de la balle je pense ^^ |
Revenir en haut | |
L'Erudit Seigneur Messages: 167 |
Je confirme, ceci est une bonne méthode ! Ca évite d'avoir des tonnes de scripts de quelques lignes pour chaque dialogue.
|
Revenir en haut | |
lylver Héros Messages: 274 |
Manquait ça
à décliner de 1 à 5 NWScript :
//:: Updated Lylver /* ship_custom1.nss * by dluan on jul 2003 */ void main() { SetLocalObject(GetPCSpeaker(),"SHIP_CUSTOM",GetLocalObject(GetPCSpeaker(), "SHIP_CUSTOM1")); ExecuteScript("ship_custom",OBJECT_SELF); } NWScript : //:: Updated Lylver /* ship_custom.nss * by dluan on jul 2003 */ void main() { object oTarget = GetPCSpeaker(); object oObject = GetLocalObject(oTarget, "SHIP_CUSTOM"); object oArea = GetArea(oObject); SetLocalInt(oArea, "SHIP_PIRATE", 1); /* la on envoyait tous les pirates */ object oPlayer = GetFirstFactionMember(oTarget); while ( GetIsObjectValid(oPlayer) && (GetArea(oTarget) == GetArea(oPlayer)) ) { SetLocalObject(oPlayer, "PIRATE", oArea); AssignCommand(oPlayer, JumpToObject(oObject)); oPlayer = GetNextFactionMember(oTarget); } } |
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