Faire un ascenseur qui se stop a l'étage voulu

Ce forum regroupe tous les tutoriaux réalisés par des membres de Mapping-Area pour Half-Life 2.

Modérateurs: Co-Admin, Modérateur, Staff

Faire un ascenseur qui se stop a l'étage voulu

Messagede tranxen51 le 30 Juin 2007, 14:01

Bonjours , voici mon premier tuto sur Mapping-area:

En gros, nous allons faire un ascenseur qui peut s'arréter a n'importe quels étages , sous simple préssion sur des bouttons.

Enventuellement , on pourrait me dire : C'est drole, Hackrow a fait la meme chose que toi , sauf qu'il la fait avant toi :pfff .

Sur mon tuto , je vais utilisé func_movelinear et un systeme d'ouverture de portes différent de celui de hackrow.

ETAPE 1:

Bon , tout d'abord faite la zone où circulera votre ascenseur:

Image

Ensuite, crée votre ascenseur et transformait le en func_movelinear et confirgurait le comme cela:

NAME: le nom que vous voulez ( dans mon exemple : censéforceur )
MOVE DIRECTION: up
START POSITION: 0
SPEED: La vitesse que vous désirez (dans mon exemple 100)
MOVE DISTANCE: La distance MAXIMAL que dois parcourir votre ascenseur en inches ( pouce ) , ( dans mon exemple 2180 )
BLOCK DAMAGE: le nombre de dégats physique que vous désirait

Image

Dans mon cas j'ai trois étages , donc trois bouttons ( vos bouttons doivent etre parenté a votre ascenseur )

Dans les "output" de vos bouttons , reglé comme cela:

OnPressed>"nom de votre ascenseur">SetPosition>X

X: Représente le pourcentage de la distance maximal que doit parcourir votre ascenseur ( exemple : si il doit aller jusqu'en haut donc a 100% , mettez "1" , si il s'arret a la moitié mettez "0.5" et si il revient a sa position de départ mettez "0" )

Image

VOILA , ETAPE 1 : TERMINE ( vous pouvez partir ou regarder la suite du tuto )

ETAPE 2:

Ici nous allons voir comment faire en sort qu'un champ de force se désactive/active lorsque l'ascenseur se stop ou continu ( c'est trés primaire comparé au tuto de hackrow , et c'est également assez sale )

Faite un block avec la meme texture que sur l'image et transformait le en func_button ( dans ses flag coché [X] DON'T MOVE )

Image

Donner des noms différents a vos portes.
Ensuite ajouté autant de point_template que vous avez de porte (dans mon cas, 3 ).
Mettez le nom de chaques portes dans le template1 des point_template , corespondant a vos étages.

Image


Bon la sa va se corsé ( vous risquez de ne pas tous comprendre sa va etre dur a expliquer )

