Aller au contenu


Script d'ascenseur


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

#1 gray wolf

gray wolf

Posté 10 août 2006 - 09:22

Voila chers wiwilandais,je bosse sur mon mod Big Shell Solid,mais j'ai quelques problemes avec un script : un ascenseur...

Citation

begin "_BS_Scr_StrtA_lift"

float Zpos
set Zpos to Getpos,Z

if ( BS_lift2 == 1 )



if ( BS_lift1== 0 )

if ( Zpos >= 5090 )
set BS_lift2 to 0
endif

if ( Zpos < 5090 )

move Z,40
return
endif

endif

if ( BS_lift1== 1 )

if ( Zpos <= 0 )
set BS_lift2 to 0
endif

if ( Zpos > 0 )

move Z,-40
return
endif


endif

end

lorsque je mets la variable BS_lift2 à 1(ce qui est censé démarrer l'ascenseur),rien ne se passe... Je ne comprends pas...quelqu'un peut-il m'aider ?
*a décidé de ne plus mettre de signature pointant vers Rochmédia.*

#2 Duncan Imrryran

Duncan Imrryran

    Truite hors-sujet


Posté 10 août 2006 - 09:33

Edit du titre pour qu'il soit clair.

#3 Seiken

Seiken

Posté 10 août 2006 - 09:45

Tu as essayé toutes les combinaisons ?? Je m'y connais pas trop en scripts, mais tu devrais pas avoir des else if quelque part ?
Autrement, il y a un script d'ascenseur dans le mod Stargate, jettes-y un oeil :)
Membre du MJLA.
Membre de la Team Morrowind Stargate & Oblivion Stargate - Le Cercle des Anciens
Floodeur vétéré :P

#4 gray wolf

gray wolf

Posté 10 août 2006 - 10:18

bon eh bien j'ai a peu près réussi à créer un script qui fonctionne,mais y a-t-il un moyen autre que faire "activer" plusieurs fois sur l'ascenceur pourqu'il fonctionne ? je veux dire par là Timer,variable de position,ect...
*a décidé de ne plus mettre de signature pointant vers Rochmédia.*

#5 chef

chef

Posté 10 août 2006 - 11:06

salut !

begin srcipt

float timer2
float timer
short go

if ( onactivate == 1 )


if ( go == 0 )
set go to 1
endif

if ( go == 2 )
set go to 3
endif

endif


if ( go == 1 )
id_ascensuer->move z 40
set timer to ( timer + getsecondspassed )
if ( timer >= 10 ); ton acenseur montra de 400 unitée... La fonction move fait bouger ton objet (ici) de 40 unitée/secondes, tu peux effectuer un calcul simple : "les unitée a déplacer" fois par le temps que l'objet prend a monter... 40 X 10 = 400. 

set go to 2
endif
endif

if ( go == 3 )

id_ascensuer->move z -40; ton acenseur desant de 400 unitée.
set timer2 to ( timer2 + getsecondspassed )
if ( timer2 >= 10 ); pour trouver quel chiffre a mettre ici, tu fait une equoition a une inconnue, nombre d'unitée dont il dois se déplacer : par le temps a faire. 400 : par 10 = 40 (c'est un examle, tu fais se que tu veux ^^
set go to 0
endif
endif

end

C'est un script a placer sur l'activator qui sert a le faire monter. Je n'en suis pas sur, a tester.  :)

Si tu veux, tu peux faire comme ceci un script sur chaque activator, avec une variable de globale.
Spoiler

Modifié par chef, 10 août 2006 - 11:21.

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#6 gray wolf

gray wolf

Posté 10 août 2006 - 11:17

merci pour ton aide,mais j'ai trouvé tout seul... merci quand même....

au fait,avis aux modérateurs: si j'avais fait un topic avec un nom vague,c'est parce que je préfereais poster plusieurs scripts problématiques plutot qu'un topic pour chaque script,parce qu'il risque d'y avoir plusieurs scripts a corriger de ma part...
*a décidé de ne plus mettre de signature pointant vers Rochmédia.*

#7 chef

chef

Posté 10 août 2006 - 11:23

RAH ! j'ai fais sa pour rien XD XD XD

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#8 Nenfëa

Nenfëa

    Le poisson bavard de Kalendaar


Posté 10 août 2006 - 18:42

Voir le messagegray wolf, le 10.08.2006 à 11:17, dit :

au fait,avis aux modérateurs: si j'avais fait un topic avec un nom vague,c'est parce que je préfereais poster plusieurs scripts problématiques plutot qu'un topic pour chaque script,parce qu'il risque d'y avoir plusieurs scripts a corriger de ma part...
Dans ce cas, l'idéal est de faire un sujet par problème distinct ! :)

Ca évite de se mélanger les pinceaux entre le script A et le script B, ça facilite la recherche pour ceux qui ont le même soucis, ça permet aux aideurs potentiels de savoir s'ils peuvent avoir une solution ou non rien qu'en voyant le titre. :(
Nenfëa

- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!

Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!

Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !

#9 Bandit

Bandit

    Camembertaroulette


Posté 24 janvier 2010 - 22:15

*remonte petit topic  :shocked: *

J'ai récupéré des des vitrines d'exposition en kit quelque part et il y a trop longtemps pour que je me souvienne où.
Livrées juste avec les meshes et sans script d'ouverture, mais j'en ai quand même trouvé un:

begin SA_displaycaselid
float Timer
short State

if ( MenuMode == 1 )
return
endif

if ( OnActivate ==1 )
if ( State == 0 )
PlaySound "Door Stone Open"
set State to 245
endif
endif

if ( State >= 245 )

set timer to ( timer + GetSecondsPassed )

;slide lid down
if ( Timer < 3 )
MoveWorld Z, -21

;set back to start
elseif ( Timer > 19 )
SetAtStart
set State to 0 ;can now press button again
set Timer to 0

elseif ( Timer > 16 )
if ( State == 245 )
PlaySound "Door Stone Close"
set State to 246
endif
MoveWorld Z, 21
endif
endif

end

Le problème, c'est que la partie mobile de la vitrine (qui est aussi l'activator) descend au lieu de monter. J'ai donc modifié le truc en inversant les deux moveworld.

Du coup, quand j'active, la vitrine s'élève correctement, le mouvement est bien visible, régulier et syncro avec le son.

Par contre lors de la descente, aucun mouvement....la vitrine reste en position haute toute la durée du son pour finalement apparaitre d'un seul coup à sa position de départ.

A savoir que le script d'origine (celui mis en début de message) fonctionne correctement: la descente puis la montée son visibles, réguliers et syncro avé le son joué.

Comment ça ce fait? Que dois-je modifier pour voir correctement la descente?

L'homme n'est pas fait pour travailler. La preuve, c'est que ça le fatigue.




P'tite conne
allé repose toi,
tout prêt de Morrison
mais pas trop loin de moi....

#10 elendell

elendell

    Mécano Dell'Arte


Posté 25 janvier 2010 - 00:34

Salut Bandit !

Comme je ne voyais pas où pouvait être le problème dans le script que tu as mis ici, je l'ai essayé en le plaçant sur une copie de l'activateur "a_ex_de_shack_door". J'ai bien sûr au préalable inversé le sens des deux "MoveWorld".

Et bien chez moi, ça fonctionne parfaitement, autant la descente que la montée !  :shocked:

Tu devrais mettre ici ton script modifié car c'est peut-être en inversant les "MoveWorld" que tu as fait une erreur. Essaye aussi avec le même activateur que moi, à tout hasard...

#11 Bandit

Bandit

    Camembertaroulette


Posté 25 janvier 2010 - 19:38

voici le script "modifié"

begin SA_displaycase
float timer
short state

if (menumode ==1)
return
endif

if (onactivate == 1)
if (state ==0)
playsound "door stone open"
set state to 245
endif
endif

if (state >=245)

set timer to (timer + getsecondspassed)

if (timer < 3)
moveworld z, 21

elseif (timer > 19)
setatstart
set state to 0
set timer to 0

elseif (timer > 16)
playsound "door stone close"
set state to 246
endif
moveworld z, - 21
endif
endif

end

J'ai mis un espace entre le signe moins et le 21, crois tu que ça peut provenir de là?

Je n'ai pas pensé à tester sur un autre activator (et pas eu trop le temps non plus  :shocked: ) .... je le ferais dés que je trouve 5 minutes et te dirais ce qu'il en est :)

