Aller au contenu


[résolu] Problème Dans Un Script De Porte


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

#1 Infomase

Infomase

Posté 23 juin 2009 - 13:49

Bonjour,
Dans une quête de SeM, j'ai un passage où le PJ ne peut ouvrir une porte qu'en fonction de sa progression dans une quête.
Pour égayer son attente dans cette progression, je lui fais croire qu'il peut réussir à défoncer cette porte ... Or, le script appliqué sur la porte marche mal. Avant toute explication, voici le script "coupable" :
Begin SeM_AnoDanoranPorteScript
	
	Short doOnce
	Short doOnce2
	Short doOnce3
	Short button
	Short randomvar
	
	If ( doOnce == 0 )
	 If ( GetJournalIndex "SM_SarvurDanoran" == 52 )
	  If ( GetPCCell "Hla Oad" == 1 )
	   If ( GetInterior == 0 )
		If ( doOnce2 == 0 )
		 Journal "SM_SarvurDanoran" 55
		 Set doOnce2 to 1
		Endif
	   Endif
	  Elseif ( GetDistance Player <= 50 )
	   If ( doOnce2 == 1 )
		Journal "SM_SarvurDanoran" 60
		Set doOnce to 1
		Set doOnce2 to 2
	   Endif
	  Endif
	 Endif
	Endif
	
	If ( GetJournalIndex "SM_SarvurDanoran" <= 50 )
	 If ( OnActivate == 1 )
	  If ( doOnce3 == 0 )
	   Set doOnce3 to 1
	  Endif
	 Elseif ( doOnce3 == 1 )
	  MessageBox "La porte semble bloquée de l'intérieur. Impossible de l'ouvrir normalement.", "Défoncer la porte", "Partir"
	  Set button to GetButtonPressed
	  Set randomvar to Random 2
	  Set doOnce3 to 2
	 Elseif ( doOnce3 == 2 )
	  If ( button == 0 )
	   If ( randomvar == 0 )
		MessageBox "La porte reste immobile. Par chance, personne n'a remarqué votre manège.", "Ok"
		Set doOnce3 to 0
	   Elseif ( randomvar == 1 )
		MessageBox "Vous vous cognez violemment la tête contre le panneau de bois. Par chance, vous n'êtes qu'égratigné.", "Ok"
		ModCurrentHealth -1
		Set doOnce3 to 0
	   Elseif ( randomvar == 2 )
		MessageBox "Les gardes ont repéré votre manège !", "Ok"
		ModPCCrimeLevel 20
		Set doOnce3 to 3
	   Endif
	  Elseif ( button == 1 )
	   MessageBox "Vous vous éloignez, prudent."
	   Set doOnce3 to 0
	  Endif
	 Elseif ( doOnce3 == 3 )
	  If ( OnActivate == 1 )
	   MessageBox "Après ce qui vous est arrivé la dernière fois, vous préférez ne pas recommencer."
	  Endif
	 Endif
	Elseif ( GetJournalIndex "SM_SarvurDanoran" == 60 )
	 If ( OnActivate == 1 )
	  Journal "SM_SarvurDanoran" 65
	  Activate
	 Endif
	Elseif ( GetJournalIndex "SM_SarvurDanoran" > 60 )
	 Activate
	Endif
	
	End
La première partie (entre If ( doOnce == 0 ) et son Endif ) fonctionne parfaitement. Elle "donne" les étapes de la quête selon l'endroit où se trouve le joueur.
La seconde partie, elle, fonctionne mal. Le message "La porte semble bloquée de l'intérieur. Impossible de l'ouvrir normalement." et ses deux boutons apparaissent normalement, mais aucun résultat à l'horizon ! Les messages "La porte reste immobile ...", "Vous vous cognez violemment ...", etc .... n'apparaissent pas !
Quelqu'un peut-il m'aider ?

Modifié par Infomase, 23 juin 2009 - 15:41.

<?php echo="Codeur en carton-pâte" ?>

#2 Korfandar

Korfandar

    Ch'ti dragon normand...dans son trou


Posté 23 juin 2009 - 14:27

La clause "Set button to GetButtonPressed" doit être mise juste après le "Elseif ( doOnce3 == 2 )" et non avec le message posant la question. GetButtonPressed n'est pas bloquant et doit être testé à chaque frame car il vaut -1 tant que le joueur ne clique pas sur la réponse.

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 Infomase

Infomase

Posté 23 juin 2009 - 14:33

Merci beaucoup, je vais retester le script en prenant ton message en compte.
<?php echo="Codeur en carton-pâte" ?>




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

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