Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Restriction de race dans un script ou le PNJ engage la conversation tout seul...
Restriction de race dans un script ou le PNJ engage la conversation tout seul...
Par Mel Ethybem le 18/2/2003 à 21:58:32 (#3265568)
void main()
{
object oNPC = GetObjectByTag("TAG_DU_PNJ");
object oPC = GetEnteringObject();
if(GetIsPC(oPC) && GetLocalInt(oPC,"Dlg_Init_TAG_DU_PNJ" + GetTag(oNPC)) == FALSE && !IsInConversation(oNPC))
{
AssignCommand(oPC,ClearAllActions());
AssignCommand(oNPC,ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oPC));
AssignCommand(oNPC,ActionStartConversation(oPC));
}
}
Cela fait que le PNJ, au moment où le PJ rentre dans un trigger, engage la conversation tout seul. Et bien, je voudrais que cela n'arrive que si le PJ est un nain. En d'autres mots, le PNJ n'accosterais le PJ que si ce dernier est un nain. Quel ligne de code dois-je ajouter pour cela ?
Par Reyan le 18/2/2003 à 22:02:47 (#3265588)
genre
void main()
{
object oNPC = GetObjectByTag("TAG_DU_PNJ");
object oPC = GetEnteringObject();
int nRace = GetRacialType(oPC);
if(GetIsPC(oPC) && GetLocalInt(oPC,"Dlg_Init_TAG_DU_PNJ" + GetTag(oNPC)) == FALSE && !IsInConversation(oNPC) && (nRace ==RACIAL_TYPE_DWARF)
{
AssignCommand(oPC,ClearAllActions());
AssignCommand(oNPC,ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oPC));
AssignCommand(oNPC,ActionStartConversation(oPC));
}
}
pas testé (edit) mais corrigé
Quel nom ?
Par Mel Ethybem le 18/2/2003 à 22:05:41 (#3265606)
Par grenwald le 18/2/2003 à 22:33:14 (#3265759)
Pour info (tiré du Lexicon, et traduit) :
GetRacialType (object oCreature)
=> Donne la race de la créature
Et effectivement, "Dwarf" c'est bien le nom anglais pour "Nain". Et après tout, le langage du script utilise pour l'essentiel des termes anglais :lit:
pour finir, la fonction que t'a donné Reyan correspond bien a ce que tu demandais :)
Sans vouloir te vexer, un tout petit peu de recherche (et un essai) t'aurais permis de voir que c'était que tu bonheur comme script :p
suis une quiche
Par Mel Ethybem le 18/2/2003 à 22:37:06 (#3265780)
Par Mel Ethybem le 18/2/2003 à 22:38:18 (#3265785)
if(GetIsPC(oPC) && GetLocalInt(oPC,"Dlg_Init_TAG_DU_PNJ" + GetTag(oNPC)) == FALSE && !IsInConversation(oNPC) && (nRace ==RACIAL_TYPE_DWARF])
-> ERREUR : UNKNOWN STATE IN COMPILER
Marche pas !
le script en entier :void main()
{
object oNPC = GetObjectByTag("Semli");
object oPC = GetEnteringObject();
int nRace = GetRacialType(oPC);
if(GetIsPC(oPC) && GetLocalInt(oPC,"Dlg_Init_Semli" + GetTag(oNPC)) == FALSE && !IsInConversation(oNPC) && (nRace ==RACIAL_TYPE_DWARF)
{
AssignCommand(oPC,ClearAllActions());
AssignCommand(oNPC,ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oPC));
AssignCommand(oNPC,ActionStartConversation(oPC));
}
}
Par Reyan le 18/2/2003 à 22:49:40 (#3265843)
je corrige
et les constante, les fameux "RACIAL_TYPE_*" ba on les trouve en cliquant sur l'onglet "constante", tu met dans le filtre "racial_type", info que te donne la description de la fonction, et t'as toute tes races sous les yeux ;)
il est qd même achement bien fait aurora :)
enfin moi je trouve ^_^
la version corrigée :
void main()
{
object oNPC = GetObjectByTag("TAG_DU_PNJ");
object oPC = GetEnteringObject();
int nRace = GetRacialType(oPC);
if((GetIsPC(oPC)) && (GetLocalInt(oPC,"Dlg_Init_TAG_DU_PNJ" + GetTag(oNPC)) == FALSE) && !(IsInConversation(oNPC)) && (nRace ==RACIAL_TYPE_DWARF))
{
AssignCommand(oPC,ClearAllActions());
AssignCommand(oNPC,ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oPC));
AssignCommand(oNPC,ActionStartConversation(oPC));
}
}
JOL Archives 1.0.1
@ JOL / JeuxOnLine