Aller au contenu


Script Et Dialogue


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

#1 magenarius

magenarius

Posté 22 février 2006 - 21:24

bonjours

j'ai des gardes et je voudrais que mes gardes puisse faire ouvrir ou fermer une grille quand je leur demande mais le probleme c'est que je ne mit connais pas en dialogue et pas vraiment plus en script.

Alors comment m'y prendre ?

Voici mon script de fermeture .

[quote]
Begin GG_OpenGate10

float timer
short state

if ( MenuMode == 1 )
return
endif

if ( OnActivate == 1 )

if ( GG_Gate10_State == 0 )
PlaySound "Open Lock"
Set GG_Gate10_State to 10
Set state to 10

elseif ( GG_Gate10_State == 20 )
PlaySound "Open Lock"
Set GG_Gate10_State to 10
Set state to 10
Set timer to 0

endif
endif


if ( State == 10 )

set timer to ( timer + GetSecondsPassed )

if ( timer < 3 )

"ex_gg_portcullis_10"->MoveWorld z -90

endif
endif


end GG_OpenGate10
[/code]


et pour ouvrir


[quote]
Begin GG_CloseGate10

float timer
short state

if ( MenuMode == 1 )
return
endif

if ( OnActivate == 1 )

if ( GG_Gate10_State == 10 )
PlaySound "Open Lock"
Set GG_Gate10_State to 20
Set state to 20
Set timer to 0

endif
endif

if ( State >=20 )

set timer to ( timer + GetSecondsPassed )

if ( timer < 3 )
"ex_gg_portcullis_10"->MoveWorld z 90
endif
endif


end GG_CloseGate10
[/code]

Modifié par magenarius, 22 février 2006 - 21:25.


#2 Not Quite Dead

Not Quite Dead

    Rincevent


Posté 22 février 2006 - 22:05

Hello. Perceval et moi-même avions fait quelque chose d'approchant pour _FoB: sur l'ordre d'un PNJ, un portail s'ouvrait avant de se refermer au bout de quelques secondes.

Tout d'abord, nous avions créé une variable global short qui permettait de détecter quand la porte était ouverte et quand elle se fermait. Cette variable était modifiée via les results du dialogue.

Je peux donner un coup d'oeil à nos scripts ce weekend, si ça peut t'être utile. :?
« I was a soldier! I killed people!
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV

#3 Not Quite Dead

Not Quite Dead

    Rincevent


Posté 27 février 2006 - 10:16

Voilà: j'ai regardé comment nous avions procédé à l'époque: le script est largement inspiré de celui de Virgo qui doit encore être quelque part par ici:

