Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Mon script marche pas.
Mon script marche pas.
Par Simkim le 3/11/2002 à 21:16:44 (#2472700)
object oCible = GetNearestObjectByTag("CombatDummy");
void main()
{
ActionAttack (oCible);
DelayCommand(IntToFloat(2+Random(4)),ExecuteScript("sc_attack",OBJECT_SELF));
}
Je voulais que mes PNJ disent une phrase et puis tapent le mannequin. Jai donc remplacé une ligne par
DelayCommand(IntToFloat(2+Random(4)),); ActionStartConversation(OBJECT_SELF);
Jai assigné une conversation à choix multiple au PNJ et dans action conséquente de chaque choix, jai remis le script. Comme ça cest censé faire une boucle.
En bin au final, mes PNJ nattaquent pas et ne parlent pas.
Est-ce que quelquun peut marranger le script suivant ?
Si un PJ ferme la porte avant lécoulement des 6s, je ne sais pas si elle se revérouille. Si ce nest pas le cas, il faudrait majouter une ligne qui dise de verrouiller la porte même si elle a été fermée avant lécoulement du délais
(dans le OnOpen)
void main()
{
object oPorte;
oPorte = OBJECT_SELF;
DelayCommand(6.0 , ActionCloseDoor (OBJECT_SELF));
SetLocked (oPorte, TRUE);
}
Par Frolo Xeres le 3/11/2002 à 22:00:54 (#2473077)
int iMax = 2; // Là tu met le nombre max de phrases differente pour ton PNJ
string sADire = ";
switch( Random( iMax ) ) {
case 0 : sADire = "Ma Pharse 1 !"; break;
case 1 : sADire = "Ma Pharse 1 !"; break;
// T'en rajoute si ton iMax est plus grand
default : sADire = "; break;
}
FloatingTextStringOnCreature( sADire, OBJECT_SELF, FALSE );
// Le FALSE est important il te permettra que tous puisse voir le text
// Par contre tu vois la phrase que si ton PC est a 30 pieds max !
Ca compile mais j'ai pas testé...
Pour le reste je vois pas bien... Peut être qu'il te manque le ExecuteScript dans ta ligne code modifiée ! M'enfin çà dois pas être çà vu que s'aurait pas compilé si s'était le cas !
Par LeProctophantasmiste le 4/11/2002 à 14:15:51 (#2477100)
La solution proposée par Frolo me semble la bonne.
void main()
{
object oPorte;
oPorte = OBJECT_SELF;
DelayCommand(6.0 , ActionCloseDoor (OBJECT_SELF));
SetLocked (oPorte, TRUE);
}
Le problème ici c'est surtout que tu verrouille la porte avant de la refermer, SetLocked(oPorte,TRUE) est exécuté immédiatement...
JOL Archives 1.0.1
@ JOL / JeuxOnLine