[Résolu] Empêcher l'affichage d'une MessageBox

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Morrowind.
Répondre
Avatar du membre
Rotten Borough
Confrère
Messages : 37

Empêcher l'affichage d'une MessageBox

Message par Rotten Borough »

Bonjour !
J'ai un petit problème avec un script :

Un NPC est frappé par le joueur sur la place publique sans qu'il soit un ennemi, chose tout à fait illégale.
Mais ce NPC a un comportement masochiste, il n'a donc aucune raison pour que les autorités s'en mêlent.
J'ai apaisé l'ambiance avec ModPCCrimeLevel et PayFineThief.
Reste malheureusement la MessageBox intempestive "Votre crime a été rapporté aux autorités", due à mon avis au OnPCHitMe testé vrai.

Est-ce quelqu'un sait comment empêcher cette MessageBox "automatique" de s'afficher ?

Solution :
J'ai remis le nez dedans et j'ai une solution simple pour empêcher l'affichage de la MessageBox "Votre crime a été..."
Je la poste pour ceux que ça intéresse. Il faut aller dans le menu du NPC ciblée et des NPC avoisimants cliquer sur AI et mettre Alarm à 0. Dans ce cas, tout est permis et tout le temps. Il doit être possible de modifier l'Alarm du NPC par un script (pas encore testé) pour que l'Alarm à O soit conditionnée.
Oh, God, God, God. What on Earth was I drinking last night? My head feels like there's a Frenchman living in it.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Empêcher l'affichage d'une MessageBox

Message par Karaiq »

Je suis pas sûr de tout avoir compris... C'est bien toi qui as écrit un script dans lequel s'exécutent les fonctions que tu as citées ? Et comme tu le dis, le OnPCHitMe a déclenché un script vanilla qui fait donc que le joueur voit apparaître la message box qui t'embête ?

J'ai peut-être une astuce mais ça sent mauvais comme idée... Je te la donne des fois que ça te donne une autre idée !

Il faudrait créer une variable globale dont la valeur est par défaut à 0, que tu mets à 1 dans ton script. Ensuite... là je sais pas si c'est pas dangereux de faire ça, mais j'essaierais de modifier le script vanilla qui t'embête (faut le chercher dans la liste), j'isolerais la MessageBox dans le même script, avec les mêmes conditions, mais en rajoutant une condition du style "If MyGlobal == 0". Comme ça, une fois la variable mise à 1, la MessageBox ne s'exécute pas. Puis faudrait mettre un timer quelque part pour que la variable retombe à 0 quelques secondes après... Enfin bon, jouer comme ça avec les scripts vanilla, je suis pas sûr que ce soit une bonne idée...

Ou alors... dans le script de base qui s'exécute quand tu frappes quelqu'un, tu rajoutes juste la condition "If MyGlobal == 0", en n'isolant pas la MessageBox. Et tu copies ce script, en crées un nouveau où tu colles le script et tu changes "If MyGlobal == 0" en "If MyGlobal == 1" et dans ce script, tu supprimes la MessageBox. Puis toujours, dans un autre script, tu mets un timer qui se déclenche lorsque MyGlobal == 1 et qui en quelques secondes remet MyGlobal à 0.

Enfin, si tu tentes une de mes idées, fais un back up de ton .esp, je n'ai point envie d'avoir bousillé le travail d'un collègue... :mrgreen:
Avatar du membre
Rotten Borough
Confrère
Messages : 37

Re: Empêcher l'affichage d'une MessageBox

Message par Rotten Borough »

Merci pour les pistes, je vais les suivre.
Désolé de ne pas avoir été clair, il s'agit bien de mon script.
Je ne suis pas très à l'aise avec l'idée de variable globale, je viens à peine de comprendre ce qu'était un script global.
Mais comme on dit, c'est en moddant...
Oh, God, God, God. What on Earth was I drinking last night? My head feels like there's a Frenchman living in it.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Empêcher l'affichage d'une MessageBox

Message par Karaiq »

... qu'on apprend !

Pour te dire, la variable globale c'est un peu... bizarre. C'est très très pratique pour déclencher une série de scripts, etc. Mais pour te donner un exemple de "foirage", j'en ai connu un il y a très peu. (sur le TESCS II) En fait, je voulais faire en sorte que quand le joueur lance un pouvoir, s'il a la bonne arme d'équipée, et bien elle "se transforme" en une meilleure arme... Alors sur le script du pouvoir, j'avais mis de quoi vérifier si le joueur a l'arme ou pas, s'il l'a, et bien une variable globale est mise à 1. Dans un script lié à une quête, qui s'exécute lorsque cette variable globale est à 1, et bien le joueur se voyait retirer l'épée et ajouter celle qui est puissante. Je comprenais pas pourquoi ça ne fonctionnait pas... Et c'était finalement à cause de la variable globale, c'est Beeratwork qui m'avait aidé, me conseillant d'utiliser la fonction [ID de la quête].[Variable locale du script de la quête] to X, donc de remplacer la variable globale par une variable locale dans le script de la quête... Et là, magie ça fonctionne.

Je ne connais pas trop le détail de l'affaire, enfin bref, c'est pratique les variables globales mais ça donne des truc bizarres parfois !
Avatar du membre
Rotten Borough
Confrère
Messages : 37

