[résolu] Faire boire une potion à un PNJ ?

Répondre
Partager Rechercher
J'aimerrrrais bien, mais j'peux point...


Je n'arrive pas à trouver comment forcer un PNJ à boire une potion. Pourtant, j'ai sacrément creusé les scripts existants (comme celui là par exemple: X0_I0_TALENT) mais sans succès...

Quelqu'un aurait-il une idée ?

edit Mastokk\ allez vendu, c'est résolu !

Mais... mais ! NOOOOOOOOON !
J'ai un trou là, il n'existe pas une fonction qui permet de faire utiliser un objet ?

edit\
J'ai rouvé ça sur le lexicon

Citation :
DrinkIt(object)

Makes a creature speak a string that signifies they drank alcohol.

void DrinkIt(
object oTarget
);

Parameters

oTarget

The creature to speak a drinking message.

Description

Makes a creature speak a string that signifies they drank alcohol.


Remarks

This use to cause a visual effect, however it currently just makes oTarget speak a string.

Requirements

#include "nw_s3_alcohol"
Version

1.22
Example

// 1.24 source for this function
void DrinkIt(object oTarget)
{
// AssignCommand(oTarget, ActionPlayAnimation(ANIMATION_FIREFORGET_DRINK));
AssignCommand(oTarget,ActionSpeakStringByStrRef(10499));
}
__________________
Journaleux psycho-rigide.
Merci Mastokk, mais j'ai regardé ça aussi. En fait, ça simule un effet de boisson alcoolisée. Ce sont seulement des effets visuels.
Il n'y a aucune fonction permettant simplement de forcer un PNJ quelconque à boire une potion.
J'ai testé les fonctions de 3eme sous-couche comme TalentBuffSelf() (et toutes celles du fichier include "X0_I0_TALENT").
Elles sont sensées régir l'IA du jeu, et tout de suite on comprend mieux pourquoi tout est bancal

La seule solution est apparemment de tout faire à l'os. Simuler l'aspect visuel (comme dans DrinkIt() ), appliquer les effets par des EffectXXX etc...

Bref, c'est la joie.
Considérons le fil comme "résolu"


EDIT:

Accessoirement, pour ceux qui peuvent se contenter d'un "work around", comme le dit lui même son auteur, il y a ce "système" sur le vault. Moi, il ne me convient pas. Pas assez souple. Il demande de l'adapter à chaque potion présente dans le module car il est basé sur une liste de potions existantes.
je trouve etonnant qu'on ne puisse pas, car dans le script par defaut du ondamaged il doit y avoir un truc.

à chaque fois qu'un PNJ est mortellement blessé il se soigne chez moi, or il s'agit d'un script par defaut, j'ai rien fait pour en tout cas.

D'ailleurs au départ anecdote rigolote mes vampires avait des potions de soins et dc se suicidaient tout seul mdr !


Bref faudrait chopper ce que fait le script en question dans ce cas de figure (ondamaged + on defined event ?)

puis généraliser la chose à d'autres potions

J'ai rien vu d'impossible encore avec nwn, c'est là ou la durée de vie sera enorme je pense.

Pense que à chaque fois qu'on a dit c'est pas possible ya toujours eu un petit malin pour trouver une ruse.
(ex : fctions externes Mysql qui permettent de changer les parts d'un PJ en jeu !!!)

En ce moment je fais pleins d'autres trucs pour avoir le tps de me pencher sur la question mais fouille déjà cette piste

Euh ... en fait j'ai trouvé ^^

essaye ça :P

http://www.nwnlexicon.com/compiled/f...tbuffself.html
Comme je l'ai dit plus haut, j'ai testé toutes ces fonctions et même d'autres. Aucune d'elles ne répond à ce besoin. Elles ne sont pas souples pour deux sous et ne permettent en aucun cas de forcer un PNJ quelconque à boire une potion indéterminée qui serait bêtement placée dans l'inventaire. J'ai remonté la piste aussi loin que j'ai pu, et je n'ai rien trouvé.
Moralité, la technique utilisée doit être celle que j'ai finalement utilisée, mais codée en dur. Dommage de devoir refaire tout ça

C'est parce que c'est impossible à faire de façon simple que j'ai annoté le fil comme [insoluble] puisqu'il faut tout recoder à l'os.
Dans l'IA Bioware, l'utilisation de potions (de soins ou de buffs) par les créatures PNJ est géré par la fonction: TalentBuffSelf()
Comme toute utilisation de fonctions de type IA, c'est lié au fameux DetermineCombatRound et à toutes ses constantes Hardcoded...

Tu n'as pas de fonction "ActionUsePotion" ou ce genre de truc, pas la peine de chercher, ça n'existe pas.

Donc, faire boire une potion à un PNJ en-dehors d'un combat, c'est pas gagné...
Bah, si c'est "faire comme si le PNJ buvait une potion", tu lui colles un anim où il boit la potion, et tu couples ça avec un effet random.

ça fera "comme si"
Deyo, le flood, même en période de fêtes, n'est pas très toléré, surtout sur Maskado et en présence du pogneur, qui plus est.

Mais sinon, ce que j'ai suggéré fonctionne:

Tu fais exécuter une ANIMATION_FIREFORGET_DRINK à ton PNJ, et tu lui colles un ApplyEffectToObject avec l'effet de potion désiré.
N'oublie pas d'utiliser un SignalEvent, histoire de leurrer complètement le joueur, et le tour est joué
Bah, en combat => TalentHealingSelf

Pas en combat => Anim + ApplyEffect

L'important, c'est de donner l'effet au joueur, peu importe ce que le script fait derrière. Tu sais, les tas de pixels dans le jeu, ils ne lancent pas des vrais sorts hein... c'est pour de faux
Citation :
Publié par Azmathiel
MAIS NON ON PEUT PAS !

Y a rien qui fasse boire une potion à un PNJ, prouvez moi le contraire et j'accepte ! non mais !

Allez fais toi violence et imite
__________________
Journaleux psycho-rigide.
Répondre

Connectés sur ce fil

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