Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Script d'activation de placeables via un levier
Script d'activation de placeables via un levier
Par Elmo le 14/1/2003 à 4:00:23 (#3015894)
http://nwvault.ign.com/Files/hakpacks/data/1042412322468.shtml
et y'a une placeable de mur coulissant mais bon c'est un peu naze d'activer un mur en le touchant donc j'aimerai qu'il coulisse lorsqu'on active un levier, j'ai essayé de faire un script mais c'est vraiment nazbroque donc si un scripteur plus doué que moi (et c'est pas dur à faire) pouvait m'aider ça serait sympa :)void main()
{
object oMur1 = GetObjectByTag("mur_s_1");
if (GetLocalInt(oMur1,"NW_L_AMION") == 0)
{
AssignCommand(oMur1,PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
AssignCommand(oMur1,SetLocalInt(oMur1,"NW_L_AMION",1));
PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
SetLocalInt(oMur1,"NW_L_AMION",1);
}
else
{
AssignCommand(oMur1,PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oMur1,SetLocalInt(oMur1,"NW_L_AMION",0));
PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
SetLocalInt(oMur1,"NW_L_AMION",0);
}
}
Par Elmo le 14/1/2003 à 16:40:59 (#3019533)
Par Jaha Effect le 14/1/2003 à 16:53:51 (#3019650)
void main()
{
object oMur1 = GetObjectByTag ("mur_s_1");
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(oMur1, FALSE);
ActionOpenDoor(oMur1);
}
else
{
SetLocked(oMur1, TRUE);
ActionCloseDoor(oMur1);
}
}
Jaha Effect :D
Par Elmo le 14/1/2003 à 16:59:55 (#3019708)
en fait le mur coulissant est un placeable qui n'est pas considéré comme une porte mais comme un placeable dont animation activate ouvre et deactivate ferme donc si tu as une idée...
Par Jaha Effect le 14/1/2003 à 17:08:34 (#3019803)
void main()
{
object oMur1 = GetObjectByTag ("mur_s_1");
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)
{
AssignCommand(oMur1,PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
}
else
{
AssignCommand(oMur1,PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
}
}
Jaha Effect :D
Par Elmo le 14/1/2003 à 20:25:55 (#3021549)
dans le Onactivate du Mur coulissant y'a ça:void main()
{
location mylocation = GetLocation(OBJECT_SELF);
PlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0, 0.0);
CreateObject(OBJECT_TYPE_PLACEABLE,"lokwallsecopen",mylocation,FALSE);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
DelayCommand(0.5 , DestroyObject(OBJECT_SELF,0.0));
RecomputeStaticLighting(GetArea(OBJECT_SELF));
}
j'ai l'impression que ça a son importance...
Par Jedaï le 14/1/2003 à 21:26:43 (#3022145)
Petite modification du script de Jaha prenant en compte les dernières informations :
void OpenWall()
{
location mylocation = GetLocation(OBJECT_SELF);
PlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0, 0.0); CreateObject(OBJECT_TYPE_PLACEABLE,"lokwallsecopen", mylocation, FALSE);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
DestroyObject(OBJECT_SELF,0.5));
RecomputeStaticLighting(GetArea(OBJECT_SELF));
}
void main()
{
object oMur1 = GetObjectByTag ("mur_s_1");
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 && !GetLocalInt(OBJECT_SELF, "bFist"))
{
AssignCommand(oMur1,OpenWall());
SetLocalInt(OBJECT_SELF, "bFist", TRUE);
}
}
Notez que ne sachant pas comment se ferme le mur, je n'ai pu scripter cette partie : encore un petit effort ?
Par Elmo le 14/1/2003 à 21:47:17 (#3022342)
Par Jedaï le 14/1/2003 à 21:57:55 (#3022426)
A toi de jouer !:p
Par Elmo le 14/1/2003 à 22:07:37 (#3022505)
void SpawnSomething(string szClass, location lWhere);
void main()
{
location mylocation = GetLocation(OBJECT_SELF);
PlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0, 0.0);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
DelayCommand(2.0,SpawnSomething("lokwallsecclo", mylocation));
DelayCommand(2.1, RecomputeStaticLighting(GetArea(OBJECT_SELF)));
DestroyObject(OBJECT_SELF,2.5);
}
//Spawn in the creature function.
void SpawnSomething(string szClass, location lWhere)
{
SendMessageToAllDMs("Got To Create Object");
object oSomething = CreateObject(OBJECT_TYPE_PLACEABLE, szClass, lWhere);
}
Par Jedaï le 14/1/2003 à 22:27:30 (#3022670)
void SpawnSomething(string szClass, location lWhere);
void CloseWall();
void OpenWall();
void main()
{
object oMur1 = GetObjectByTag ("mur_s_1");
object oMur2 = GetObjectByTag ("mur_s_2");
object oLevier = OBJECT_SELF;
int Levier;
if ( GetLocalInt( oLevier, "Actif" ) != TRUE )
{
SetLocalInt( oLevier, "Actif", TRUE );
PlayAnimation( ANIMATION_PLACEABLE_ACTIVATE );
}
else
{
SetLocalInt( oLevier, "Actif", FALSE );
PlayAnimation( ANIMATION_PLACEABLE_DEACTIVATE );
}
Levier = GetLocalInt (oLevier,"Actif");
if (Levier == TRUE)
{
AssignCommand( oMur1, OpenWall() );
}
else
{
AssignCommand( oMur2, CloseWall() );
}
}
void CloseWall()
{
location mylocation = GetLocation(OBJECT_SELF);
PlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0, 0.0);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
DelayCommand(2.0,SpawnSomething("lokwallsecclo", mylocation));
DelayCommand(2.1, RecomputeStaticLighting(GetArea(OBJECT_SELF)));
DestroyObject(OBJECT_SELF,2.5);
}
void OpenWall()
{
location mylocation = GetLocation(OBJECT_SELF);
PlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0, 0.0);
CreateObject(OBJECT_TYPE_PLACEABLE,"lokwallsecopen", mylocation, FALSE);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
DestroyObject(OBJECT_SELF,0.5));
RecomputeStaticLighting(GetArea(OBJECT_SELF));
}
//Spawn in the creature function.
void SpawnSomething(string szClass, location lWhere)
{
CreateObject(OBJECT_TYPE_PLACEABLE, szClass, lWhere);
}
Tu remarqueras que tu va devoir changer le tag par défaut de ton "mur ouvert" en "mur_s_2" si tu veux que mon (Jaha's copyright) script marche, de même tu devras vérifier que le tag par défaut de ton "mur fermé" est bien "mur_s_1".
Même si tel est le cas, tu devras veiller à ce qu'il n'y ait qu'un seul "mur coulissant" dans ton module.
Sinon tu devras t'assurer que ton levier se trouve sur la même area que son mur et plus proche de son mur à lui que de n'importe quel autre mur (coulissant), et utiliser ce script :
void SpawnSomething(string szClass, location lWhere);
void CloseWall();
void OpenWall();
void main()
{
object oMur1 = GetNearestObjectByTag ("mur_s_1");
object oMur2 = GetNearestObjectByTag ("mur_s_2");
object oLevier = OBJECT_SELF;
int Levier;
if ( GetLocalInt( oLevier, "Actif" ) != TRUE )
{
SetLocalInt( oLevier, "Actif", TRUE );
PlayAnimation( ANIMATION_PLACEABLE_ACTIVATE );
}
else
{
SetLocalInt( oLevier, "Actif", FALSE );
PlayAnimation( ANIMATION_PLACEABLE_DEACTIVATE );
}
Levier = GetLocalInt (oLevier,"Actif");
if (Levier == TRUE)
{
AssignCommand( oMur1, OpenWall() );
}
else
{
AssignCommand( oMur2, CloseWall() );
}
}
void CloseWall()
{
location mylocation = GetLocation(OBJECT_SELF);
PlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0, 0.0);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
DelayCommand(2.0,SpawnSomething("lokwallsecclo", mylocation));
DelayCommand(2.1, RecomputeStaticLighting(GetArea(OBJECT_SELF)));
DestroyObject(OBJECT_SELF,2.5);
}
void OpenWall()
{
location mylocation = GetLocation(OBJECT_SELF);
PlayAnimation(ANIMATION_PLACEABLE_OPEN, 1.0, 0.0);
CreateObject(OBJECT_TYPE_PLACEABLE,"lokwallsecopen", mylocation, FALSE);
RecomputeStaticLighting(GetArea(OBJECT_SELF));
DestroyObject(OBJECT_SELF,0.5));
RecomputeStaticLighting(GetArea(OBJECT_SELF));
}
//Spawn in the creature function.
void SpawnSomething(string szClass, location lWhere)
{
CreateObject(OBJECT_TYPE_PLACEABLE, szClass, lWhere);
}
Par Elmo le 14/1/2003 à 22:43:02 (#3022806)
JOL Archives 1.0.1
@ JOL / JeuxOnLine