Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 5 von 5
  1. Beiträge anzeigen #1 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline

    [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

  2. Beiträge anzeigen #2 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von Bisasam Beitrag anzeigen
    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

  3. Beiträge anzeigen #3 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    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)

  4. Beiträge anzeigen #4 Zitieren
    Local Hero
    Registriert seit
    Feb 2017
    Beiträge
    270
     
    F a w k e s ist offline

    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);
    };

  5. Beiträge anzeigen #5 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline
    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
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide