Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

portes et leviers

Par Ryval le 25/7/2002 à 23:19:43 (#1859871)

Voila de quoi se prendre un peu la tête:
J'ai 5 portes et trois leviers.
Chaque levier a deux positions (0 et 1) et les leviers ne sont pas dans la même zone que les portes.
Le script doit donc être dans la OnEnter de l'area.
Mes portes ont les tags suivants (001, 010, 011, 100, 110) leurs tags correspondent a leurs positions ouvertes et à la position des leviers. Quand les leviers sont placés différemment la porte est fermée(exemple: position 000 toutes les portes sont férmées).
Quelqu'un a une idée pour un script court?

Par Kemay le 25/7/2002 à 23:40:03 (#1859941)

Je crois que ce script fait quelquechose d'approchant.

Par Ryval le 26/7/2002 à 1:14:47 (#1860299)

Non, quand je dit que je veux un script court c'est que j'ai donné un exemple dans mon exemple. En fait j'ai une trentaine de portes et six leviers.
et j'ai pas envie de faire un script avec 64 possibiltés.
L'idée en nommant mes tags 100001 (en binaire) c'est que je peux les rattraper en faisant des IntToString pour en avoir des nombres:
levier 1 position=1 variable iPos1
levier 2 position=0 variable iPos2
levier 3 position=0 variable iPos3
levier 4 position=0 variable iPos4
levier 5 position=0 variable iPos5
levier 6 position=1 variable iPos6

je fais
ActionOpenDoor(GetObjectByTag(IntToString(iPos1)+IntToString(iPos2)+IntToString(iPos3)+IntToString(iPos4)+IntToString(iPos5)+IntToString(iPos6))

Par Kemay le 26/7/2002 à 2:24:49 (#1860524)

ok désolé mais je vois pas comment le faire en UN SEUL script court. Par contre voilà la version en deux scripts. Je n'ai pas testé mais ca devrait marcher.

A placer dans l'event onUsed de chaque levier (dont le Tag doit se terminer par un chiffre compris entre 1 et 6)

void main()
{
object oModule = GetModule();
string sLeverId = GetStringRight(GetTag(OBJECT_SELF),1);
if ( GetLocalString(oModule,"Lever"+sLeverId)==" || GetLocalString(oQuelconque,"Lever"+sLeverId)=="0" )
{
SetLocalString(oModule,"Lever"+sLeverId,"1");
}
else SetLocalString(oModule,"Lever"+sLeverId,"0");
}


A placer dans l'event onEnter de chaque area possedant une ou plus des portes (dont le Tag est LeverDoorXXXXXX, X étant 0 ou 1) que les leviers permettent d'ouvrir :
void main()
void main()
{
object oModule = GetModule();
string sDoorTag = ";
int i = 1;
while(i < 7)
{
sDoorTag += GetLocalString(oModule,"Lever"+IntToString(i));
i++;
}

object oDoor = GetFirstObjectInArea(OBJECT_SELF);
while (oDoor != OBJECT_INVALID )
{
if ( GetObjectType(oDoor)==OBJECT_TYPE_DOOR && GetTag(oDoor)=="LeverDoor"+sDoorTag && GetLocked(oDoor))
{
SetLocked(oDoor,FALSE);
}
else if ( GetObjectType(oDoor)==OBJECT_TYPE_DOOR && GetStringLeft(GetTag(oDoor),9)=="LeverDoor" && GetLocked(oDoor)==FALSE)
{
SetLocked(oDoor,TRUE);
}
GetNextObjectInArea(OBJECT_SELF);
}
}


Voilà... Après si c'est toujours trop long tu peux toujours supprimer tous les espaces et les renvois à la ligne ;)

JOL Archives 1.0.1
@ JOL / JeuxOnLine