Mapping CoD4 ( tuto )


180 - Porte [ouvrir et fermer]


Dans Radiant



Dessinez un brush (porte)
par défaut : 96 de haut / 56 de haut / 2 epaisseur
Image

à l'opposé de la poignée, dessinez un brush (qui touche la porte, c'est la charnière ou axe de rotation) de la même hauteur de la porte , mais de largeur 1 unité avec la texture (tools, origin)
Image

comme ceci
Image

Une fois fait, dé sélectionnez tous les éléments.

Sélectionnez la porte en premier , puis le brush Origin, et dans votre écran 2D (clic droit souris) allez dans Script>brushmodel

Image

Les 2 éléments vont prendre la couleur bleue.

Image

Maintenant nous allons dessiner un brush Trigger , de la même hauteur de la porte mais plus grand devant et derrière.
(c'est la zone, ou le joueur, verra un message pour ouvrir et ou fermer la poste)
une fois le brush dessiné et toujours sélectionné, depuis l'écran 2D , clic droit souris pour ouvrir le menu et allez dans trigger>use_touch.

Image

Avec le Trigger séléctionné , appuyez sur la touche "N" pour ouvrir la fenêtre "Entity", et entrez les Clé (key) /Valeurs (value) suivantes :

Key: targetname
Value: door_trig



Key: hintstring
Value: PLATFORM_HOLD_TO_USE



Key: cursorhint
Value: HINT_ACTIVATE



Key: count
Value: 90


(90 ou -90 suivant l'angle d'ouverture)

Image

Maintenant, le Trigger est configuré,
il suffit de lier le Trigger à la porte (et à la charnière), et comme la porte et la charnière sont déjà une famille de script_brushmodel, nous sélectionnons tout d'abord le Trigger, puis une seule pièce de la porte, et appuyez sur "W".
Une LIGNE bleue avec une flèche pointant du Trigger vers la porte devrait maintenant être visible. Et tous les brush doivent être sélectionnés. Porte, charnière et trigger.

Image


Côté SCRIPT


(le joueur peut ouvrir et ou fermer la porte)

Récupérez le contenu du scrip,
et copiez le dans un fichier nommé "mp_votremap_doors.gsc", dans le dossier "..\raw\maps\mp\"

main()
{
    thread player_closing_doors();
}

player_closing_doors()
{
    doors = getentarray("door_trig","targetname");
    for(i=0; i<doors.size; i++)
    {
        doors[i] thread door_think();
    }
}

door_think()
{
    self.doormoving = false;
    self.doorclosed = true;
    self.doormodel = getent(self.target, "targetname");
    while(1)
    {
          self waittill("trigger");
          if(!self.doormoving)
          {
                self thread door_move();
          }
    }
}

door_move()
{
    self.doormoving = true;
    if(self.doorclosed)
    {
        self.doormodel playsound("metal_open");
        self.doormodel rotateyaw(self.count, 2, 0.5, 0.5);
        self.doormodel waittill("rotatedone");
        self.doorclosed = false;
    }
else
    {
          self.doormodel playsound("metal_close");
          self.doormodel rotateyaw((self.count * -1), 2, 0.5, 0.5);
          self.doormodel waittill("rotatedone");
          self.doorclosed = true;
    }
    self.doormoving = false;
}



Mise à jour de vos fichiers



1) Votre fichier : ..\raw\maps\mp\mp_votremap.gsc
ajoutez la ligne suivante :

maps\mp\mp_votremap_doors::main();



2) Votre fichier de Zone : \zone_source\mp_votremap.csv
ajoutez la ligne suivante :

rawfile,maps/mp/mp_votremap_doors.gsc




compiletools


Image
Image


et testez votre porte dans le jeu !


Image