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 ?
0
Question De Scripts !
Débuté par
vince_397
, 14 févr. 2006 - 03:31
4 réponses à ce sujet
#1
Posté 14 février 2006 - 03:31
#2
Posté 14 février 2006 - 03:38
Citation
endif ( DoOnce == 2 )
Une faute de copier-coller ?
#3
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.
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 :
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.
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
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.
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
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.
'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)