Aller au contenu


Détecter/bloquer L'exécution D'un Script Local


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

#1 Rotten Borough

Rotten Borough

Posté 14 mai 2013 - 13:07

Une petite dévinette que je n'ai pas résolu malgré avoir passé MSfD au presse-agrume et un long crapahutage sur les forums :

1) Détecter l'exécution d'un script local :
Le test du ScriptRunning ne fonctionne que sur du global,
Le test du GetSoundPlaying ne fonctionnerait que s'il est ciblé par le player ou des NPC (mais je n'en suis pas certain),
Dans mon cas, le script est attaché à un activator.

2) Bloquer son exécution :
J'ai peur de ne pas comprendre parfaitement l'utilisation des Targeted Script :
"Object_ID"->StopScript "Script_ID"
Je croyais que le StopScript ne fonctionne que sur un script global.
Mais si cela marche sur du local, est-ce que "Object_ID" doit être l'objet auquel était déjà attaché le script local que l'on veut arrêter ?

(Docteur, est-ce que ce que je dis a un sens ?...mon dieu... :beat: )

#2 Korfandar

Korfandar

    Ch'ti dragon normand...dans son trou


Posté 14 mai 2013 - 13:46

1) Peux-tu expliquer ton besoin de détection ? Un script attaché à un activateur tourne forcément dès que le PJ est dans la cell. Il est simple de contrôler l'exécution de ce qu'il a à faire soit avec une variable locale si la condition d’arrêt est dans la même cell, soit globale soit lié à une entrée de journal.

2) Oui, il s'agit bien de l'id de ton activateur, mais il ne doit en exister qu'un seul exemplaire.

L'abus de SMS est dangereux pour l'élocution mentale

Le mod qui révèle (presque) tout sur les dwemers : Dwarmor

Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...


#3 Rotten Borough

Rotten Borough

Posté 14 mai 2013 - 14:34

C'est vraiment agréable de voir qu'il y a toujours de l'aide pour les moddeurs de Morro !
Merci beaucoup pour la réponse 2), c'est précis et je comprends enfin.

Pour le 1), je précise :
Je veux empêcher le script d'un sanctuaire de délivrer sa bénédiction. L'activateur est le "Furn_shrine_llothis_cure_01" et son script attaché est le "shrineLlothis"
Je ne pensais pas que tous les local scripts s'activaient quand le PJ est dans la cell,
pour un activateur, je pensais qu'un Activate du PJ était nécessaire...

#4 Troglodyte

Troglodyte

Posté 14 mai 2013 - 14:57

Je sais que ça m'arrive souvent de dire ça, et que ça arrive sans doute comme un cheveu sur la soupe, mais pourquoi ne pas contourner le problème ? une autre solution serait d'effacer ces autels pour les remplacer par d'autres.

Modifié par Troglodyte, 14 mai 2013 - 15:26.


#5 Kira

Kira

    Top-modeleuse...


Posté 14 mai 2013 - 16:40

Coucou, Rotten Borough...

En fait, l'important pour comprendre le fonctionnement des scripts est de bien réaliser la différence qu'il existe entre le déroulement d'un script et le déclenchement de son effet...

Prenons le cas d'un bouton qui déclenche une sonnerie, comme une sonnette de porte... Le script est un script local attaché au bouton et comportera normalement une instruction qui vérifie qu'on appuie dessus, ce qui, dans le cas où on appuie dessus, déclenche une deuxième instruction pour faire jouer le son, ce qui déclenchera une troisième instruction afin de prendre en compte le fait que le son a été joué, afin que ça ne se produise qu'une seule fois, sans que le son ne se mette à partir comme une mitraillette sans s'arrêter...

Donc, ce script démarre dès que tu entres dans la cellule où se trouve l'objet auquel il est attaché, mais il attend ton action pour déclencher son effet...

Et pour finir, le GetSoundPlaying ne peut être employé que par le joueur, mais la condition peut être utilisée dans le script attaché à un autre objet que le joueur... Pour résumer, un bouton ne peut pas entendre une sonnerie, mais il peut demander au joueur si, lui, il l'a entendu...

