diff --git a/dayz_code/actions/player_craftItem.sqf b/dayz_code/actions/player_craftItem.sqf new file mode 100644 index 000000000..1dd892ff4 --- /dev/null +++ b/dayz_code/actions/player_craftItem.sqf @@ -0,0 +1,105 @@ +/* +* Crafting by [VB]AWOL +* usage: spawn player_craftitem; +*/ +private["_recipe_ItemTinBar","_recipe_ItemAluminumBar","_recipe_FoodChickenNoodle","_recipe_FoodBeefBakedBeans","_item","_config","_create","_selectedRecipe","_recipe_","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty"]; + +// Recipes + +// 6 Tin cans = Tin Bar +// 6 Aluminum cans = Aluminum Bar + +/* +== Canned Foods +"FoodCanBakedBeans", +"FoodCanSardines", +"FoodCanFrankBeans", +"FoodCanPasta", +"FoodBioMeat" + +== Drinks +"ItemSodaCoke", +"ItemSodaPepsi", + +== Trash +"TrashTinCan", +"TrashJackDaniels", +"ItemSodaEmpty", + +== Raw Meats +"FoodSteakRaw", +"FoodmeatRaw", +"FoodbeefRaw", +"FoodmuttonRaw", +"FoodchickenRaw", +"FoodrabbitRaw", +"FoodbaconRaw" + +== Cooked Meats +"FoodSteakCooked", +"FoodmeatCooked", +"FoodbeefCooked", +"FoodmuttonCooked", +"FoodchickenCooked", +"FoodrabbitCooked", +"FoodbaconCooked" +*/ + +// New items: +// ItemTinBar +// FoodChickenNoodle +// FoodBeefBakedBeans +// ItemSalt + +// ["reqires","fire"] + + +_recipe_ItemTinBar = [["TrashTinCan",6]]; +_recipe_ItemAluminumBar = [["ItemSodaEmpty",6]]; + +_recipe_FoodChickenNoodle = [["FoodchickenRaw",1],["FoodCanPasta",1],["ItemWaterbottle",1]]; +_recipe_FoodBeefBakedBeans = [["FoodbeefRaw",1],["FoodCanBakedBeans",1]]; + +//Add new item +_item = _this; +_config = configFile >> "cfgMagazines" >> _item; +_create = getArray (_config >> "ItemActions" >> "Crafting" >> "output") select 0; + +_selectedRecipe = call compile format["_recipe_%1;",_create]; +diag_log format["Selected Recipe: %1", _selectedRecipe]; + +_proceed = true; + +{ + _itemIn = _x select 0; + _countIn = _x select 1; + diag_log format["Recipe Check: %1 %2", _itemIn,_countIn]; + + if (!(_itemIn in magazines player)) exitWith { _missing = _itemIn; _missingQty = _countIn; _proceed = false; }; + + _qty = {_x == _itemIn} count magazines player; + + if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; }; + +} forEach _selectedRecipe; + +if (_proceed) then { + + // Take items + { + _itemIn = _x select 0; + _countIn = _x select 1; + diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn]; + + for "_x" from 1 to _countIn do { + player removeMagazine _itemIn; + }; + + } forEach _selectedRecipe; + + // Add crafted item + player addMagazine _create; + cutText [format["Crafted Item: %1",_create], "PLAIN DOWN"]; +} else { + cutText [format["Missing component: %1 x %2",_missing,_missingQty], "PLAIN DOWN"]; +}; diff --git a/dayz_code/init/compiles.sqf b/dayz_code/init/compiles.sqf index 36193d9ac..9821948b8 100644 --- a/dayz_code/init/compiles.sqf +++ b/dayz_code/init/compiles.sqf @@ -73,6 +73,7 @@ if (!isDedicated) then { player_countmagazines = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_countmagazines.sqf"; player_addToolbelt = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_addToolbelt.sqf"; player_reloadMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_reloadMags.sqf"; + player_craftItem = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem.sqf"; player_tentPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\tent_pitch.sqf"; player_vaultPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\vault_pitch.sqf"; player_drink = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_drink.sqf"; diff --git a/dayz_equip/config.cpp b/dayz_equip/config.cpp index f27280e15..58ea32c1f 100644 --- a/dayz_equip/config.cpp +++ b/dayz_equip/config.cpp @@ -1358,6 +1358,17 @@ class CfgMagazines picture = "\dayz_equip\textures\equip_soda_rbull_ca.paa"; descriptionShort = "$STR_EQUIP_NAME_37"; }; + class ItemBriefcase: CA_Magazine + { + scope = 2; + count = 1; + type = "(256 * 3)"; + displayName = "Briefcase"; + // model = "\misc3\briefcase.p3d"; + picture = "\dayz_equip\textures\equip_bar_gold_CA.paa"; + // TODO: Needs picture and model + descriptionShort = "Briefcase full of Gold Bars"; + }; class ItemGoldBar: CA_Magazine { scope = 2; @@ -1395,10 +1406,21 @@ class CfgMagazines count = 1; type = 256; displayName = "Aluminum"; - model = "\dayz_equip\models\silver_bar.p3d"; - picture = "\dayz_equip\textures\equip_bar_silver_CA.paa"; + model = "\dayz_equip\models\aluminum_bar.p3d"; + picture = "\dayz_equip\textures\equip_bar_aluminum_CA.paa"; descriptionShort = "Aluminum Bar"; }; + class ItemTinBar: CA_Magazine + { + scope = 2; + count = 1; + type = 256; + displayName = "Tin"; + model = "\dayz_equip\models\tin_bar.p3d"; + picture = "\dayz_equip\textures\equip_bar_tin_CA.paa"; + descriptionShort = "Tin Bar"; + }; + class ItemZombieParts: CA_Magazine { scope = 2; diff --git a/dayz_equip/textures/silverbar_AS.paa b/dayz_equip/textures/silverbar_AS.paa index c69988bd6..f97459082 100644 Binary files a/dayz_equip/textures/silverbar_AS.paa and b/dayz_equip/textures/silverbar_AS.paa differ diff --git a/dayz_equip/textures/silverbar_NOHQ.paa b/dayz_equip/textures/silverbar_NOHQ.paa index dfa23ebde..0a33f90bd 100644 Binary files a/dayz_equip/textures/silverbar_NOHQ.paa and b/dayz_equip/textures/silverbar_NOHQ.paa differ diff --git a/dayz_equip/textures/silverbar_SMDI.paa b/dayz_equip/textures/silverbar_SMDI.paa index 07eb2e99e..b4382628c 100644 Binary files a/dayz_equip/textures/silverbar_SMDI.paa and b/dayz_equip/textures/silverbar_SMDI.paa differ diff --git a/dayz_equip/textures/silverbar_co.paa b/dayz_equip/textures/silverbar_co.paa index 0e9ce6d9f..f8b5abba2 100644 Binary files a/dayz_equip/textures/silverbar_co.paa and b/dayz_equip/textures/silverbar_co.paa differ diff --git a/dayz_weapons/config.cpp b/dayz_weapons/config.cpp index 6ce3361e3..33f58c611 100644 --- a/dayz_weapons/config.cpp +++ b/dayz_weapons/config.cpp @@ -644,6 +644,15 @@ class cfgMagazines picture = "\dayz_equip\textures\equip_tincan_ca.paa"; descriptionShort = "$STR_EQUIP_DESC_33"; ammo = "TinCan"; + class ItemActions + { + class Crafting + { + text = "Melt into Bars"; + script = "spawn player_craftItem;"; + output[] = {"ItemTinBar"}; + }; + }; }; class ItemSodaEmpty: HandGrenade { @@ -653,6 +662,15 @@ class cfgMagazines picture = "\dayz_equip\textures\equip_soda_empty_ca.paa"; descriptionShort = "$STR_EQUIP_DESC_35"; ammo = "SodaCan"; + class ItemActions + { + class Crafting + { + text = "Melt into Bars"; + script = "spawn player_craftItem;"; + output[] = {"ItemAluminumBar"}; + }; + }; }; class HandRoadFlare: HandGrenade {