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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script simple, gros problème.

Par The BlooD Wolf FRA le 1/11/2002 à 13:42:34 (#2455467)

Je vous explique :

On a un PNJ.

J'aimerais que, dans un dialogue, il devienne hostile et frappe le joueur qui lui parle. Une fois que ce joueur se trouve en dessous de 10 pv, il arrête de le taper.

Donc j'ai ce script pour l'instant, que j'ai fait sans problèmes :

void main()
{
object oFighter = GetPCSpeaker();
int nCurrHP = GetCurrentHitPoints(oFighter);
int nFactionHostile = STANDARD_FACTION_HOSTILE;
ChangeToStandardFaction(OBJECT_SELF, nFactionHostile);
ActionAttack(oFighter);
if(nCurrHP <= 10)
{
SurrenderToEnemies();
}
}


J'ai aussi essayé ainsi :

void main()
{
object oFighter = GetPCSpeaker();
int nCurrHP = GetCurrentHitPoints(oFighter);
int nFactionHostile = STANDARD_FACTION_HOSTILE;
int nFactionCommoner = STANDART_FACTION_COMMONER;
ChangeToStandardFaction(OBJECT_SELF, nFactionHostile);
ActionAttack(oFighter);
if(nCurrHP <= 10)
{
ChangeToStandartFaction(OBJECT_SELF, nFactionCommoner);
}
}


Mais rien n'y fait, le PNJ attaque quand on clique sur la phrase de dialogue, mais il ne s'arrête pas, et j'ai beau lire et relire mon script, je trouve pas d'erreur flagrante.



:aide:

Merci d'avance.


PS : je met le script dans la boîte dialogue "Action Taken".

Par Jedaï le 1/11/2002 à 14:47:12 (#2455917)

Ben il est pas mal ce script même si perso j'aurais peut-être fait différemment mais il y a un gros problème :
Ton test if (nCurrHP fin (ds le second script) par :


while (GetCurrentHitPoints(oFighter) > 10)
{

}
ChangeToStandardFaction(OBJECT_SELF, nFactionCommoner);
ClearAllActions();
AssignCommand(oFighter, ClearAllActions());


La deuxième que je te recommande plutôt est celle-ci :
tu crée un script nommé "stopcombat10" :


void main()
{
object oPC = GetAttackTarget(OBJECT_SELF);

if (GetCurrentHitPoints(oPC) > 10)
{
DelayCommand(2.0, ExecuteScript("stopcombat10", OBJECT_SELF));
}
else
{
ChangeToStandardFaction(OBJECT_SELF, STANDARD_FACTION_COMMONER);
ClearAllActions();
AssignCommand(oPC, ClearAllActions());
}
}


Et à la fin de ton script tu rajoute cette ligne :


DelayCommand(2.0, ExecuteScript("stopcombat10", OBJECT_SELF));


Note que tu pourras réutiliser ce script et cette méthode pour d'autres combattant que tu souhaiterait voir s'arrêter de se battre quand le PC a 10 pts de vie.

Par Tynril le 1/11/2002 à 14:54:50 (#2455960)

Et si le guerrier fait une critique à 50dmg quand le joueur a 11pv ? :p

Par The BlooD Wolf FRA le 1/11/2002 à 15:10:46 (#2456061)

Merci beaucoup :merci:

Et il se bat aux poings, alors un critique a 50, hein ^^*

merci encore

*apprend douloureusement*

Par Jedaï le 1/11/2002 à 17:24:57 (#2456815)

Ben voui mais là Tynril si quelqu'un veut qu'un combat s'arrête à 10 pv , je suppose tout naturellement qu'il a pas mis La Tarrasque comme NPC. :mdr:
Sinon évidemment le problème est intéressant... jouer sur le OnDeath du module peut-être ?:confus:

Par Père Elric--- le 2/11/2002 à 14:23:37 (#2461984)

Provient du message de The BlooD Wolf FRA
Merci beaucoup :merci:

*apprend douloureusement*


Newwbiiieeee BlooDy !! Vien apprendre a scripter chez Papa Padre :mdr:

JOL Archives 1.0.1
@ JOL / JeuxOnLine