Mais dans le cas qui t'intéresse, celui d'un autel, remplacer un autel vanilla ou son script est une solution intrusive et dangereuse.. Je pense que tu aurais plutôt intérêt à placer un script déclenché par une étape de journal qui retire au joueur la bénédiction qu'il a reçue de l'autel tout en rajoutant une messagebox disant quelque chose dans le genre de "Bizarre, ça ne marche pas"...
Une fois l'entrée journal suivante atteinte, le script sera inactivé par un simple "stopScript"...
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#6 Korfandar

Korfandar

    Ch'ti dragon normand...dans son trou


Posté 14 mai 2013 - 18:09

Il faudrait que tu précises plus ce que tu veux faire, la désactivation est-elle permanente ou temporaire ? Si elle est temporaire, quelles conditions déterminent le début et la fin de la période ? Veux-tu avoir un message lors de la désactivation ou juste que rien ne se passe ?

L'abus de SMS est dangereux pour l'élocution mentale

Le mod qui révèle (presque) tout sur les dwemers : Dwarmor

Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...


#7 Rotten Borough

Rotten Borough

Posté 15 mai 2013 - 08:56

Bonjour à tous !

@Troglodyte : j'avais pensé à cette solution dans un second temps, mais je suis un infirme du graphisme,
rien que déplacer/remplacer les autels m'épuisait d'avance. Et, a priori, comme dit Kira, il faut éviter de toucher au jeu original.

@Kira : Merci beaucoup pour ton illustration du fonctionnement du script, j'ai connus des professionnels de l'enseignement
qui n'en étais pas capable... Pour l'usage du GetSoundPlaying, j'ai capté, ça pourrait simplifier les choses. Les sanctuaires
dunmer, après activation, propose une MessageBox et seulement après une bénédiction. Le GetSoundPlaying de l'école de guérision
permettrait d'arrêter le script au bon moment.

Là, j'ai un petit problème de compréhension :

Voir le messageKira, le 14 mai 2013 - 16:40, dit :

un script déclenché par une étape de journal qui retire au joueur la bénédiction qu'il a reçue de l'autel tout en rajoutant une messagebox disant quelque chose dans le genre de "Bizarre, ça ne marche pas"...
Une fois l'entrée journal suivante atteinte, le script sera inactivé par un simple "stopScript"...
Il me semble que tu suggères 2 entrées journal différentes, qui servent d'étapes successives. Je dois être obtus, je n'en comprends pas l'utilité.
Le "GetSound" testé et approuvé, suivi d'un StopScript ne suffit pas ?

@Korfandar : La désactivation serait permanente dans le mod. Les dunmers ont perdu le foi en Vivec, les sanctuaires se mettent à avoir des ratés. (Random global au début donc) Si Vivec, Sotha Sil et Cie étaient amenés à mourir, comme à la fin de Tribunal, les sanctuaires cesseraient belle et bien de fonctionner (plus de Random).
Il s'agit donc d'un StartScript, la MessageBox "Bizarre, ça ne marche pas" de Kira conviendrait tout à fait.
Merci beaucoup Korfandar, j'ai presque l'impression que tu vas me créer le script que je demande, je n'en espère pas tant !

En tout cas, merci beaucoup pour votre aide, j'ai bon espoir d'y arriver !

Modifié par Rotten Borough, 15 mai 2013 - 09:54.


#8 Kira

Kira

    Top-modeleuse...


Posté 15 mai 2013 - 12:15

Coucou, Rotten Borough, c'est encore moi....

Voir le messageRotten Borough, le 15 mai 2013 - 08:56, dit :

Là, j'ai un petit problème de compréhension :

Voir le messageKira, le 14 mai 2013 - 16:40, dit :

