Ca compile mais ca ne spawn rien ...

Répondre
Partager Rechercher
Je cherche à faire spawner un coffre via ce script qui compile en entrant dans une zone mais ... qui ne donne rien au final !
Tous mes blueprints et waypoints(position) sont placés et prêts.

Ps : Ne pouvant pas utiliser le tag des mes objets, est-il possible de récupérer un ResRef via un StringToObject de cette façon ?
Y à t'il une façon plus efficace de récupérer le Resref d'un blueprint ?
La synthaxe/construction est-elle bonne ?

Code:
void main()
{
	
object oResref;	
object oPosCoffreBonus1;		

// //////////////////////////////////////////////////////////
							
int iPositionnement1 = d4(1);

		if(iPositionnement1 == 1)
            		{
			oPosCoffreBonus1 = GetWaypointByTag("POS_COFFRE_BONUS_1_1");
			}

[Etc...]

// //////////////////////////////////////////////////////////
						
int iTypeCoffre1 = d12(1);

		if(iTypeCoffre1 == 1)
            		{
			oResref = StringToObject("cfrbonus_1_1");
			GetResRef(oResref);
			}

[Etc...]

// //////////////////////////////////////////////////////////

location lTarget1;
string sType1;


			lTarget1 = GetLocation(oPosCoffreBonus1);
			sType1 = GetResRef(oResref);
			CreateObject(OBJECT_TYPE_PLACEABLE, sType1, lTarget1);																
}
A mon avis le StringToObject est pas bon. Tu peux récupérer un objet à partir d'un string si le string provient d'un ObjectToString, et encore. Pour moi ces deux fonctions sont assez chimiques (les string sont de la forme "A5", "0B" si je me souviens bien).

Pourquoi ne récupères-tu pas tes objets "cfrbonus" à partir du tag ? Avec GetNearestObjectByTag (je crois qu'il est plus rapide) ou GetObjectByTag par exemple. Ensuite tu n'as qu'à faire un GetResRef dessus.

Code:
void main()
{
   object oCoffre = GetWaypointByTag("POS_COFFRE_BONUS_1_" + IntToString(d4(1)));
   location lCoffre = GetLocation(oPos);

   object oRef = GetNearestObjectByTag("cfrbonus_1_" + IntToString(d12(1)), oPos, 1);
   string sRef = GetResRef(oRef);

   CreateObject(OBJECT_TYPE_PLACEABLE, sRef, lCoffre);
}
Je sais pas si ça compile et j'ai tout concentré, bon courage
Je ne veut pas utiliser le GetObjectByTag parce que justement les tags de ces coffres sont déjà affectés a un nettoyeur de zone qui reprend justement ce tag générique afin de reconnaitre les objets a nettoyer ou non.

Donc via Resref me semble la seule autre solution.
Grosso-modo, tu es obligé de passer par le Tag pour récupérer un objet existant dans le module (et il peut y en avoir plusieurs avec le même Tag dans une multitude de zones différentes, même dans les Limbes).
Un ResRef est unique, en ne permet en fait que de récupérer le "modèle/template" de l'objet qui est dans la palette du module.
Il n'y a aucun problème à chercher un objet via son Tag dans plusieurs scripts différents qui n'ont aucun liens entre eux (les scripts).

Donc le seul moyen que tu as de travailler avec un ResRef dans un script, et soit de le récupérer via un objet déjà sur le module (qui peut être n'importe où, même dans les Limbes), soit de l'écrire en toute lettre dans ton script.

StringToObject et ObjectToString, ce sont vraiment des fonctions nébuleuses, et elles fonctionnent forcément de paire.

Je ne peux que recommander la solution de Lv4.
Je comprend parfaitement ce que vous essayez de me dire

Autre idée, est-il possible de faire en sorte qu'un script ne sélectionne que les objets qui commencerai par (par exemple) : cfr_

Que les objets :
cfr_X
cfr_Y
cfr_Z

Soient pris tous ensembles grace au début de leurs tags respectifs (cfr_).

De cette manière je pourrait différencier les objets via leurs tags et ils seraient tous succeptibles d'être sélectionnés par le nettoyeur.
?
Code:
string oTag = GetTag( oTruc );
if( GetStringLeft( oTag, 4 ) == "cfr_" )
{
// Ton code
}
En gros. Pas trop de soucis de ce côté là, Nwn est pas trop mal équipé niveau manipulation de chaînes de caractères.
Répondre

Connectés sur ce fil

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