Portes, clefs, serrures

- Généralités sur les portes et serrures

PORTES
- Portes rotatives et portes coulissantes
- Portes complexes
- Pour qu'elles ne disparaissent pas quand elles s'ouvrent
- La texture d'une porte secrète
- Ouvrir une porte avec un interrupteur
- Ouvrir et fermer une porte avec deux interrupteurs
- Ouvrir une porte en manœuvrant plusieurs interrupteurs
- Pour qu'une porte se referme toute seule
- Distance, vitesse, sens d'ouverture des portes coulissantes
- Comment transformer un objet en porte
- Comment rendre une porte incassable
- Un objet dans un coffre mural
- Comment redimensionner proprement une porte rotative
- Pourquoi les portes ne s'ouvrent pas ?

CLEFS ET SERRURES
- L'art de crocheter une serrure
- L'art d'ouvrir une porte avec une clé
- Comment transformer un objet en clef
- Comment transformer un objet en serrure (lockbox)

Portes complexes

(Daniel)

Portes auto-fermantes
Portes doubles
Portes ouvrables avec un interrupteur
Portes secrètes
Faire des portes (secrètes) avec n'importe quel objet

Le son
En pratique

Portes auto-fermantes
(Tiré de Guide on Doors and Brushes by Imposter)

Si vous désirez que votre porte se ferme après un temps donné, vous pouvez lui ajouter la propriété Script=>Timing et rentrer le temps désiré en millisecondes (1000 millisecondes = 1 seconde). Et votre porte se refermera derrière Garrett étonné

Portes doubles
(Tiré de Guide on Doors and Brushes by Imposter)

Si vous voulez réaliser une porte double, créez deux portes simples que vous mettez côte à côte, faite tourner la porte de gauche de 180 degrés afin que les serrures des deux portes soient au milieu, puis changer les propriétés de cette dernière :

Door=>Rotating=>OpenAngle doit être décalé de 180 degrés par rapport à la porte droite (donc, vous aurez une porte avec 90 et l'autre avec 270)

Door=>Rotating=>Clockwise doit être changé pour que les portes tournent chacune dans un sens différent : la porte avec OpenAngle à 90 doit avoir Clockwise à false, la porte avec OpenAngle à 270 doit avoir Clockwise à true. Il faut maintenant que lorsqu'une porte s'ouvre, l'autre fasse de même, pour cela ajoutez un lien ScriptParams entre les deux portes et changer le champ Data à Double (cliquez sur l'ID du lien, puis sur le bouton Data, puis marquez Double). Et voila ...

Portes ouvrables avec un interrupteur

Afin de permettre l'ouverture par un interrupteur, faisons déjà en sorte que la porte ne s'ouvre pas " à la main ". Editez les propriétés de la porte et ajoutez la propriété Engine Features=>FrobInfo. Editez cette propriété et enlevez dans le champ World Action le mot Script, puis remplacez le par Ignore. Maintenant vous ne pouvez plus ouvrir la porte à la main.

Créons maintenant un interrupteur à deux positions (sous
ObjectHierarchy=>Gizmo=>Switches=>Levers, e.g.
ObjectHierarchy=>Gizmo=>Switches=>Levers=>ArcingLever=>smallArcingUnlabelled).
Plaçons le sur le mur, et notons son numéro d'identifiant (IDs) ainsi que celui de la porte. Sélectionnez l'interrupteur et cliquez sur " Links ". La boîte de dialogue des liens apparaît. Cliquez " Add " et dans le champ Flavor mettez ControlDevice (attention, celui sans tilde (~)), dans le champ From. Marquez le numéro de cet interrupteur et dans le champ To entrez le numéro de la porte. Cliquez " OK ". Vous venez de dire à l'interrupteur qu'il peut ouvrir la porte, ce qu'il fera sans discuter lorsque vous l'actionnerez en mode jeu.

Maintenant, en général, une porte peut être ouverte depuis les deux côté du mur, créons donc un deuxième interrupteur de l'autre côté du mur et notons son numéro identifiant. Vous pourriez faire la même manipulation qu'avec le premier interrupteur, mais cela entraîne quelques imperfections de comportement (testez pour voir et vous comprendrez, les interrupteurs ne sont pas synchrones). Donc, pour faire les choses bien, sélectionnez le deuxième interrupteur et cliquez sur " Links ". Ajoutez le lien : Flavor : FrobProxy, From : cet interrupteur ID, To : l'ID du premier interrupteur. Sélectionnez ce dernier lien et cliquez sur " Data ". Choisissez dans la boite de dialogue AllowDirect. Ce dernier lien permet aux deux interrupteurs d'être activés lorsqu'on utilise un des deux, ce qui fait qu'ils sont toujours dans la même position.

Portes secrètes
(Tiré entre autre de tips and tricks de St patrick, file door_lock.htm)

Commencez par choisir la porte (secrète) que vous désirez utiliser. E.g. utilisez la commande find_obj 3x6secret-door. Placez alors la porte dans votre brush_air et alignez la bien sur le mur (ou le sol). La porte est maintenant créée mais en tant que joueur, il est facile de la voir et de l'ouvrir. Changeons quelques propriétés :

• Premièrement, changeons l'apparence de cette porte. Sélectionnez la porte et cliques sur " propriétés ". Maintenant ajoutez la propriété Shape=>TxtRepl r0. Dans la fenêtre écrivez le nom de la texture que vous désirez pour cette porte, e.g. si vous utilisez "mwood02" de la famille rescor_2, alors écrivez fam\rescor_2\mwood02 (fam - est le fichier où toutes les textures, objets, ... sont enregistrés). Portalisez et vous devriez voir votre porte avec la même texture que le mur. Si vous utilisez la commande light_bright vous devriez voir la porte en plus foncé que le mur. Ne soyez pas effrayé, c'est simplement du au fait que vous n'utilisez pas l'éclairage normal.

• Nous avons donc une porte secrète, mais elle est encore facilement ouvrable directement à la main. Utilisons plutôt un interrupteur pour l'ouvrir (voir comment faire en section précédente). Et voilà, c'est fini.

• J'ai noté ici une dernière manipulation tiré du tutoriel anglais, mais je n'ai pas réussi à la faire marcher... Toute suggestion est donc la bienvenue. Votre porte est maintenant prête à fonctionner, si vous désirez que cette porte soit aussi un secret du jeu (c'est-à-dire comptabilisée dans les secrets trouvés de votre mission) éditez les propriétés de la porte et dans S=>Scripts effacez les scripts existants. Ajouter maintenant en premier le script TrackHid et en deuxième le script TrigDoorOpen et vérifiez que le champ Don't Inherit est bien à false. Ajoutez alors la propriété Dark Gamesys=>Stats et mettez la à Hidden.

Faire des portes (secrètes) avec n'importe quel objet

Tout objet peut être transformé en porte. Par exemple un lit. Si vous avez un couloir secret sous le sol et que vous le voulez bien caché et secret, bien planqué sous un lit, c'est possible. Il faudra juste que le lit bouge quand on utilise un interrupteur, lui aussi bien planqué. Eh bien faisons-le.

Je suppose que vous avez déjà le couloir avec le trou dans le sol y menant. Créons le lit désiré et plaçons le juste au dessus du trou, par exemple prenons pour lit un ObjectHierarchy=>Physical=>Furniture=>Bed=>Bed-Victorian1. Faites attention de bien l'aligner sur le sol (fonction " floor me ").

Maintenant éditons les propriétés du lit et ajoutons Door=>Translating. Dans l'écran Door=>Translating changez :

Open position à la taille du lit (que vous trouverez sous Physics=>Dimensions ou directement dans les dimensions du brush dans l'écran principal de Dromed. Pour ce lit, c'est 5.

Base speed à 2.00 par exemple, en tout cas ne laissez pas zéro.

Axis à "X-axis".

Ajoutez S=>Scripts et remplissez la première case avec le texte StdDoor.

Maintenant, il ne reste plus qu'à mettre un interrupteur. Il vous suffit pour se faire de regarder les explications de la section porte ouvrable avec interrupteur, dans cette leçon.

Le son

Il reste un détail important : votre porte ne fait pas de son en s'ouvrant ! Ajoutons lui un son standard. Ajoutez la propriété Schema=>Class Tags et entrez DoorType Slide1. Cela dit au jeu que l'objet est une porte et doit utiliser un son de porte. Pour d'autres sons, allez voir dans Object Hierarchy les différentes portes et leur propriété Schema=>Class Tags. Et voilà, c'est fini.

En pratique

Maintenant que vous avez vu tout ça, vous êtes super calés. Faisons donc encore (un peu) plus difficile : si vous désirez faire une porte avec un objet mais que celui-ci n'a pas la bonne taille. Prenons l'exemple d'une grille de jardin, et utilisons un objet de ObjectHierarchy=>Physical=>TerrainLike=>Fence=>Railing pour en faire une grille d'entrée du jardin. Créez donc un ObjectHierarchy=>Physical=> TerrainLike=>Fence=>Railing=>Railing 1. Cet objet est bien trop large pour notre porte qui doit au plus (et par exemple) faire 4 pieds de large. Modifions donc sa taille directement dans la fenêtre principale et mettant le champ D à 4 (il est à 10 originellement).

Si vous allez en mode jeu, vous remarquerez que Garrett est bloqué si il essaye de passer sur le côté de la grille. Ce bug est dû au fait que les dimensions " réelles " de l'objet n'ont pas changé, seulement celles de l'image de l'objet. Corrigeons donc ce problème en éditant l'objet et en modifiant sa propriété Physics=>Model=>Dimensions et en mettant X à 4.

Maintenant, faisons comme pour le lit en ajoutant la propriété S=>Script avec comme valeur StdDoor et la propriété Door=>Rotating (changez Open Angle à 90°). Comme la porte doit être ouverte à la main, ajoutons aussi Engine Features=>FrobInfo et dans le champ World Action, inscrivez Script (ce qui signifie que quand Garrett clique dessus, le script StdDoor sera activé). Et voilà, vous avez une superbe porte de jardin !

Si vous criez AU SECOURS !!! parce que votre porte ne tourne pas sur le bon axe, cela signifie que vous n'avez pas bien spécifié la propriété Physics=>Model=>Dimensions. Malheureusement, dans ce cas, il vous faut effacer votre propriété Door=>Rotating, modifier vos dimensions, effacer la propriété Physics=>Model=>Type, remettre Door=>Rotating. Là ça devrait marcher, Ouf ! (la propriété Physics=>Model=>Type est recréée automatiquement et mise à jour après l'ajout de Door=>Rotating, ce qui détermine l'axe de rotation).

 

 

Trucs et astuces sur dromed -- la Bible de Dromed
dromed.tutoriel.free.fr