Un Script De Piège
#1
Posté 25 septembre 2006 - 13:57
Je m'adresse a vous solennellement pour vous poser une question bénigne:
Quelqu'un aurait-il l'amabilité de m'expliquer de manière claire ( je suis pas doué en script )
comment faire en sorte que deux murs plein de pointes se rapprochent jusqu'au moment fatidique, le tout après qu'un malheureux PNJ ai prit un objet dans un contenant ( ou autre version: "ai appuyé sur un levier" ==> le con!! )
vous remerciant a l'avance
votre serviteur Mamoula,
Âme errante des Limbes .
#2
Posté 25 septembre 2006 - 17:58
je part du principe que le piege est fatal, c'est a dire que le PJ meure à tous les coups ( qui qui permet d'éviter l'emplois d'un timer )
Sur le container, il faut mettre ce script: (tribunal requi)
if ( getItemCount "nom de ton objet" == 0 ) ;pour detecter si l'objet à été volé set state to 1 endif If ( state == 1 ) "nom de ton plafond mouvant"->Move Z xxx ;le plafond s'abaisse, xxx étant la distance parcourue en une seconde (valeur négative) if ( "nom de ton plafond"->GetCollidingPC == 1 ) ; detecte si le PJ est en contact avec les pointes "nom de ton plafond" -> HurtCollidingActor, 999999 ; le PJ est tué instantanément. endif endif end
Tu peut aussi ajouter des sons grace à la fonction "Playsound"
EDIT: ne pas oublier de déclarer les variables
Modifié par Von Zeeple, 25 septembre 2006 - 18:01.
#3
Posté 26 septembre 2006 - 16:01
tu es certain qu'en prenant par exemple le meshes de tribunal ( piege de pointes vu dans Sotha sil), en le combinant avec un bloc carré quelconque, le tout bougeant sur un axe horizontale de valeur commune, ca ne marcherait pas? car c'était l'une de mes prévision....
en tout cas merci quand même!
#4
Posté 26 septembre 2006 - 16:41
#5
Posté 26 septembre 2006 - 16:59
#6
Posté 26 octobre 2006 - 12:53
Begin PT_dale_piège_01 if ( GetStandingActor == 1 ) "PT_pieu001"->MoveWorld z -1000 "PT_pieu002"->MoveWorld z -1000 "PT_pieu003"->MoveWorld z -1000 "PT_pieu004"->MoveWorld z -1000 "PT_pieu005"->MoveWorld z -1000 "PT_pieu006"->MoveWorld z -1000 "PT_pieu007"->MoveWorld z -1000 "PT_pieu008"->MoveWorld z -1000 "PT_pieu009"->MoveWorld z -1000 "PT_pieu0010"->MoveWorld z -1000 "PT_pieu0011"->MoveWorld z -1000 "PT_pieu0012"->MoveWorld z -1000 "PT_pieu0013"->MoveWorld z -1000 "PT_pieu0014"->MoveWorld z -1000 "PT_pieu0015"->MoveWorld z -1000 "PT_pieu0016"->MoveWorld z -1000 "PT_pieu0017"->MoveWorld z -1000 "PT_pieu0018"->MoveWorld z -1000 "PT_pieu0019"->MoveWorld z -1000 "PT_pieu0020"->MoveWorld z -1000 "PT_pieu0022"->MoveWorld z -1000 "PT_pieu0023"->MoveWorld z -1000 "PT_pieu0024"->MoveWorld z -1000 "PT_pieu0025"->MoveWorld z -1000 "PT_pieu0026"->MoveWorld z -1000 "PT_pieu0027"->MoveWorld z -1000 "PT_pieu0028"->MoveWorld z -1000 "PT_pieu0028"->MoveWorld z -1000 "PT_pieu0029"->MoveWorld z -1000 "PT_pieu0030"->MoveWorld z -1000 "PT_pieu0031"->MoveWorld z -1000 "PT_pieu0033"->MoveWorld z -1000 "PT_pieu0034"->MoveWorld z -1000 "PT_pieu0035"->MoveWorld z -1000 "PT_pieu0036"->MoveWorld z -1000 "PT_pieu0037"->MoveWorld z -1000 "PT_pieu0038"->MoveWorld z -1000 "PT_pieu0039"->MoveWorld z -1000 "PT_pieu0040"->MoveWorld z -1000 "PT_pieu0041"->MoveWorld z -1000 "PT_pieu0042"->MoveWorld z -1000 "PT_pieu0043"->MoveWorld z -1000 "PT_pieu0044"->MoveWorld z -1000 "PT_pieu0046"->MoveWorld z -1000 "PT_pieu0047"->MoveWorld z -1000 "PT_pieu0048"->MoveWorld z -1000 "PT_pieu0049"->MoveWorld z -1000 "PT_pieu0050"->MoveWorld z -1000 "PT_pieu0051"->MoveWorld z -1000 "PT_pieu0052"->MoveWorld z -1000 "PT_pieu0053"->MoveWorld z -1000 "PT_pieu0055"->MoveWorld z -1000 "PT_pieu0056"->MoveWorld z -1000 "PT_pieu0057"->MoveWorld z -1000 "PT_pieu0058"->MoveWorld z -1000 "PT_pieu0059"->MoveWorld z -1000 "PT_pieu0060"->MoveWorld z -1000 "PT_pieu0061"->MoveWorld z -1000 "PT_pieu0062"->MoveWorld z -1000 "PT_pieu0063"->MoveWorld z -1000 "PT_pieu0064"->MoveWorld z -1000 "PT_pieu0065"->MoveWorld z -1000 "PT_mur_daedric01"->MoveWorld z -1000 "PT_mur_daedric03"->MoveWorld z -1000 "PT_mur_daedric04"->MoveWorld z -1000 "PT_mur_daedric05"->MoveWorld z -1000 "PT_dale_piège"->playsound, "rock and roll" endif endif end
Voilà mon script il marche mais les pique décente de 1000 unité d'un coup, moi je voudrait qu'il déscente progressivement pour qu'on est le temps de courir,
Car ils tombe quand on marche sur une dale donc si on ne peut pas courir c'est pas drôle , vous êtes dacord avec moi
#7
Posté 26 octobre 2006 - 16:07
begin PT_dale_piège_01 float timer short go if ( go == 0 ) if ( GetStandingActor == 1 ) set go to 1 endif endif if ( go == 1 ) set timer to ( timer + getsecondspassed ) if ( timer >= 5 ) set go to 2 set timer to 0 endif "PT_pieu001"->MoveWorld z -200; change par -200, il desendra de 200 unitée/secondes "PT_pieu002"->MoveWorld z -200; en 5sec sa fait 1000 ^^ [...] "PT_mur_daedric05"->MoveWorld z -200 "PT_dale_piège"->playsound, "rock and roll" endif end
Si tu ne fait que des déplacement en z tu peux utiliser move tout court...
#8
Posté 26 octobre 2006 - 17:50
chef, le 26.10.2006 à 16:07, dit :
begin PT_dale_piège_01 float timer short go if ( go == 0 ) if ( GetStandingActor == 1 ) set go to 1 endif endif if ( go == 1 ) set timer to ( timer + getsecondspassed ) if ( timer >= 5 ) set go to 2 set timer to 0 endif "PT_pieu001"->MoveWorld z -200; change par -200, il desendra de 200 unitée/secondes "PT_pieu002"->MoveWorld z -200; en 5sec sa fait 1000 ^^ [...] "PT_mur_daedric05"->MoveWorld z -200 "PT_dale_piège"->playsound, "rock and roll" endif end
Si tu ne fait que des déplacement en z tu peux utiliser move tout court...
Ok merci (je fais des déplacements en z).
Je voulais savoir si s'était possible de faire un piège qui fait :
Quand on marche sur une dale, une pierre sort du plafon et roule sur nous, et nous écrase sauf si on se cache a temps dans la petite corniche
Ou sinon j'ai un script de piège à vous proposer :
Begin PT_dale_piège_02 if ( GetStandingActor == 1 ) "PT_fléchettes00"->MoveWorld x -10000 "PT_fléchettes01"->MoveWorld x -10000 [...] endif end
Et pour finir , et ce que on pourais faire des qu'on marche sur une dalle un "micil" a tête chercheuse sort d'un trou et nous "cour" après, c'est diabolique non
Modifié par Vardac, 26 octobre 2006 - 17:52.
#9
Posté 26 octobre 2006 - 20:11
Ensuite, tu n'es pas obligé de crée pleins d'id, par exemple pour les pointes dans le plafond, une seul aurait suffit. Il suffisait d'utiliser une variable gloabale...
Variable de gloable : Mod_go
sur l activator :
begin PT_dale_piège_01 float timer if ( go == 0 ) if ( GetStandingActor == 1 ) set go to 1 endif endif if ( go == 1 ) set Mod_go to 1 set timer to ( timer + getsecondspassed ) if ( timer >= 5 ) set go to 2 set Mod_go to 0 set timer to 0 endif endif end
sur les pointes : (id unique, plusieur pointe sur la map)
begin PT_dale_piège_02 if ( Mod_go == 0 ) return endif if ( Mod_go == 1 ) move z 200 endif
Ce qui te permet d'éviter de crée 65 pieu différent, et tu place le meme script sur tout les objet devant dessendre...
#10
Posté 27 octobre 2006 - 11:38
#11
Posté 27 octobre 2006 - 12:57
Et pour la pierre j'avais imaginé un truc du genre, on la fait tourner sur elle même puis on la fait avancer en Y dans le couloir.
pendant 20000 unité pour qu'elle s'arrète devant le mur pour faire genre que c'est le mur qui l'a arrété, et pendant qu'elle roule on utilise le script de la chambre de logan du tramblement de terre se serais cool non.
Et les fléchettes sa marche j'ai esséyé, sauf qu'elle traverse le mur du couloir d'enface, mais sa le fait quand même.
Voilà Salut
#12
Posté 27 octobre 2006 - 19:47
Citation
Ajoute un timer pour qu'elles s'arretent sur le mur + un disable sur celles qui ont touché le PJ
sinon je n'ai pas compris comment fonctionnait le script du tremblement de terre de la chambre...
#13
Posté 28 octobre 2006 - 07:41
Von Zeeple, le 27.10.2006 à 19:47, dit :
Citation
Ajoute un timer pour qu'elles s'arretent sur le mur + un disable sur celles qui ont touché le PJ
sinon je n'ai pas compris comment fonctionnait le script du tremblement de terre de la chambre...
Le script dans la chambre bas moi non plus en fait c'est Nadja qui me l'a dit dans le sujet Tremblement de terre
Et sinon pour la pierre vous trouvez que c'est une bonne idée ou pas ?
@+
#14
Posté 10 novembre 2006 - 20:14
Scipt de missile a tete chercheuse Begin 0HR_Soin short range;en dessous de cette distance, enclenchement short initialized;initialisation des variable short distance short detonate;esplosion short declenche;après explosion float joueurx;X du joueur float joueury;Y du joueur float joueurz;Z du joueur float decalagex;Decalage entre le x du joueur et le x de l'objet float decalagey;Decalage entre le y du joueur et le y de l'objet float decalagez;Decalage entre le z du joueur et le z de l'objet float currdecalage float currx;positionX au moment donné float curry;positionY au moment donné float currz;positionZ au moment donné float totaldist;Distance total float rate;vitesse float killtimer;timer avant deletation If ( declenche == 1 );si il a ete declanche If ( killtimer < 4 );on atten 4 secondes Set killtimer to ( killtimer + GetSecondsPassed ) Else SetDelete 1; et on supprime Endif Return Endif If ( MenuMode == 1 ) Return Endif If ( initialized == 0 );Si jamais initialisé Set initialized to 1;Empèche une boucle Set range to 20;Distance pour explosion à 20 Set rate to 400;vitesse Endif Set joueurx to ( player->GetPos X );Prise de position du Joueur Set joueury to ( player->GetPos Y ) Set joueurz to ( player->GetPos Z ) Set joueurz to ( joueurz + 30 ) Set decalagex to ( joueurx - GetPos X );Calcul du décalage Set decalagey to ( joueury - GetPos Y ) Set decalagez to ( joueurz - GetPos Z ) ;Calcul de la distance Set totaldist to ( ( decalagex * decalagex ) + ( decalagey * decalagey ) + ( decalagez * decalagez ) ) Set totaldist to GetSquareRoot totaldist If ( totaldist != 0 ) Set decalagex to ( decalagex / totaldist ) Set decalagex to ( decalagex * rate ) Set decalagey to ( decalagey / totaldist ) Set decalagey to ( decalagey * rate ) Set decalagez to ( decalagez / totaldist ) Set decalagez to ( decalagez * rate ) Else Set declenche to 1 Endif ;Endif Set distance to GetDistance "player" If ( distance < range ) Set detonate to 1 Else Set currx to GetPos X Set curry to GetPos Y Set currz to GetPos Z Set currdecalage to ( decalagex * GetSecondsPassed ) Set currx to ( currx + currdecalage ) Set currdecalage to ( decalagey * GetSecondsPassed ) Set curry to ( curry + currdecalage ) Set currdecalage to ( decalagez * GetSecondsPassed ) Set currz to ( currz + currdecalage ) If ( decalagex < 0 ) If ( currx < joueurx ) Set detonate to 1 Set currx to joueurx Else Set detonate to 0 Endif Else If ( currx > joueurx ) Set detonate to 1 Set currx to joueurx Else Set detonate to 0 Endif Endif If ( decalagey < 0 ) If ( curry < joueury ) Set detonate to 1 Set curry to joueury Else Set detonate to 0 Endif Else If ( curry > joueury ) Set detonate to 1 Set curry to joueury Else Set detonate to 0 Endif Endif If ( decalagez < 0 ) If ( currz < joueurz ) Set detonate to 1 Set currz to joueurz Else Set detonate to 0 Endif Else If ( currz > joueurz ) Set detonate to 1 Set currz to joueurz Else Set detonate to 0 Endif Endif SetPos X currx SetPos Y curry SetPos Z currz Endif If ( detonate == 1 ) ExplodeSpell "HR_spell_soin" Set declenche to 1 Disable Endif End
Voilà
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)