TakeItems Funktion


  • Hi Eco-Modder,

    ich habe am Wochenende mal ein bisschen mit eigenen Commands herumgespielt und wollte dann einen Befehl erstellen, mit dem man einem User ein Item aus dem Inventar entnehmen kann, wenn dieses vorhanden ist.
    In etwa so:
    /take LogItem 5
    soll dem User, der den Befehl ausführt, 5 Logs aus dem Inventar nehmen, wenn diese vorhanden sind oder eine Fehlermeldung ausgeben falls nicht vorhanden.

    Dazu habe ich die TakeItems Funktion gefunden, ich weiß aber nicht, welche Parameter diese erwartet.

    Kann mir da vielleicht jemand helfen?


  • 5
    Posts
    3261
    Views
    Log in to reply


  • TakeItems takes a collection of ItemTypes and quantities (the Tuple<ItemType, int>) and if the inventory has those items, removes them and returns true.

    you can convert a text item name into the actualy ItemType in a similar fashion to how the /give command works:

           var itemType = ItemRegistrar.Obj.GetRegistered().FirstOrDefault(x => x.Name == "ITEMNAMEHERE");


  • Thanks for the answer but now I am getting an Error:

    The Compiler was not able to convert 'System.Type' to 'Eco.Gameplay.Item.ItemType'

    Item[] takenItems;
    int neededQuantity = 5;
    var itemType = ItemRegistrar.Obj.GetRegistered().FirstOrDefault(x => x.Name == "LogItem");
    var requiredItems = new List<Tuple<ItemType, int>>();
    requiredItems.Add(new Tuple<ItemType, int>(itemType, neededQuantity));
    player.User.Inventory.TakeItems(requiredItems, out takenItems);


  • @bl0ons try this

    list itemItem[] takenItems;
    int neededQuantity = 5;
    var type = ItemRegistrar.Obj.GetRegistered().FirstOrDefault(x => x.Name == "LogItem");
    if(type != null)
    {
    var itemType = new ItemType(type);
    var requiredItems = new List<Tuple<ItemType, int>>();
    requiredItems.Add(new Tuple<ItemType, int>(itemType, neededQuantity));
    player.User.Inventory.TakeItems(requiredItems, out takenItems);
    }



  • List itemItem[] takenItems;

    This also caused an error, I replaced it by

    Item[] takenItems;
    

    Now everything works fine. Thanks a lot!


5
Posts
3261
Views
Log in to reply

Internal error.

Oops! Looks like something went wrong!