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







La date/heure actuelle est 28/04/2025 23:32: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 |
Ombremort Novice Messages: 13 |
Voilà, je voudrais réalisé deux choses mais je suis nul en script, quelqu'un pourrait-il m'aider:
- Tout d'abord je voudrais qu'un porte vérouillée, avec l'option clef unique, vérifie que le personnage possède dans son inventaire un objet parmis un certain nombre d'objets autorisés (4 dans mon cas) et que si le personnage en possède un la porte se dévérouille. -Ensuite, je voudrais que lorsque le personnage clique sur une statue utilisable, celle-ci vérifie que le joueur est autorisé (une liste des persos autorisés dans le script c'est fesable? il m'en faudrait 4)et le téléporte dans une pièce en affichant une conversation du genre: "vous appuyez sur l'oeil de la statue, un orifice s'ouvre dans le mur. Vous entrez dans le passage et celui ci se referme derrière vous". Merci d'avance. |
Revenir en haut | ![]() ![]() ![]() ![]() |
Ombremort Novice Messages: 13 |
C'est toujours agréable de n'avoir aucune réponse........
Bouh, c'est pas juste, je demande pas grand chose pourtant mais j'ai l'impression que ça interesse personne ![]() ps: si les modérateurs pense que c'est du flood, il peuvent supprimmer mais c'est dommage de n'avoir aucune réponse. |
Revenir en haut | ![]() ![]() ![]() ![]() |
lendraste Grand Maître Chanteur du Conseil ![]() Messages: 1403 Localisation: Quelque part ailleurs |
Ombremort a écrit : C'est toujours agréable de n'avoir aucune réponse........
C'est-à-dire qu'il y a du remue-menage ailleurs sur le forum... Ca monopolise un peu les esprits Bouh, c'est pas juste, je demande pas grand chose pourtant mais j'ai l'impression que ça interesse personne ![]() ps: si les modérateurs pense que c'est du flood, il peuvent supprimmer mais c'est dommage de n'avoir aucune réponse. ![]() Et puis c'était le week-end, maintenant les gens se remettent à travailler sur NWN ![]() Je vais étudier tes deux questions quand j'aurai un peu de temps. Je tâche de te fournir une réponse ce soir si personne ne répond avant. _________________ 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 | ![]() ![]() ![]() ![]() ![]() |
lendraste Grand Maître Chanteur du Conseil ![]() Messages: 1403 Localisation: Quelque part ailleurs |
Pour ton premier cas, il faudrait que ta porte soit fermée à clé mais que tu ne précise pas de TAG de clé pour l'ouvrir. En effet, si tu fournis une clé valide et que le personnage en possède une, la porte s'ouvrira sans tenir compte de ta condition supplémentaire. Alors que si elle est fermée par une clé inconnue, elle ne s'ouvrira que grâce à un script. En l'occurrence, tu peux placer le script qui suit sur l'évènement OnFailToOpen de ta porte.
NWScript :
#include "nw_i0_plot" void main() { string sTagKey="TAG_DE_LA_CLE"; string sTagList="TAG_OBJET1;TAG_OBJET2;TAG_OBJET3;TAG_OBJET4"; // Liste des tags des objets permettant l'ouverture object oKey; object oCreature=GetClickingObject(); if (GetIsPC(oCreature)) { oKey=GetItemPossessedBy(oCreature, sTagKey); if (GetIsObjectValid(oKey)) { // Parcours des Tags d'objet valide pour autoriser l'ouverture. string sTmp; int nPos=FindSubString(sTagList, ";"); // Recherche du premier ; int nCount=0; while (nPos!=-1) // Tant qu'on trouve un ; { sTmp=GetSubString(sTagList, 0, nPos); sTagList=GetSubString(sTagList, nPos+1, GetStringLength(sTagList)-nPos-1); if (HasItem(oCreature, sTmp)) { nCount++; // on le compte } nPos=FindSubString(sTagList, ";"); // Recherche du ; suivant } if (nCount>0) { SetLocked(OBJECT_SELF, FALSE); } } } } C'est une possibilité pour résoudre ton problème (note que je n'ai pas eu le temps de tester le script, si tu as des problèmes n'hésite pas à le dire). Les Tag et liste de Tag du début du script sont bien sur à personnaliser en fonction des objets que tu créés. Pour le second problème le script peut être plus simple. Dans le OnUsed de ton plaçable tu peux ecrire ceci : NWScript :
void main() { string sNameList="Nom du personnage 1;Nom du personnage 2;Nom du personnage 3;Nom du personnage 4"; object oCreature=GetLastUsedBy(); if (GetIsPC(oCreature)) { if (FindSubString(";" + sNameList + ";", ";" + GetName(oCreature) + ";")!=-1) { // Le nom du personnage est dans la liste SendMessageToPC(""); object oWP=GetObjectByTag("TAG_DE_LA_DESTINATION"); AssignCommand(oCreature, ClearAllActions()); // Vide la queue d'action du personnage AssignCommand(oCreature, ActionJumpToLocation(GetLocation(oWP))); } } } Pareil pour ce script, veille à personnaliser le TAG de ton point de passage et les noms que tu veux tester. Il y a moyen d'améliorer un peu si tu n'es pas sure de la casse de caractère des noms en utilisant GetStringUpperCase ou GetStringLowerCase _________________ 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 Dernière édition par lendraste le 08/12/2003 23:11:51; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() ![]() ![]() |
Ombremort Novice Messages: 13 |
Je n'ai pas encore tester mais le premier ne correspond pas à ce que je veux, je veux que la clef dont tu parles fasse partit des objets possibles pour le dévérouillage. Je suppose donc qu'il suffit de supprimer la partie vérifiant la présence de la clef et mettre le tag de la clef dans la liste des objets?
|
Revenir en haut | ![]() ![]() ![]() ![]() |
lendraste Grand Maître Chanteur du Conseil ![]() Messages: 1403 Localisation: Quelque part ailleurs |
Ombremort a écrit : Je n'ai pas encore tester mais le premier ne correspond pas à ce que je veux, je veux que la clef dont tu parles fasse partit des objets possibles pour le dévérouillage. Je suppose donc qu'il suffit de supprimer la partie vérifiant la présence de la clef et mettre le tag de la clef dans la liste des objets? En effet. Essaye ça :
NWScript : #include "nw_i0_plot" void main() { string sTagList="TAG_OBJET1;TAG_OBJET2;TAG_OBJET3;TAG_OBJET4"; // Liste des tags des objets permettant l'ouverture object oCreature=GetClickingObject(); if (GetIsPC(oCreature)) { // Parcours des Tags d'objet valide pour autoriser l'ouverture. string sTmp; int nPos=FindSubString(sTagList, ";"); // Recherche du premier ; int nCount=0; while (nPos!=-1) // Tant qu'on trouve un ; { sTmp=GetSubString(sTagList, 0, nPos); sTagList=GetSubString(sTagList, nPos+1, GetStringLength(sTagList)-nPos-1); if (HasItem(oCreature, sTmp)) { nCount++; // on le compte } nPos=FindSubString(sTagList, ";"); // Recherche du ; suivant } if (nCount>0) { SetLocked(OBJECT_SELF, FALSE); } } } _________________ 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 | ![]() ![]() ![]() ![]() ![]() |
Ombremort Novice Messages: 13 |
Oups petit problème sur le deuxième, la ligne
NWScript :
SendMessageToPC(""); Ne se compile pas Sinon je teste l'autre ![]() Et merci |
Revenir en haut | ![]() ![]() ![]() ![]() |
lendraste Grand Maître Chanteur du Conseil ![]() Messages: 1403 Localisation: Quelque part ailleurs |
Ombremort a écrit : Oups petit problème sur le deuxième, la ligne
Excuses-moi j'ai oublié un paramètre :
Code : SendMessageToPC("vous appuyez sur l'oeil de la statue, un orifice s'ouvre dans le mur. Vous entrez dans le passage et celui ci se referme derrière vous");
Ne se compile pas Sinon je teste l'autre ![]() Et merci 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. _________________ 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 | ![]() ![]() ![]() ![]() ![]() |


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