Deverouillage de porte par un levier : Resolu

Répondre
Partager Rechercher
Bonjour tout le monde.
Bon voila, je pensais que ca allait etre hyper simple, mais au bout de 3 scripts, une demande d aide, et beaucoup de temps perdu à chercher sur des sites, j ai pas trouvé mon bonheur...
Donc, je me resous à ecrire ce petit post.

Est ce que l un d entre vous aurais un petit script qui mit sur un levier permettrait de deverouiller une porte fermé à clé ?

Merci à vous
Après moult vérifications, le script (à mettre dans l'évenement "utilisation" du levier) ressemble à ça :
Code PHP:

void main()
{
        
object oPorte GetObjectByTag("tag_de_la_porte");
        
SetLocked(oPorte,FALSE);
        
AssignCommand(oPorte,DoDoorAction(oPorte,DOOR_ACTION_OPEN));

Dans les paramètres de la porte, le tag de la clé devra être le tag de la porte. Tu peux éventuellement modifier cette ligne pour plus de sûreté :
Code PHP:

SetLocked(oPorte,FALSE);

// qui deviendrait :
AssignCommand(oPorte,SetLocked(oPorte,FALSE)); 
Bon, bah plutot que de chercher absolument sur le script, j aurais mieux fait de me focaliser sur la porte... Bon pour une raison inconnu rien ne fonctionnait. J ai refait une porte, et là oooh miracle tous mes leviers se sont mis à fonctionner

Merci une nouvelle fois Deyo... que ferais je sans toi

Pour ceux que ca interresserait, un script pour le levier, qui permet l animation, qui deverouille la porte et qui l ouvre :

Code PHP:

void main()
{
object oDoor1 GetObjectByTag("portelevier");//placez le tag de votre porte
int iDoorLocked GetLocked(oDoor1);
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
if (
iDoorLocked == TRUE)
    {
    
AssignCommand(oDoor1ActionOpenDoor(oDoor1));
    
SetLocked(oDoor1FALSE);
    }
else
    {
    
AssignCommand(oDoor1ActionCloseDoor(oDoor1));
    
SetLocked(oDoor1TRUE);
    }
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);

je up ce topic pour donner une version plus pédagogique, avec les commentaires que j'ai rajouté.

Code PHP:

void main()
{
    
//on place le tag de la porte dans "oDoor"
    
object oDoor GetObjectByTag("PORTE");


    
// on va chercher la valeur de "verouillé" ou "déverouillé" (repsectivement "1" et "0") sur 
    //la porte grace à GetLocked et on la place dans iDoorLocked
    
int iDoorLocked GetLocked(oDoor);

    
//animation de l'activation du levier, quand on clik dessus
    
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);


    
//Si GetLocked a renvoyé "1"(ca voudra dire que la porte est verouillée)
    
if (iDoorLocked == TRUE)
    {
    
        
//On ordonne à la porte de s'ouvrir elle meme
        
AssignCommand(oDoorActionOpenDoor(oDoor));
    
        
//on modifie l'état de la porte, l'état de la porte devient "déverouillé"
        //cela sert pour la prochaine execution du script
        
SetLocked(oDoorFALSE);
    }
    else
//Si GetLocked a renvoyé "0"(ca voudra dire que la porte est déverouillée)
    
{
    
        
//On ordonne à la porte de se fermer elle meme
        
AssignCommand(oDoorActionCloseDoor(oDoor));
    
        
//On modifie l'état de la porte, l'état devient "verouillé",
        //cela sert pour la prochaine execution du script
        
SetLocked(oDoorTRUE);
    }

    
//animation de la désactivation du levier
    
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);

pour ma part j'ai le même système mais avec un script générique.

Au départ, je mets la variable "door" avec pour valeur le tag de la porte à débloquer, et je modifie la ligne en mettant


Code PHP:

object oDoor GetObjectByTag(GetLocalString (OBJECT_SELF"door")); 



et ensuite je mets une ligne sur la fin pour simuler le clic du levier (admirez la maîtrise ultime de l'onomatopée

Code PHP:

ActionSpeakString ("clic"); 

Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés