-
[G1] In B_GiveInvItems auf Itemnamen zugreifen
Hi Leute,
ich habe das Problem, dass ich in der B_GiveInvItems in G1 nicht auf Itemnamen zugreifen kann, um diese in Prints zu benutzen. Die globale Variable "item" wird erst in G2 Addon mithilfe von CreateInvItem(s) befüllt, in G1 bleibt sie leer. Und es gibt anscheinend auch keine Funktion, mithilfe der man mit einer Instanz (z.B. itminugget) eine C_Item-Variable befüllen kann, worüber man wiederum an den Itemnamen kommt.
Aus irgendeinem Grund wird mir bei der External func C_Item Npc_GetInvItem vom Parser gesagt, diese Funktion gebe keine Instanz zurück. Ich renn also gegen eine Wand.
Weiß da jemand Rat?
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
Zitat von Bisasam
Aus irgendeinem Grund wird mir bei der External func C_Item Npc_GetInvItem vom Parser gesagt, diese Funktion gebe keine Instanz zurück.
Zeig mal bitte das Skript das diese Meldung produziert.
Alternativ hilft vielleicht das hier:
https://forum.worldofplayers.de/foru...nzeigen-lassen
-
Die LeGo-Version im verlinkten Thread verlässt sich darauf, dass Npc_GetInvItem() die 'item' Variable befüllt und das habe ich für G1 nicht getestet.
Wenn du allerdings die Instanz kennst, kannst du vermutlich nach Erstellen des Items einfach den Pointer der Instanz verwenden, d.h.
Code:
CreateInvItem(hero, itminugget);
Print(itminugget.name);
Ansonsten, falls du die Instanz nur als ID hast:
Code:
CreateInvItem(hero, ID);
var zCPar_Symbol symb; symb = MEM_GetSymbolByIndex(ID);
var C_Item itm; itm = _^(symb.offset);
Ich kann mir vorstellen, dass letzteres nicht funktioniert, falls es ein stapelbares Item ist, das im Inventar bereits vorhanden ist.
Geändert von Lehona (11.07.2018 um 16:45 Uhr)
-
G1 get item name
Hey Bisasam,
You can use Npc_GetInvItemBySlot - this fills global variable item.
I am using function below to get item.Name - worked fine for me so far
Code:
// G1
FUNC INT NPC_Get_Inventory_Category_Item (var C_NPC slf, var int inv_category, var int itm)
{
var int p;
var int itm_count;
var int itm_instance;
var int itm_slot;
itm_slot = 0;
//Loop through inventory
p = MEM_StackPos.position;
//Is there any item in itm_slot ?
if (Npc_GetInvItemBySlot (slf, inv_category, itm_slot) > 0)
{
itm_instance = Hlp_GetInstanceID (item);
if (itm == itm_instance)
{
return TRUE;
} else
{
itm_slot = itm_slot + 1;
MEM_StackPos.position = p;
};
};
return FALSE;
};
FUNC INT NPC_Get_Inventory_Item (var C_NPC slf, var int itm)
{
if (NPC_Get_Inventory_Category_Item (slf, INV_WEAPON, itm) == FALSE) {
if (NPC_Get_Inventory_Category_Item (slf, INV_ARMOR, itm) == FALSE) {
if (NPC_Get_Inventory_Category_Item (slf, INV_RUNE, itm) == FALSE) {
if (NPC_Get_Inventory_Category_Item (slf, INV_MAGIC, itm) == FALSE) {
if (NPC_Get_Inventory_Category_Item (slf, INV_FOOD, itm) == FALSE) {
if (NPC_Get_Inventory_Category_Item (slf, INV_POTION, itm) == FALSE) {
if (NPC_Get_Inventory_Category_Item (slf, INV_DOC, itm) == FALSE) {
if (NPC_Get_Inventory_Category_Item (slf, INV_MISC, itm) == FALSE) {
return FALSE;
}; }; }; }; }; }; }; };
return TRUE;
};
//...
if (NPC_Get_Inventory_Item (hero, itmiNugget))
{
PrintScreen_Ext (item.Name, -1, _YPOS_MESSAGE_XPGAINED, "font_old_10_white.tga", _TIME_MESSAGE_XPGAINED);
};
-
Achso, dann kann ich getinvitem also nicht direkt verwenden um eine variable zu befüllen, sondern muss über die globale item gehen. Danke für die Hilfe, ich probiere das mal aus
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|