La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 27/11/2024 04:14: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 |
Siléphrael Grand Chevalier Messages: 122 Localisation: Toulouse |
"PARSING VARIABLE LIST" ??
Je vous explique, j'aimerai faire en sorte que soit rajouté aux différents bigbys un jet de reflexe, pour permettre de l'esquiver. J'ai un script a peu près pas trop mal fait, mais il me sort "parsong variable list" sur 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. Si quelqu'un sait comment faire pour opposer un jet de reflexe a un jet qui contient 3D8+moitié des lvls de lanceur de sort ... et ca pour tous les bigbys. Marci _________________ * 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 | |
grenwald Novice Messages: 11 |
pour ton message d'erreur, il me semble que c'est du à un oubli de point virgule dans les commandes précédentes; dumoins je crois, j'ai pas l'éditeur au boulot pour tester
Par contre, pour ton probleme de jet de reflexes, je ne peux malheureusement pas t'aider.... _________________ Un troll???? où ça?........ oups, pardon, je ne l'avais pas vu |
Revenir en haut | |
Tchong Novice Messages: 12 Localisation: Ank Morpork |
Peut-être devrais-tu écrire "0.5" au lieu de "0,5"
|
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
C'est fait exprès que ta variable soit un int (entier) ? Car en faisant x 0.5 il y a peu de chance que ça en soit un... Je sais pas comment Aurora gère ça, s'il tronque, arrondi ou fait un message d'erreur. Un float me semblerait plus approprié.
_________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Siléphrael Grand Chevalier Messages: 122 Localisation: Toulouse |
heu ... un quoi ?
Bon je pense que je vais vous montrer le script ^^ j'aimerai l'appliquer a tous les bigbys plz. NWScript :
//:///////////////////////// ///////////////////// //:: Bigby's Crushing Hand //:: [x0_s0_bigby5] //:: Copyright (c) 2002 Bioware Corp. //:///////////////////////// //////////////////// /* Similar to Bigby's Grasping Hand. If Grapple succesful then will hold the opponent and do 2d6 + 12 points of damage EACH round for 1 round/level */ //:///////////////////////// //////////////////// //:: Created By: Brent //:: Created On: September 7, 2002 //:///////////////////////// //////////////////// //:: VFX Pass By: #include "x0_i0_spells" void RunHandImpact(int nSecondsRemaining, object oTarget) { if (GetIsDead(oTarget) == FALSE) { if (nSecondsRemaining % 6 == 0) { int nDam = MaximizeOrEmpower(6,2,GetMetaMagicFeat(), 12); effect eDam = EffectDamage(nDam, DAMAGE_TYPE_BLUDGEONING); effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } --nSecondsRemaining; if (nSecondsRemaining > 0) { DelayCommand(1.0f,RunHandImpact(nSecondsRemaining,oTarget)); } } // Note: if the target is dead during one of these second-long heartbeats, // the DelayCommand doesn't get run again, and the whole package goes away. // Do NOT attempt to put more than two parameters on the delay command. They // may all end up on the stack, and that's all bad. 60 x 2 = 120. } void main() { //Declare major variables object oTarget = GetSpellTargetObject(); int nDuration = GetCasterLevel(OBJECT_SELF)* 1,5; int nMetaMagic = GetMetaMagicFeat(); //Check for metamagic extend if (nMetaMagic == METAMAGIC_EXTEND) //Duration is +100% { nDuration = nDuration * 1,5; } if(!GetIsReactionTypeFriendly(oTarget)) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BIGBYS_CRUSHING_HAND, TRUE)); //SR if(!MyResistSpell(OBJECT_SELF, oTarget)) { //edited part. //if(!MySavingThrow(SAVING_THR OW_REFLEX, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_SPELL, OBJECT_SELF, GetRandomDelay())) { int nCasterModifier = GetCasterAbilityModifier(OBJECT_SELF); int nCasterRoll = d20(1) + GetCasterLevel(OBJECT_SELF)* 1,5; int nTargetRoll = GetAC(oTarget); // * grapple HIT succesful, if (nCasterRoll >= nTargetRoll) { // * now must make a GRAPPLE check // * hold target for duration of spell nCasterRoll = d20(1) + nCasterModifier + GetCasterLevel(OBJECT_SELF); nTargetRoll = /*NEED GetBaseAttackBonus*/ GetBaseAttackBonus(oTarget) + GetSizeModifier(oTarget) + GetAbilityModifier(ABILITY_STRENGTH); if (nCasterRoll >= nTargetRoll) { effect eKnockdown = EffectParalyze(); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND); effect eLink = EffectLinkEffects(eKnockdown, eDur); eLink = EffectLinkEffects(eLink, eHand); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); // * now do damage each round nDuration = nDuration * 6; if (GetIsImmune(oTarget, EFFECT_TYPE_PARALYZE) == FALSE) { RunHandImpact(nDuration, oTarget); } } } }// } } } Voila, vous avez maintenant la mm chose que moi, j'aimerai just que ca marche ^^ Marci a vous !!! PS : poste de scripteur a pourvoir ... _________________ * 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 |
Oui précisions, ca c'est le script queje veux modifier ... tel quel, toutes les bigbys passent sans souci ! or sur une arène ... rendez vous compte que la puissance du moindre mago
_________________ * 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... |
j'ai rien compris,
mais si tu remplace tout tes 1,5 par 2 alors ton script compile... _________________ 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 | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Ca confirme ma première impression alors, tu déclares ta variable en "int" c'est à dire un entier (un nombre sans virgule) or tu multiplie quelque chose par 1,5, c'est pas très logique et le résultat obtenu est forcément un chiffre avec virgule (un float).
Soit tu remplaces les 1,5 par 2 et là tu va multiplier un entier par un entier ce qui donne un entier, soit tu déclare ton résultat en nombre avec virgule (float) : 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. 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. _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Athanagorn Acolyte Messages: 38 |
Son problème, comme d'autres l'on déjà signalés, c'est surtout qu'il utilise des ","[/color] au lieu des [color=#FF0000]"." pour les notations des décimaux. Même si en français, on met des virgules, il faut penser que NWScript n'est pas du français... et que le séparateur décimal est le point(.).
La virgule, elle , est utilisée pour toute autre chose: séparer les arguments d'une fonction. C'est ce qui explique le message d'erreur rencontré. |
Revenir en haut | |
Siléphrael Grand Chevalier Messages: 122 Localisation: Toulouse |
j'ai tout testé ce que vous avez dit, mais rien ne marche, il refuse de compiler le script, jsui dégouté
Je vous remarcie quand mm ^^ je vais voir si qq1 d'autre pourrai m'aider, mais des forums regorgeants du Dieu scripteurs, y'en a pas 5 000 ... ^^ _________________ * 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 | |
alokhan Grand Chevalier Messages: 102 Localisation: Belgique, Nivelles |
Salut à tous,
Pour les virgule et point je suis d'acord n'avez vous jamais employer Autocad ?? et si on remplace par 2 le script compile attention il faut remplacer partout par 2 !!! Le script avec 2 à la place de 1.5 : NWScript : #include "x0_i0_spells" void RunHandImpact(int nSecondsRemaining, object oTarget) { if (GetIsDead(oTarget) == FALSE) { if (nSecondsRemaining % 6 == 0) { int nDam = MaximizeOrEmpower(6,2,GetMetaMagicFeat(), 12); effect eDam = EffectDamage(nDam, DAMAGE_TYPE_BLUDGEONING); effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } --nSecondsRemaining; if (nSecondsRemaining > 0) { DelayCommand(1.0f,RunHandImpact(nSecondsRemaining,oTarget)); } } // Note: if the target is dead during one of these second-long heartbeats, // the DelayCommand doesn't get run again, and the whole package goes away. // Do NOT attempt to put more than two parameters on the delay command. They // may all end up on the stack, and that's all bad. 60 x 2 = 120. } void main() { //Declare major variables object oTarget = GetSpellTargetObject(); int nDuration = GetCasterLevel(OBJECT_SELF)* 2; int nMetaMagic = GetMetaMagicFeat(); //Check for metamagic extend if (nMetaMagic == METAMAGIC_EXTEND) //Duration is +100% { nDuration = nDuration * 2; } if(!GetIsReactionTypeFriendly(oTarget)) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BIGBYS_CRUSHING_HAND, TRUE)); //SR if(!MyResistSpell(OBJECT_SELF, oTarget)) { //edited part. //if(!MySavingThrow(SAVING_THR OW_REFLEX, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_SPELL, OBJECT_SELF, GetRandomDelay())) { int nCasterModifier = GetCasterAbilityModifier(OBJECT_SELF); int nCasterRoll = d20(1) + GetCasterLevel(OBJECT_SELF)* 2; int nTargetRoll = GetAC(oTarget); // * grapple HIT succesful, if (nCasterRoll >= nTargetRoll) { // * now must make a GRAPPLE check // * hold target for duration of spell nCasterRoll = d20(1) + nCasterModifier + GetCasterLevel(OBJECT_SELF); nTargetRoll = /*NEED GetBaseAttackBonus*/ GetBaseAttackBonus(oTarget) + GetSizeModifier(oTarget) + GetAbilityModifier(ABILITY_STRENGTH); if (nCasterRoll >= nTargetRoll) { effect eKnockdown = EffectParalyze(); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND); effect eLink = EffectLinkEffects(eKnockdown, eDur); eLink = EffectLinkEffects(eLink, eHand); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); // * now do damage each round nDuration = nDuration * 6; if (GetIsImmune(oTarget, EFFECT_TYPE_PARALYZE) == FALSE) { RunHandImpact(nDuration, oTarget); } } } }// } } } _________________ Alokhan [http] |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Voilà, ton script compile :
NWScript :
//////////////////////////// /////////////////// //:: Bigby's Crushing Hand //:: [x0_s0_bigby5] //:: Copyright (c) 2002 Bioware Corp. //////////////////////////// ////////////////// /* Similar to Bigby's Grasping Hand. If Grapple succesful then will hold the opponent and do 2d6 + 12 points of damage EACH round for 1 round/level */ //////////////////////////// ////////////////// //:: Created By: Brent //:: Created On: September 7, 2002 //////////////////////////// ////////////////// //:: VFX Pass By: #include "x0_i0_spells" void RunHandImpact(int nSecondsRemaining, object oTarget) { if (GetIsDead(oTarget) == FALSE) { if (nSecondsRemaining % 6 == 0) { int nDam = MaximizeOrEmpower(6,2,GetMetaMagicFeat(), 12); effect eDam = EffectDamage(nDam, DAMAGE_TYPE_BLUDGEONING); effect eVis = EffectVisualEffect(VFX_IMP_ACID_L); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } --nSecondsRemaining; if (nSecondsRemaining > 0) { DelayCommand(1.0f,RunHandImpact(nSecondsRemaining,oTarget)); } } // Note: if the target is dead during one of these second-long heartbeats, // the DelayCommand doesn't get run again, and the whole package goes away. // Do NOT attempt to put more than two parameters on the delay command. They // may all end up on the stack, and that's all bad. 60 x 2 = 120. } void main() { //Declare major variables object oTarget = GetSpellTargetObject(); float nDuration = GetCasterLevel(OBJECT_SELF)* 1.5; int nMetaMagic = GetMetaMagicFeat(); //Check for metamagic extend if (nMetaMagic == METAMAGIC_EXTEND) //Duration is +100% { nDuration = nDuration * 1.5; } if(!GetIsReactionTypeFriendly(oTarget)) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BIGBYS_CRUSHING_HAND, TRUE)); //SR if(!MyResistSpell(OBJECT_SELF, oTarget)) { //edited part. //if(!MySavingThrow(SAVING_THR OW_REFLEX, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_SPELL, OBJECT_SELF, GetRandomDelay())) { int nCasterModifier = GetCasterAbilityModifier(OBJECT_SELF); float nCasterRoll = d20(1) + GetCasterLevel(OBJECT_SELF)* 1.5; int nTargetRoll = GetAC(oTarget); // * grapple HIT succesful, if (nCasterRoll >= IntToFloat(nTargetRoll)) { // * now must make a GRAPPLE check // * hold target for duration of spell nCasterRoll = d20(1) + IntToFloat(nCasterModifier) + GetCasterLevel(OBJECT_SELF); nTargetRoll = /*NEED GetBaseAttackBonus*/ GetBaseAttackBonus(oTarget) + GetSizeModifier(oTarget) + GetAbilityModifier(ABILITY_STRENGTH); if (nCasterRoll >= IntToFloat(nTargetRoll)) { effect eKnockdown = EffectParalyze(); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); effect eHand = EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND); effect eLink = EffectLinkEffects(eKnockdown, eDur); eLink = EffectLinkEffects(eLink, eHand); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(FloatToInt(nDuration))); // * now do damage each round nDuration = nDuration * 6; if (GetIsImmune(oTarget, EFFECT_TYPE_PARALYZE) == FALSE) { RunHandImpact(FloatToInt(nDuration), oTarget); } } } }// } } } C'est bien un problème d'entier et de décimal : 1 - si tu multiplie un entier par un nombre décimal ça donne un décimal (float), il faut donc déclarer le résultat comme décimal. 2 - si tu compare un décimal avec un entier ça marche pas, il faut convertir tes entiers en décimal : IntToFloat() 3 - quand tu utilises ton résultat nDuration comme nombre de round, il faut que ce soit ce soit un entier, il faut donc le reconvertir FloatTiInt() Voilà comme ça ça passe _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Siléphrael Grand Chevalier Messages: 122 Localisation: Toulouse |
je crains que vous ne me détestiez ... mais j'aimerai que le jet de reflexe ca soit : reflexe de la cible + bonus de Dex CONTRE 3D8 + 1/2 levels de mago + 1/2 bonus de lanceur de sort ...
Je vais tenter d'appliquer les inttofloat et autres ^^ mais je crains encore me planter lamentablement ^^ _________________ * 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 | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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