Aller au contenu


Faire Suivre Un Npc...


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

#1 Yr d'Uab

Yr d'Uab

Posté 09 octobre 2005 - 09:49

Hello,

J'aimerais qu'un PNJ suive le PJ lors d'une traversée, réalisée avec des PositionCell.

J'ai donc collé ce script à mon PNJ, basé sur celui de Madura dans Morro :

Begin yr_acasi_tewonn_AI

short followDone
short noLore
short followNow
short UneFois
short UneFois2

if ( MenuMode == 1 )
	Return
endif

if ( (GetJournalIndex, "YR_Colonie") < 80 )
	if ( getdisabled == 0 )
		disable
	endif
else
	if ( getdisabled == 1 )
		enable
	endif
endif

if ( FollowDone >= 1 )
	Return
endif

if ( GetHealth <= 0 )
	return
endif

if ( OnDeath == 1 )
	Journal YR_COL_04 200
endif

if ( GetCurrentAiPackage == 3 )
;if follow is the current package, set followNow and continue
	set followNow to 1
	SetHello 0

; gestion de la traversée vers la Colonie

	if ( GetPCCell "En mer : cabine du Triomphant" == 1 )
		if ( UneFois == 0 )
			  PositionCell, 4045, 4000, 14770, 0, "En mer : cabine du Triomphant"
		  set UneFois to 1
		endif
	endif	

	if ( GetPCCell "Colonie impériale : cabine du Triomphant" == 1 )
		if ( UneFois2 == 0 )
			PositionCell 4045, 4000, 14770, 0, "Colonie impériale : cabine du Triomphant"
			set UneFois to 2
		endif
	endif

	if ( GetPCCell "Colonie impériale : palais du gouverneur" == 1 )
;if the follow is done, set followDone to 1, reset followNow to 0
		set followDone to 1

;Give NPC new package to avoid dumb-looking behavior
		AiWander 256 0 0 40 20 20 0 0 0 0 0 0

;And journal entry gives feedback to the player...
		Journal, "YR_COL_04", 20

;And increase Dispositions
		ModPCFacRep, 5, "Colons"
		ModDisposition 10

		ForceGreeting
	
		SetHello 30

	endif

else
;if follow is NOT the current package, make sure followNow is zero
	set followNow to 0

endif

End

Mais quand le PJ est envoyé dans les cell "En mer : cabine du Triomphant" ou "Colonie impériale : cabine du Triomphant", le NPC ne suit pas ?!?

Une idée ?

[EDIT] En relisant mon message, je me dis que c'est le menumode qui doit me mettre dedans...[/EDIT]

Merci.

YR

Modifié par Yr d'Uab, 09 octobre 2005 - 09:49.

Je n'ai rien à voir avec votons.info, mais je le conseille à tous les électeurs potentiels.
---
"Se sent obligé de répondre par des mp en 4 points et 2 conclusions,
le tout engoncé dans un style académique des plus barbants."

#2 Yr d'Uab

Yr d'Uab

Posté 10 octobre 2005 - 20:15

Hello,

Bon, j'ai essayé autre chose. J'ai intégré le voyage du NPC dans mon script de voyage et plus dans le script attaché au NPC.

Begin yr_script_voyage

short abordage

If (MenuMode == 1)
	return
endif

; y'a-t-il des pirates ?
if ( dejaattaque == 1 )
	set abordage to 0
else
	set abordage to (random, 2)
endif

if ( travel == 1 ); on va vers N

	if ( abordage == 0 )
	;téléporte à Neft'a
		Player->PositionCell 4045, 4000, 14770, 0, "colonie impériale : cabine du triomphant"
		if ( ( yr_acasi_tewonn->GetCurrentAiPackage ) == 3 )
			yr_acasi_tewonn->PositionCell 4045, 4000, 14770, 0, "Colonie impériale : cabine du Triomphant"
		endif
		set day to 16
		stopscript yr_script_voyage

	elseif ( abordage == 1 ); attaque de pirates
	;téléporte dans la cabine qui donne vers le lieu d'abordage
		MessageBox "Le Triomphant est attaqué par des pirates."
		Player->PositionCell, 4045, 4000, 14770, 0, "En mer : Cabine du Triomphant"
		if ( ( yr_acasi_tewonn->GetCurrentAiPackage ) == 3 )
			yr_acasi_tewonn->PositionCell, 4045, 4000, 14770, 0, "En mer : cabine du Triomphant"
		endif
		stopscript yr_script_voyage
	endif

elseif ( travel = 2 ); on va vers Coeurébène

	if ( abordage == 0 )
	;téléporte à Coeurébène
		Player->PositionCell, 4045, 4000, 14770, 0, "Coeurébène : Cabine du Triomphant"
		set day to 1
		set month to ( month + 1 )
		stopscript yr_script_voyage

	elseif ( abordage == 1 ); attaque de pirates
	;téléporte dans la cabine qui donne vers le lieu d'abordage
		MessageBox  "Le Triomphant est attaqué par des pirates."
		Player->PositionCell, 4045, 4000, 14770, 0, "En mer : Cabine du Triomphant"
		stopscript yr_script_voyage
	endif

