Aller au contenu


Faire Bouger Des Objets (Static) Pour Un Pont


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

#1 Ariya

Ariya

Posté 04 juin 2010 - 20:14

voila, je crée un pont avec 4 Static :
- 0o_bridge_royaume_11
- 0o_bridge_royaume_12
- 0o_bridge_royaume_21
- 0o_bridge_royaume_22

je les place et je veux crée un pont qui apparait morceau par morceau

voila les 4 script

Spoiler

le script démarre mais les Static ne s'arrête pas (le premier ne s'arrête pas donc les autres ne démarre pas, je les démarre par la console)

quelqu'un aurait une idée ?

Modifié par Ariya, 04 juin 2010 - 20:16.

- Apprends comme si tu devais vivre pour toujours et vis comme si tu devais mourir ce soir.
- Bavardage est écume sur l’eau, action est goutte d’or.
proverbes tibétains

#2 Kira

Kira

    Top-modeleuse...


Posté 04 juin 2010 - 20:46

Bonjour Ariya...

Il me semble que le problème principal réside dans ta façon de mesurer la hauteur...

avec quelque chose de ce genre:
Begin 0o_Bridge_royaume_11_sc

Short doonce

if ( doonce ==0 )
 	if ( GetPos, z < 649.372 )
 	MoveWorld, z, 200
 elseif (GetPos >= 649.372 )
 	SetPos, z, 649.372 ; ( juste par précaution...)
 startscript "0o_bridge_royaume_21_sc" 	
 	set DoOnce to 1
 	StopScript "0o_Bridge_royaume_11_sc"
 	endif
 	endif
endif

end

Mais je suis sûre que nos spécialistes en scripts pourront optimiser ça....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#3 Orann

Orann

    Nérévarine de Pertevue


Posté 05 juin 2010 - 09:37

Je n'ai pas regardé tes scripts je l'avoue, mais quelque chose me choque dans ton message. Pour que tes objets bougent, il faut qu'ils soient des "activator". Des statics ne peuvent pas bouger. :shocked:
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#4 Kira

Kira

    Top-modeleuse...


Posté 05 juin 2010 - 12:19

Bonjour Orann..
En effet, tu as raison...
Je devrais toujours mieux lire les messages avant d'y répondre....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#5 Ariya

Ariya

Posté 10 juin 2010 - 16:55

encore merci pour ta réponse Kira.

Orann, ce sont bien des static que je veux déplacer. ET IL SE DEPLACE ! mais il ne s'arrête pas.
je vais essayer le script que Kira m'a donnée.

sinon, au cas ou, comment je change un Static en Activator (je ne peux pas le créer car je ne trouve pas le .NIF du pont dans mes fichiers)

Encore Merci.

Ariya
- Apprends comme si tu devais vivre pour toujours et vis comme si tu devais mourir ce soir.
- Bavardage est écume sur l’eau, action est goutte d’or.
proverbes tibétains

#6 Raven Dumron

Raven Dumron

Posté 11 juin 2010 - 08:47

Voir le messageAriya, le 10 juin 2010 - 16:55, dit :

sinon, au cas ou, comment je change un Static en Activator (je ne peux pas le créer car je ne trouve pas le .NIF du pont dans mes fichiers)

Tu as bien regardé dans Morrowind.bsa ?

#7 abg

abg

    L'ABG pour les civilisés


Posté 11 juin 2010 - 09:33

Orann et Kira : Un static peut très bien être manipulé/déplacé par script. Mais le script ne peut pas être sur le static lui-même. C'est la principale différence entre static et activator : Les activators ne peuvent pas recevoir de script local.
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#8 Kira

Kira

    Top-modeleuse...


Posté 11 juin 2010 - 10:33

Coucou abg...
Ça, je le savais, j'ai déjà fait bouger des rochers pour créer un éboulement... Tant qu'ils ont des id uniques, ça ne pose aucun problème...

Là où j'approuvais Orann, c'est dans le fait qu'on ne peut pas attacher de script directement à un static....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#9 elendell

elendell

    Mécano Dell'Arte


