Aller au contenu


[résolu Mais Pas Explicité] Cast Par Activator


  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 alliop

alliop

    Renaissance de l'art magique.


Posté 20 octobre 2006 - 18:48

... très étrange.

Effet recherché :
- simuler le cast d'un sort par une créature qui ne caste pas "naturellement" (familier non-humano).
- l' effet du sort est lui-même une simulation de téléportation ( ->positionCell "telle ou telle auberge" sur ordre par dialogue... cette partie fonctionne sans problème, je me contente de la timer pour que la disparition de la bestiole ait lieu un peu après la fermeture de la fenêtre dialogue avec le son "mysticism cast", et non pendant).

Bref le but est simplement d'ajouter un effet visuel.

Pour info voilà le script (pompé sur un script de Nervall utilisé pour d'autres sorts), il tourne, toutes les messageboxs de test sont validées à chaque fois.....
Spoiler

..... mais voilà l'étrangeté : le sort n'est casté que lors du premier placement de l'activator  :rolleyes:

Les fois suivantes, alors que bien évidemment c'est une nouvelle instance de l' activator qui est placée chaque fois, même dans une autre cell, même en attribuant le script à un PNJ mage invisible, à un editor marker, à une pièce d'or, à un raton-laveur, même en modifiant le sort... le script tourne chaque fois nickel, mais le sort n'est plus casté.

La fée Galia, elle, se caste ce sort autant de fois qu'il est nécessaire depuis son propre script local, mais si j'en crée un double et m'en sers en guise d'activator, idem, ce n'est casté qu'une seule fois dans ces conditions là :)

Je peux sans doute m'en sortir autrement (en plaçant un static VFX géré par un global par ex), mais avouez que c'est turlupinant, non? Connaissez-vous ce problème? Voyez-vous une erreur?

Modifié par alliop, 21 octobre 2006 - 02:01.

"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio


#2 chef

chef

Posté 20 octobre 2006 - 20:12

Tu n'aurais pas oublié la ligne set timer to 0 ?

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#3 Nenfëa

Nenfëa

    Le poisson bavard de Kalendaar


Posté 20 octobre 2006 - 20:23

Hello ! :)

Previsualisation du code
elseif ( sortlance == 1 )
    messagebox "cast RG_go"
    set sortlance to 2
    Cast "RG_go" "Nova_V2_cast"
    return
Le problème vient probablement de la non-unicité de la cible du sort. La première fois que tu places un objet de type "Nova_V2_cast", pas de soucis, l'ID correspond à un objet unique sur lequel le sort est normalement lancé.
Mais la seconde fois, il y a deux objets de ce type dans le jeu : je ne sais pas si le second activateur tente de cibler le premier ou s'il ne tente même pas de le lancer faute de trouver une cible valide, mais je pense fort que le problème vient de là ! :)

Pour le résoudre, je pense que tu peux lancer le sort depuis toujours un activateur "Nova_V2_cast" placé pour l'occasion, mais viser une vraie ID unique (le joueur, ou le familier ?). A tester ! :)

Edit : puisque tu es de toutes façons en Tribunal requis, il y a une solution bien plus simple : utiliser la fonction ExplodeSpell, qui fait d'office lancer le sort depuis le lanceur sur lui même ! :rolleyes:

Edit2 : pas si sur, finalement... :?

UESP dit :

