Dis-moi si ceci te convient.
Je ne l'ai pas testé, mais cela devrait marcher. Dans le cas contraire, on fera en sorte que...
// Pour test, je placerai ce script dans l'evenement OnUsed d'un levier
// Prototypes string GetTagContainer( object oCreature, object oSearch );
void main() { object oPC = GetLastUsedBy(); // a redefinir selon tes besoins string sTagObjetRecherche = "TagDeMonObjet"; // Definir ici le tag de l'objet que l'on recherche string sNomObjetRecherche = ""; string sTagContainer = "";
// Si l'objet n'est pas possede par le PJ, on le signale et on quitte object oMonObjet = GetItemPossessedBy( oPC, sTagObjetRecherche ); if ( !GetIsObjectValid( oMonObjet )) { SendMessageToPC( oPC, "Vous ne semblez pas posseder l'objet dont le tag est " + sTagObjetRecherche ); return; }
// Sinon, on recupere le nom de l'objet et on lance la recherche sNomObjetRecherche = GetName( oMonObjet ); sTagContainer = GetTagContainer( oPC, oMonObjet );
if ( sTagContainer != "" ) // Si l'objet est dans un container, on signale son tag... SendMessageToPC( oPC, "L'objet" + sNomObjetRecherche + " a ete trouve dans un container dont le tag est " + sTagContainer ); else // sinon, ben on le signale aussi... SendMessageToPC( oPC, "L'objet" + sNomObjetRecherche + " se trouve directement dans votre inventaire" ); }
string GetTagContainer( object oCreature, object oSearch ) { object oItem; object oItemInContainer;
oItem = GetFirstItemInInventory( oCreature ); while ( ( GetIsObjectValid( oItem )) ) { if ( oItem == oSearch ) return "";
if ( GetHasInventory( oItem )) { oItemInContainer = GetFirstItemInInventory( oItem ); while ( GetIsObjectValid( oItemInContainer )) { if ( oItemInContainer == oSearch ) return GetTag( oItem );
oItemInContainer = GetNextItemInInventory( oItem ); } } oItem = GetNextItemInInventory( oCreature ); }
return ""; }
|