L'homme n'est pas fait pour travailler. La preuve, c'est que ça le fatigue.




P'tite conne
allé repose toi,
tout prêt de Morrison
mais pas trop loin de moi....

#12 elendell

elendell

    Mécano Dell'Arte


Posté 25 janvier 2010 - 23:33

Voir le messageBandit, le 25.01.2010 à 19:52, dit :

J'ai mis un espace entre le signe moins et le 21, crois tu que ça peut provenir de là?
J'en suis même sûr !  :lol:

Le "MoveWorld" ne peut pas se faire puisqu'il ne comprend pas cette instruction. Et si la partie mobile reprend ensuite sa position basse d'un coup, c'est dû au "SetAtStart" qui lui, se fait correctement.

#13 Bandit

Bandit

    Camembertaroulette


Posté 26 janvier 2010 - 19:46

Voir le messageBandit, le 25.01.2010 à 19:52, dit :

J'ai mis un espace entre le signe moins et le 21, crois tu que ça peut provenir de là?

Elendell dit :

J'en suis même sûr !  :)

*part faire 10 fois le tour du quartier à cloche pied tout en se flagellant avec des orties fraichement coupée*

Merci Elendell  :eek:

L'homme n'est pas fait pour travailler. La preuve, c'est que ça le fatigue.




P'tite conne
allé repose toi,
tout prêt de Morrison
mais pas trop loin de moi....




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

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