Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > modif de tag
modif de tag
Par daemogorgon le 13/2/2003 à 22:33:13 (#3233661)
c'est possible de modifier des tag dynamiquement ? Je m'explique, en créant un cheminement générique avec des WayPoints, serait il possible de modifier dynamiquement les noms des WayPoints pour qu'ils puissent être associés à un PNJ quelconque qui a un nom XXXXX ?
Ah la question qui tue ! :doute:
Par Azrael07 le 13/2/2003 à 22:48:30 (#3233723)
par contre, je saisis pas bien ton exemple, mais j'ai pas l'impression que tu ai besoin de modifier le TAG dynamiquement
dis en un peu plus sur ce que tu veux faire ;)
Par daemogorgon le 13/2/2003 à 22:58:15 (#3233774)
L'idée est de préfabriquer des cheminements que je pourrais allouer à des PNJ crées dynamiquement dans le OnEnter de la zone.
T'as une idée ?
Par Azrael07 le 13/2/2003 à 23:25:16 (#3233924)
bien sur que j'ai une idée, j'utilise ca dès qu'il faut programmer un npc.
Tu fait une suite de waypoint, nommes avec des numeros, puis il suffit de mettre un "AssignCommand(" pour chaques npc créé dans le OnEnter, puis tu fais une boucle qui passe en revue tout les numeros 1 par 1, par ex :
int i = 0;
object oWaypoint = GetObjectByTag("WP_" + AdjustDecimal(IntToString(i)));
while(GetIsObjectValid(oWaypoint))
{
AssignCommand(oCreature, ActionMoveToObject(oWaypoint));
i++;
oWaypoint = GetObjectByTag("WP_" + AdjustDecimal(IntToString(i)));
}
J'utilise la fonction AdjustDecimal pour mettre des zeros quand il en faut lorsque je passe en revue des tags numérotés. Son corp est ici :
//Ajoute des zeros devant la chaine sNumber pour lui donner
//une taille de nNumberOfDecimal
string AdjustDecimal(string sNumber, int nNumberOfDecimal = 2)
{
int nSize = GetStringLength(sNumber);
int iCount;
for(iCount; iCount < nNumberOfDecimal - nSize; iCount++)
sNumber = "0" + sNumber;
return sNumber;
}
si on met la chaine "3" en entrée, on obtient "03" a la sortie, si on met "11" on obtient "11", voila
si t'as besoin de plus d'approfondissement hésite pas ;)
Par daemogorgon le 13/2/2003 à 23:40:48 (#3234011)
Le script où il y a le AssignCommand, tu le mets où ? Dans le OnSpawn du PNJ ? :confus:
Par Azrael07 le 14/2/2003 à 0:14:20 (#3234155)
tu peux mettre ca dans le OnEnter de la zone, derrière tes créations de créatures. Si je reprend en entier, ton fichier pour une seule créature va donner ca :
//Ajoute des zeros devant la chaine sNumber pour lui donner
//une taille de nNumberOfDecimal
string AdjustDecimal(string sNumber, int nNumberOfDecimal = 2)
{
int nSize = GetStringLength(sNumber);
int iCount;
for(iCount; iCount < nNumberOfDecimal - nSize; iCount++)
sNumber = "0" + sNumber;
return sNumber;
}
void main()
{
object oCreature = CreateObject(OBJECT_TYPE_CREATURE, "blueprint", GetLocation(GetObjectByTag(WP_STPNT)));
int i = 0;
object oWaypoint = GetObjectByTag("WP_" + AdjustDecimal(IntToString(i)));
while(GetIsObjectValid(oWaypoint))
{
AssignCommand(oCreature, ActionMoveToObject(oWaypoint));
i++;
oWaypoint = GetObjectByTag("WP_" + AdjustDecimal(IntToString(i)));
}
}
Voila, c ni compilé ni debuggé, mais dans l'idée c ca. Il suffit d'ajouter le createObject et la boucle autant de fois que tu veux de npc
Par Taern le 14/2/2003 à 15:02:25 (#3237856)
Ca n'a pas fait beaucoup de bruit pour l'instant, pourtant je trouve ça assez révolutionnaire, compte tenu que ça pourrait permettre de garder des informations d'un joueur sur un objet.
Par Jedaï le 14/2/2003 à 16:34:20 (#3238551)
JOL Archives 1.0.1
@ JOL / JeuxOnLine