Vous allez faire une autre zone vide , pas loin de la zone ou circule votre ascenseur , cette zone doit etre parallele et de la même longueur que la zone ascenseur ( comme sur l'image )

Image

Par la suite vous allez faire un func_button ( dans la nouvelle zone ) parenté a votre ascenseur et autant de trigger que d'étages.Placez les triggers dans la nouvelle zone et alignés les avec l'endrois ou votre ascenseur doit s'arreté pour chaques étages.Puis placé un props physique sur le func_button parenté a votre ascenseur.
Vous suivez , non ? Alors encore une image ^^ :

Image

Bon la partie dur est passé :D
Dans vos trigger , dans start disabled , mettez "yes" ( sauf pour celui du premier étage ou vous laissez "no") et dans les flag coché UNIQUEMEMT phisics objets.

trigger1: -OnStartTouch>"nom de votre champ de force etage 1">Kill>1
-OnEndTouch>"nom de votre template etage 1">ForceSpawn

trigger2: -OnStartTouch>"nom de votre champ de force etage 2">Kill>1
-OnEndTouch>"nom de votre template etage 2">ForceSpawn
ect...ect....

Bon on est bientot a la fin courage...

Retourner dans les bouttons de votre ascenseur ( normalement vous avez deja la position de l'ascenseur dans leurs "output") et paramétrez comme sa:

boutton pour aller à l'étage 1:

OnPressed>trigger1>Enable
OnPressed>trigger2>Disable
OnPressed>trigger3>Disable

Boutton pour aller à l'étage 2:

OnPressed>trigger1>Disable
OnPressed>trigger2>Enable
OnPressed>trigger3>Disable

Boutton pour aller à l'étage 3:

OnPressed>trigger1>Disable
OnPressed>trigger2>Disable
OnPressed>trigger3>Enable

... et pour finir cette étape 2 crée un logic auto paramétré comme sa :

OnMapSpawn>nom de votre champ de force etage 1>kill
OnMapSpawn>nom de votre champ de force etage 2>ForceSpawn
OnMapSpawn>nom de votre champ de force etage 3>ForceSpawn

ETAPE 2 TERMINE

Voila j'espere que ce tuto vous sera utile , comme je l'ai dit c'est mon premier tuto donc il y beaucoup de chance que sa soit mal expliqué , n'hésitez pas a me posé des questions...


... je suis désolé pour toutes les fautes d'orthographes que vous pourriez trouver!

Si j'ai oublié quelque chose , DITE LE :P
Dernière édition par tranxen51 le 30 Juin 2007, 20:24, édité 1 fois.
Particle editor : IN PROGRESS
Avatar de l’utilisateur
tranxen51
VIP
VIP
 
Messages: 1971
Inscription: 16 Avr 2007, 10:53
Localisation: Lescar

Messagede Satyre le 30 Juin 2007, 14:13

Oui, c'est bien mais il y a déjà un tuto sur le même sujet dans MA
Avatar de l’utilisateur
Satyre
VIP
VIP
 
Messages: 1782
Inscription: 28 Aoû 2006, 18:52
Localisation: La ville rose

Messagede tranxen51 le 30 Juin 2007, 14:16

Satyre a écrit:Oui, c'est bien mais il y a déjà un tuto sur le même sujet dans MA


Avec func_movelinear ? j'ai pas vu :'(
Particle editor : IN PROGRESS
Avatar de l’utilisateur
tranxen51
VIP
VIP
 
Messages: 1971
Inscription: 16 Avr 2007, 10:53
Localisation: Lescar

Messagede Satyre le 30 Juin 2007, 15:09

Ha non dsl, c'est pas un func_movelinear :oops:. toutes mes excuses :lu
Avatar de l’utilisateur
Satyre
VIP
VIP
 
Messages: 1782
Inscription: 28 Aoû 2006, 18:52
Localisation: La ville rose

Messagede tranxen51 le 30 Juin 2007, 16:26

Satyre a écrit:Ha non dsl, c'est pas un func_movelinear :oops:. toutes mes excuses :lu


c'est pas grave :P
Particle editor : IN PROGRESS
Avatar de l’utilisateur
tranxen51
VIP
VIP
 
Messages: 1971
Inscription: 16 Avr 2007, 10:53
Localisation: Lescar

Messagede terracid le 30 Juin 2007, 19:37

Trés bon tuto :D

(décidement, on se voit partout ^^)
Avatar de l’utilisateur
terracid
Mapophile
 
Messages: 141
Inscription: 08 Juil 2006, 23:06

Messagede Poty le 30 Juin 2007, 19:45

ça serait mieux si on pouvait aggrandir les screens.
Avatar de l’utilisateur
Poty
Modérateur
Modérateur
 
Messages: 243
Inscription: 17 Juin 2007, 22:27
Localisation: Lille

Messagede Klems le 30 Juin 2007, 20:01

Bon, c'est un peu immondement crade en fait :

Le coup de kill et spawner des func_button surtout, alors que tu peux enable/disable des func_wall pour faire la meme chose. : /

Sinon, le coup de mettre un prop_physique -posé- sur un func_button... Encore, il serait contraint par un phys_constraint... Mais la, ya trop de risque pour que le prop traverse le func_button et casse tout le systeme. (d'ailleur, ya pas que les func_button dans la vie, ya les func_brush ou func_clip_vphysic pour ça)
Surtout que tu peux te passer des trigger en chronometrant le temps que met l'ascenseur à descendre/monter pour ouvrir les portes au bon moment. (et locker/unlock les autres boutons, sinon ya des chances pour que ça foire si le joueur change d'etage en mouvement)

Enfin bref, je vois pas pourquoi tu utilise un movelinear ici, alors qu'avec un train c'est beaucoup plus propre. (et on peut continuer d'utilser des champs de forces, ya pas de problemes)
Mais bon, ça marche quand meme, c'est le principal. :^^ Au moins, t'utilise des movelinear, et ça c'est bien. (enfin, c'est surtout bien quand ils bougent automatiquement, avec des math_counter par exemple (surtout couplé avec des math_remap et logic_compare))
Avatar de l’utilisateur
Klems
VIP
VIP
 
Messages: 3144
Inscription: 02 Nov 2005, 13:43

Messagede Grigor02 le 30 Juin 2007, 20:10

Pareil que klems, celà dit y'a des idées interessantes même si je n'ai pas tout compris du premier coup (je pense pas encore avoir tout compris). :^^
(fuck lineto)
- Baie pet faux rêveur :: Robot presque idiot :: L'heptadécagone te possède -
Avatar de l’utilisateur
Grigor02
Circle Member
 
Messages: 1173
Inscription: 06 Mai 2006, 03:51
Localisation: pasbiengs planet

Messagede tranxen51 le 30 Juin 2007, 20:12

Merci terracid :lu

je vais essayer d'agrandir les images mais c'est pas gagné
:eu

Et klem je comprens ton indignation , mais je rapel que c'est mon premier tuto ( et que j'ai mis 3heurs a l'écrire ). Cela dit tu as raison sa aurait été plus propre d'utlisé func_tracktrain ( mais j'ai fait ce tuto pour donner une nouvelle méthode ).

Et j'aurais compté le temp que met l'ascenseur a chaque étage si je conaissais l'existence de lock/unlock ( sinon le joueur pourait changer d'étage en plein milieu du trajet).

Enfin je pensais aprendre des choses aux autre mais finalment c'est moi qui ai apris un truc , merci klem :gg
Particle editor : IN PROGRESS
Avatar de l’utilisateur
tranxen51
VIP
VIP
 
Messages: 1971
Inscription: 16 Avr 2007, 10:53
Localisation: Lescar

Messagede Klems le 30 Juin 2007, 20:20

tranxen51 a écrit:Et klem je comprens ton indignation , mais je rapel que c'est mon premier tuto ( et que j'ai mis 3heurs a l'écrire ). Cela dit tu as raison sa aurait été plus propre d'utlisé func_tracktrain ( mais j'ai fait ce tuto pour donner une nouvelle méthode ).

C'est pas propre, c'est tout ! :P
Des risques pour que ça marche pas, les movelinear qui gerent pas terribles les collisions entre avec les joueurs en multi, etc etc...
tranxen51 a écrit:Enfin je pensais aprendre des choses aux autre mais finalment c'est moi qui ai apris un truc , merci klem :gg

De rien, ça fait plaisir.
Avatar de l’utilisateur
Klems
VIP
VIP
 
Messages: 3144
Inscription: 02 Nov 2005, 13:43

Messagede tranxen51 le 30 Juin 2007, 20:26

Ah oui et si vous avez des questions N'HESITEZ PAS , j'ai construi se systeme pas a pas, je sais bien comment il fonctionne :D

Les images sont agrandis.
Particle editor : IN PROGRESS
Avatar de l’utilisateur
tranxen51
VIP
VIP
 
Messages: 1971
Inscription: 16 Avr 2007, 10:53
Localisation: Lescar

Messagede NykO18 le 01 Juil 2007, 03:34

Je me dois de m'indigner contre les réponses de Klems.
Faire un ascenseur en func_movelinear est l'une des meilleures façons (si ce n'est pas la meilleure) de faire un ascenseur. Non seulement c'est simple, mais en plus c'est super précis contrairement aux func_tracktrain. Si tu dis a ton func_movelinear se faire un mouvement de 0.25 sur son trajet de 512, il va faire 128 et pas un inch de plus. Le func_tracktrain, selon le niveau de lag du serveur va dépasser les path_track allègrement avant de les trigger. Donc il va se décaler progressivement de son alignement.
De plus, le func_movelinear ne réagit pas plus mal avec les joueurs que le func_tracktrain ou que tout autre entitée qui bouge.
Et chronométrer le temps de mouvement, j'ai jamais rien entendu d'aussi stupide sachant que ça dépendra ENORMEMENT du lag du serveur et des eventuels retards de quelques millisecondes à l'allumage (mise en queue des outputs) sans compter le fait que les joueurs bloquent les func_tracktrain de temps à autre.
D'un autre côté, j'ai pas dit que le tuto était parfait, et y'a des trucs à améliorer.
Avatar de l’utilisateur
NykO18
VIP
VIP
 
Messages: 8253
Inscription: 19 Jan 2005, 22:16
Localisation: Cergy, France

Messagede Klems le 01 Juil 2007, 05:31

NykO18 a écrit:Le func_tracktrain, selon le niveau de lag du serveur va dépasser les path_track allègrement avant de les trigger. Donc il va se décaler progressivement de son alignement.

C'est commun à toute les entités qui bougent ça. (et surtout les door/movelinear)
NykO18 a écrit:De plus, le func_movelinear ne réagit pas plus mal avec les joueurs que le func_tracktrain ou que tout autre entitée qui bouge.

Un tracktrain est fait pour ça à la base. Sous HL1 du moins.
NykO18 a écrit:Et chronométrer le temps de mouvement, j'ai jamais rien entendu d'aussi stupide sachant que ça dépendra ENORMEMENT du lag du serveur et des eventuels retards de quelques millisecondes à l'allumage (mise en queue des outputs) sans compter le fait que les joueurs bloquent les func_tracktrain de temps à autre.

Generalement, j'ai pas eu de probleme en rapport avec le chronometrage de ce genre de truc. Faut dire, j'aime pas trop utilser les temps des outputs... Mais de toute façon, je prefere quand meme utilser un bullseye qui active un trigger dans une salle à part. (ou physbox contrainte si c'est sous CS:S)
Ce qui m'a le plus choqué c'est de poser le prop sur un func_button, stou ! :P
Avatar de l’utilisateur
Klems
VIP
VIP
 
Messages: 3144
Inscription: 02 Nov 2005, 13:43

Messagede tranxen51 le 01 Juil 2007, 09:35

Ce qui m'a le plus choqué c'est de poser le prop sur un func_button, stou !


Ben de ce coté la j'ai pas eu de probleme , a AUCUN moment mon props_physic ( un healthkit ) à traversé mon func_button :^^
Particle editor : IN PROGRESS
Avatar de l’utilisateur
tranxen51
VIP
VIP
 
Messages: 1971
Inscription: 16 Avr 2007, 10:53
Localisation: Lescar

Suivante

Retourner vers Cours & astuces

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité