Page 1 sur 1

RESOLU [SCRIPT] - Créature utilise furtivité comme son maître

Posté : mar. 18 juil. 2017, 23:48
par Faust
Bonsoir,

Je voudrai que la créature invoquée par mon personnage utilise furtivité lorsque mon héro l'utilise, et ce tout en suivant mon héro.

J'ai essayé le script suivant:


This action instructs the active creature to attempt to Hide in Shadows. This action can be used for any creature (not just thieves) though success in hiding is dependent on points in the Stealth skill. A hidden creature is treated as STATE_INVISIBLE.

IF
!See([EVILCUTOFF])
OR(2)
!StateCheck(Myself,STATE_INVISIBLE)
!StateCheck(Myself,STATE_IMPROVEDINVISIBLITY)
THEN
RESPONSE #100
Hide()
END

en modifiant:

IF
See(LastSummonerOf(Myself))
StateCheck(LastSummonerOf(Myself),STATE_INVISIBLE)
THEN
RESPONSE #100
Hide()
MoveToObjectFollow(LastSummonerOf(Myself))
END

Le problème est qu'après avoir utilisé la furtivité correctement une fois, la créature ne réutilise pas malgré que mon héro le fasse mais continue à le suivre, et ce tout le temps de l'invocation de la créature.

Posté : mer. 19 juil. 2017, 07:44
par Freddy_Gwendo
Jamais testé ce genre de scripts, mais mon petit doigt me dit que ça provient de l'action MoveToObjectFollow(LastSummonerOf(Myself)).

Pour le confirmer. Teste ton script en laissant ton perso immobile (puis en commentant cette ligne). Si j'ai vu juste, la créature convoquée agira comme prévu. Il faudra alors trouver une parade à cette action.

De mémoire, je dispose d'un script (écrit il y a longtemps) permettant à un PNJ de suivre le groupe dans un donjon. Je pourrai te le rechercher ce soir.

Posté : mer. 19 juil. 2017, 08:28
par Pélagie
Faust a écrit :Bonsoir,

Je voudrai que la créature invoquée par mon personnage utilise furtivité lorsque mon héro l'utilise, et ce tout en suivant mon héro.

J'ai essayé le script suivant:


This action instructs the active creature to attempt to Hide in Shadows. This action can be used for any creature (not just thieves) though success in hiding is dependent on points in the Stealth skill. A hidden creature is treated as STATE_INVISIBLE.

IF
!See([EVILCUTOFF])
OR(2)
!StateCheck(Myself,STATE_INVISIBLE)
!StateCheck(Myself,STATE_IMPROVEDINVISIBLITY)
THEN
RESPONSE #100
Hide()
END

en modifiant:

IF
See(LastSummonerOf(Myself))
StateCheck(LastSummonerOf(Myself),STATE_INVISIBLE)
THEN
RESPONSE #100
Hide()
MoveToObjectFollow(LastSummonerOf(Myself))
END

Le problème est qu'après avoir utilisé la furtivité correctement une fois, la créature ne réutilise pas malgré que mon héro le fasse mais continue à le suivre, et ce tout le temps de l'invocation de la créature.
Oui, comme le souligne Freddy, je pense que le problème vient du fait que le MoveObject annule le state (Hide).
Essaye de séparer ton script en deux parties:

IF
See(LastSummonerOf(Myself))
StateCheck(LastSummonerOf(Myself),STATE_INVISIBLE)
THEN
RESPONSE #100
Hide()
Continue()
END

IF
StateCheck(myself,INVISIBLE)
THEN
RESPONSE #100
MoveToObject(LastSummonerOf(Myself))
MoveToOffset([2.3]) //là tu mets la valeur que tu veux, cela permet à la créature de ne pas coller aux fesses du perso mais de rester un peu éloignée
END

Si ça ne marche pas, tu peux toujours créer un sort permanent d'invisibilité, que tu déclencheras via script sur la créature lorsque le perso sera furtif, et que tu annuleras de la même manière lorsque le perso retournera en state normal.

