Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > je comprend pas pkoica marche pas:
je comprend pas pkoica marche pas:
Par fauxninja le 24/12/2002 à 9:46:12 (#2867737)
void main()
{
object porte1=GetNearestObjectByTag("tole", OBJECT_SELF, 1);
object porte2=GetNearestObjectByTag("tole", OBJECT_SELF, 2);
if(GetLocked(porte1)==0)
{
ActionCloseDoor(porte1);
ActionCloseDoor(porte2);
ActionWait(2.0);
ActionLockObject(porte1);
ActionLockObject(porte2);
}
else
{
ActionUnlockObject(porte1);
ActionUnlockObject(porte2);
ActionWait(2.0);
ActionOpenDoor(porte1);
ActionOpenDoor(porte2);
}
}
c sur un levier, qui doit soi fermer els grilles et les verouiller. soit les ouvrir.
---> ca les ferme, mais pas de lock... et ca les ouvre pas...
Par Ormus le 24/12/2002 à 10:27:05 (#2867911)
Par Anianka le 24/12/2002 à 11:58:48 (#2868581)
void main()
{
object porte1=GetNearestObjectByTag("tole", OBJECT_SELF, 1);
object porte2=GetNearestObjectByTag("tole", OBJECT_SELF, 2);
if(GetLocked(porte1)==0)
{
AssignCommand(porte1,ActionCloseDoor(porte1));
AssignCommand(porte2,ActionCloseDoor(porte2));
//ActionWait(2.0);
DelayCommand(2.0, AssignCommand(porte1,ActionLockObject(porte1)));
DelayCommand(2.0,AssignCommand(porte2,ActionLockObject(porte2)));
}
else
{
AssignCommand(porte1,ActionUnlockObject(porte1));
AssignCommand(porte2,ActionUnlockObject(porte2));
//ActionWait(2.0);
DelayCommand(2.0, AssignCommand(porte1,ActionOpenDoor(porte1)));
DelayCommand(2.0, AssignCommand(porte2,ActionOpenDoor(porte2)));
}
}
Par RAT le 24/12/2002 à 12:01:31 (#2868604)
Pourquoi mettons-nous un "o" souvent pour les objets. C'est juste pour reconnaitre, que cette variable est du type object. Cela évite au bout de 500 lignes, de remonter tout en haut et de vérifier, si cette variable est bien un objet. voila :):)
et fauxninja, tu mets le scripts dans ton levier, c'est bien cela???
Si c'est ça, essaye de voir en faisant un ObjectByTag. cela marchera peut-être mieux. et tu donnes 2 tag différents pour tes portes.
Par Jaha Effect le 24/12/2002 à 12:13:35 (#2868715)
Déjà j'aime pas que tu commande deux portes avec des tag identique, c'est important de toujours différencier les tags du moins pour moi, c'est plus propre.
Puis il bouge pas ton levier comme ça :)
Essaye comme ça :)void main()
{
object oPorte1 = GetObjectByTag ("porte1");
object oPorte2 = GetObjectByTag ("porte2");
object oLevier = GetObjectByTag ("Levier");
int Levier;
if ( GetLocalInt( OBJECT_SELF, "Actif" ) != TRUE )
{
SetLocalInt( OBJECT_SELF, "Actif", TRUE );
PlayAnimation( ANIMATION_PLACEABLE_ACTIVATE );
}
else
{
SetLocalInt( OBJECT_SELF, "Actif", FALSE );
PlayAnimation( ANIMATION_PLACEABLE_DEACTIVATE );
}
Levier = GetLocalInt (oLevier,"Actif");
if (Levier == TRUE)
{
SetLocked(oPorte1, FALSE);
ActionOpenDoor(oPorte1);
SetLocked(oPorte2, FALSE);
ActionOpenDoor(oPorte2);
}
else
{
SetLocked(oPorte1, TRUE);
ActionCloseDoor(oPorte1);
SetLocked(oPorte2, TRUE);
ActionCloseDoor(oPorte2);
}
}
Jaha Effect :D
Par RAT le 24/12/2002 à 13:35:35 (#2869374)
jaha redit bien ce que je viens de dire :).
Remercier en tout cas Jaha :)
Par fauxninja le 24/12/2002 à 14:00:28 (#2869650)
je sais aps trop trop faire avec les leviers, est ce que vous pourriez me donner un meilleur script pour le levier de l'acide:
il faudrai que l'acide tombe sans "boule d'acide" qui partent du levier.
il faudrai que le levier fasse le bruit et bouge
il faudrai (mais ca ca doi etre dur) qu'on puisse pas retoucher au levier avant que l'acide soi dissipé (car sinon, on aret pas d'utiliser le levier, et ya des litres et des litres d'acide qui tombent)
voila mon script:
void main()
{
int bInstantSpell=TRUE;
int nMetaMagic=METAMAGIC_ANY ;
int bCheat=TRUE ;
int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT ;
location lLocation1 = GetLocation(GetObjectByTag("piegealave"));
location lLocation2 = GetLocation(GetObjectByTag("piegealave2"));
location lLocation3 = GetLocation(GetObjectByTag("piegealave3"));
location lLocation4 = GetLocation(GetObjectByTag("piegealave4"));
location lLocation5 = GetLocation(GetObjectByTag("piegealave5"));
int nSpell=SPELL_ACID_FOG;
ActionCastSpellAtLocation(nSpell, lLocation1, nMetaMagic, bCheat, nProjectilePathType, bInstantSpell);
ActionCastSpellAtLocation(nSpell, lLocation2, nMetaMagic, bCheat, nProjectilePathType, bInstantSpell);
ActionCastSpellAtLocation(nSpell, lLocation3, nMetaMagic, bCheat, nProjectilePathType, bInstantSpell);
ActionCastSpellAtLocation(nSpell, lLocation4, nMetaMagic, bCheat, nProjectilePathType, bInstantSpell);
ActionCastSpellAtLocation(nSpell, lLocation5, nMetaMagic, bCheat, nProjectilePathType, bInstantSpell);
}
--> ca balance de l'acide sur 5 points
Par Jaha Effect le 24/12/2002 à 14:08:32 (#2869707)
Les noms de posts explicites sont important également :)
Jaha Effect :D
Par coolstar le 24/12/2002 à 14:49:08 (#2870022)
JOL Archives 1.0.1
@ JOL / JeuxOnLine