Script attaché sur la porte (il s'agit d'une grille comme celle de la Ghostgate dans mon cas: le déplacement est donc sur l'axe des Z, comme dans ton script).

Begin _FoB_leb_maingate 

Short position
Short ouvrir
Short phase
Short attend
Float timer
;"_FoB_MGOpens" une globale short qui sert de "déclencheur" à l'action: la porte s'ouvre/se ferme lorsqu'elle se met à 1, soit dans les result du dialogue pour l'ouverture, soit dans le script pour la fermeture au bout d'un certain temps.

; position == 0 maingate openned (position initiale de la porte (sous le sol))
; position == 2 maingate closed 

if ( MenuMode == 1 ) 
	Return 
endif 

if ( "_FoB_MGOpens" == 0 ); toute cette partie sert à ouvrir la porte ou à la fermer en fonction de l'heure. Peut-être inutile chez toi.
	if ( GameHour >= 21 ) 
		if ( GameHour <= 24 ) 
			if ( position != 2 )
				"_FoB_leb_portcullis_01"->Position -27617.973, -66864, 55, 90
				SetAngle, z, 90
				Set position to 2 
			endif
		endif
	endif
	if ( GameHour >= 1 ) 
		if ( GameHour < 8 ) 
			if ( position != 2 ) 
				"_FoB_leb_portcullis_01"-> Position -27617.973, -66864, 55, 90
				SetAngle, z, 90
				Set position to 2 
			endif 
		endif
	endif
	if ( GameHour >= 8 )
		if ( GameHour < 21 )
			if ( position != 0 ) 
				"_FoB_leb_portcullis_01"-> Position -27617.973, -66864, -190, 90
				SetAngle, z, 90
				Set position to 0
			endif
		endif
	endif
endif

if ( "_FoB_MGOpens" == 1 ); si le garde ouvre la porte... partie du script qui établit l'état de la porte
	if ( attend == 0 )
		if ( ouvrir == 0 ); si l'état de la porte est: fermer
			Set ouvrir to 1; elle se met en état: ouvrir
			PlaySound "_FoB_LebMainGate"; son de la porte
		elseif ( ouvrir == 1 ); si elle est en état: ouvrir
			Set ouvrir to 0; elle se met en état: fermer
			PlaySound "_FoB_LebMainGate"; son de la porte
		endif
		Set phase to 1
	endif
endif

if ( phase == 0 )
	Return
elseif ( phase == 1 )
	Set attend to 1
	Set phase to 2
elseif ( phase == 2 )
	if ( timer <= 7.0 )
		if ( ouvrir == 1 )
			"_FoB_leb_portcullis_01"->Move z 35; la porte remonte du sol pour se refermer
		elseif ( ouvrir == 0 )
			"_FoB_leb_portcullis_01"->Move z -35; la porte s'enfonce dans le sol: elle s'ouvre
		endif
	else
		if ( ouvrir == 0 )
			Set "_FoB_MGOpens" to 0; globale pour les dialogue réinitialisée
		endif
		if ( ouvrir == 1 ); si la porte est ouverte, elle se refermera au bout d'un moment
			if ( timer <= 10.0 )
				Set timer to ( timer + GetSecondsPassed )
				Return
			endif
			Set "_FoB_MGOpens" to 1
		endif
		Set timer to 0
		Set phase to 0
		Set attend to 0
	endif
	Set timer to ( timer + GetSecondsPassed )
endif

End _FoB_leb_maingate

****************
1) créer une globale short (ici "_FoB_MGOpens")
2) attacher le script à la porte (qui doit être unique) (script inspiré de celui de Virgo)
3) dans les dialogues du garde, mettre la variable à 1 dans le result chaque fois que l'on veut ouvrir la porte (elle se ferme toute seule grâce au script)
Set "_FoB_MGOpens" to 1
****************
les dialogues employés et leur ordre (à titre d'exemple):

- J'ouvre immédiatement la porte./Condition: Choice = 2/Result:Set _FoB_MGOpens to 1
- Comme vous voudrez./Condition: Choice = 1
- La porte est ouverte! Vous pouvez entrer./Condition: Global _FoB_MGOPens = 1
- Voulez vous entrer?/Condition: Global _FoB_MGOpens = 0/Result: Choice "Non merci." 1 "Volontiers" 2


Chez moi, ça fonctionne. :P
« I was a soldier! I killed people!
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV

#4 magenarius

magenarius

Posté 03 mars 2006 - 17:12

D'accord ! Pour le script je comprend mais pour se qui est du dialogue la je suis totalement perdu.
Comment je fais pour que ce soit juste un des gardes qui me le demande ?
Moi quand je créais des dialogues sa finissait que tous les personnages avaient ce topic.

#5 Not Quite Dead

Not Quite Dead

    Rincevent


Posté 03 mars 2006 - 18:00

Dans l'interface des dialogues, tu as une partie sous le texte qui indique quelles sont les conditions pour que la réplique soit dite.

Pour que seul le garde que tu souhaites dise la phrase en question il faut:
1) qu'il ait une ID unique ou qu'il n'y ait qu'un PNJ avec son ID dans la cell en question
2) dans le champ de l'ID de l'acteur, choisir l'ID du PNJ; éventuellement ajouter dans le champ de la cell, l'ID de la cell où se trouve le PNJ (si l'ID du PNJ n'est pas unique et qu'il n'y a qu'un PNJ avec cette ID dans la cell en question).

J'espère que c'est plus clair ainsi.
« I was a soldier! I killed people!
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV

#6 magenarius

magenarius

Posté 04 mars 2006 - 01:44

Oui je vais asseiller en arrivant cher nous.
Est-ce normal que la fenetre des dialogues prenne toute l'espace de mon écran et que certaine fonction soit quassiment invoyable ?

#7 vor

vor

    Bugovore


Posté 04 mars 2006 - 09:13

a moins de travailler avec une résolution d'écran manifestement inadaptée, oui, c'est normal : chez beth ils ont pensé à inciter les moddeursà faire des bétises en utilisant des trucs qu'ils ne pourraient pas lire  :?

Plus sérieusement, les listes sont rarement redimensionnables, mais dans les tutos, on doit pouvoir les trouver si tu n'arrives pas a les deviner

#8 magenarius

magenarius

Posté 05 mars 2006 - 14:05

Comme les portes de teleportation par exemple, essaye de trouver la bonne endroit ou sort ta porte.
Moi mon chateau est sur la cote de la Mélancolie donc je ne vois pas les numero de cell.

#9 vor

vor

    Bugovore


Posté 05 mars 2006 - 14:23

petite astuce pour : la liste des cells dans les menus déroulants est la même que celle dans la fenêtre des cells, en bas à droite par défaut à l'ouverture du tecs.
si tu dois en choisir une parmi plusieurs qui commencent exactement pareil, compte simplement dans la fenêtre  des cells en quelle position elle arrive dans l'ensemble de celles qui commencent pareil, puis dans le menu, tu sélectionnes celle-là :P

#10 magenarius

magenarius

Posté 06 mars 2006 - 19:24

J'essaie de créer un dialogue et sa marche pas je fais new je marque mon titre de dialogue et il disparait ?

#11 Rojhann

Rojhann

    Pelleteuse daedrique : Le devoir ma pelle.


Posté 06 mars 2006 - 19:36

lis le tuto  ;)


et crée les topics uniquement quand tu n'as pas filtré les dials avec un pnj :D
Qui scribit, bis legit

Dicton Manchot: "Pelle qui rouille n'amasse pas plousse."

"Le bon sens est une affaire d'orientation."

#12 Not Quite Dead

Not Quite Dead

    Rincevent


Posté 06 mars 2006 - 19:37

As-tu par hasard essayé de regarder dans le topic nommé dialogue qui disparaît? :D

[edit]Grillé! ;)[/edit]

Modifié par Not Quite Dead, 06 mars 2006 - 19:38.

« I was a soldier! I killed people!
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV




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

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