1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Di: 01 Juli 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Tutorials & Releases

    [Tutorial - 3.1.4.8] Craftingsystem zum Herstellen von Items, Waffen usw.

      • Altis Life
    • SirFluffyVonKitten
    • 5. Juni 2016 um 21:29
    • SirFluffyVonKitten
      Nerd
      Reaktionen
      407
      Trophäen
      11
      Beiträge
      798
      Bilder
      3
      • 5. Juni 2016 um 21:29
      • #1

      Da das alte Tutorial doch recht hingeklatscht wirkt habe ich mich dazu entschieden ein neues zu machen.

      Durch das Craftingsystem kann man z.B. aus 5 Äpfeln einen Apfelsalat erstellen. Dies erfordert natürlich eine gewisse Konfiguration :)


      Vorab:


      Hiermit untersage ich wie immer die Verbreitung dieser Daten und die des von mir verfassten Tutorials in anderen Foren ohne vorher mein Einverständnis dazu einzuholen.

      Schritt 1:

      öffnet die Datei /Functions.h und fügt dort folgendes unter der "class action" ein ein:

      C: Functions.h
      class craftAction {};

      und folgendes unter der "class Player_Menu":

      C: Functions.h
      class craft {};
      class craft_update {};
      class craft_updateFilter {};

      und folgendes unter der "class config":

      C: Functions.h
      class craftCfg {};


      Schritt 2:

      öffnet die Datei /dialog/MasterHandler.h und fügt dort folgendes ein:

      C: MasterHandler.h
      #include "craft.hpp"

      Schritt 3:

      öffnet die Datei /dialog/player_inv.hpp und fügt dort folgendes unter "class controls" ein:

      C: player_inv.hpp
      class ButtonCraft : Life_RscButtonMenu {
       idc = 2025;
       text = "$STR_PM_Craft";
       onButtonClick = "createDialog ""Life_craft"";";
       x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));
       y = 0.805;
       w = (6.25 / 40);
       h = (1 / 25);
      };

      Schritt 4:

      öffnet die Datei /stringtable.xml und fügt dort folgendes ein:

      C: stringtable.xml
      <Package name="Craft">
       <Key ID="STR_CRAFT_Title">
       <Original>Crafting Menu</Original>
       <German>Bau Menü</German>
       </Key>
       <Key ID="STR_PM_CraftStats">
       <Original>Object to craft</Original>
       <German>Sachen zum bauen</German>
       </Key>
       <Key ID="STR_PM_CraftMaterials">
       <Original>Materials needed</Original>
       <German>Benötigte Sachen</German>
       </Key>
       <Key ID="STR_CRAFT_Button">
       <Original>Craft !</Original>
       <German>Bauen !</German>
       </Key>
       <Key ID="STR_PM_NoMaterial">
       <Original>You do not have all the required materials !</Original>
       <German>Du hast nicht genug davon...!</German>
       </Key>
       <Key ID="STR_CRAFT_Process">
       <Original>You have crafted : %1</Original>
       <German>Du hast folgendes hergestellt : %1</German>
       </Key>
       <Key ID="STR_CRAFT_FILTER_Weapon">
       <Original>Weapons</Original>
       <German>Waffen</German>
       </Key>
       <Key ID="STR_CRAFT_FILTER_Uniform">
       <Original>Uniforms</Original>
       <German>Kleidung</German>
       </Key>
       <Key ID="STR_CRAFT_FILTER_Backpack">
       <Original>Backpacks</Original>
       <German>Rucksäcke</German>
       </Key>
       <Key ID="STR_CRAFT_FILTER_Item">
       <Original>Items</Original>
       <German>Items</German>
       </Key>
       <Key ID="STR_CRAFT_AR_Backpack">
       <Original>You already have a backpack ! Put it on the ground before crafting a new.</Original>
       <German>Du hast bereit einen Rucksack ! Pack den alten erstmal weg.</German>
       </Key>
       <Key ID="STR_CRAFT_AR_Uniform">
       <Original>You already have an uniform ! Put it on the ground before crafting a new.</Original>
       <German>Du hast bereits was an ! Mach dich nackt und versuch es nochmal.</German>
       </Key>
       </Package>
      und das im Package "Player_Menu" :
      <Key ID="STR_PM_Craft">
       <Original>Craft</Original>
       <German>Craft</German>
      </Key>
      Alles anzeigen

      Schritt 5:

      erstellt die Datei craft.hpp und fügt diese unter /dialog ein:

      C: craft.hpp
      /*
       File: craft.hpp
       Description: Crafting System
       Created by EdgeKiller
       Coder: EdgeKiller
      */
      class Life_craft {
       idd = 666;
       name= "life_craft";
       movingEnable = false;
       enableSimulation = true;
       onLoad = "[] spawn life_fnc_craft";
       class controlsBackground {
       class Life_RscTitleBackground:Life_RscText {
       colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};
       idc = -1;
       x = 0.1;
       y = 0.2;
       w = 0.8;
       h = (1 / 25);
       };
       class MainBackground:Life_RscText {
       colorBackground[] = {0, 0, 0, 0.7};
       idc = -1;
       x = 0.1;
       y = 0.2 + (11 / 250);
       w = 0.8;
       h = 0.6 - (22 / 250);
       };
       };
       class controls {
       class Title : Life_RscTitle {
       colorBackground[] = {0, 0, 0, 0};
       idc = 667;
       text = "$STR_CRAFT_Title";
       x = 0.1;
       y = 0.2;
       w = 0.6;
       h = (1 / 25);
       };
       class craftListHeader : Life_RscText
       {
       idc = 668;
       colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
       text = "$STR_PM_CraftStats";
       sizeEx = 0.04;
       x = 0.105; y = 0.26;
       w = 0.275; h = 0.04;
       };
       //Craft list
       class craftList : life_RscListBox
       {
       idc = 669;
       sizeEx = 0.030;
       onLBSelChanged = "[] spawn life_fnc_craft_update";
       x = 0.105;
       y = 0.31;
       w = 0.275; h = 0.44;
       };
       //Materials list header
       class materialListHeader : Life_RscText
       {
       idc = 670;
       colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
       text = "$STR_PM_CraftMaterials";
       sizeEx = 0.04;
       x = 0.395; y = 0.26;
       w = 0.275; h = 0.04;
       };
       //Materials list
       class materialList : Life_RscControlsGroup
       {
       idc = 671;
       w = 0.275;
       h = 0.44;
       x = 0.395;
       y = 0.30;
       class Controls
       {
       class mats : Life_RscStructuredText
       {
       idc = 672;
       sizeEx = 0.020;
       text = "";
       x = 0;
       y = 0;
       w = 0.27; h = 0.44;
       };
       };
       };
       //FILTER
       class FilterList : Life_RscCombo
       {
       idc = 673;
       colorBackground[] = {0,0,0,0.7};
       onLBSelChanged = "[] call life_fnc_craft_updateFilter";
       x = 0.69;
       y = 0.32;
       w = (6.25 / 30);
       h = (1 / 25);
       };
       //Craft button
       class ButtonCraft : Life_RscButtonMenu {
       idc = 674;
       text = "$STR_CRAFT_Button";
       colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
       onButtonClick = "if(!life_is_processing) then {[] spawn life_fnc_craftAction};";
       x = 0.69;
       y = 0.26;
       w = (6.25 / 40);
       h = (1 / 25);
       };
       class CloseButtonKey : Life_RscButtonMenu {
       idc = -1;
       text = "$STR_Global_Close";
       onButtonClick = "closeDialog 0;";
       x = 0.1;
       y = 0.8 - (1 / 25);
       w = (6.25 / 40);
       h = (1 / 25);
       };
       };
      };
      Alles anzeigen

      Schritt 6:

      erstellt die Datei fn_craftAction.sqf und fügt diese unter /core/actions ein:

      C: fn_craftAction.sqf
      /*
       File: fn_craftAction.sqf
       Author: EdgeKiller
       Description:
       Master handling for crafting an item.
      */
      private["_dialog","_item","_itemInfo","_oldItem","_newItem","_upp","_itemName","_ui","_progress","_pgText","_cP","_allMaterial","_matsNeed","_invSize","_handledItem","_itemFilter","_backpackOldItems","_weight"];
      disableSerialization;
      _dialog = findDisplay 666;
      if((lbCurSel 669) == -1) exitWith {hint localize "STR_ISTR_SelectItemFirst";};
      _item = lbData[669,(lbCurSel 669)];
      _allMaterial = true;
      _itemFilter = lbData[673,(lbCurSel 673)];
      _matsNeed = 0;
      _config = [_itemFilter] call life_fnc_craftCfg;
      {
       if(_item == _x select 0)then
       {
       _matsNeed = _x select 1;
       _invSize = count _matsNeed;
       for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
       _str = [_matsNeed select _i] call life_fnc_varToStr;
       _matsNum = _matsNeed select _i+1;
       if((missionNamespace getVariable (_matsNeed select _i)) < _matsNum) exitWith {_allMaterial = false;};
       };
       };
      } foreach (_config);
      if(!_allMaterial) exitWith {hint localize "STR_PM_NoMaterial";};
      //Some checks
      if((count _matsNeed) == 0) exitWith {};
      if(_itemFilter == "backpack" && backpack player != "") exitWith{
       hint localize "STR_CRAFT_AR_Backpack";
      };
      if(_itemFilter == "uniform" && uniform player != "") exitWith{
       hint localize "STR_CRAFT_AR_Uniform";
      };
      if(_itemFilter == "item") then {
       _weight = ([_item] call life_fnc_itemWeight);
      };
      if(_itemFilter == "item" && (life_carryWeight + _weight) > life_maxWeight) exitWith {
       hint localize "STR_NOTF_NoRoom";
      };
      if(_itemFilter == "weapon" && !(player canAdd _newItem) || currentWeapon player != "") exitWith {
       hint localize "STR_NOTF_NoRoom";
      };
      _oldItem = _matsNeed;
      _newItem = _item;
      if(_itemFilter == "item") then{
       _itemName = [_newItem] call life_fnc_varToStr;
      } else {
       _itemInfo = [_newItem] call life_fnc_fetchCfgDetails;
       _itemName = _itemInfo select 1;
      };
      _upp = format["Crafting %1",_itemName];
      closeDialog 0;
      //Setup our progress bar.
      5 cutRsc ["life_progress","PLAIN"];
      _ui = uiNameSpace getVariable "life_progress";
      _progress = _ui displayCtrl 38201;
      _pgText = _ui displayCtrl 38202;
      _pgText ctrlSetText format["%2 (1%1)...","%",_upp];
      _progress progressSetPosition 0.01;
      _cP = 0.01;
      _removeItemSuccess = true;
      _invSize = count _oldItem;
      for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
       _handledItem = [_oldItem select _i,1] call life_fnc_varHandle;
       if(!([false,_handledItem,_oldItem select _i+1] call life_fnc_handleInv)) exitWith {_removeItemSuccess = false;};
      };
      if(!_removeItemSuccess) exitWith {5 cutText ["","PLAIN"]; life_is_processing = false;};
      [] call life_fnc_p_updateMenu;
      life_is_processing = true;
      while{true} do
      {
       sleep 0.3;
       _cP = _cP + 0.01;
       _progress progressSetPosition _cP;
       _pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
       if(_cP >= 1) exitWith {};
      };
      if(_itemFilter == "backpack") then{
       if(backpack player == "") then{
       player addBackpack _newItem;
       }else{
       hint localize "STR_CRAFT_AR_Backpack";
       life_is_processing = false;
       };
      };
      if(_itemFilter == "item") then{
       _handledItem = [_newItem,1] call life_fnc_varHandle;
       [true,_handledItem,1] call life_fnc_handleInv;
      };
      if(_itemFilter == "uniform") then{
       if(uniform player == "") then{
       player addUniform _newItem;
       }else{
       hint localize "STR_CRAFT_AR_Uniform";
       life_is_processing = false;
       };
      };
      if(_itemFilter == "weapon") then{
       if(player canAdd _newItem) then{
       player addItem _newItem;
       } else {
       if(currentWeapon player == "") then{
       player addWeapon _newItem;
       }else{
       5 cutText ["","PLAIN"];
       for [{_i=0},{_i<_invSize-1},{_i=_i+2}] do {
       _handledItem = [_oldItem select _i,1] call life_fnc_varHandle;
       [true,_handledItem,_oldItem select _i+1] call life_fnc_handleInv;
       };
       life_is_processing = false;
       };
       };
      };
      5 cutText ["","PLAIN"];
      titleText[format[localize "STR_CRAFT_Process",_itemName],"PLAIN"];
      life_is_processing = false;
      Alles anzeigen

      Schritt 7:

      erstellt die Datei fn_craft.sqf und fügt diese unter /core/pmenu ein:

      C: fn_craft.sqf
      /*
       File: fn_craft.sqf
       Description: Crafting System
       Created by EdgeKiller
       Coder: EdgeKiller
      */
      private["_dialog","_inv","_itemInfo","_filter"]; //Declare all private variables
      if(!dialog) then { //Verify if the window is open
       createDialog "Life_craft";
      };
      disableSerialization; //Disable Serialization
      if(life_is_processing) exitWith{
       closeDialog 2001;
       closeDialog 0;
      };
      _dialog = findDisplay 666; //find the craft dialog/window
      _inv = _dialog displayCtrl 669; //find the listbox of items can be created
      lbClear _inv; //clear the listbox
      _filter = _dialog displayCtrl 673;
      _filter lbAdd localize "STR_CRAFT_FILTER_Weapon";
      _filter lbSetData[(lbSize _filter)-1,"weapon"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Uniform";
      _filter lbSetData[(lbSize _filter)-1,"uniform"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Backpack";
      _filter lbSetData[(lbSize _filter)-1,"backpack"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Item";
      _filter lbSetData[(lbSize _filter)-1,"item"];
      _filter lbSetCurSel 0;
      Alles anzeigen

      Schritt 8:

      erstellt die Datei fn_craft_update.sqf und fügt diese unter /core/pmenu ein:

      C: fn_craft_update.sqf
      /*
       File: fn_craft_update.sqf
       Description: Crafting System
       Created by EdgeKiller
       Coder: EdgeKiller
      */
      private["_dialog","_inv","_mats","_item","_struct","_str","_invSize","_matsNeed","_matsNum","_config","_itemFilter"]; //Declare all private variables
      disableSerialization; //Disable Serialization
      _dialog = findDisplay 666; //find the craft dialog/window
      _inv = _dialog displayCtrl 669; //find the listbox of items can be created
      _mats = _dialog displayCtrl 672;
      _struct = "";
      if((lbCurSel 669) == -1) exitWith {hint localize "STR_ISTR_SelectItemFirst";};
      _item = lbData[669,(lbCurSel 669)];
      _itemFilter = lbData[673,(lbCurSel 673)];
      _config = [_itemFilter] call life_fnc_craftCfg;
      {
       if(_item == _x select 0)then
       {
       _matsNeed = _x select 1;
       _invSize = count _matsNeed;
       for [{_i = 0},{_i < _invSize - 1},{_i = _i + 2}] do {
       _str = [_matsNeed select _i] call life_fnc_varToStr;
       _matsNum = _matsNeed select _i+1;
       _struct = _struct + format["%1x %2<br/>",_matsNum,_str];
       };
       };
      } foreach (_config);
      if(_struct == "") then
      {
       _struct = "No material needed";
      };
      _mats ctrlSetStructuredText parseText format["
      <t size='0.8px'>
      %1
      </t>
      ",_struct];
      Alles anzeigen


      Schritt 9:

      erstellt die Datei fn_craft_updateFilter.sqf und fügt diese unter /core/pmenu ein:

      C: fn_craft_updateFilter.sqf
      /*
       File: fn_craft_updateFilter.sqf
       Description: Crafting System
       Created by EdgeKiller
       Coder: EdgeKiller
      */
      disableSerialization;
      private["_list","_filter","_dialog","_inv","_mats","_filterBox","_item","_itemFilter"];
      _dialog = findDisplay 666; //find the craft dialog/window
      _inv = _dialog displayCtrl 669; //find the listbox of items can be created
      _mats = _dialog displayCtrl 672;
      _filterBox = _dialog displayCtrl 673;
      _itemFilter = lbData[673,(lbCurSel 673)];
      lbClear _inv;
      _struct = "";
      _config = [_itemFilter] call life_fnc_craftCfg;
      {
       if(_itemFilter == "item") then{
       _str = [_x select 0] call life_fnc_varToStr;
       _inv lbAdd format["%1",_str]; //add a gun to the listbox
       _inv lbSetData[(lbSize _inv)-1,_x select 0]; //set the data of the gun
       } else {
       _itemInfo = [_x select 0] call life_fnc_fetchCfgDetails;
       _inv lbAdd format["%1",_itemInfo select 1]; //add a gun to the listbox
       _inv lbSetData[(lbSize _inv)-1,_itemInfo select 0]; //set the data of the gun
       _inv lbSetPicture[(lbSize _inv)-1,_itemInfo select 2];
       };
      } foreach (_config);
      _inv lbSetCurSel 0;
      _item = lbData[669,(lbCurSel 669)];
      _config = [_itemFilter] call life_fnc_craftCfg;
      {
       if(_item == _x select 0)then
       {
       _matsNeed = _x select 1;
       _invSize = count _matsNeed;
       for [{_i = 0},{_i < _invSize - 1},{_i = _i + 2}] do {
       _str = [_matsNeed select _i] call life_fnc_varToStr;
       _matsNum = _matsNeed select _i+1;
       _struct = _struct + format["%1x %2<br/>",_matsNum,_str];
       };
       };
      } foreach (_config);
      _mats ctrlSetStructuredText parseText format["
      <t size='0.8px'>
      %1
      </t>
      ",_struct];
      Alles anzeigen

      Schritt 10:

      erstellt die Datei fn_craftCfg.sqf und fügt diese unter /core/config ein:

      C: fn_craftCfg.sqf
      #include <macro.h>
      /*
       File: fn_craftCfg.sqf
       Author: EdgeKiller
       Description:
       Master configuration file for the crafting menu.
      */
      private["_craft","_return"];
      _craft = [_this,0,"",[""]] call BIS_fnc_param;
      if(_craft == "") exitWith {closeDialog 0}; //Bad shop type passed.
      switch(_craft) do
      {
       case "weapon":
       {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["hgun_P07_F", ["life_inv_goldbar",2,"life_inv_copperr",1]]
       ];
       if(__GETC__(life_adminlevel) > 0) then
       {
       _return pushBack
       ["SMG_01_F", ["life_inv_goldbar",6,"life_inv_copperr",3,"life_inv_ironr",3,"life_inv_diamondr",1]];
       };
       };
       case "uniform":
       {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["U_IG_Guerilla1_1", ["life_inv_goldbar",1]]
       ];
       };
       case "backpack":
       {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["B_Carryall_oli", ["life_inv_goldbar",1]]
       ];
       };
       case "item":
       {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["life_inv_pickaxe", ["life_inv_goldbar",1]],
       ["life_inv_goldbar", ["life_inv_goldbar",1,"life_inv_copperr",1]]
       ];
       };
      };
      _return;
      Alles anzeigen

    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 5. Juni 2016 um 22:26
      • #2

      Blöde frage geht das auch für die 4.3 ?

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • B4v4r!4n_Str!k3r
      Nerd
      Reaktionen
      246
      Trophäen
      11
      Beiträge
      725
      Bilder
      5
      • 5. Juni 2016 um 23:44
      • #3
      Zitat von GamerTV

      Blöde frage geht das auch für die 4.3 ?

      Nein, so wie es oben steht nicht, da es z.B. die varToString Methode nicht mehr gibt.

      Da ich das Crafting aber schon länger bei mir einbauen wollte, werde ich das diese Woche einmal machen und dann ein Tutorial für die Version 4.x erstellen.

      23106-logo-schrift-dunkel-390-70-png class=

      Services rund um ArmA RPG Life

      ArmA Bibel: https://community.bistudio.com/wiki/

    • B4v4r!4n_Str!k3r
      Nerd
      Reaktionen
      246
      Trophäen
      11
      Beiträge
      725
      Bilder
      5
      • 12. Juni 2016 um 16:23
      • #4
      Zitat von B4v4r!4n_Str!k3r

      Nein, so wie es oben steht nicht, da es z.B. die varToString Methode nicht mehr gibt.
      Da ich das Crafting aber schon länger bei mir einbauen wollte, werde ich das diese Woche einmal machen und dann ein Tutorial für die Version 4.x erstellen.

      da ich im Moment mein AL von 4.4 auf 4.4r3 update werde ich es wohl erst nächstes Wochenende schaffen das Tutorial zu machen.

      23106-logo-schrift-dunkel-390-70-png class=

      Services rund um ArmA RPG Life

      ArmA Bibel: https://community.bistudio.com/wiki/

    • B4v4r!4n_Str!k3r
      Nerd
      Reaktionen
      246
      Trophäen
      11
      Beiträge
      725
      Bilder
      5
      • 20. Juni 2016 um 18:02
      • #5

      so wie versprochen: das Tutorial für die Version 4.4 :)

      23106-logo-schrift-dunkel-390-70-png class=

      Services rund um ArmA RPG Life

      ArmA Bibel: https://community.bistudio.com/wiki/

    • Exodoos
      Fortgeschrittener
      Reaktionen
      164
      Trophäen
      10
      Beiträge
      332
      • 20. Juni 2016 um 18:58
      • #6

      Ist das auch für 3.1.4.8?

      Mit freundlichen Grüßen,

      Exodoos
      ________________________________

      Macht euch doch ein Bild!

      Ohne Logs & entsprechende Dateien kein Support!

    • SirFluffyVonKitten
      Nerd
      Reaktionen
      407
      Trophäen
      11
      Beiträge
      798
      Bilder
      3
      • 20. Juni 2016 um 19:00
      • #7

      Jap

    • Exodoos
      Fortgeschrittener
      Reaktionen
      164
      Trophäen
      10
      Beiträge
      332
      • 20. Juni 2016 um 19:02
      • #8

      Und wie kann ich mehrere Items bzw. Virtual Items, Waffen usw. einfügen?

      Mit freundlichen Grüßen,

      Exodoos
      ________________________________

      Macht euch doch ein Bild!

      Ohne Logs & entsprechende Dateien kein Support!

    • SirFluffyVonKitten
      Nerd
      Reaktionen
      407
      Trophäen
      11
      Beiträge
      798
      Bilder
      3
      • 20. Juni 2016 um 19:04
      • #9

      Einfach in der craftcfg einfügen. So wie die Beispiel Items dort :)

    • Exodoos
      Fortgeschrittener
      Reaktionen
      164
      Trophäen
      10
      Beiträge
      332
      • 20. Juni 2016 um 19:07
      • #10

      Super danke dir :thumbup: :thumbup:

      Mit freundlichen Grüßen,

      Exodoos
      ________________________________

      Macht euch doch ein Bild!

      Ohne Logs & entsprechende Dateien kein Support!

    • Moritz
      Fortgeschrittener
      Reaktionen
      180
      Trophäen
      10
      Beiträge
      314
      • 16. September 2016 um 16:36
      • #11
      Code
      #include <macro.h>
      /*
       File: fn_craftCfg.sqf
       Author: EdgeKiller
       Description:
       Master configuration file for the crafting menu.
      */
      private["_craft","_return"];
      _craft = [_this,0,"",[""]] call BIS_fnc_param;
      if(_craft == "") exitWith {closeDialog 0}; //Bad shop type passed.
      switch(_craft) do
      {
      	case "weapon":
      
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
      ["A3L_AK47", ["life_inv_gummi_griff",1,"life_inv_holz",2,"life_inv_ironr",5]]
      ["A3L_AK47Mag", ["life_inv_ironr",5,"life_inv_gummi",1]]
      ["hlc_rifle_ak12", ["life_inv_gummi_griff",1,"life_inv_holz",2,"life_inv_ironr",10]]
      ["hlc_30Rnd_545x39_B_AK", ["life_inv_ironr",5,"life_inv_gummi",1]]
      ["RH_M4sbr_b", ["life_inv_gummi_griff",1,"life_inv_holz",2,"life_inv_ironr",1]]
      ["RH_30Rnd_556x45_M855A1", ["life_inv_ironr",5,"life_inv_gummi",1]]
      ["RH_ar10", ["life_inv_gummi_griff",1,"life_inv_holz",2,"life_inv_ironr",1]]
      ["RH_20Rnd_762x51_AR10", ["life_inv_ironr",5,"life_inv_gummi",1]]
      ["RH_m9", ["life_inv_ironr",5]]
      ["RH_15Rnd_9x19_M9", ["life_inv_ironr",5,"life_inv_gummi",1]]
      
      
      
      
       ];
       if(__GETC__(life_adminlevel) > 0) then
       {
       _return pushBack
      ["A3L_RedDot", ["life_inv_ironr",3,"life_inv_glass",3]]
      ["FHQ_optic_HWS", ["life_inv_ironr",3,"life_inv_glass",3]]
      ["ACE_optic_Hamr_PIP", ["life_inv_ironr",3,"life_inv_glass",3]]
      ["optic_Hamr", ["life_inv_ironr",3,"life_inv_glass",3]];
       };
       };
       case "uniform":
       {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["U_IG_Guerilla1_1", ["life_inv_goldbar",1]]
       ];
       };
       case "backpack":
       {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["B_Carryall_oli", ["life_inv_goldbar",1]]
       ];
       };
       case "item":
       {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["life_inv_gummi_griff", ["life_inv_gummi",5]]
       ];
       };
      };
      _return;
      Alles anzeigen

      So habe ichs gemacht, und mit wird ingame nix zum Craften Angezeigt.. Woran liegt das?

      Terrainbuilder Grund Guide: Terrainbuilder Grund Guide
      Mapping Service :) Mapping Service
      Ich streame Täglich ab 14 Uhr! Twitch

    • Twinnie
      Frischling
      Trophäen
      10
      Beiträge
      9
      • 19. Januar 2017 um 15:10
      • #12
      Code
      case "weapon": {
       _return = [
       //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]
       ["hgun_P07_F", ["diamond_cut",2,"copper_refined",1]],
       ["hgun_ACPC2_F", ["diamond_cut",2,"copper_refined",1]]

      dat , Fehlt MFG hoffe könnte weiter helfen da dies schon alt ist

    • kuhlermann
      Anfänger
      Reaktionen
      4
      Trophäen
      9
      Beiträge
      42
      • 14. Juni 2017 um 02:16
      • #13

      Hm hab das gleiche problem :"

    • Gary_Woodpecker
      Anfänger
      Reaktionen
      38
      Trophäen
      9
      Beiträge
      6
      Dateien
      3
      • 6. Februar 2018 um 18:23
      • #14

      Funktioniert echt gut.

      Wo genau kann man einstellen, wie viele Items man baut? Ich will anstatt einem Magazin drei gleichzeitig craften, weiß aber nicht, wie man das einstellen soll.

      PS: Hoffe hier antwortet einer, da der Post schon älter ist :D

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 14. Februar 2018 um 10:48
      • #15

      also ich benutze das Craftingmenü schon etwas länger. Jedoch habe ich im Items Reiter inzwischen ca 80 items und das ganze wird ein bisschen unübersichtlich^^. Wie kann ich denn jetzt einen neuen Reiter erstellen , der an sich funktioniert wie der Items Reiter also, dass man wieder mit Z Items Z Items herstellt?

      MfG Malte

    • Gary_Woodpecker
      Anfänger
      Reaktionen
      38
      Trophäen
      9
      Beiträge
      6
      Dateien
      3
      • 15. Februar 2018 um 18:42
      • #16

      Ziemlich einfach, wenn man das Script verstanden hat:

      Nehmen wir mal an, dein Reiter sind Waffenteile, die du extra in einem anderen Reiter machen willst als Z-items.

      Du gehst zuerst in die fn_craft.sqf . Dort kannst du unten deine Reiter erkennen.

      In dem Fall setzt du folgendes hinzu:

      Code
      _filter lbAdd localize "STR_CRAFT_FILTER_Waffenteile";
      _filter lbSetData[(lbSize _filter)-1,"Waffenteile"];

      Jetzt haben wir einen weiteren Reiter hinzugefügt. Die Position des Reiters im Craftingmenü hängt davon ab, wie weit oben oder unten du den Reiter eingefügt hast.

      Im unseren Fall sieht der untere Teil der fn_craft.sqf jetzt so aus:

      Code
      _filter = _dialog displayCtrl 673;
      _filter lbAdd localize "STR_CRAFT_FILTER_Weapon";
      _filter lbSetData[(lbSize _filter)-1,"weapon"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Uniform";
      _filter lbSetData[(lbSize _filter)-1,"uniform"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Backpack";
      _filter lbSetData[(lbSize _filter)-1,"backpack"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Item";
      _filter lbSetData[(lbSize _filter)-1,"item"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Waffenteile";
      _filter lbSetData[(lbSize _filter)-1,"Waffenteile"];
      _filter lbSetCurSel 0;
      Alles anzeigen

      Jetzt gehen wir in die fn_craftCfg.sqf und fügen den case hinzu, den wir oben im Raster definiert haben. In dem Fall "Waffenteile".

      Das kann dann so aussehen:

      Code
      case "Waffenteile":{   
       _return = [        
      //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]        
      ["Item_Verschluss", ["waterBottle",1]],        
      ["Item_Lauf", ["peach",1,"apple",1]]    
      ];
      };

      Jetzt haben wir eingestellt, was für was gebraucht wird.

      Jetzt müssen wir nur noch einstellen, was da nun letzt endlich rauskommt und wo es hingehört.

      Dazu gehen wir in die Datei fn_craftAction.sqf und kopieren alle if commands die ein "item" in sich tragen und fügen sie jeweils unter dem kopierten if command wieder ein und erstetzen das "item" durch "Waffenteile".

      Im Abschnitt //setup our progress bar. sieht ein Teil dann so aus:

      Code
      if(_itemFilter == "backpack") then{if(backpack player == "") then{player addBackpack _newItem;
      }else{
      hint localize "STR_CRAFT_AR_Backpack";life_is_processing = false;
      };
      };
      if(_itemFilter == "item") then{_handledItem = [_newItem,1] call life_fnc_varHandle;
      [true,_handledItem,1] call life_fnc_handleInv;
      };
      if(_itemFilter == "Waffenteile") then{_handledItem = [_newItem,1] call life_fnc_varHandle;
      [true,_handledItem,1] call life_fnc_handleInv;
      };
      if(_itemFilter == "uniform") then{if(uniform player == "") then{player addUniform _newItem;
      }else{
      hint localize "STR_CRAFT_AR_Uniform";life_is_processing = false;
      };
      };
      Alles anzeigen

      So muss das dann auch in allen anderen Abschnitten gemacht werden wo "item" vorkommt. Aber in dem Abschnitt ist es am wichtigsten, da du sonst nach dem craften nichts bekommst.

      Bei Fragen einfach fragen.

      MFG Gary Woodpecker

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 15. Februar 2018 um 20:23
      • #17

      Okay danke! Werde es später mal testen :)

    • maltepower99
      Fortgeschrittener
      Reaktionen
      58
      Trophäen
      9
      Beiträge
      306
      • 16. Februar 2018 um 22:47
      • #18
      Zitat von Gary_Woodpecker

      Ziemlich einfach, wenn man das Script verstanden hat:

      Nehmen wir mal an, dein Reiter sind Waffenteile, die du extra in einem anderen Reiter machen willst als Z-items.

      Du gehst zuerst in die fn_craft.sqf . Dort kannst du unten deine Reiter erkennen.

      In dem Fall setzt du folgendes hinzu:

      Code
      _filter lbAdd localize "STR_CRAFT_FILTER_Waffenteile";
      _filter lbSetData[(lbSize _filter)-1,"Waffenteile"];

      Jetzt haben wir einen weiteren Reiter hinzugefügt. Die Position des Reiters im Craftingmenü hängt davon ab, wie weit oben oder unten du den Reiter eingefügt hast.

      Im unseren Fall sieht der untere Teil der fn_craft.sqf jetzt so aus:

      Code
      _filter = _dialog displayCtrl 673;
      _filter lbAdd localize "STR_CRAFT_FILTER_Weapon";
      _filter lbSetData[(lbSize _filter)-1,"weapon"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Uniform";
      _filter lbSetData[(lbSize _filter)-1,"uniform"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Backpack";
      _filter lbSetData[(lbSize _filter)-1,"backpack"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Item";
      _filter lbSetData[(lbSize _filter)-1,"item"];
      _filter lbAdd localize "STR_CRAFT_FILTER_Waffenteile";
      _filter lbSetData[(lbSize _filter)-1,"Waffenteile"];
      _filter lbSetCurSel 0;
      Alles anzeigen

      Jetzt gehen wir in die fn_craftCfg.sqf und fügen den case hinzu, den wir oben im Raster definiert haben. In dem Fall "Waffenteile".

      Das kann dann so aussehen:

      Code
      case "Waffenteile":{   
       _return = [        
      //[Object classname, [item #1,quantity item #1,item #2,quantity item #2]],]        
      ["Item_Verschluss", ["waterBottle",1]],        
      ["Item_Lauf", ["peach",1,"apple",1]]    
      ];
      };

      Jetzt haben wir eingestellt, was für was gebraucht wird.

      Jetzt müssen wir nur noch einstellen, was da nun letzt endlich rauskommt und wo es hingehört.

      Dazu gehen wir in die Datei fn_craftAction.sqf und kopieren alle if commands die ein "item" in sich tragen und fügen sie jeweils unter dem kopierten if command wieder ein und erstetzen das "item" durch "Waffenteile".

      Im Abschnitt //setup our progress bar. sieht ein Teil dann so aus:

      Code
      if(_itemFilter == "backpack") then{if(backpack player == "") then{player addBackpack _newItem;
      }else{
      hint localize "STR_CRAFT_AR_Backpack";life_is_processing = false;
      };
      };
      if(_itemFilter == "item") then{_handledItem = [_newItem,1] call life_fnc_varHandle;
      [true,_handledItem,1] call life_fnc_handleInv;
      };
      if(_itemFilter == "Waffenteile") then{_handledItem = [_newItem,1] call life_fnc_varHandle;
      [true,_handledItem,1] call life_fnc_handleInv;
      };
      if(_itemFilter == "uniform") then{if(uniform player == "") then{player addUniform _newItem;
      }else{
      hint localize "STR_CRAFT_AR_Uniform";life_is_processing = false;
      };
      };
      Alles anzeigen

      So muss das dann auch in allen anderen Abschnitten gemacht werden wo "item" vorkommt. Aber in dem Abschnitt ist es am wichtigsten, da du sonst nach dem craften nichts bekommst.

      Bei Fragen einfach fragen.

      MFG Gary Woodpecker

      Alles anzeigen

      Ich habs jetzt mal versucht, jedoch ist nun ein leerer Reiter unter Items zu sehen. Wenn man drauf klickt steht überall nur null. Was kann ich da tun?:)

    • Gary_Woodpecker
      Anfänger
      Reaktionen
      38
      Trophäen
      9
      Beiträge
      6
      Dateien
      3
      • 17. Februar 2018 um 03:18
      • #19

      Dann fehlt da der Name.

      Bei dem ersten Schritt mit dem _Filter definierst du nen Namen bei:

      _filter lbAdd localize "STR_CRAFT_FILTER_Waffenteile";

      In der Zeile definierst du den Namen (Wo es rot hinterlegt ist).

      Diese STR_CRAFT_FILTER_Waffenteile musst du in deiner stringtable.xml definieren. Die Datei findest du in deinem Missionsverzeichnis.

      Die Struktur ist eigentlich ziemlich einfach. Dort musst du die STR_CRAFT_FILTER_Waffenteile einfügen und kannst dort den Namen eintragen, der in der jeweilgen Sprache angezeigt wird. Wichtig ist hier nur <original> und vielleicht noch <german>.

      Das System in der Stringtable ist eigentlich selbsterklärend.

      Falls du trotzdem Probleme mit der stringtable.xml hast, schau dir nen Tutorial an.

      MFG

      Gary Woodpecker

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von NodeZone.net? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Registrieren

    Ähnliche Themen

    • [Sammelthread] Scripts/Links/Tutorials/Anleitungen ArmA 3

      • Stig
      • 2. September 2016 um 18:29
      • Tutorials & Releases
    • Licence Craft Edgekiller

      • budlife
      • 19. November 2016 um 17:34
      • Hilfeforum
    • Crafting script gesucht

      • Flamer
      • 9. Oktober 2016 um 18:49
      • Hilfeforum

    Tags

    • altis life crafting
    • crafting
    • craftingsystem
    • crafting system
    • arma 3 crafting
    • arma 3 crafting system
    • arma 3 craftingsystem
    • altis life craftsystem
    • altis life craftingsystem

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™