Re: Empêcher l'affichage d'une MessageBox

Message par Rotten Borough »

Je relance ce topic pour embêter qui voudra sur mes problèmes de script.
Grâce à Karaiq et quelques MP-fleuves plus tard, j'ai pu avancer et contourner cette MessageBox intempestive.
Un nouveau problème apparaît que je poste dans le même sujet dans l'espoir qu'un moddeur ( expérimenté, généreux, désœuvré ?) connaisse la réponse.

Je souhaite tester une collision entre une torche et un NPC. A l'exception des armes, seuls les statics semblent générer des collisions. Mon frère (grâce lui soit rendue !) a modifié une mesch "light" dans Nifscope pour lui attribuer une valeur de collision. Cela fonctionne jusqu'à ce qu'on lui attribue "Can carry" dans le TESCS, elle devient une torche portable par le joueur mais perd sa collision. Quelqu'un connaîtrait-il la manière de la conserver, sans en faire une arme cependant ?
Oh, God, God, God. What on Earth was I drinking last night? My head feels like there's a Frenchman living in it.
Avatar du membre
A .
Légende de la Confrérie
Légende de la Confrérie
Messages : 5582

Re: Empêcher l'affichage d'une MessageBox

Message par A . »

Si j'ai bien compris, au sol elle a une collision, mais tenue en main, elle n'en a pas ? Cela ne vient pas du slot par défaut justement ? Quel degré de collision recherches-tu ? Il y a de toute façon des limites liées au moteur, par exemple une arme longue dégainée passera à travers les murs si on en est trop proche.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Empêcher l'affichage d'une MessageBox

Message par Karaiq »

Tu as testé IG de la faire entrer en collision contre le NPC que tu voulais ? Et si oui, quel est le script que tu as lié au NPC ?
Avatar du membre
Rotten Borough
Confrère
Messages : 37

Re: Empêcher l'affichage d'une MessageBox

Message par Rotten Borough »

@A. : En effet, au sol elle a une collision, en main elle n’en a plus. Malheureusement, je ne sais pas ce que signifie « le slot par défaut » auquel tu fais allusion : la catégorie « light » de l’objet, la caractéristique « Can carry » qu’on peut lui ajouter ou une autre chose dont je n’ai même pas idée ?
De la même manière, je ne sais pas ce que signifie un degré de collision. Je ne fais que tester sans finesse : If ( GetCollidingActor == 1 ).

@Karaiq : Oui, je l’ai testé IG mais j’ai attaché le script à l’objet et non au NPC touché. J’ai testé ce script en l’attachant à une arme, il fonctionne, mais la MessageBox « Votre crime… » réapparaît.

Je résume mon idée et mon problème, j’ai toujours un peu de mal à être clair… :
J’aimerai que, dans une certaine situation, frapper un NPC sans sommation soit légal (parce que ce NPC est maso, et oui, ça arrive…).

1ère piste :
Avec une arme, c’est a priori impossible. J’ai pu contourner le problème en mettant le NPC en SetFight->100 et en le paralysant (pour qu’il ne puisse pas répondre). Mais l’effet rendu dans le jeu est franchement moche…

Nouvelle piste :
Au lieu de tester le OnPCHitMe, je voudrai transformer une frappe de combat (illégale), en une collision (légale, a priori se cogner contre une torche n’entraîne aucune intervention des forces de l’ordre). J’ai testé mon script en l’attachant à un static (qui a une collision de fait) et en testant sur le joueur (GetCollidingPC), le script fonctionne. Mais je ne vois pas l’intérêt de me cogner la tête contre les murs…

Si vous pensez que poster mon script soit nécessaire, pas de problème. Mais je l’ai effacé par lassitude…c’est encore frais, si besoin, je le referai.
Oh, God, God, God. What on Earth was I drinking last night? My head feels like there's a Frenchman living in it.
Avatar du membre
Karaiq
Traducteur en herbe | Moddeur en herbe
Traducteur en herbe | Moddeur en herbe
Messages : 1548

Re: Empêcher l'affichage d'une MessageBox

Message par Karaiq »

Désolé mais là je ne peux pas aider plus que ça... Je ne m'y connais pas trop en collisions. Puis encore moins pour ce qui est des fonctions de collision sur le TESCS I.

Ah sinon, j'ai peut-être un truc... Mettre la torche en arme et essayer de, sans donner de coups bien sûr, faire toucher la torche au NPC maso. A ce que j'ai compris, lorsqu'un objet est considéré comme une arme, sa collision est toujours active ?
Avatar du membre
Rotten Borough
Confrère
Messages : 37

Re: Empêcher l'affichage d'une MessageBox

Message par Rotten Borough »

J'ai remis le nez dedans et j'ai une solution simple pour empêcher l'affichage de la MessageBox "Votre crime a été..."
Je la poste pour ceux que ça intéresse. Il faut aller dans le menu du NPC ciblée et des NPC avoisimants cliquer sur AI et mettre Alarm à 0. Dans ce cas, tout est permis et tout le temps. Il doit être possible de modifier l'Alarm du NPC par un script (pas encore testé) pour que l'Alarm à O soit conditionnée.
Oh, God, God, God. What on Earth was I drinking last night? My head feels like there's a Frenchman living in it.
Répondre

Retourner vers « Modder Morrowind »