Use "SetDelete, 1" to mark on object to be deleted/not saved in a save game. Objects that have been put in the world with the editor (or perhaps those already saved in the game) seem to stay in place when it's used on them, until a save/load has happened, and a "SetDelete, 0" could be used on them to undo the effect. Items that are placed however, using PlaceAtPC, or PlaceItem, are immediately deleted from the world.
Il semble que le premier objet aurait du être vraiment effacé avec SetDelete, et non pas juste marqué comme "à ne pas sauvegarder et à retirer de la sauvegarde" comme je le pensais. :(
Tu peux toujours tester la solution du ExplodeSpell (qui ne changera de toutes façons pas le résultat si le problème ne vient pas de là), mais sans garanties ! :shock:
Nenfëa

- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!

Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!

Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !

#4 alliop

alliop

    Renaissance de l'art magique.


Posté 21 octobre 2006 - 01:55

J'avais essayé aussi avec "explodeSpell" mais ça ne fonctionnait pas non plus, mais c'était je crois un autre algo ("je crois" parceque je commence à ne plus savoir où j'en suis, depuis quelque 18heures dans le camboui).
Vais retester avec celui-là.
Merci pour les précisions sur "setDelete".... tout ça est d'autant plus étrange que le même fonctionnement marche à répétition sans problème avec des sorts lancés dans d'autres conditions (fortifySecurity + fortifySneak), et dans la même cell (ce qui prouverait donc que l'objet "placeAt" est bel et bien effacé, qu'il n'y a donc pas de confusion sur la cible ; EDIT : d'ailleurs, la fée Galia elle aussi est delete/placeAtPC à chaque changement de cell -pour éviter les dégats de chute interieur/extérieur et les pertes de suivi-, et elle se caste toujours son sort sans aucun problème.. ah oui et aussi : avec cette méthode il arrive aux familiers d'exister dans le jeu en plusieurs exemplaires -suite à des ordres successifs "va à telle auberge" puis "rappel télépathique" par ex-, chaque exemplaire étant numéroté et effacé dès que le joueur entre dans la cell s'il n'est pas le dernier appelé... et Galia se caste quand même son sort -mais elle est humano- /edit).

@ Chef : inutile de remettre "timer" à 0, puisque la variable n'est plus incrémentée à partir de >= 2 et qu'elle ne ressert plus.

*************

EDIT 21/10 à 1h 40

:?   :(   :)

C'est résolu. Je n'ai pas compris pourquoi ni comment, mais ça fonctionne, autant de fois qu'on veut, à répétition, sans soucis.
Les problèmes venaient bien du script précédent (qui pourtant tourne aussi).

Ca fonctionne avec ce script là :
Spoiler

Les seules différences sont qu'il n'effectue pas de "setPos" aux coordonnées de la créature concernée (l'activator est placé à 128 de player par le result, soit à peu près à la distance de parole), et qu'il a un timer de 1 seconde après la fermeture du menu dialogues avant de caster le sort. (Et le sort est ciblé sur la créature et non pas sur l'activator lui-même, mais j'avais également essayé ça avec le script précédent et ça produisait le même symptôme du cast unique).

( Pour info : le "ExplodeSpell" a donné un résultat étrange : l'effet de sort restait "coincé" dans le sol et se re-castait tout seul en boucle, même après le disable/delete -supposés- de l'activator.  :rolleyes: ...  )

Pardon pour le forcing sur la notification de nouveau message plutôt qu'un véritable "edit", mais j'ai trop envie de partager mon immense joie après une telle prise de tête.  :shock:
L'effet est tout à fait réussi, les familiers maintenant se téléportent aux auberges, après la fermeture du dialogue, dans la splendide auréole dorée (zonex5) de l'effet "ConjurationArea", avec les mêmes enchainements de sons que les téléportations des "interventions".... et je suis sûr que pratiquement personne ne se sert de cette requête "attends moi à l'auberge truc"!
:)

Modifié par alliop, 21 octobre 2006 - 01:59.

"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio


#5 alliop

alliop

    Renaissance de l'art magique.


Posté 24 octobre 2006 - 10:09

Pour info :

Décidément l'étrangeté se poursuit :

- Il s'avère que le moindre ajout de condition ou de commande dans le script modifie l'effet visuel du sort !!!!

- Remettre le corps "getpos/setpos" reproduit le bug initial : seule la première instance appelée de l'activator caste le sort, bien que le script tourne dans toutes.

- Ajoutant une seule ligne de code consistant à mettre à jour une globale sans aucune incidence directe dans le script, l'effet visuel change : au lieu de l'auréole concentrique de lumière de l'effet "invocation cast", il n'y a plus que les effet de particules associés plutôt au hit je crois (ou l'inverse) :huhu:

"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio


#6 Najah

Najah

    Rainbow Warrior


Posté 24 octobre 2006 - 10:28

heu... regarde dans le mod tapesserie le sript de dispartion de gilbert ainsi que les scripts des baton de dynamite de Fandorn  :huhu:

Le premier n'est pas un cast mais un ajout d'effet visuel qui diot etre adaptable via setpos, le deuxième marche avec explodeSpell

Gamall, le 08.08.2007 à 15:10, dit :

Je l'ai toujours dit, moi, que Kitty est l'arme absolue. Plus fort que les baffes

#7 alliop

alliop

    Renaissance de l'art magique.


Posté 24 octobre 2006 - 15:13

merci :paladin:
Ce n'est pas un problème de script, ça marche tout à fait bien en l'état. Je rapportais simplement cette étrangeté, que je n'ai jamais vue se produire avec d'autres effets du même genre (la même structure de script fonctionne sans ce problème dans un autre effet). Je verrai ce que ça donne avec les algos de tapesserie s'il sont différents (je suppose qu'ils ne doivent pas l'être de beaucoup).

"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio


#8 Najah

Najah

    Rainbow Warrior


Posté 25 octobre 2006 - 15:33

Le seul truc bizarre que j'ai vu dans ce genre, c'est car le personnage était trop loin de la créature quand l'effet etait lancé, mais tu marque qu'il est à 128....

Autre explication : ton pc rame, ou trop de scripts en meme temps... (vaut mieux un long est unique que plein de petit sans return...)

Gamall, le 08.08.2007 à 15:10, dit :

Je l'ai toujours dit, moi, que Kitty est l'arme absolue. Plus fort que les baffes

#9 alliop

alliop

    Renaissance de l'art magique.


Posté 25 octobre 2006 - 16:00

Pas ça non plus. Je suis à 30 fps de moyenne dans cette zone -extérieur temple Daedrique- avec toutes options graph à fond (115 max dans une pièce vide) et tout est parfaitement fluide, aucun autre script de Nova ne tourne à ce moment et je n'ai aucun autre esp chargé (et j'essaye d'optimiser les scripts - dans les limites de mes compétences -, le script local du familier qui fait plus de 200 lignes ne bouffe pas une seule fps ; celui qui pose problèmes est ci-dessus, tu peux voir qu'il est -je pense- correct ; s'il ne l'est pas les corrections et conseils sont bienvenus :lol: ).
Ceci étant dit seule l'énigme m'interresse encore, puisque le script actuel tourne suffisamment bien (sans le placement de l'activator aux coordonnées exactes, mais en situation de dialogue ce n'est pas grave, distance et axe ne jouent pas assez pour qu'un petit décallage soit vraiment très génant).

Modifié par alliop, 25 octobre 2006 - 16:15.

"Bienvenue à toi, lent homme lié, poussif tresseur des vitesses."
Alain Damasio





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)