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







La date/heure actuelle est 02/05/2025 01:31:09
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 |
Kris Ecuyer Messages: 69 |
je cherche un script pour donner la capacité a un objet de permettre a son proprietaire de dormir dans un dongeon ou un endroit ou c est interdit normalement un certain nombre de fois.
si qqun a ca en stock ou pourrais m aiguiller , merci. |
Revenir en haut | ![]() ![]() ![]() |
BenGorre Légende vivante ![]() Messages: 301 |
Bonjour bonjour,
Pour cela, je ne vois qu'une solution pour le moment (c'est pas vrai j'en vois deux mais l'autre necessite un grand changement). En fait il faut que tu alloue une variable local au pj avec un delaycommand pour la supprimmer ensuite. Dans le OnRest tu dit que si la variable est vrai (TRUE) tu fais ForceRest() sur le PJ en lui allouant si necessaire l'animation assis par terre. Voila je suis pas sur que ca marche éssaie. Sinon si quelqu'un d'autre à une solution à mon avis ca n'intéresse pas que Kris. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 ![]() Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | ![]() ![]() ![]() |
Sith Vicious Grand Sage du Conseil ![]() Messages: 693 |
Ca va pas marcher comme ça, si la zone est définie comme "repos interdit" le script OnRest ne se lance même pas, c'est bloqué avant. Donc soit mettre le ForceRest() sur le script de l'objet dans le OnItemActivated soit (je pense que c'était ta 2ème solution) :
-laisser toutes les zones en repos autorisé -mettre une variable sur les zones ou le repos est interdit -Quand on active l'objet faire donc une variable locale temporaire (l'effacer avec un DelayCommand()) -Dans le OnRest vérifier : si la zone est interdite au repos si oui : si la variable est présente sur le PJ : autoriser le repos sinon : l'empecher (avec un ClearAllActions) |
Revenir en haut | ![]() ![]() ![]() |
BenGorre Légende vivante ![]() Messages: 301 |
|
Revenir en haut | ![]() ![]() ![]() |
Kris Ecuyer Messages: 69 |
y a pas d autres soltions avec un script sur un objet? tout simple?
|
Revenir en haut | ![]() ![]() ![]() |
BenGorre Légende vivante ![]() Messages: 301 |
Non, et cela pour deux raisons:
l'option qui empeche de dormir est sur une zone et non sur les joueurs, donc pour les faire dormir faudrait desactiver cette option mais alors tous les joueurs dans la zone pourrait dormir. Et que en plus il est impossible de desactiver cette option par script (il me semble). _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 ![]() Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | ![]() ![]() ![]() |
Aladar Chevalier Messages: 96 Localisation: Tours |
Salut Kris ^^
Je supose que tu voulais reproduire le systeme d'anneau de repos d'Arka I pour ton mod ^^ J'ai fais un petit code, qui fonctionne pour une fois, alors je le post meme si souneva t'as surement deja aidé ![]() Il faut creer un anneau de tag "REPOS_OK" avec un pouvoir unique utilisable uniquement sur soi. Dans le OnRest faut rajouter ca NWScript :
object oPJ = GetLastPCRested(); void main() { if(GetTag(GetArea(oPJ)) == "zoneA" || GetTag(GetArea(oPJ)) == "zoneB" || GetTag(GetArea(oPJ)) == "zoneC")//etc { if(GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED) { //si DODO_OK == TRUE on autorise le repos et on passe la variable a FALSE if(GetLocalInt(oPJ, "DODO_OK") == TRUE) { SendMessageToPC(oPJ, "Le pouvoir protecteur de l'anneau te permet de te reposer sans danger..."); SetLocalInt(oPJ, "DODO_OK", FALSE); } //Sinon on le stop else { SendMessageToPC(oPJ, "L'endroit est trop dangereux pour se reposer..."); AssignCommand (oPJ,ClearAllActions()); } } } } Dans la ligne if(GetTag(GetArea(oPJ)) == "zoneA" || GetTag(GetArea(oPJ)) == "zoneB" || GetTag(GetArea(oPJ)) == "zoneC")//etc il te suffit de rajouter || GetTag(GetArea(oPJ)) == "tag_de_la_zone" pour chaque zone dans laquelle tu veux bloquer le repos. Et dans le OnActivateItem, il faut rajouter ca 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. Si un pj se trouve dans une des zone designée dans la ligne ci dessus et qu'il n'a pas activé un anneau, le repos est bloqué. Je trouve que la ligne if(GetTag(GetArea(oPJ)) == "zoneA" || GetTag(GetArea(oPJ)) == "zoneB" || GetTag(GetArea(oPJ)) == "zoneC")//etc n'est pas très propre... mais c'est le seul moyen que j'ai trouvé pour que ca compile et fonctionne comme voulu, donc... |
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