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







La date/heure actuelle est 01/05/2025 20:39:38
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 |
yellow submarine Grand Chevalier ![]() Messages: 143 |
bonjour
quelle est la fonction pour enlever des XP à un PC lorsqu'il entre dans une zone? 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. ne fait rien ![]() merci le script en entier : NWScript : void main() { object oPC = GetEnteringObject(); AssignCommand(oPC, SpeakString("")); GiveXPToCreature(GetEnteringObject(), -10); DestroyObject(OBJECT_SELF); } |
Revenir en haut | ![]() ![]() ![]() |
micka Grand Sage du Conseil ![]() Messages: 884 Localisation: /dev/null |
Aucun rapport (je vais regarder de plus près pour la question) : c'est pas un peu redondant le GetEnteringObject()?
NWScript :
void main() { object oPC = GetEnteringObject(); AssignCommand(oPC, SpeakString("")); GiveXPToCreature(oPC, -10); DestroyObject(OBJECT_SELF); } Je ne sais pas si nwn est atomique, mais si autre choise entre dans la zone entre la ligne 1 et la ligne 3, ça pose problème. En plus, il faudrait vérifier que c'est bien un perso qui entre, sinon, tu vas l'appliquer aussi aux créatures qui le poursuivent, aux PNJ... |
Revenir en haut | ![]() ![]() ![]() |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
NWScript : void main() { object oPC = GetEnteringObject(); if(GetIsPC(oPC)==TRUE) { AssignCommand(oPC, SpeakString("")); SetXP(oPC, GetXP(oPC)-10); DestroyObject(OBJECT_SELF); } } _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. |
Revenir en haut | ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
Merci encore à tous de m'avoir aidé
![]() |
Revenir en haut | ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
Je vais encore un peu abuser
et si au lieu de retirer des XP je veux retirer des HP ![]() amicalement |
Revenir en haut | ![]() ![]() ![]() |
kiky.le.magnifique Homme très gay ![]() Messages: 907 Localisation: Camping de la nation martienne... |
Le HP, c'est les points de vie, c'est ça?
![]() Heu... Je suis pas sûr de mon coup, mais je pense que : NWScript :
void main() { object oPC = GetEnteringObject(); effect eDamage=EffectDamage(15); AssignCommand(oPC, SpeakString("")); ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,oPC,1.0); } ça devrait, peut être, éventuellement, marcher... ![]() _________________ 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 | ![]() ![]() ![]() ![]() |
micka Grand Sage du Conseil ![]() Messages: 884 Localisation: /dev/null |
Il me semblait bien que GiveXPTo... ne marchait pas en négatif. Mais ce n'est pas dit sur le lexicon. Par contre, pour SetXP, ils disaient que ça pouvait être utilisé pour enlever des XP. Mais je n'étais pas sûr de mon coup et voulais vérifier. Merci d'avoir confirmé.
Pour enlever des pv, en général, on utilise un effet du genre énergie négative (blessure...) ou divin. Avec cette fonction, tu peux choisir quel type et quantité de dégâts aplliquer : [http] NWScript :
void main() { object oPC = GetEnteringObject(); if(GetIsPC(oPC)==TRUE) { ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(300, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY), oPC); DestroyObject(OBJECT_SELF); } } Tu peux aussi utiliser un EffectCurse , mais plutôt que DURATION_TYPE_INSTANT, il vaut mieux utiliser DURATION_TYPE_PERMANENT. (j'espère que ça marche ![]() |
Revenir en haut | ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
Merci
ça marche... amicalement |
Revenir en haut | ![]() ![]() ![]() |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
yellow submarine a écrit : Je vais encore un peu abuser et si au lieu de retirer des XP je veux retirer des HP ![]() amicalement // Placer dans "on enter" du déclencheur NWScript :
void main() { object oPC = GetEnteringObject(); if(GetIsPC(oPC)==TRUE) { int iRest = GetCurrentHitPoints(oPC); // Un petit effet visuel pour la gloire ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_S),oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(10), oPC); DestroyObject(OBJECT_SELF); } ////////////////////////////// //////////////////////// //Si tu ne veux laisser qu'un seul point de vie au PJ/ ////////////////////////////// //////////////////////// void main() { object oPC = GetEnteringObject(); if(GetIsPC(oPC)==TRUE) { int iRest = GetCurrentHitPoints(oPC); // une petite animation pour rendre le script plus vivant AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK,1.0,5.0)); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(iRest -1), oPC); DestroyObject(OBJECT_SELF); } } /* warning: 1 unclosed block {} */ Have Fun... _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | ![]() ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
Ok j'ai fais une compil de toutes vos idées...
j'ai changé le scénario... (j'entends penser : quel ![]() c'est en tombant dans un trou que le déclencheur s'active... donc changement de zone... Arrivée sur un point de passage qui se trouve sur le déclencheur... NWScript :
void main() { object oPC = GetEnteringObject(); if(GetIsPC(oPC)==TRUE) { AssignCommand(oPC, SpeakString("Dure est la chute!")); AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK,1.0,5.0)); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(20, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_ENERGY), oPC); DestroyObject(OBJECT_SELF); } } 1ere constation : pas mal l'animation, mais on le voit debout, puis il tombe... ![]() il y a t il une autre animation (oui d'accord le ![]() 2emement il faut que je détruise dans un premier temps le déclencheur (car s'il repasse dessus etc...) puis que je le recrée lorsqu'il repassera sur le trou encore une fois (si c'est une buse ![]() à vos méninges! amicalement |
Revenir en haut | ![]() ![]() ![]() |
micka Grand Sage du Conseil ![]() Messages: 884 Localisation: /dev/null |
Je ne comprends pas : pourquoi veux-tu le détruire puis le recréer? Si tu le laisses tel quel, et que le script ne s'exécute que sur onEnter, il peut se déplacer dedans, en sortir... sans problème. S'il y retourne, ... et bien rebelote.
Sinon, il y avait un truc marrant (la première fois, même la deuxième, ensuite ![]() ![]() Du coup c'était sympa, on avait des vraies trappes dissimulées. |
Revenir en haut | ![]() ![]() ![]() |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Pour les animations comme pour le reste des informations sur les scripts je ne peux que te conseiller d'aller télécharger le LEXICON... En Anglais certes, mais la référence en terme de script (tout ou presque y est référencé)
[http] Pour ton évènement scripté... Sommes-nous d'accord sur la succession: 1. le PJ passe sur un trou 2. Message... type un TROU !! 3. animation (type ANIMATION_LOOPING_DEAD_FRONT) 4. dommages (au fait pour une chute, l'énergie négative ?? plutôt contendant non.. DAMAGE_TYPE_BLUDGEONING) 5. ActionJump to la nouvelle zone 6. animation ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD (le PJ se gratte la tête) 7. speakstring(Wouahou quelle chute...) Rq: ta soif de savoir ne fait pas de toi un boulet mais une personne qui progressera rapidement dans la jungle des scripts... Alors n'hésites pas... LongBow 5. _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | ![]() ![]() ![]() ![]() |
micka Grand Sage du Conseil ![]() Messages: 884 Localisation: /dev/null |
Pour le lexicon, rien ne vaudra le site web tant qu'ils n'auront pas sorti ça dans dans autre format que ce foutu .chm.
Ils ne peuevnt pas en faire une archive de .html? Même une archive avec du php serait utilisable. Mais ce format c'est pire que tout! |
Revenir en haut | ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
réponses en vrac...
le scénar le PC passe sur un trou => il déclenche un "déclencheur (appelons le A)" qui l'envoie dans une autre zone (l'étage au dessous) (vous me suivez?) Donc le PC arrive sur un point de passage qui se trouve sur un autre déclencheur B avec le script donné plus haut (dialogue, dégats des os ![]() (vous me suivez toujours?) donc je veux détruire le déclencheur B dans un premier temps car si en se promenant dans la zone il entre de nouveau sur ce déclencheur, il déclenche : rescript (dialogue, dégats des os ![]() Bien une fois sortie de cette salle, il peut se retrouver à nouveau à l'étage superieur et s'il repasse sur le trou retomber, c'est pour cela que je veux recréer le déclencheur B merci de vos aides amicalement |
Revenir en haut | ![]() ![]() ![]() |
Alenn Tax Seigneur ![]() Messages: 170 Localisation: J'étais loin, mais je suis revenu. |
Longbow > Merci d'utiliser la balise nwscript quand tu poste du code.
yellow submarine > Dans le onEnter du déclencheur A : NWScript :
void main() { object oEntering = GetEnteringObject(); if (GetIsPC(oEntering)) SetLocalInt(oEntering, "est_tombe", FALSE); } Dans le onEnter du déclencheur B : NWScript :
void main() { object oEntering = GetEnteringObject(); if (GetIsPC(oEntering)) { if (GetLocalInt(oEntering,"est tombe")==TRUE) { } else { SetLocalInt(oEntering,"est tombe")==TRUE)/* suspect parenthesis end found !*/ } } /* warning: 1 unclosed block {} */ Voila. Dis-moi si ça marche. _________________ "La libertée d'expression n'a jamais existé en Russie. Alors, je ne vois pas comment elle pourrait étre bafouée." - Vladimir Poutine |
Revenir en haut | ![]() ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
voilà mon script selon tes explications
NWScript :
void main() { object oEntering = GetEnteringObject(); if (GetIsPC(oEntering)) { if (GetLocalInt(oEntering,"est tombe")==TRUE) { } else { AssignCommand(oEntering, SpeakString("Dure est la chute!")); AssignCommand(oEntering, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK,1.0,5.0)); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(20, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_ENERGY), oEntering); SetLocalInt(oEntering,"est tombe")==TRUE)/* suspect parenthesis end found !*/ } } /* warning: 1 unclosed block {} */ à la ligne 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. il me signale cette erreur : NO SEMICOLON AFTER EXPRESSION ![]() ou me suis trompé ![]() amicalement j'ai trouvé pour Micka Citation : Pour le lexicon, rien ne vaudra le site web tant qu'ils n'auront pas sorti ça dans dans autre format que ce foutu .chm.
Tu peux transformer le fichier lexicon.chm en html en utilisant ce logiciel (gratuit 15 jours)
Ils ne peuevnt pas en faire une archive de .html? Même une archive avec du php serait utilisable. Mais ce format c'est pire que tout! chm2web 2.18 - HTML Help conversion utility Developer : A!K Research Labs. Copyright(c) 2002-2003 |
Revenir en haut | ![]() ![]() ![]() |
Alenn Tax Seigneur ![]() Messages: 170 Localisation: J'étais loin, mais je suis revenu. |
yellow submarine a écrit : ou me suis trompé Autant pour moi. Le code est :
![]() NWScript :
void main() { object oEntering = GetEnteringObject(); if (GetIsPC(oEntering)) { if (GetLocalInt(oEntering,"est tombe")==TRUE) { } else { AssignCommand(oEntering, SpeakString("Dure est la chute!")); AssignCommand(oEntering, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK,1.0,5.0)); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(20, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL), oEntering); SetLocalInt(oEntering,"est tombe",TRUE); } } } C'est bon, il se compile, j'ai vérifié dans l'éditeur. Mais, comme le personnage encaisse des dégats à cause de sa chute, j'ai changé le type de dommages en contondants et normaux. (Donc ils sont sujets à la réduction des degats.) P.S.: Pour poster des scripts, utilise la balise nwscript au lieux de la balise code. Et pour les citations, c'est la balise quote. Là j'ai corrigé, mais bon ... Merci. _________________ "La libertée d'expression n'a jamais existé en Russie. Alors, je ne vois pas comment elle pourrait étre bafouée." - Vladimir Poutine |
Revenir en haut | ![]() ![]() ![]() ![]() |
micka Grand Sage du Conseil ![]() Messages: 884 Localisation: /dev/null |
yellow submarine a écrit : v
Si j'étais sous windows, je n'auras pas de problème avec ces fichiers, hein... j'ai trouvé pour Micka (...) Tu peux transformer le fichier lexicon.chm en html en utilisant ce logiciel (gratuit 15 jours) chm2web 2.18 - HTML Help conversion utility Developer : A!K Research Labs. Copyright(c) 2002-2003 ![]() Sinon, je ne comprends pas pourquoi tu n'appliques pas les dégâts dans le onEnter de A avant de renvoyer le personnage à B. Après, il peut marcher sur B sans rien risquer, et c'est plus simple que de tester une variable. Ou alors tu mets les dégâts dans le onEnter de la zone "fond du trou". Au chargement de la zone, il subit les dégâts (à moins que tu ne veuilles laisser le choix au perso de descendre volontairement, sans subir de dégâts, si par exemple il a conscience du trou et a une corde dans son inventaire...) |
Revenir en haut | ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
Tester mais...
premier passage... le PC tombe dans le trou => dialogue, dégats, animation. Super ![]() repasse sur le déclencheur aucun effet. Super ![]() le PC remonte (apres un periple dans plusieurs salles) "cette buse" repasse sur le trou donc il retombe ![]() mais le déclencheur ne déclenche plus ![]() plus de dialogue, dégats, animation ![]() ou est le probleme amicalement |
Revenir en haut | ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
réponse à Micka
Citation : Sinon, je ne comprends pas pourquoi tu n'appliques pas les dégâts dans le onEnter de A avant de renvoyer le personnage à B. Après, il peut marcher sur B sans rien risquer, et c'est plus simple que de tester une variable. Mais le dialogue et l'animation qui se trouvent en B? Citation : Ou alors tu mets les dégâts dans le onEnter de la zone "fond du trou". Au chargement de la zone, il subit les dégâts (à moins que tu ne veuilles laisser le choix au perso de descendre volontairement, sans subir de dégâts, si par exemple il a conscience du trou et a une corde dans son inventaire...) donc s'il entre à nouveau dans la zone le script va se déclencher... j'avais pensé à une corde pour le deuxieme passage mais je dois d'abord régler le fait qui peut y tomber à nouveau... merci |
Revenir en haut | ![]() ![]() ![]() |
yellow submarine Grand Chevalier ![]() Messages: 143 |
HOU HOU vous etes tous partis en WE, y a plus personne au bureau?
![]() remerciements à tous CA MARCHE ![]() bien la derniére erreur venez de la variable Code : est tombe
dans le déclencheur A : elle est écrite Code : est_tombe
et dans le B : Code : est tombe
pas fais attention au premier coup d'oeil. (ca m'apprendra à faire confiance ![]() maintenant pour en rajouter un peu ![]() je veux permettre au PC de descendre avec une corde et donc de ne pas déclencher le script B (bien sur sans le détruire car il peut servir une autre fois) ![]() à suivre... amicalement |
Revenir en haut | ![]() ![]() ![]() |
Alenn Tax Seigneur ![]() Messages: 170 Localisation: J'étais loin, mais je suis revenu. |
1)
yellow submarine a écrit : HOU bien la derniére erreur venez de la variable
est tombe dans le déclencheur A : elle est écrite est_tombe et dans le B : est tombe ![]() 2) Evite s'il te plait de mettre des balises juste pour donner le nom d'une variable. Ca sert à rien. A la rigeur mets-la plutot en italique ou en gras. Merci. _________________ "La libertée d'expression n'a jamais existé en Russie. Alors, je ne vois pas comment elle pourrait étre bafouée." - Vladimir Poutine |
Revenir en haut | ![]() ![]() ![]() ![]() |
Lavok Légende vivante Messages: 434 Localisation: Sphère planaire |
yellow submarine a écrit : je veux permettre au PC de descendre avec une corde et donc de ne pas déclencher le script B (bien sur sans le détruire car il peut servir une autre fois) ![]() à suivre... amicalement ![]() _________________ ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera. Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera. |
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