Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Script simple, gros problème.
Script simple, gros problème.
Par The BlooD Wolf FRA le 1/11/2002 Ã 13:42:34 (#2455467)
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)
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)
Par The BlooD Wolf FRA le 1/11/2002 Ã 15:10:46 (#2456061)
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)
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