GetPCSpeaker() marche pas?

Répondre
Partager Rechercher
Probleme lors d'une conversation a une seule phrase il semble que GetPCSpeaker() renvoie rien dans le actiontaken. J'ai mis le meme script dans une reponse factice et ca marche...
QQ un a une solution pour cibler le joueur?(GetLastSpeaker marche pas non plus)
Etonnant que ca marche pas.

C'est une conversation d'une seule phrase lancée par un PnJ, ou un dialogue que tu applique a un joueur ?

Essaye, au pire, sur le OnConversation du NPC, de stocker en LocalObject le GetPCSpeaker(), et tu le remonte avec un GetLocalObject pour l'utiliser dans ton script...
GetPCSpeaker() ne marche pas dans le OnConversation (du moins pas au début, il faut utiliser GetLastSpeaker() à la place (c'est d'ailleurs là sa place, il ne devrait jamais être utilisé dans les scripts à l'intérieur d'une conversation car il n'est pas "sûr").
Bonjour,

peux-tu me faire part de ton bidouillage car j'ai un problème qui me semble similaire (mais mon niveau de script est faible donc je peux me tromper)

Voilà, je veux faire un script ou le PJ parle à un NPC (accompagnes de 2 gardes), où il peut passer où il y a combat (pour faire simple).

je veux aussi que les 2 gardes crient "à l'attaque"

1- si dans mon dialogue, je met mon script sur la fin d'un texte du PJ, alors les 3 NPC m'attaquent bien en même temps mais aucun des deux elfes ne crient leurs textes ?

2- si dans mon dialogue, je le met sur la fin d'un texte du NPC, alors seul ce dernier m'attaque et les 2 autres une fois celui-ci mort par contre au début du combat, les 2 elfes crient bien leurs textes ?

je suis un peu paumé...

voici mon script :

#include "NW_I0_GENERIC"
void main()
{

object oElf001 = GetObjectByTag ("Elf001");
object oElf002 = GetObjectByTag ("Elf002");
object oPJ = GetPCSpeaker ();

AssignCommand (oElf001, DetermineCombatRound());
AssignCommand (oElf002, DetermineCombatRound());

SetIsTemporaryEnemy(GetLastSpeaker());

AdjustReputation(oPJ, oElf001, -100);
AdjustReputation(oPJ, oElf002, -100);

AssignCommand(oElf001, ActionSpeakString("A l'Attaque!!!"));
AssignCommand(oElf002, ActionSpeakString("Protegeons Thord !!!"));

DetermineCombatRound();

}

par contre si je met GetIsPC à la place de GetLastSpeaker alors il ne m'attaque plus du tout si c'est le NPC qui parle en dernier.

merci pour vos éclaicissement
Mets SpeakString() à la place de ActionSpeakString(), sinon ActionSpeakString() est rajouté à la fin de la queue d'action et est donc susceptible d'être supprimé par un ClearAllActions() qui traîne parce que tes elfes sont en train de combattre.
[Total HS]

Héhé, les vacances c'est bien hein

(Enfin en CPGE MPSI à Louis-le-Grand, les vacances sont un peu trop "actives" à mon goût, mais bon.... )

[/Total HS]
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés