Aller au contenu


Porte Dérobé


  • Veuillez vous connecter pour répondre
3 réponses à ce sujet

#1 magenarius

magenarius

Posté 07 mars 2006 - 03:56

Bonjours je veux qu'en actionnant une lampe un une porte dérobé souvre.

Alors j'ai besoin je crois d'avoir besoin d'un activator qui est pareil a la porte dérobé .
Comment faire ?

Avez vous un truc pour placer dans le cadrede porte  (hidden) la porte de facon a se que l'on ne voye pas que c'est une porte caché.
En gros de faire en sorte d'éviter les détails qui trahissent la porte caché et qui nous permetterait de la voir.

Modifié par magenarius, 07 mars 2006 - 04:00.


#2 Not Quite Dead

Not Quite Dead

    Rincevent


Posté 07 mars 2006 - 08:24

Pour faire une porte dérobée, je vois quatre solutions différentes:

1) créer un objet de type "door" avec un mesh de static et lui assigner une destination:
exemple: Dans une cave, avoir un tonneau qui est une "door". En cliquant dessus, le joueur est téléporté dans une autre cell, ou plus loin dans la même cell (comme avec une porte normale reliant deux cells différentes).
inconvénient: Sur la carte locale on voit le petit carré indiquant la présence d'une cell.

2) créer un objet de type "activator" avec un mesh de static et lui assigner un script qui remplira la fonction de téléportation qu'une "door" aurait assuré.
if ( OnActivate == 1 )
	 Player->PositionCell, "ID de la cell", x, y, z
endif
Avantage: - Pas de carré dévoilant le passage sur la map.
- On peut en cas de besoin ajouter une condition de journal qui fasse en sorte que rien ne se passe tant que l'existence du passage n'a pas été dévoilé au PJ.
Inconvénient: Ce script ne tient pas compte des compagnons éventuels du PJ. Si on peut compenser en ajoutant des conditions pour les compagnons propre au mod, c'est l'impasse pour les compagnons venant d'autres mods.

3) employer la porte secrète du jeu (dans les doors, celle qui ressemble à un mur de fort impérial). Pour qu'elle soit moins repérable, la masquer en partie avec un static (genre tenture ou tapisserie): cela réduit les chances que le joueur la repère immédiatement parce que le curseur passant dessus par hasard indiquerait "porte secrète".

4) pour le cas d'une porte secrète avec un levier: créer deux activators unique: le levier et la porte secrète (qui peut avoir par exemple l'apparence d'un static). Créer une variable globale qui serve de déclencheur (mettons VarPorte ).
Script à attacher sur le levier:
Begin Levier

if ( MenuMode == 1 )
	  Return
endif

if ( OnActivate == 1 )
	  if ( VarPorte == 0 )
			Set VarPorte to 1
	  else
			Return
	  endif
endif

End Levier

Script à attacher sur la porte (il devrait te rappeler quelque chose ;) )
Begin PorteDerobee

Short position
Short ouvrir
Short phase
Short attend
Float timer
;VarPorte une globale short qui sert de "déclencheur" à l'action

; position == 0 porte ouverte (position initiale de la porte (sous le sol))
; position == 2 porte fermée 

if ( MenuMode == 1 ) 
	Return 
endif 

if ( VarPorte == 1 ); si le levier est activé...
	if ( attend == 0 )
		if ( ouvrir == 0 ); si l'état de la porte est: fermer
			Set ouvrir to 1; elle se met en état: ouvrir
			PlaySound "IDduSon"; son de la porte
		elseif ( ouvrir == 1 ); si elle est en état: ouvrir
			Set ouvrir to 0; elle se met en état: fermer
			PlaySound "IDduSon"; son de la porte
		endif
		Set phase to 1
	endif
endif

if ( phase == 0 )
	Return
elseif ( phase == 1 )
	Set attend to 1
	Set phase to 2
elseif ( phase == 2 )
	if ( timer <= 7.0 )
		if ( ouvrir == 1 )
			"IDdelaPorteDérobée"->Move z 35; la porte remonte du sol pour se refermer (l'axe peut être changé selon convenance en x ou y) (Les chiffres sont purement indicatifs.)
		elseif ( ouvrir == 0 )
			"IDdelaPorteDérobée"->Move z -35; la porte s'enfonce dans le sol: elle s'ouvre
		endif
	else
		if ( ouvrir == 0 )
			Set "VarPorte" to 0; globale réinitialisée
		endif
		if ( ouvrir == 1 )
			Set "VarPorte" to 0; globale réinitialisée
		endif
		Set timer to 0
		Set phase to 0
		Set attend to 0
	endif
	Set timer to ( timer + GetSecondsPassed )
endif

End PorteDerobee

Voilà. Je crois n'avoir rien oublié.

En espérant ne pas avoir fait d'erreur dans les scripts.
« I was a soldier! I killed people!
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV

#3 magenarius

magenarius

Posté 08 mars 2006 - 21:07

J'ai mal compris pour ce qui est de la porte dérobé, tous ce que ej veux c'est qu'elle ne souvre pas comme une porte, qu'on ne puisse pas l'ouvrir juste en cliquant dessus.
J'ai tenté de faire un new activator avec sa mesh mais je ne l'ai trouve pas.

#4 Not Quite Dead

Not Quite Dead

    Rincevent


Posté 08 mars 2006 - 22:24

Pour faire une porte de ce type, il te faut recourir à la seconde ou à la quatrième solution.

Pourrais-tu préciser ce qui t'as échappé dans mes explications, pour que je comprenne ce que je dois reformuler?
« I was a soldier! I killed people!
- You were a doctor!
- I had bad days! »
John Watson, en train d'étrangler Sherlock Holmes, Sherlock - A Scandal in Belgravia (2012)
---------------
Vous aussi rejoignez les Fervents Partisans de l'Immuabilité Avatarienne!
---------------
VGM impénitent (était-il besoin de le préciser?)
---------------
Paterfamilias niv.IV




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)