Script mover

Un article de Wiki-Mapping.

(Différences entre les versions)
Jump to: navigation, search

Version du 22 octobre 2006 à 16:55

Sommaire

Description

Les scriptmover servent à faire bouger un objet dans le jeu.

Comme exemple, nous réaliserons une plateforme franchissant un obstacle infranchissable pour un joueur qui effectura une rotation à 180° lors du deplacement. Elle sera activé par un bouton situé sur un bord du gouffre et elle effectuera un aller-retour.

Voila l'image du résultat :

Image:Scriptmover_vue_generale.jpg


Tout d'abord il nous faut dessiner le contexte, c'est à dire la pièce qui contiendra la plateforme. Reportez vous au tuto sur la première pièce, et n'oubliez pas le script_multiplayer.

Image:Scriptmover_contexte.jpg


Il faut ensuite dessiner la plateforme ainsi que le bouton.

Image:Scriptmover_plateforme.jpg


Maintenant que les brushs sont en place, nous allons attaquer les entités.


Entités

script_mover

Dessinons un petit cube de 16 * 16 * 16 et appliquons lui la texture origin (qui se trouve dans les textures common).

C'est lui (son centre) qui indique le point de référence pour le mouvement, il vaut donc mieux le placer au centre de la plateforme.

Image:Scriptmover_origin.jpg


Pour créer le script_mover, sélectionnons tout les éléments de la plateforme et cliquons avec le bouton droit dans une vue 2d -> script -> scrip_mover.

Image:Scriptmover_scriptmover.jpg


Une fois le script_mover séléctionné, parametrons le de cette façon :

  • cocher la case solid (sinon on passerait à travers)
  • scriptname : mover_plateform (c'est le nom de la routine que nous utiliserons dans le script)
  • targetname : mover_plateform (c'est le nom sous lequel nous identifirons les brushs du script_mover dans le script, non utilisé ici)


path_corner

Cette entité désigne les points de référence pour les translations (déplacements) à effectuer. Nous devrons en placer deux, une pour le point de destination et une pour le point de retour.

Pour la créer, cliquons avec le bouton droit dans une vue 2D -> path -> path_corner.

Plaçons les de telle manière que leurs centres correspondent avec celui du brush origin de la plateforme lors de ses différentes étapes du deplacements (ici au départ et à la destination).

Image:Scriptmover_pathcorner.jpg


Il faut maintenant les identifier, sélectionnons celui du départ et entrons le paramètre suivant :

  • targetname : point_00

Celui de destination aura donc :

  • targetname : point_01


func_invisible_user

Nous allons maintenant créer l'entité correspondant au bouton.

Pour cela, créons un brush en face de celui qui matérialise le bouton. Appliquons lui la texture trigger (dans les textures common).

Une fois séléctionné, cliquons avec le bouton droit dans une vue 2d -> func -> func_invisible_user.

Image:Scriptmover_funcinvisibleuser.jpg


Il faut maintenant le parametrer comme ceci :

  • targetname : mover_button (c'est le nom sous lequel nous identifirons le bouton dans le script, notamment pour le faire disparaitre lors du deplacement)
  • target : mover_activate (nous verrons par la suite pourquoi)
  • cursorhint : hint_activate (définit le symbole qui sera affiché sur l'ecran du joueur, ici une main indiquant l'action a effectuer)


target_script_trigger

Cette entité est lié au func_invisible_user pour appeller le script lors de l'activation du bouton.

Pour la créer, cliquons avec le bouton droit dans une vue 2d -> target -> target_script_trigger

Parametrons là comme ceci :

  • targetname : mover_activate (pour lier cette entité au func_invisible_user)
  • scriptname : mover_activate (nom de la routine dans le script appellée lors de l'activation)
  • target : activate (nom de la sous-routine appellée lors de l'activation)

Image:Scriptmover_targetscripttrigger.jpg


Une flèche relie désormais le func_invisible_user au target_script_trigger prouvant ainsi qu'ils sont correctement lié.

Nous avons fini la partie concernant les entités dont voici le résultat :

Image:Scriptmover_entites.jpg


Passons maintenant à la partie scripting :


Script

Rappel: le script est contenu dans un fichier nommé nom_de_la_map.script et placé dans le dossier /etmain/maps.

game_manager
{
	spawn
	{
	}
}

Toutes les maps doivent avoir un game_manager et toutes les routines doivent avoir un bloc spawn. Nous y indiquons ici aucune information, nous pourrions y ajouter les temps de spawns ou autre qui sont détaillé dans l'article Analyse du game_manager.

mover_activate
{
	spawn
	{
	}

	trigger activate
	{
		trigger mover_platform move
	}
}

C'est la routine appellé lors de l'activation du bouton.

Grâce à la commande trigger, nous éxecutons la sous-routine move de la routine mover_platform.

mover_platform
{
	spawn
	{
	}

	trigger move
	{
		setstate mover_button invisible
//on fait disparaitre le bouton pendant le mouvement

		gotomarker point_01 50
//va au point_01 avec une vitesse (?) de 50 (?)

		wait 500 
//on attends que le mouvement soit enclanché avant de lancer la rotation

		faceangles 0 180 0 1000 
//rotation de 180° sur l'axe des Z (pas de rotation sur les autres axes) sur une durée de 1000ms (=1 seconde)

		wait 4000 
//on attends que la plateforme soit arrivée à destination avant de lancer le mouvement de retour

		gotomarker point_00 50 
//retour au point de départ

		wait 500 
//on attends que le mouvement soit enclanché avant de lancer la rotation

		faceangles 0 0 0 1000 
//rotation pour revenir à l'état initial

		wait 2000 
//on attend le retour de la plateforme avant de ...

		setstate mover_button default 
//... refaire apparaitre le bouton

	}
}


Commandes et syntaxe

Vous avez désormais les bases pour faire un script_mover basique mais vous connaisez toutes les commandes pour compliquer les choses :

  • gotomarker targetname_du_path_corner vitesse
  • faceangles Y Z X durée
  • trigger routine sous-routine


Téléchargement

Scriptmover.map (clic droit -> "enregistrer la cible du lien sous ...")