Posté : mer. 19 juil. 2017, 08:55
par Freddy_Gwendo
J'ai un doute sur l'utilisation de la condition

Code : Tout sélectionner

IF
    See(LastSummonerOf(Myself))
    StateCheck(LastSummonerOf(Myself),STATE_INVISIBLE)
THEN
La logique voudrait qu'elle ne soit jamais remplie : on ne voit pas l'invisible !

Mais je peux me tromper, les lois de l'IE étant ce qu'elles sont...

Posté : mer. 19 juil. 2017, 15:00
par Faust
Freddy_Gwendo a écrit :Jamais testé ce genre de scripts, mais mon petit doigt me dit que ça provient de l'action MoveToObjectFollow(LastSummonerOf(Myself)).

Pour le confirmer. Teste ton script en laissant ton perso immobile (puis en commentant cette ligne). Si j'ai vu juste, la créature convoquée agira comme prévu. Il faudra alors trouver une parade à cette action.

De mémoire, je dispose d'un script (écrit il y a longtemps) permettant à un PNJ de suivre le groupe dans un donjon. Je pourrai te le rechercher ce soir.
Tu as raisons! Mais du coup la créature ne suis plus le personnage et reste indéfiniment invisible (furtive). Si ça ne te dérange pas avec plaisir, ça me servira surement, mais puisque j'ai trouvé une solution, je ne veux pas te faire fouiller pour rien, à l'occasion tu peux me l'envoyer et je le garde en mémoire? ^^

Pélagie a écrit :Oui, comme le souligne Freddy, je pense que le problème vient du fait que le MoveObject annule le state (Hide).
Essaye de séparer ton script en deux parties:

IF
See(LastSummonerOf(Myself))
StateCheck(LastSummonerOf(Myself),STATE_INVISIBLE)
THEN
RESPONSE #100
Hide()
Continue()
END

IF
StateCheck(myself,INVISIBLE)
THEN
RESPONSE #100
MoveToObject(LastSummonerOf(Myself))
MoveToOffset([2.3]) //là tu mets la valeur que tu veux, cela permet à la créature de ne pas coller aux fesses du perso mais de rester un peu éloignée
END

Si ça ne marche pas, tu peux toujours créer un sort permanent d'invisibilité, que tu déclencheras via script sur la créature lorsque le perso sera furtif, et que tu annuleras de la même manière lorsque le perso retournera en state normal.
Super en adaptant ton script j'ai réussi à tout garder:

IF
See(LastSummonerOf(Myself))
StateCheck(LastSummonerOf(Myself),STATE_INVISIBLE)
THEN
RESPONSE #100
Hide()
Continue()
END

IF
StateCheck(Myself,STATE_INVISIBLE)
THEN
RESPONSE #100
MoveToObjectFollow(LastSummonerOf(Myself))
END

-> La créature se met invisible comme son invocateur, puis le suit tout le temps de son invisibilité. MovetoObjectFollow permet de garder une distance entre la créature et l'objet suivit contrairement à MoveToObject qui fait que la créature percute l'objet.




IF
ActionListEmpty()
See(LastSummonerOf(Myself))
THEN
RESPONSE #100
MoveToObjectFollow(LastSummonerOf(Myself))
END


-> ensuite j'ai mis ce script pour que la créature continue à suivre l'invocateur même si celui-ci n'est pas invisible.

Freddy_Gwendo a écrit :J'ai un doute sur l'utilisation de la condition

Code : Tout sélectionner

IF
    See(LastSummonerOf(Myself))
    StateCheck(LastSummonerOf(Myself),STATE_INVISIBLE)
THEN
La logique voudrait qu'elle ne soit jamais remplie : on ne voit pas l'invisible !

Mais je peux me tromper, les lois de l'IE étant ce qu'elles sont...
Je suis d'accord sur ce point, c'est pour ça que ma créature à la capacité de voir ce qui est invisible (comme les dragons, vu que c'est plus ou moins un dragon :D ).

Un grand merci pour votre précieuse aide!