Je sèche!!

Répondre
Partager Rechercher
Coucou tout le monde, j'ai un petit souci avec un SetGlobalInt ("Kobold") que je ne sais plus vraiment ou mettre afin de pouvoir réinitialisé via une conversation.

1er passage dans la zone, je prend ce qu'il me faut avant d'entrer dans la zone et, miracle, tout se spawn à merveille. Je tue tout mes petits kobolds.
2ème passage pour vérif, rien dans la zone, c'est parfait vue que j'ai pas réinitialisé la zone.
Je vais voir mon pnj qui fait la réinitialisation de la variable.
3ème passage j'y retourne prêt à en découdre à nouveau mais ... bah! ........ ouk c ki sont mes nouveaux petits kobolds !?

Je sais parfaitement que ca cloche quelque part dans le script ci-dessous mais suis un peu perdu à l'heure actuelle pour le remettre "dans le bon sens" pour que ca fonctionne (et je suis tjrs une quiche en la matière)

Plus que de grandes phrases, voici le script :

Code:
#include "ginc_group"
#include "ginc_misc"
#include "declencheur_include_area"

void SpawnCreatures(string sResRef)
{
	string sWPTag = "sp_" + sResRef;
	object oWP = GetObjectByTag(sWPTag);
	int i = 0;
	
		
	while(GetIsObjectValid(oWP))
	{
		PrettyDebug ("Spawning in " + sResRef);
		if(GetObjectType(oWP) == OBJECT_TYPE_WAYPOINT 
			&& GetArea(oWP) == OBJECT_SELF
			&& !IsMarkedAsDone(oWP))
		{
			location lLoc = GetLocation(oWP);
			object oCreature = CreateObject(OBJECT_TYPE_CREATURE, sResRef, lLoc);
			GroupAddMember("G14 Enemies", oCreature);
			
			object oTarget;
			object oSpawn;
			location lTarget;
			oTarget = GetWaypointByTag("COFFRE");			
			
			lTarget = GetLocation(oTarget);
			oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "cfr_cr01_01", lTarget);			
						
			
			MarkAsDone(oWP);
		}
		
		i++;		
		oWP = GetObjectByTag(sWPTag, i);
	}



SetGlobalInt("Kobold", 1);		
}

void main()
{
    object oArea = OBJECT_SELF;
    object oPC = GetEnteringObject();
	int iVerif = GetGlobalInt("Kobold");
		
	
    if (!GetIsObjectValid(oArea))
        return;
    if (!GetIsPC(oPC))
        return;	
    if (!iVerif != 1)
        return;	
		   
		 if (GetHasItem(oPC, TAG_OBJECT_1))
		{
//        ManageTriggersByTag(oArea, TAG_TRIGGER_1);
		
			SpawnCreatures("g14_kobold_warrior");
			SpawnCreatures("g14_kobold_sorcerer");
			
		}

}
Merci pour toute correction
Hum, 2 possibilités :

Si j'ai bien compris (ce serait bien si c'était explicité, plus de grandes phrases), il faut spawner les kobolds si la variable est à zéro. Moi je mettrais le test suivant
if (iVerif) return;
avec l'autre forme, risque de conflit de priorité des opérateurs, et quand iVerif vaut 1 j'ai bien l'impression que cela rend le test positif.

Par ailleurs MarkAsDone() marque la séquence pour la partie! Il ne refera jamais une séquence entre IsMarkedAsDone et MarkAsDone, je ne crois pas que ce soit ce qui est voulu. A mon avis il faut les enlever.
En fin de compte, j'ai trouvé ce qu'il clochait ... Merci Claudius de m'avoir certifier que le MarkAsDone est définitif

Ps : C'est pas bon de ne pas dormir
Répondre

Connectés sur ce fil

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