Aller au contenu


Question De Scripts !


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

#1 vince_397

vince_397

Posté 14 février 2006 - 03:31

Bonjour !!! J'aimerais bien que vous jetiez un petit coup d'oeil à un autre de mes scripts (j'aurais une petite question à vous poser sur celui-ci)!

J'ai un petit problème avec ce srcipt:

Begin PP_aiDuPNJ

Short DoOnce

if ( MenuMode == 1 )
Return
endif

if ( DoOnce == 0 )
if ( GetDistance, Player <= 250 )
"PP_debut_M. Laherse"->ForceGreeting
Set DoOnce to 1
endif
endif

if ( DoOnce == 1 )
if ( GetJournalIndex "PP_D_Rencontre" == 10 )
"PP_debut_M. Laherse"->AITravel, -14898.217, -68764.031, 412.399, 0
"PP_debut_M. Laherse"->SetHello 0
Set DoOnce to 2
endif
endif

endif ( DoOnce == 2 )
if ( "PP_debut_M. Laherse"->GetAIPackageDone == 1 )
if ( GetDistance, Player <= 250 )
Journal "PP_D_Rencontre" 15
"PP_debut_M. Laherse"->ForceGreeting
Set DoOnce to 3
endif
endif

if ( DoOnce == 3)
if ( GetJournalIndex "PP_D_Rencontre" == 20 )
"PP_debut_M. Laherse"->AITravel, -11281.158, -70453.977, 261.154, 0
"PP_debut_M. Laherse"->SetHello 0
Set DoOnce to 4
endif
endif

end PP_aiDuPNJ

Bon alors tout va bien (le PNJ viens me parler, après il se dirige vers la coordoonée, une fois rendu, il me parle automatiquement, et après il repart à l'autre coordoonée). Lorsque le script est terminé, le PNJ continue à me parler automatiquement (ForceGreeting). Comment faire pour enlever cette fonction ?

#2 Nerwal

Nerwal

    SAMU Kalendaarien


Posté 14 février 2006 - 03:38

Citation

endif ( DoOnce == 2 )

Une faute de copier-coller ?

#3 Angora

Angora

    Danse avec les bugs


Posté 14 février 2006 - 10:18

Petite note au passage, le forum dispose d'une balise [ code ] qu'il faut utiliser quand on poste du code, ça permet de le présenter de façon lisible et ça rend donc l'aide de tierces personnes plus probables.

Begin PP_aiDuPNJ

Short DoOnce

if ( MenuMode == 1 )
   Return
endif

if ( DoOnce == 0 )
   if ( GetDistance, Player <= 250 )
	  "PP_debut_M. Laherse"->ForceGreeting
	  Set DoOnce to 1
   endif
endif

if ( DoOnce == 1 )
   if ( GetJournalIndex "PP_D_Rencontre" == 10 )
	  "PP_debut_M. Laherse"->AITravel, -14898.217, -68764.031, 412.399, 0
	  "PP_debut_M. Laherse"->SetHello 0
	  Set DoOnce to 2
   endif
endif

endif ( DoOnce == 2 )
   if ( "PP_debut_M. Laherse"->GetAIPackageDone == 1 )
	  if ( GetDistance, Player <= 250 )
		 Journal "PP_D_Rencontre" 15
		 "PP_debut_M. Laherse"->ForceGreeting
		 Set DoOnce to 3
	  endif
   endif

if ( DoOnce == 3)
   if ( GetJournalIndex "PP_D_Rencontre" == 20 )
	  "PP_debut_M. Laherse"->AITravel, -11281.158, -70453.977, 261.154, 0
	  "PP_debut_M. Laherse"->SetHello 0
	  Set DoOnce to 4
   endif
endif

end PP_aiDuPNJ

Le simple fait de présenter ainsi avec la mise en forme, ça permet de se rendre compte qu'il y a deux erreurs dans le bloc DoOnce == 2. Il devrait être ainsi :

if ( DoOnce == 2 )
   if ( "PP_debut_M. Laherse"->GetAIPackageDone == 1 )
	  if ( GetDistance, Player <= 250 )
		 Journal "PP_D_Rencontre" 15
		 "PP_debut_M. Laherse"->ForceGreeting
		 Set DoOnce to 3
	  endif
   endif
endif

Le saviez-vous ?

En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.

#4 vince_397

vince_397

Posté 15 février 2006 - 03:20

eh bien merci sa marche :(! mais bon j'ai mis "endif ( DoOnce == 2 )" car le TESCS me disais lorsque je mettais "if ( DoOnce == 2 )" : miss matched if/else/endif starting on line 24

Mais lorsque je mais un troisième endif comme tu m'as écrit ça marche. J'aimerais savoir pourquoi ajouter un troisième endif, alors que normalement ça en prends deux.

#5 Nerwal

Nerwal

    SAMU Kalendaarien


Posté 15 février 2006 - 03:35

Il faut autant d'endif que d'if. S'il y a trois if, il faut trois endifs.

'endif ( DoOnce == 2 )' n'est pas valable : endif ne fait que signaler la fin d'une boucle entamée par if.




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

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