Aller au contenu


Script De Quête Au Choix


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

#1 Troglodyte

Troglodyte

Posté 30 décembre 2015 - 00:36

Bonjour à tous,

J'ai une question simple : peut-on utiliser la même condition sur plusieurs scripts locaux dans une même cellule ?

Ce que je veux faire, c'est une mine où le PJ peut désigner des parois à abattre par les mineurs. Chaque paroi déclenche une quête. Pendant la quête, les autres parois ne sont plus abattables, puis le redevienne à la fin de la quête. Donc chaque paroi doit avoir un script unique mais qui vérifient tous la même condition : si une quête est en cours (1) ou non (0) afin de savoir s'ils sont actifs ou non.

J'espère que je me fais bien comprendre. Ca ressemblerait plus à des scripts interdépendants qu'à des scripts vraiment uniques.

Ou alors je serai obligé de faire un seul très long script qui va désigner les parois abattues (Activate machin_chose plutôt que Onactivate ?)

Merci d'avance.

Modifié par Troglodyte, 30 décembre 2015 - 00:36.


#2 Korfandar

Korfandar

    Ch'ti dragon normand...dans son trou


Posté 30 décembre 2015 - 10:57

Le plus simple est de créer une variable globale (gameplay>Globals) qui indique si une quête est en cours ou non, chaque script peut faire appel à cette variable qui sera partagée alors que les variables locales d'un script ne le sont pas même si le même script est attaché à plusieurs objets d'une même cellule (chaque objet dispose d'une copie du script avec leur propre état des variables).

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 Troglodyte

Troglodyte

Posté 30 décembre 2015 - 22:39

D'accord, je vais faire comme ça, merci. :)

Edit : autre question : si je mets un objet dans l'inventaire du PJ et que je le disable, le script attaché le suivra partout n'est-ce pas ? Il me suffira ensuite de remove l'objet lorsque je n'aurais plus besoin de ce script ? Je pense à ça notamment pour la globale daypassed qui me permettra de faire patienter le joueur par exemple entre un ordre donné aux mineurs et son exécution.

Modifié par Troglodyte, 30 décembre 2015 - 22:39.


#4 abg

abg

    L'ABG pour les civilisés


Posté 31 décembre 2015 - 20:18

 Troglodyte, le 30 décembre 2015 - 22:39, dit :

Edit : autre question : si je mets un objet dans l'inventaire du PJ et que je le disable, le script attaché le suivra partout n'est-ce pas ? Il me suffira ensuite de remove l'objet lorsque je n'aurais plus besoin de ce script ? Je pense à ça notamment pour la globale daypassed qui me permettra de faire patienter le joueur par exemple entre un ordre donné aux mineurs et son exécution.

Bonjour et bonne année :)

Je n'ai jamais utilisé cette technique de l'objet scripté que l'on met dans l'inventaire. On l'a vu surtout à partir de l'époque d'Oblivion (principe du "token").

J'ai quelques doutes sur son intérêt par rapport à un script global puisque ça revient à faire un script qui s'exécute en permanence en présence de player (et comme Morrowind est 100 % centré sur le nombril de player, autant utiliser un global avec un startscript et un stopscript)
J'ai aussi des doutes sur l'efficacité du disable. Je présume qu'à ton idée il s'agit de masquer la présence de l'objet dans l'inventaire. Or disable, à ma connaissance, ne sert pas à ça. C'est un drapeau qui dit au moteur "n'affiche pas la 3D de cet objet". Rien d'autre et rien à voir, donc, avec la fenêtre d'inventaire et l'icône.

Par contre, si tu tiens vraiment à expérimenter autour de ce principe de "token", il y a l'astuce peu connue du conteneur placé dans l'inventaire. La fenêtre à icônes ne l'affichera pas puisqu'on ne peut théoriquement pas transporter un conteneur. Mais pourtant il sera bien là et pourra porter un script puisque les conteneurs ont cette faculté, être retiré aussi par une commande removeitem. Le poids du conteneur est celui de sa capacité (donc lui mettre une contenance de zéro si l'on veut éviter tout impact sur la capacité de portage du PJ)

Attention quand même avec ce genre d'astuce un peu hors limites. A tester soigneusement. Compatibilité non garantie avec le futur (OpenMW...)
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#5 Troglodyte

Troglodyte

Posté 01 janvier 2016 - 01:13

Je vais donc plutôt tester un script global et le débuter par la condition qui permettra de l'arrêter s'il n'a plus lieu de s'exécuter, ça devrait limiter son impact en termes de FPS - c'est ça qui m'inquiète étant donné que les scripts globaux sont connus pour ralentir le jeu parfois inutilement.

Merci beaucoup de ta réponse.

#6 abg

abg

    L'ABG pour les civilisés


Posté 01 janvier 2016 - 11:34

 Troglodyte, le 01 janvier 2016 - 01:13, dit :

étant donné que les scripts globaux sont connus pour ralentir le jeu parfois inutilement.

Absolument aucune différence avec un local transporté dans l'inventaire (en fait probablement moins car l'écriture sera plus simple).
C'est sans doute le bon moment pour rappeler que le poids des scripts (sauf abus flagrant) est totalement insignifiant face au poids de la 3D...

Et si le script est vraiment complexe il est possible d'envisager des optimisations du genre timer ou framecounter. Mais ce sera probablement superflu s'il ne s'agit que de compter les jours qui passent et mettre des parois rocheuses en disable/enable...
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#7 Troglodyte

Troglodyte

Posté 01 janvier 2016 - 17:47

En gros ce sera ça, du enable/disable, daypassed et journal. Donc ça devrait aller. :)




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

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