un sort lancé par une statue (comment le rendre efficace)

Répondre
Partager Rechercher
ben voila j'ai fait un dialogue ou le PJ a 3 choix

a chacun des choix le script lance aléatoirement un effet sur le joueur..
et donc je lui lance mise a mal qui est un des effet qu'on m'a demander d'appliquer.
j'utilise ActionCastSpellAtObject.

le sort se lance bien mais cela déclenche un attaque de contact de la statue sur le joueur qui est donc vraiment faible (+ 0).. du coup le sort ne va passer que très rarement.

comment augmenté cette attaque de contact sachant que c'est la statue qui lance le sort ?

ou alors comment etre sur que mise a mal touchera a chaque fois le joueur ? (en appliquant l'effet sur le joueur directement peut etre ?)

pis une petite dernière question, quel est le sort guérison suprême dans la liste des spell_ ?


edit mastokk : petites corrections dans le titre.
N'utilise pas "ActionSpellCastAt", mais plutôt "ApplyEffectToObject" visant "GetPCSpeaker", et tu pourras y mettre l'effet que tu veux.
ben j'ai bien l'effet certe... mais que l'effet...

il n'y pas un moyen de lancer un sort sans jet de sauvgarde plutot..

donc quel type d'effet dois-je lui appliquer de manière précise ?
je prend le VFX et je lui applique un ExtraordinaryEffect ?
(j'essaye en prenant un Magicaleffect de mon VFX donc...)
[€dite] bon comment appliquer les effet d'un sort (dommage compris donc) ?
du coup je remet mon ActionCastSpellAtObject



je cherche toujours le sort de guerrison supreme aussi dans la liste des SPELL_
il y a les critical wound etc.. mais il est pas la..
dans les greater je vois le vois pas non plus..
Lexicon est ton ami....

Tu veux quoi exactement ? Que ta statue fasse des jolis gestes et la belle anim de lancement de sort ?
Ouvre le script associé et prend le VFX et l'effet, un LinkEffect et un ApplyEffect sur le PJ sans passer par un MySavingThrow ou autre MyResist, et voilà.... c'est simple pour un scripteur pourtant

Et pour ton sort: SPELL_HEAL

Lexicon est décidément ton ami.... http://www.nwnlexicon.com/
Citation :
Publié par Delphinea/NekCheitan
Lexicon est ton ami....

Tu veux quoi exactement ? Que ta statue fasse des jolis gestes et la belle anim de lancement de sort ?
quand même pas lol
Citation :
Publié par Delphinea/NekCheitan
Ouvre le script associé et prend le VFX et l'effet,
donc je prend le VXF "VFX_IMP_HARM"
Code PHP:

effect eHarm EffectVisualEffect(VFX_IMP_HARM); 

et maintenant si je l'applique il ne sera que visuel cette effet et rien de plus..
comment récupéré l'éffet du sort non visuel donc ses dégat etc...

Citation :
Publié par Delphinea/NekCheitan
un LinkEffect et un ApplyEffect sur le PJ sans passer par un MySavingThrow ou autre MyResist, et voilà.... c'est simple pour un scripteur pourtant

Et pour ton sort: SPELL_HEAL
ben c'est simple oui mais faut-il encore se souvenir de toute ses fonctions..
donc j'ai un effet visuel uniquement..
tu veut que je rajoute un effect damage et que je les lier tous les deux donc pour les appliquer ensemble.. par exemple :
Code PHP:

effect eDamage EffectDamage((GetCurrentHitPoints(oPC)-4));
effect eHarm EffectLinkEffects(eDamage,EffectVisualEffect(VFX_IMP_HARM)); 
bon ca devrait marcher ca mais je trouve la solution comment dire, pas joli..
si la fonction " ActionCastSpellAtObject" avait en parametre l'application ou non des jet de sauvgarde ca serait plus joli, beaucoup plus joli..
car avec les effet la j'applique plus le sort je le recrée bref je réinvente la roue..

en d'autre termes comment récupérer les effet non visuel du sort ?
Nan mais une fonction tu crois que c'est quoi ? C'est simplement un bout de code en nwscript, pas du binaire hein
Beaucoup de scripteurs recodent certaines fonctions Bioware à leur sauce, et ce n'est pas réinventer la roue, c'est adapter le code à son utilisation.
C'est ça l'avantage du scripting. Si tu ne devais faire qu'avec les fonctions Bioware... ça ne s'appelerait plus du script mais du cochage d'option dans des jolis menus... donc aucun intérêt pour un programmeur.
C'est la meilleure solution que te propose Delphinea, en plus c'est économique, car tu peux regrouper tes 3 effets aléatoire sous un seul scripte. Et tu sors celui qui va bien selon 1d3 par exemple.
Plus tard tu pourras meme affiner en ajoutant les paramètres de résistance magique (RM) ou de résistance au dégats de type x.
le sort applique ca : GetCurrentHitPoints(oPC)-4 ou - d4()..

je recode exactement ce que le sort fait je refait un code existant..(ou tu vois une adaptation la dedans toi ?) une bidouille tous au plus qui me fait dire "applique tes damage toi meme au lieu d'aller les chercher dans le spell.."
je trouverai ca plus propre d'aller les chercher dans le spell...
aprés c'est une histoire de gout..et de sémentique..

Citation :
Nan mais une fonction tu crois que c'est quoi ? C'est simplement un bout de code en nwscript, pas du binaire hein
a bon ?

tu sait je veut pas te contredire mais ca dépend ou tu te place coté humain ou coté processeur..., aprés ou avant la compilation du code aussi.

[edite] @ morethil oui ben ca les 3 effets alétoires son dans un seul script depuis déjà avant que je poste ce sujet..vu qu'ils sont alétoire pour les 3 réponses...
Citation :
je recode exactement ce que le sort fait je refait un code existant..(ou tu vois une adaptation la dedans toi ?) une bidouille tous au plus qui me fait dire "applique tes damage toi meme au lieu d'aller les chercher dans le spell.."
je trouverai ca plus propre d'aller les chercher dans le spell...
Oui c'est vrai, tu peux aussi demander à Bioware pourquoi ils n'ont pas mis un seul script pour tous les sorts, histoire de ne pas devoir écrire les fonctions associées aux sorts plus qu'une fois dans un module, comme ça on gagnera peut-être une nanoseconde dans le temps d'exécution

Citation :
a bon ?

tu sait je veut pas te contredire mais ca dépend ou tu te place coté humain ou coté processeur..., aprés ou avant la compilation du code aussi.
Oui oui, et la marmotte...
Citation :
Publié par Jorimad
ben voila j'ai fait un dialogue ou le PJ a 3 choix

a chacun des choix le script lance aléatoirement un effet sur le joueur..
et donc je lui lance mise a mal qui est un des effet qu'on m'a demander d'appliquer.
j'utilise ActionCastSpellAtObject.

le sort se lance bien mais cela déclenche un attaque de contact de la statue sur le joueur qui est donc vraiment faible (+ 0).. du coup le sort ne va passer que très rarement.

comment augmenté cette attaque de contact sachant que c'est la statue qui lance le sort ?

ou alors comment etre sur que mise a mal touchera a chaque fois le joueur ? (en appliquant l'effet sur le joueur directement peut etre ?)
Le faire lancer par un pnj invisible dont tu définiras judicieusement les caractéristiques et qui aura au choix une invisibilité suprême ou un effet Ghost au spawn ?
Citation :
Publié par Jorimad
pis une petite dernière question, quel est le sort guérison suprême dans la liste des spell_ ?


edit mastokk : petites corrections dans le titre.
Guérison suprême:
Code PHP:

   // Heal
   //:: [NW_S0_Heal.nss]
   //:: Copyright (c) 2000 Bioware Corp.
   //:://////////////////////////////////////////////
   //:: Heals the target to full unless they are undead.
   //:: If undead they reduced to 1d4 HP. 
EDIT:
Tu noteras au passage cette remarque dans le Lexicon au sujet de la fonction ActionCastSpellXXX() :

"Known Bugs

The variable nDomainLevel should define the caster level of the spell, but this variable is ignored.

When a henchman casts any one of the following three spells listed below on itself, the henchman loses all spell casting ability.
SPELL_EAGLE_SPLENDOR
SPELL_FOXS_CUNNING
SPELL_OWLS_WISDOM

As with all ActionCastSpellXXX, Ranger and Paladin spells do not work properley. nMetaMagic is ignored in the spell script (GetMetaMagicFeat() returns -1 in the spell script).

1.64 does fix the problem with sub-dial spells. These can now be cast correctly using these functions. It doesn't mention any fixes for the above issues however."
oui j'ai vu ca sur le lexicon francais...

et j'ai pensé au PNJ invisible durant ce poste même ^^..

mais bon non, la statue le lance bien seulement elle a aucun bonus sur une attaque de contact la statue...
avec ActionCastSpellAtObject le log me met :

la statue fait une attaque de contact : d20 + 0 donc..

hors mon perso teste level 15 faut un 19 pour que le sort passe (remarque cette statue est placé a un endroit pour bas level).

ben la solution d'appliquer un damage gethitpoint - 4 est éfficace certe.
mais arriver a récupéré sur le sort donc, son type de dommage...m'aurait faire faire un calcule en moins ...
pis au vu des fonction je me dit que ca doit etre faisable, mais bon je suis déja passé a autre chose.
Jorimad, un sort c'est un scripte avec plusieurs elements qui ont des effets différents selon qui est en face, pas seulement un effet unique.
Dans le cas de Harm, y'a l'effet de dommage négatif si la cible est vivante, mais ca devient de la guérison si la cible est undead.
L'effet est nul si le jet de touché est raté contre une armure de base 10 + dxt + dons (Le type d'armure ne compte pas pour toucher au contact il me semble)
L'effet est nul si le PJ a une RM qui bloque l'effet, nul si le PJ a une resistance au dégat assez élevée, etc.

Bref, le sort s'adapte a la cible à ses jets de protection, à sa RM, ses immunités, voir son alignement pour certains sorts ou son apparence.

Donc si tu enlève les partie concernant les mort vivants (vu que tes PJ ne sont pas des morts vivants) que tu oublie le jet de toucher, que tu compte pas la RM, et que tu outrepasse les immunités, tu adaptes bel et bien le script, plutot que de recopier le sort.

Au passage, c'est un forum d'entraide. Essaye d'être plus agréable avec ceux à qui tu demande de l'aide, sinon compte pas qu'ils t'en donnent.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés