Aller au contenu


Script Faisant Apparaître Un Objet Avec Un Délai


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

#1 Dallara

Dallara

    Fortificateur fortiche


Posté 08 avril 2010 - 21:44

Bonsoir,

J'ai fait un script qui se fait enfaite en deux partie qui consiste à que quand on fasse une action précise sa lance un compteur qui une fois se dernier terminer fait apparaitre un objet.

Voila le premier scripte (simple)

begin CDH_espionnage_01

Short CDH_active
Short OnPCDrop

if ( OnPCDrop == 1 )
	set CDH_active to 1
endif

End

Se script est posé sur un objet (un parchemin)
et le deuxième scripte (moins simple)

begin CDH_espionnage_02

Short currentDay
Short CDH_active


if ( GetDisabled == 0 )
	Disable
endif

if ( CDH_active == 1 )
		if ( CurrentDay != Day )
			set localdaysPassed to localdaysPassed + 1
 			set currentDay to Day
		endif
endif

if ( localdaysPassed == 1 )
	AddTopic claquettes
		if ( GetDisabled == 1 )
			Enable
		endif
endif

End

Se script est aussi posé sur un objet (aussi un parchemin)

Maintenant le problème:
le deuxième parchemin est toujours là même si j'ai l'objet (1 parchemin) dans mon inventaire.
Petite précision:
L'objet qui déclenche le deuxième script, on le reçoit avec un quête. Donc on ne l'a pas tout de suite.

Merci

Dallara

Modifié par Dallara, 11 avril 2010 - 15:04.

Heureux qui comme la rivière peu suivre son cours sans quitter son lit.

Le travail c'est la santé, laisse le au malade.

Mieux vaut arriver en retard qu'en corbillard!

VGM

#2 abg

abg

    L'ABG pour les civilisés


Posté 08 avril 2010 - 23:03

Bonsoir,

Short CDH_active
Dans les deux scripts tu déclares une variable de ce nom mais ce sont des locales, propres à chaque script. Donc le script CDH_espionnage_01 la fait passer à 1 mais son homonyme de CDH_espionnage_02 ne change pas (même nom mais 2 variables distinctes)

Il faudrait en faire une globale (ou utiliser la technique des variables pointées mais une globale c'est plus simple à l'heure où je te réponds  :) )

Script CDH_espionnage_02
La première clause
if ( GetDisabled == 0 )
		Disable
endif
se vérifie à chaque tentative de faire apparaître le parchemin, il est donc "disablé" en permanence...

if ( CDH_active == 1 )
				if ( CurrentDay != Day )
						set localdaysPassed to localdaysPassed + 1
						set currentDay to Day
				endif
endif
Currentday est forcément != Day à la première exécution donc le premier jour compte pour du beurre. Pour la suite il faudra :
if ( localdaysPassed > 1 )

A part ça on fait des claquettes sur les parquets de Hadeborg  :) ?
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#3 Dallara

Dallara

    Fortificateur fortiche


Posté 09 avril 2010 - 11:36

Bonjour,

J'ai un peu changé la technique pour le rendre en Global.
J'ai utiliser le principe des herses de la portes des âmes, sauf que là l'activateur c'est le fait de poser l'objet.
Malheureusement sa ne marche toujours pas ^^

Ça Ce résume par un seul script, l'autre objet étant enfoncer dans le sol avec le script "LocalState".
Voici donc le script (sur le parchemin que l'on doit déposer)

begin CDH_espionnage_01

Short currentDay
Short CDH_active
Short OnPCDrop
Float timer

set timer to ( timer + GetSecondsPassed )

if ( CurrentDay != Day )
	set localdaysPassed to localdaysPassed + 1
	set currentDay to Day
endif

if ( OnPCDrop == 1 )
	set CDH_active to 1
		if ( localdaysPassed > 1 )
			AddTopic claquettes
				if ( CDH_active == 1 )
					if ( timer < 2 )
						"CDH_Espionnage_message_03"-> MoveWorld z 10
					endif
				endif
		endif
endif	

End

J'ai modifié les paramètres d'origine selon ce que j'ai compris du message de abg...

Edit: (impression que CDH_active ne sert plus à rien)

Dallara

Modifié par Dallara, 10 avril 2010 - 11:37.

Heureux qui comme la rivière peu suivre son cours sans quitter son lit.

Le travail c'est la santé, laisse le au malade.

Mieux vaut arriver en retard qu'en corbillard!

VGM




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

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