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







La date/heure actuelle est 03/08/2025 03:38:17
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 |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Ton premier while et le deuxième donnent une boucle infinie sauf si oPC = GetFirstPC, c'est ptet ça plutot qui fait planter le module (quoique, en général ça plante pas un TMI mais bon.)
|
Revenir en haut | ![]() ![]() ![]() |
Enki Légende vivante ![]() Messages: 432 |
Une suggestion, que je vais tester de mon coté ^^
Remplacer GetFirtPC() par GetFirstObjectInArea() en mettant des PNJs/plaçables dans la zone pour voir si les boucles sont correctes, et le cas échant, pouvoir les débugger sans avoir besoin de tester le tout en multi ^^. Si j'ai une idée, ou si le 2e script de Lylver fonctionne, je vous tiens au courrant ! |
Revenir en haut | ![]() ![]() ![]() |
Enki Légende vivante ![]() Messages: 432 |
Bravo Lylver !
Je viens de tester avec ton script corrigé, et la "méthode" exposée précédement, et cela marche parfaitement ! Je ne vois pas pourquoi cela ne marcherait pas dans ce cas avec des joueurs ! Je pense que le problème est résolu ... |
Revenir en haut | ![]() ![]() ![]() |
Black Knight Grand Maître Chanteur du Conseil ![]() Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Ha oui exact, je viens de revoir mon script et j'ai completement oublier de mettre les GetNextPC()
![]() Bon avec ca, ca devrait marcher : NWScript :
void main() { object oPC = GetLastUsedBy(); object oPJ = GetFirstPC(); int nCustom = 9000; while(oPJ != OBJECT_INVALID) { SetLocalInt(GetModule(), "PJ_LIST", GetLocalInt(GetModule(), "PJ_LIST")+1); oPJ = GetNextPC(); } int nPlayer = GetLocalInt(GetModule(), "PJ_LIST"); int nMax = 0; object oPJ1 = GetFirstPC(); while(oPJ1 != OBJECT_INVALID && nMax < nPlayer) { nCustom++; nMax++; SetCustomToken(nCustom, GetName(oPJ1)+" ("+GetPCPlayerName(oPJ1)+")"); nCustom = nCustom; nMax = nMax; oPJ1 = GetNextPC(); } nMax = nMax; nCustom = nCustom; while(nMax <= 32) { nCustom++; nMax++; SetCustomToken(nCustom, "Place non prise"); nCustom = nCustom; nMax = nMax; } ActionStartConversation(oPC, "", TRUE); } EDIT: voila ca marche perfect, testé ![]() _________________ [http] |
Revenir en haut | ![]() ![]() ![]() |
Djezebel Héros ![]() Messages: 252 |
Merci beaucoup Lylver et Black Knight !
Ca fonctionne impec, c'est génial. ^^ J'ai juste des petits problèmes pour récupérer les variables ensuite (nCount et oPJ) mais la première partie est en tout cas résolue ! Merci beaucoup ! ![]() |
Revenir en haut | ![]() ![]() ![]() |
Black Knight Grand Maître Chanteur du Conseil ![]() Messages: 1031 Localisation: Fin fond du trou du cul du monde |
De rien, mais la je cherche une solution pour evité de mettre 32 script dans les Action des phrases, mais pas moyen, ils ont pas inventé le GetCustomToken, c'est dommage
![]() _________________ [http] |
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Fais un menu. (cf Lylver et ses scripts magiques)
|
Revenir en haut | ![]() ![]() ![]() |
Enki Légende vivante ![]() Messages: 432 |
Salut Djezebel !
Pour récupérer ensuite les variables , c'est très simple, fais comme Lylver te disait dans l'un de ses premiers posts. Tu fais 5 petits scripts genre celui que tu m'as envoyé, que tu appelles pj_custom1, pj_custom2, etc ... Ensuite, dans chaque script tu mets nCount à 1 pour pj_custom1, à 2 pour pj_custom2, etc ... comme dans l'exemple ci-dessous : NWScript :
void main() { object oPC = GetPCSpeaker(); //int nCount = //GetLocalInt(oPC, "PJ_ITEM"); // Remplace cette ligne par la suivante // pour chacun de tes scripts en action taken tu change la valeur de nCount Ex: pj_custom : nCount =1; / pj_custom2 nCount=2; etc ... int nCount = 1; object oPJ = GetLocalObject(oPC, "PJ_CUSTOM"+IntToString(nCount)); string sArea = GetName(GetArea(oPJ)); string sName = GetName(oPJ); ActionSpeakString(sName+" est ici "+sArea); SendMessageToPC(oPC,IntToString(nCount)); } Voilà, à bientôt ! |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
Salut et tout d'abord félicitation , je me répète mais bon:grin:
![]() Ha oui chose importante je ne l'ai pas testé en multi... Viduc _________________ ![]() |
Revenir en haut | ![]() ![]() ![]() |
Djezebel Héros ![]() Messages: 252 |
Bon, à deux joueurs, j'ai effectivement réussi à donner le nom et la localisation.
Le souci venait que : int nCount = GetLocalInt(oPC, "PJ_ITEM"); Ca ne fonctionnait pas correctement. Par contre si je mets : int nCount = 1; Il n'y a aucun souci pour voir le nom et la localisation de l'autre personnage. Je n'ai pas pu tester pour les autres, mais je suppose que ça doit fonctionner. Donc en somme, Viduc, il faut mettre dans le action conséquente du <CUSTOM3601> le script d'Enki un peu plus haut. Pour le <CUSTOM3602>, il faudra changer le nCount =1; par nCount =2 ainsi de suite. Il ne reste plus qu'à tester à trois joueurs ^^ Merci à tous de votre participation. ![]() |
Revenir en haut | ![]() ![]() ![]() |
lylver Héros Messages: 274 |
Oui, en fait, on ne peut pas se servir de nCount = GetLocalInt(oPC, "PJ_ITEM");
, il est "consommé" pour l'affichage du dialogue et vaut zéro une fois que ce dernier est utilisable par le joueur. il faut utiliser i = 1, 2 ,3 ,4 ,5 de façon statique comme pour les numéros des CUSTOM TOKENS pour les scripts pj_custom(i) |
Revenir en haut | ![]() ![]() ![]() |
Viduc de Papironda Grand Chevalier Messages: 119 |
|
Revenir en haut | ![]() ![]() ![]() |


Page 2 sur 2 ¤ Aller à la page Précédente 1, 2
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