Posté 12 juin 2010 - 19:02

Bonjour Ariya,

Il y a plusieurs problèmes dans tes scripts, dont certains ont été dits par mes prédécesseurs. Pour des statics, il faut évidemment travailler en script global. Dès lors, tu n'as pas besoin de faire 4 scripts mais un seul qui regroupe tout l'enchainement de la construction du pont.

Dans tes scripts, tu utilises la variable "PosZ" pour agir en fonction de sa valeur mais tu n'as pas fait d'instruction pour lui donner une valeur.

Par ailleurs, tu testes avec une égalité "if ( PosZ == 649.372 )". Il y a de fortes chances pour que tu n'ais jamais cette égalité mais presque égal. Il ne faut donc jamais tester ce type de valeur avec une égalité stricte.

Tu as déclaré ta variable en "short" mais à partir du moment où la valeur qu'elle peut prendre est un nombre à virgule, il faut la déclarer en "float".

L'instruction "return" ne sert à rien dans ces scripts. Elle est utile pour les scripts locaux car ils ne peuvent pas être stoppés. On met donc un "return" pour que le script ne continue pas à se dérouler une fois qu'on n'en a plus besoin. Mais les scripts globaux étant stoppés, "return" n'y est pas utilisé dans ce but.

Le "Set Doonce to 0" ne sert à rien car tant qu'on ne lui a pas donné une autre valeur, une variable locale est à 0.

Il y a un problème possible avec le premier caractère de tes IDs. Tu utilises un chiffre et je te le déconseille (en premier caractère). Tes IDs génèrent des erreurs quand je les teste avec le "débugueur de scripts", uniquement à cause de ce "0" au début. De plus, il y des risques d'erreurs à cause de la confusion possible entre le 0 et le O.

Voici un script global à essayer. Je ne l'ai pas testé, il se peut donc qu'il faille faire quelques modifications. J'ai remplacé le zéro des débuts d'IDs par un "O" majuscule. Pour le tester, il faut donc que tu renommes tes 4 statics. Attention, j'ai également changé l'ID du script puisqu'il n'y en a plus qu'un seul pour déplacer les 4 statics :

Begin Oo_Bridge_royaume_sc

short doonce
float place

if ( doonce == 0 )
	set place to ( Oo_bridge_royaume_11->GetPos Z )
	if ( place < 649.372 )
		Oo_bridge_royaume_11->MoveWorld, z, 200
	else
		set DoOnce to 1
		Oo_bridge_royaume_11->SetPos, z, 649.372
	endif
elseif ( doonce == 1 )
	set place to ( Oo_bridge_royaume_21->GetPos z  )
	if ( place < 649.372 )
		Oo_bridge_royaume_21->MoveWorld, z, 200
	else
		set DoOnce to 2
		Oo_bridge_royaume_21->SetPos, z, 649.372
	endif
elseif ( doonce == 2 )
	set place to ( Oo_bridge_royaume_22->GetPos z  )
	if ( place < 649.372 )
		Oo_bridge_royaume_22->MoveWorld, z, 200
	else
		set DoOnce to 3
		Oo_bridge_royaume_22->SetPos, z, 649.372
	endif
elseif ( doonce == 3 )
	set place to ( Oo_bridge_royaume_12->GetPos z  )
	if ( place < 812.621 )
		Oo_bridge_royaume_12->MoveWorld, z, 200
	else
		Oo_bridge_royaume_12->SetPos, z, 812.621
		stopscript, Oo_Bridge_royaume_sc 
	endif
endif

end

Dis-moi si ça fonctionne...  :laughing1:

#10 Ariya

Ariya

Posté 24 juin 2010 - 17:23

merci elendell. je répondrai lorsque j'aurai le temps, pour le moment je suis en stage jusqu'a début juillet, après, je testerai ton script et je te dirai si cela marche.

encore merci.
Ariya
- Apprends comme si tu devais vivre pour toujours et vis comme si tu devais mourir ce soir.
- Bavardage est écume sur l’eau, action est goutte d’or.
proverbes tibétains




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

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