[Tutoriel] Du pouvoir du main script

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

Du pouvoir du main script

Message par Inari »

C'est un tuto que je vais agrandir et modifier au fur et à mesure, mais j'pensais qu'il serait pas superflu de parler un peu d'scripts. Et en premier, j'voulais parler un peu de main script, ce script global qu'on laisse tourner en continu en le définissant comme start script dans le TESCS.

L'avantage d'un main script, c'est qu'il permet de détecter des évènements à n'importe quel moment pour en générer d'autres. On peut y mettre plein de blocs tous indépendants les uns des autres, en fait on y met tous les tests qu'on veut faire constamment pour déclencher des évènements.

Je prends des exemples dans ce que je modde.

1/ Mettre des jours d'attente.

Par exemple, le bloc qui permet de laisser un certain nombre de jours entre 2 entrées de journal. Imaginons que j'ai un journal RAJ3_Struggle qui doit passer à 30 tout seul 2 jours après être passé à 20. Je vais mettre ce bloc :

Code : Tout sélectionner

If ( GetJournalIndex RAJ3_Struggle < 20 )
	If ( RAJStruggleDay != Day )
	Set RAJStruggleDay to Day
	Endif
ElseIf ( GetJournalIndex RAJ3_Struggle == 20 )
	If ( RAJStruggleDay != Day )
	Set RAJStruggleElapsedDay to ( RAJStruggleElapsedDay + 1 )
	Set RAJStruggleDay to Day
	Endif
	If ( RAJStruggleElapsedDay >= 2 )
	Journal RAJ3_Struggle 30
	Endif
Endif
sans oublier en début de script,

Code : Tout sélectionner

Short RAJStruggleDay
Short RAJStruggleElapsedDay
2/ Isoler complètement une zone.

J'entends par là, empêcher tout issue au joueur tant qu'il n'a pas rempli des conditions choisies à l'avance. Par exemple, je veux bloquer un joueur sur les zones "Skarogne, temple gris, hall principal", "Skarogne, temple gris, aile Est", "Skarogne, temple gris, aile Ouest", "Skarogne, temple gris, jardin intérieur" et "Skarogne, temple gris, vestibule". Première chose à faire, créer une zone (éventuellement vide) racine de toutes les autres, donc "Skarogne, temple gris". Ainsi, quand on teste GetPCCell "Skarogne, temple gris", on reçoit 1 pour toutes les sous-zones.

Ceci fait l'affaire, et inclut la prévention contre les téléportations avec des objets, comme les amulettes des clans vampires.

Code : Tout sélectionner

If ( GetPCCell "Skarogne, temple gris" == 1 )
	Set Teleport to 1
else
	if ( Teleport == 1 )
		EnableTeleporting
		Set Teleport to 0
	endif
endif

if ( Teleport == 1 )
	DisableTeleporting
if ( GetPCCell "Skarogne, temple gris" == 0 )
	Messagebox "Vous ne pouvez pas sortir du temple."
	player->sethealth 0
;là c'est la solution radicale "tu sors, t'es mort", mais on peut aussi faire un player->PositionCell avec des coordonnées bien choisies pour remettre le joueur à l'entrée de la zone. Si on pousse le vice, on peut même constamment stocker les coordonnées du joueur dans des variables et le replacer là où il était.
endif
endif
To be continued (si j'suis motivé et si y'a des scripts qui vous intéressent en particulier).
Rahj Sagas (Mod Morrowind) : Chaîne Youtube.
Blog perso de pensées, poèmes, nouvelles : Inari.
Avatar du membre
Rotten Borough
Confrère
Messages : 37

Re: Tuto - Du pouvoir du main script

Message par Rotten Borough »

Merci beaucoup pour ton post !
Il ouvre beaucoup de possibilités au moddeur débutant que je suis.
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
Inari
Confrère
Messages : 758
Contact :

Re: Tuto - Du pouvoir du main script

Message par Inari »

Faudrait que je le continue, mais merci de ton intérêt. :)
Rahj Sagas (Mod Morrowind) : Chaîne Youtube.
Blog perso de pensées, poèmes, nouvelles : Inari.
Répondre

Retourner vers « Modder Morrowind »