
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 01/05/2025 02:40:34
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 |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
JE vous explique brevement, j'ai besoin d'un perso qui qd on arrive aille directement vers le joueur et lui propose de choisir son alignement ( gentil ou méchant juste, pas loyal ou kaotike ) et ki en conséquence donne un objet k'on ne puisse pas perdre ( un avatar du mal ou du bien )
Une fois ce choix éffectué, que le joueur soit placé dans le groupe de son alignement ! c'est sans doute trop ambitieux pour qq1 qui est a peine capable de faire un script de don de lvl, c'est pour ca que je vous demande de l'aide ... ensuite, il me faudrai une téléportation selon l'alignement ... les gentils d'un coté et les méchants de l'autre ... mais chaque chose en son temps ^^ Merci d'avance !!! _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
KIMOUNET Héros ![]() Messages: 256 Localisation: Au pays des reves |
Il faut s'avoir etre ambitieux c'est comme cela qu'on avance.
![]() Serieusement l'alignement choisie par le joueur affecte celui du personnage ou c'est seulement celui du camps que le joueur choisira. Car la solution n'est pas la meme ![]() _________________ Le savoir est comme un tresor il se partage |
Revenir en haut | ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
Alors je précise, il faut que cela change l'alignement du perso, et que cela le groupe dans le groupe qui correspond a son alignement, pour faire en fait pour une arène 2 ékipes : une de gentils, une de méchants...
Il faudrai que cela entraine aussi le don d'un item selon l'alignement : avatar maléfique pour les méchants et avatar divin pour les gentils, ca me permettrai de discerner les persos pour des téléportations antérieures ... Il me faudrai un système pour permettre aux persos de refaire leurs levels, sans me faire le script, j'aimerai bien qu'il soit prémaché, je dois faire un truc du genre vérifier son niveau, lui enlever tous ces niveaux, et lui remettre autant de niveaux qu'il en avait ? c'est faisable ? _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
KIMOUNET Héros ![]() Messages: 256 Localisation: Au pays des reves |
Alors je précise, il faut que cela change l'alignement du perso, et que cela le groupe dans le groupe qui correspond a son alignement, pour faire en fait pour une arène 2 ékipes : une de gentils, une de méchants...
Oui mais si le joueur est Chaotique bon ou Loyal mauvais théoriquement il peux choisir d'etre dans le camps qu'il souhaite _________________ Le savoir est comme un tresor il se partage |
Revenir en haut | ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
Peu importe k'ils soient loyal ou chaotiques, ca ca regarde le joueur pour son évolution de classe, mais je veux forcer les joueurs a choisir entre gentils et méchants ! comme ca ca permet de pleinement rentabiliser les chatiments du bien du mal et autres. Ce qui importe c'est que tous les alignements "bon" soient ensembles et que tous les alignements "mauvais" soient ensemble.
_________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
bon allez, je vais t'aider un peu
![]() dans ton dialogue, tu mets donc deux choix, bon ou mauvais. dans l'actions conséquentes de "bon", met ce script : NWScript :
void main() { object oPC = GetPCSpeaker(); AdjustAlignement( oPC, ALIGNEMENT_GOOD, 100 ); CreateItemOnObject( "ResRef_de_l_avatar_divin", oPC, 1 ); AssignCommand( oPC, JumpToObject( GetObjectByTag( "WP_divin" ) ) ); } pour le mauvais : NWScript :
void main() { object oPC = GetPCSpeaker(); AdjustAlignement( oPC, ALIGNEMENT_EVIL, 100 ); CreateItemOnObject( "ResRef_de_l_avatar_malefique", oPC, 1 ); AssignCommand( oPC, JumpToObject( GetObjectByTag( "WP_mauvais" ) ) ); } Voila, j'espere que ca t'aidera _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
KIMOUNET Héros ![]() Messages: 256 Localisation: Au pays des reves |
je suppose que c'est un module multiplayer.
Avant tout tu crées 2 objets un pour chaque camps par exemple Collier du bien Tag=CollierBien et Collier du mal, Tag=CollierMal Par contre je ne sais pas les rendre invendable ni inseparable. ce qui faut absolument pour eviter les changement de camps Tu crées un déclencheur qui correspond à la zone ou le joueur doit venir afin que le dialogue se déclenche. Ensuite tu mettras dans le OnEnterdu déclencheur le script suivant NWScript :
void main() { object oPC = GetEnteringObject(); if( GetIsPC(oPC) && //XXXX correspont au Tag du declencheur GetLocalInt(oPC,"XXXX") == FALSE && IsInConversation(oAribeth) == FALSE) { AssignCommand(oPC,ClearAllActions()); AssignCommand(oAribeth,ActionStartConversation(oPC)); } } Tu crées un perso ici par exemple arthur puis tape ce script dans OnHeartBeat d'arthur NWScript :
void main() { if(IsInConversation(OBJECT_SELF) == FALSE ) { int bFound = FALSE; int nNth = 1; object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, nNth, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN); while( GetIsObjectValid(oPC) && bFound == FALSE ) { if(GetLocalInt(oPC,"XXXX") == FALSE) { ActionDoCommand(SetFacingPoint(GetPosition(oPC))); ActionDoCommand(SpeakOneLinerConversation()); bFound = TRUE; } nNth++; oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, nNth, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN); } } } puis tu tape les dialogues que tu souhaite mais n'oublie pas ton dialogue doit commencer à l'envers Perso : "Vous etes deja dans un camps celui du bien" NWScript :
#include "nw_i0_tool" int StartingConditional() { if(!HasItem(GetPCSpeaker(), "CollierBien")) return FALSE; return TRUE; } Perso : "Vous etes deja dans un camps celui du mal" NWScript :
#include "nw_i0_tool" int StartingConditional() { if(!HasItem(GetPCSpeaker(), "CollierMal")) return FALSE; return TRUE; } par exemple "Je dois vous parlez" ensuite tu ecrit le script suivant dans condition suivant NWScript :
//XXXX = nom de la variable qui correspond au faite si le perso a deja parler au joueur int StartingConditional() { int bCondition = GetLocalInt(GetPCSpeaker(),"XXXX") == FALSE ; //Arthur ne parle pas return bCondition; } Ensuite tu developpes ton dialogue en mettant par exemople "Que me voulez vous ?" puis tu mets 3 répliques d'Arthur. "Tu sera dans le camps des gentils" donc voici le script toujours dabs condition d'exec. NWScript :
int StartingConditional() { // Restriction selon l'alignement du joueur if(GetAlignmentGoodEvil(GetPCSpeaker()) != ALIGNMENT_GOOD) return FALSE; return TRUE; } Puis je mettrais la replique du joueur "Pas de probleme" ensuite viens la réplique du personnage "D'accord voici la marque de ton camps" tu mets ce script dans action consequente 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. tu l'appele par exemple S_Camps2 sur le meme niveau que la premiere replique tu mets "Tu sera dans le camps des méchants" donc voici le script toujours dabs condition d'exec. NWScript :
int StartingConditional() { // Restriction selon l'alignement du joueur if(GetAlignmentGoodEvil(GetPCSpeaker()) != ALIGNMENT_EVIL) return FALSE; return TRUE; } ensuite viens la réplique du personnage "D'accord voici la marque de ton camps" tu mets ce script dans action consequente 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. tu l'appele par exemple S_Camps1 Au même niveau que le dialogue"Tu sera dans le camps xxxx",tu mettras ce dialogue "Tu as droit de choisir ton camps" NWScript :
int StartingConditional() { // Restriction selon l'alignement du joueur if(GetAlignmentGoodEvil(GetPCSpeaker()) != ALIGNMENT_NEUTRAL) return FALSE; return TRUE; } ensuite tu mettra 2 repliques 1er replique Joueur : "Je serais avec les mechants" Perso : "D'accord voici la marque de ton camps" tu mets le script S_Camps1 dans action consequente puis 2eme replique Joueur : "Je serais avec les gentils" Perso : "D'accord voici la marque de ton camps" tu mets le script S_Camps2 dans action consequente La théorique cela devrais marcher ![]() Edit de finipe : les balises [nwscript ] et [/nwscript ] (sans les espaces) sont tes amies, pense à les utiliser, c'est tout de suite plus lisible, et pas besoin de mettre des couleurs, elles sont automatiques ![]() _________________ Le savoir est comme un tresor il se partage |
Revenir en haut | ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
ouaou, heu, je sais pas koi dire a part ... merci, je vais mettre tout ceci en place de suite !! re merci !
_________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Kimounet, lorsque tu met des scripts, utilise la balise NWN script qui est là pour ça, ce sera vachement plus compréhensible
![]() Sinon, je trouve que tu compliques un peu les choses, pourquoi mettre des restrictions d'alignement et tout ça, logiquement, une fois que le joueur sera téléporté, il ne pourra pas revenir. Donc je trouve ma solution un peu plus simple mais bon, Siléphrael prendra ce qui lui convient le mieux. Par contre, il suffit de cocher la case "Ne peut être lâché" dans les propriétés de l'objet, pour qu'il ne puisse pas être laché. ![]() _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
KIMOUNET Héros ![]() Messages: 256 Localisation: Au pays des reves |
![]() ![]() Klemmth _________________ Le savoir est comme un tresor il se partage |
Revenir en haut | ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
disons que je v tenter de faire que a la reconnection du personnage, il soit pas interpelé par le PnJ ... et qu'il soit juste directement téléporté s'il possède un des 2 items.
C'est vrai que g pas tout compris au post de kimounet, mais de toute facon, les scripts sont écrits en chinois non ? ^^ _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
Comme je n'ai u le temps de me servir que de la proposition de klemmth ... j'ai pu remarquer un truc : je peux svg mon script normal ok, mais il refuse d'etre compilé, la raison évoquée est a la ligne 4 " UNDEFINED IDENTIFIER ( adjust alignement )
je ne comprends pas ce qu'il se passe la, le objets oPC = GetPCSpeaker (); marche pas ? me serai je trompé dans le recopiage ? c'est la même chose pour le script bien et le script mal. sachant que le script, je l'ai attaché au derniers mots de PnJ PnJ : je peux te permettre de changer d'alignement Pj : soit, que me proposes tu ? PnJ: le bien, le mal ... l'éternel dilemme Pj le bien --> voila pour toi ( et c la que le script est attaché scbien ) Pj : le mal --> voila pour toi ( et c la qu'est attaqhé le script scmal _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
kiky.le.magnifique Homme très gay ![]() Messages: 907 Localisation: Camping de la nation martienne... |
C'est AdjustAlignment et non AdjustAlignement :
NWScript :
void main() { object oPC = GetPCSpeaker(); AdjustAlignment( oPC, ALIGNMENT_EVIL, 100 ); CreateItemOnObject( "ResRef_de_l_avatar_malefique", oPC, 1 ); AssignCommand( oPC, JumpToObject( GetObjectByTag( "WP_mauvais" ) ) ); } ![]() _________________ 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 | ![]() ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
Oui, j'avais réussi a trouver l'erreur et c a marché, en revanche, il ne done pas l'objet, c'est normal ? j'ai mis le tag 2 fois dans le script, c'est ce qu'il fallait faire ou c'est une autre donnée que je dois mettre ?
ce que je demande en fait, au risque de me faire huer c'est resref c'est koi ? ( car je présume que c'est différent du tag en fait ) _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
kiky.le.magnifique Homme très gay ![]() Messages: 907 Localisation: Camping de la nation martienne... |
Siléphrael a écrit : resref c'est koi ?
Tu présumes bien ( car je présume que c'est différent du tag en fait ) ![]() Pour résumé grossierement, on pourrait dire que le ResRef sert essentiellement à créer les perso ou objet, (ça permet de les selectionner dans la palette pour les mettre en jeu) tandis que le Tag est à utiliser seulement pour des chose déjà créé dans le jeux, pour les faire bouger, les copier, enfin à peut pres ce qu'on veut quoi... Ainsi, la fonction GetObjectByTag ne renverra quelquechose seulement si l'objet se trouve quelquepart sur une map (ou dans un inventaire), et renverra "objet invalide" s'il n'est que dans la palette. J'espere avoir été clair ^^ PS : tu trouvera le resref dans les propriété de l'objet en question, tout simplement. S'il est dans la palette (en générale c'est là), tu fais bouton droit -> editer -> avancées et t'as le ResRef BluePrint ^^ ![]() _________________ 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 | ![]() ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
Merci de ces précisions, j'ai pu appliquer les changements, mais il n'y a toujours pas d'objet donné au Pj avec le changement d'alignement ?! et le script ne comporte aucune erreur. En plus le coup de l'item d'alignement est hyper important pour la suite. j'arrive pas a lui faire lacher ce foutu objet !!!!
_________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
KIMOUNET Héros ![]() Messages: 256 Localisation: Au pays des reves |
Edite moi ton script
_________________ Le savoir est comme un tresor il se partage |
Revenir en haut | ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
NWScript :
void main() { object oPC = GetPCSpeaker(); AdjustAlignment( oPC, ALIGNMENT_EVIL, 100 ); CreateItemOnObject( "sceptremal001", oPC, 1 ); AssignCommand( oPC, JumpToObject( GetObjectByTag( "scmal" ) ) ); } j'espère que c bon, c'est ma premièer fois ![]() _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
KIMOUNET Héros ![]() Messages: 256 Localisation: Au pays des reves |
![]() ![]() mais au lieu d'utiliser cette commande 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. Utilise plutot celle ci 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. _________________ Le savoir est comme un tresor il se partage |
Revenir en haut | ![]() ![]() ![]() |
kiky.le.magnifique Homme très gay ![]() Messages: 907 Localisation: Camping de la nation martienne... |
![]() KIMOUNET a écrit : Utilise plutot celle ci Bâââh pourquoi donc?
oPC est bien définit avant, pourquoi repasser à GetPCSpeaker() pour le CreateItem ??? ![]() _________________ 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 | ![]() ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
g testé les 2 versions et aucune ne marche, je vais tenter de changer les resref et tag de mes objets, on sait jamais ... mais pour l'instant, aucune des 2 solution ne marche...
![]() _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |
Siléphrael Grand Chevalier ![]() Messages: 122 Localisation: Toulouse |
Personne peut me dire pkoi ca marche pas ??? ouain ...
bon ben si qq1 a une idée pour donner l'objet en plus du script ... _________________ * Tenant sous sa lame le jeune prince * Je vais compter jusqu'a trois et tu mourra .... * lui tranche la gorge * mince, j'ai oublié de compter ... |
Revenir en haut | ![]() ![]() ![]() ![]() |


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