endif
End

Eh bien, çà ne marche pas non plus... Je ne comprends pas  :?:

Une idée ?

A+
Yr
Je n'ai rien à voir avec votons.info, mais je le conseille à tous les électeurs potentiels.
---
"Se sent obligé de répondre par des mp en 4 points et 2 conclusions,
le tout engoncé dans un style académique des plus barbants."

#3 Nerwal

Nerwal

    SAMU Kalendaarien


Posté 10 octobre 2005 - 22:12

Je ne vois pas le problème ;) mais voici quelques questions :

- Qu'est-ce qui ne marche pas ? Le positioncell sur le PNJ suiveur ? Ou le script ne compile pas ?
- Que sont les variables dejaattaque et travel ? Des globales ? Des locales ?
- Il manque un = à 'elseif ( travel = 2 )'
- yr_acasi_tewonn est-il un personnage unique (ie n'apparaissant qu'une fois dans le jeu) ?

#4 Yr d'Uab

Yr d'Uab

Posté 11 octobre 2005 - 08:18

Hello,

Citation

- Qu'est-ce qui ne marche pas ? Le positioncell sur le PNJ suiveur ? Ou le script ne compile pas ?

C'est le PositionCell du PNJ suiveur qui ne fonctionne pas. Lorsque le PJ est envoyé dans les Cell "En mer : cabine du Triomphant" ou "Colonie impériale : cabine du Triomphant", le PNJ n'y est pas...

Citation

- Que sont les variables dejaattaque et travel ? Des globales ? Des locales ?

dejaattaque est une variable globale qui indique si il y a déjà eu une attaque de pirate, pour éviter plusieurs attaques sur un même trajet. Cette variable est mise à 1 quand le joueur revient dans la cabine après l'attaque (çà marche très bien).

travel est une variable globale qui indique le sens du trajet (1 : vers la Colonie, 2 : vers Coeurébène)

Citation

- yr_acasi_tewonn est-il un personnage unique (ie n'apparaissant qu'une fois dans le jeu) ?
Oui, absolument unique.

Le script du voyage marche très bien, sauf que le PJ est toujours tout seul, même quand yr_acasi_tewonn est censé suivre. De même, le suivi du PJ par yr_acasi_tewonn foncrtionne, sauf lorsqu'il s'agit de suivre par PositionCell.

J'ai une question : est-ce que je peux vérifier si yr_acasi_tewonn est présent dans ma cell ? Parce que ce n'est pas parce que je ne le vois pas qu'il n'y est pas. Aurait-il pu passer à travers le plancher ?

Merci de ton aide.

YR
Je n'ai rien à voir avec votons.info, mais je le conseille à tous les électeurs potentiels.
---
"Se sent obligé de répondre par des mp en 4 points et 2 conclusions,
le tout engoncé dans un style académique des plus barbants."

#5 Nerwal

Nerwal

    SAMU Kalendaarien


Posté 11 octobre 2005 - 12:47

Citation

J'ai une question : est-ce que je peux vérifier si yr_acasi_tewonn est présent dans ma cell ? Parce que ce n'est pas parce que je ne le vois pas qu'il n'y est pas. Aurait-il pu passer à travers le plancher ?

Pas à proprement parler mais on peut essayer getdistance player, getpos x/y/z, ou même getlos, qui devraient donner des renseignements

#6 a3jv

a3jv

    ... à 4 je reviens.


Posté 12 octobre 2005 - 18:12

Ce n'est peut-être pas ça le problème mais personnellement j'éviterais les doubles () et je mettrais des "" :
if ( "yr_acasi_tewonn"->GetCurrentAiPackage == 3 )
et là :
"yr_acasi_tewonn"->PositionCell, 4045, 4000, 14770, 0, "En mer : cabine du Triomphant"
Il suffit quelques fois d'un rien pour que ça marche ou non.
Les choses n'ont que l'importance ou la valeur qu'on leur donne.

#7 Yr d'Uab

Yr d'Uab

Posté 13 octobre 2005 - 21:41

Hello,

Quelle que soit la syntaxe, çà ne marche pas. Pourtant, à la console, çà fonctionne ?!?

Donc, je prends une autre solution : téléportation de yr_acasi_tewonn ! Cà enlève un peu de piment, mais au moins çà marche.

A+
YR
Je n'ai rien à voir avec votons.info, mais je le conseille à tous les électeurs potentiels.
---
"Se sent obligé de répondre par des mp en 4 points et 2 conclusions,
le tout engoncé dans un style académique des plus barbants."




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

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