Mapping CoD4 ( tuto )
180 - Porte [ouvrir et fermer]
[size=18pt]Dans Radiant[/size]
Dessinez un brush (porte)
par défaut : 96 de haut / 56 de haut / 2 epaisseur
à 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)
comme ceci
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
Les 2 éléments vont prendre la couleur bleue.
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.
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)
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.
[size=18pt]Côté SCRIPT[/size]
(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;
}
[size=18pt]Mise à jour de vos fichiers[/size]
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
[size=18pt]compiletools[/size]
et testez votre porte dans le jeu !