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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Mon script marche pas.

Par Simkim le 3/11/2002 à 21:16:44 (#2472700)

Voilà le script de départ (dans le OnSpawn)

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)

A mon avis si tu veux faire dire une phrase a tes PNJ le mieux est de faire un petit script du genre :

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)

ActionAttack fait que le PNJ ne cesse d'attaquer, ton ActionStartConversation est donc bien mis dans la queue mais jamais exécuté...
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