un script déclenché par une étape de journal qui retire au joueur la bénédiction qu'il a reçue de l'autel tout en rajoutant une messagebox disant quelque chose dans le genre de "Bizarre, ça ne marche pas"...
Une fois l'entrée journal suivante atteinte, le script sera inactivé par un simple "stopScript"...
Il me semble que tu suggères 2 entrées journal différentes, qui servent d'étapes successives. Je dois être obtus, je n'en comprends pas l'utilité.
Le "GetSound" testé et approuvé, suivi d'un StopScript ne suffit pas ?
Cette proposition des deux entrées de journal n'est pas utile dans ton cas... En fait, je pensais que tu voulais faire quelque chose de temporaire, dans le genre "Les dieux sont malades et les autels ne fonctionnent pas... Prends vite cette épée magique et va sauver Hyrule..."
Mais si c'est définitif, par définition, il n'y a pas besoin de l'arrêter...

En examinant ce que tu veux faire, je pense que, plutôt que de passer par tout un ensemble de scripts contrôlant si ce qui doit être fait a été fait ou si ce qui devra être fait ne sera plus à faire, tu aurais plutôt intérêt à prendre la solution que les puristes nomment escroquerie mais que les gens du commun appellent pratique...

Tout ce script démarre quand tu actives l'autel de Llothis, donc, et c'est logique, il ne démarrera pas si cet autel n'est pas activé...
Nous avons déjà convenu qu'enlever des objets d'origine c'était mal, mais il n'a rien été dit sur le fait de les cacher...
Donc, si tu poses sur ton autel un autre autel un peu plus grand, tu pourras attacher à ton nouvel autel le script que tu souhaites et il sera impossible d'activer l'ancien autel, puisqu'il sera caché...
Pour cela, il te suffit de créer un nouvel activateur en copiant la fiche de l'ancien et en changeant son id pour faire un nouvel objet (par exemple, le renommer "Furn_shrine_llothis_cure_01b"), puis de le poser sur l'autel préexistant dans sa cellule avant d'augmenter sa taille par 1,1en passant par sa fiche d'objet...

Ça n'est pas la plus intelligente des solutions, mais elle a l'avantage d'être sûre, efficace et sans danger...
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#9 Troglodyte

Troglodyte

Posté 15 mai 2013 - 15:47

Haha, bien vu ! J'avais déjà utilisé quelque chose comme ça, c'est impeccablement efficace. Et puis moins de script = plus de stabilité.

#10 Rotten Borough

Rotten Borough

Posté 15 mai 2013 - 20:05

Ok ! ça marche pour moi.
J'avoue que j'aurais aimé le faire "à la loyale" (même si en définitive il n'y a rien de loyal dans les scripts, bien au contraire).
C'est une solution simple et efficace : Banco , Merci Kira !

#11 Kira

Kira

    Top-modeleuse...


Posté 16 mai 2013 - 05:14

Il n'y a pas de quoi, Rotten Burough, c'était un plaisir...

Cet exemple illustre d'ailleurs parfaitement qu'on peut dire qu'il y a des classes de moddeurs, exactement comme il y a des classes dans Morrowind...

1/ :Le Guerrier
"Un autel à modifier?... Je mets mon armure daedrique augmentée +150 en disableobject, je saisis ma hache à deux mains +200 contre les erreurs de compilation, j'atomise cet autel qui récalcitre, je le remplace par un à mon effigie, et si il me reste un peu de temps avant le goûter, je rase la province et je ramène tout le butin grâce à mes 500 esclaves fidèles, subjugués par mon charisme et mon brushing inaltérable"....

2/ : Le Magicien
"Un autel impie à désacraliser?... Vite mon fidèle bâton anti-bugs, ma robe de divine intelligence, et je vais de ce pas modifier la course de Masser et Secunda pour leur faire danser la macarena, ce qui aura immanquablement pour effet d'influer sur le cours du Mundus et détournera les invocations de cet autel vers un réservoir à magika où je pourrai puiser pour enfin dominer le monde... Et si ça ne marche pas ce soir, je recommencerai demain"...

3/ : Le Voleur
"Vous ne voulez pas que cet autel marche?... Moi, si j'étais vous, je le cacherais sous un faux, et tous les gogos n'y verront que du feu... En fait, c'est vrai, ça serait une bonne farce, et j'imagine déjà la tête des prêtres en train de courir dans tous les sens avec les bras en l'air"...

Le tout, c'est de choisir la solution qui déclenchera le moins de ruine, destruction, massacre et apocalypse....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)




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

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