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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

besoin d'aide et oui encore

Par souana le 28/8/2002 à 19:59:52 (#2047844)

voila j'ai fait un script pour qu quand un PC rentre dans un trigger un texte apparaisse, et je voudrait que quand le PC repasse sur ce trigger un autre texte apparaisse.


void main()
{
object oPC = GetEnteringObject();
int nvalue = GetLocalInt(oPC, "NAGE");
if (nvalue = 1)
{
string Nage1 = "Vous voyer au nord une autre rive";
string Nage2 = "peut-etre pouvez vous nager jusqu'a la ";
DelayCommand(1.0,FloatingTextStringOnCreature(Nage1,oPC));
DelayCommand(3.0,FloatingTextStringOnCreature(Nage2,oPC));
}
else
{
string Nage3 = " Alors decider a prendre un bain!!!!";
DelayCommand(1.0,FloatingTextStringOnCreature(Nage3,oPC));
}

}

comment faire si on met une variable dans l'un des events du trigger celle ci sera automatiquement réinitialiser lorsque le PC rentre pour la seconde fois dans le trigger.....
:aide: merci de votre aide

Par Azharial del'Amrhyn le 28/8/2002 à 20:40:17 (#2048099)

Il y a un souci avec ton (nvalue = 1) qui affecte une valeur plutot que de la tester, et tu ne mets pas a jour ta variable locale.

Essaie ca :

void main()
{
object oPC = GetEnteringObject();
int nVal = GetLocalInt(oPC, "NAGE");

if (nVal == 1)
{
string sNage = "Phrase2";
DelayCommand(3.0,FloatingTextStringOnCreature(sNage,oPC));
}
else
{
string sNage = "Phrase1";
DelayCommand(1.0,FloatingTextStringOnCreature(sNage,oPC));
SetLocalInt(oPC, "NAGE", 1);
}

}

Par souana le 28/8/2002 à 21:20:01 (#2048420)

c'est bon j'ai réussi, merci quand même Azharial .
le tout c'est de savoir que quand on prend une valeur comme:
int nvalue = GetLocalInt(oPC, "NAGE");
cela retourne zéro.


void main()
{
object oPC = GetEnteringObject();
int nvalue = GetLocalInt(oPC, "NAGE");
if (nvalue == 0)
{
string Nage1 = "Vous voyer au nord une autre rive";
string Nage2 = "peut-etre pouvez vous nager jusqu'a la ";
DelayCommand(1.0,FloatingTextStringOnCreature(Nage1,oPC));
DelayCommand(3.0,FloatingTextStringOnCreature(Nage2,oPC));
SetLocalInt(oPC,"NAGE",1);
}
else
{
string Nage3 = " Alors decider a prendre un bain!!!!";
DelayCommand(1.0,FloatingTextStringOnCreature(Nage3,oPC));
}

}


voila le script marche y revient au même que le tien d'ailleur sauf l'ordre des phrases.
désolé de vous avoir poster ce sujet quich++, c'est venu tout seul pendant le repas......:doute:

Par souana le 28/8/2002 à 21:21:38 (#2048432)

au passage y aurait il pas un moyen de ralonger la durée des texte flotant de :FloatingTextStringOnCreature ?

Eeek

Par Kemay le 28/8/2002 à 22:22:20 (#2048812)

Ton script a un problème:

if( nvalue = 0)

Je suppose que tu veux tester si nvalue est égal à 0, à ce moment là il faut que tu remplaces cette ligne par:
if( nvalue == 0)

Par souana le 29/8/2002 à 12:21:15 (#2052048)

peut tu m'expliquer la différence entre = et == au passage,
editer/
oups en faite sur mon script j'avait bien nvalue == 0
je corrige ca desuite

Par Kemay le 29/8/2002 à 12:26:18 (#2052080)

"a == b" teste si a est égal à b
"a = b" assigne la valeur b à la variable a

En gros si tu écris if(a = b) tu ne fais aucune vérification, si b vaut 0 le if sera toujours faux, sinon il sera toujours vrai.

Par souana le 29/8/2002 à 12:30:11 (#2052116)

merci Kemay
donc le = assigne une valeur de droite a gauche
et le == signifie est egale a ....
ca me rappelle les bouquins que j'ai potasser sur le C et le C ++
ca revient c'est bon signe....:monstre:

Par Kemay le 29/8/2002 à 12:36:03 (#2052182)

Héhé c'est exactement ça... On aurait dit une phrase tirée d'un bouquin de C++ ;)

ca revient c'est bon signe....:monstre:
Fais gaffe quand même, si dans un ascenceur tu appuies sur le bouton 4 pour aller au cinquième étage , c'est que ça revient un peu trop ;)

Par souana le 29/8/2002 à 19:58:38 (#2055701)

pas de problème y a des escaliers chez moi :D

sinon je sait que les familiers, compagnon animals ou hechman..etc suive le PC mais est il possible de leurs faire faire des ActionJumpToLocation ?
j'ai éssayer dans un script qui fait traverser un plan d'eau, le PC.
la créature invoqué ou autre me sui par définition mais pas moyen de forcer son mouvement au bon moment.
est-ce faisable, si oui comment ?

ps: j'édite un exemple dans 5 minute...


void main()
{
object oPC = GetPCSpeaker();
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC);// ma creature
object Iloc = GetObjectByTag("WP_NagePRS_O01");
string Nage4 = "AIIIIEEEE ces petite eraflures sont plus douloureuse que prevu....";
AssignCommand(oAnimal,ActionJumpToLocation(GetLocation(Iloc))));// le jump de l'animal
DelayCommand(3.0,AssignCommand(oPC,ActionJumpToLocation(GetLocation(Iloc))));
DelayCommand(6.0,FloatingTextStringOnCreature(Nage4,oPC));
DelayCommand(8.0,ApplyEffectToObject( DURATION_TYPE_INSTANT,EffectDamage( 2
,DAMAGE_TYPE_DIVINE),oPC,0.0f));
}
// l'animal compagnion ne fait le saut demander, il arrive par la suite forcer
// de suivre le PC !!!!

Par Azharial del'Amrhyn le 29/8/2002 à 23:54:28 (#2057441)

Quand tu as des soucis de ce genre (stacks, action / command), découpe tes scripts en plusieurs à la manière de Gargantuel, ca fonctionne bien ;).

Exemple :

script "teleport_riviere"


void main()
{
JumpToObject(GetObjectByTag("le_tag_de_la_riviere"));
}


script qui lance tout ca :

void main()
{
object oPC = GetLastUsedBy(); // ou GetEnteringObject() suivant le declenchement
DelayCommand(2.0, ExecuteScript("teleport_riviere", oPC));

object oAnimal = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC);
DelayCommand(4.0, ExecuteScript("teleport_riviere", oAnimal));
}


Et la normalement, ta bestiole devrait suivre avec 2 sec de decalage.

Par souana le 30/8/2002 à 11:40:02 (#2059706)

merci Azharial ca marche trés bien.
j'ai préféré fair ca en un seul script.

JOL Archives 1.0.1
@ JOL / JeuxOnLine