From 99e4f0be32ec999183c6cc1a5bcfd66bd2950f67 Mon Sep 17 00:00:00 2001 From: "[VB]AWOL" Date: Wed, 23 Apr 2014 14:10:23 -0500 Subject: [PATCH] updated to work with cfglootsmall and DZE_missonloot --- SQF/dayz_code/init/loot_init.sqf | 101 +++++++++++++++++++++++++------ 1 file changed, 81 insertions(+), 20 deletions(-) diff --git a/SQF/dayz_code/init/loot_init.sqf b/SQF/dayz_code/init/loot_init.sqf index 35b23303a..b1cae3f23 100644 --- a/SQF/dayz_code/init/loot_init.sqf +++ b/SQF/dayz_code/init/loot_init.sqf @@ -1,13 +1,19 @@ -private ["_config","_classname","_itemChances","_itemCount","_weight","_type","_canZombie","_canLoot","_weighted","_j"]; +private ["_config","_classname","_itemChances","_itemCount","_weight","_type","_canZombie","_canLoot","_weighted","_j","_itemChancesSmall","_itemCountSmall"]; dayz_CBLChances = []; dayz_CBLBase = []; -_config = configFile >> "CfgBuildingLoot"; + +dayzE_CBLSChances = []; +dayzE_CBLSBase = []; + +_config = []; if (DZE_MissionLootTable) then { _config = missionConfigFile >> "CfgBuildingLoot"; +} else { + _config = configFile >> "CfgBuildingLoot"; }; for "_i" from 0 to ((count _config) - 1) do { - _classname = configName (_config select _i); + _classname = toLower(configName (_config select _i)); _itemChances = getArray (_config >> _classname >> "lootType"); _itemCount = count _itemChances; //diag_log format["Classname: %1, Array: %2, Amount: %3", _classname, _itemChances, _itemCount]; @@ -31,15 +37,68 @@ for "_i" from 0 to ((count _config) - 1) do { dayz_CBLChances set [count dayz_CBLChances, [0]]; dayz_CBLBase set [count dayz_CBLBase, _classname]; }; + + _itemChancesSmall = [] + getArray (_config >> _classname >> "ItemChanceSmall"); + _itemCountSmall = count _itemChancesSmall; + if (_itemCountSmall > 0) then { + if (dayzE_CBLSBase find _classname < 0) then { + _weighted = []; + _j = 0; + for "_l" from 0 to ((count _itemChancesSmall) - 1) do + { + _weight = round (((_itemChancesSmall select _l) select 2) * 100); + for "_k" from 0 to _weight - 1 do + { + _weighted set [_j + _k, _l]; + }; + _j = _j + _weight; + }; + dayzE_CBLSChances set [count dayzE_CBLSChances, _weighted]; + dayzE_CBLSBase set [count dayzE_CBLSBase, _classname]; + }; + } else { + dayzE_CBLSChances set [count dayzE_CBLSChances, [0]]; + dayzE_CBLSBase set [count dayzE_CBLSBase, _classname]; + }; }; dayz_CLChances = []; dayz_CLBase = []; -//dayz_CLItemNames = []; -_config = configFile >> "cfgLoot"; +_config = []; if (DZE_MissionLootTable) then { _config = missionConfigFile >> "cfgLoot"; +} else { + _config = configFile >> "cfgLoot"; +}; + +for "_i" from 0 to ((count (_config)) - 1) do { + _classname = configName (_config select _i); + _itemChances = getArray (_config select _i); + _weighted = []; + _j = 0; + for "_l" from 0 to ((count _itemChances) - 1) do + { + _weight = round (((_itemChances select _l) select 1) * 100); + for "_k" from 0 to (_weight - 1) do + { + _weighted set [_j + _k, _l]; + //_items set [count _items, ((_itemChances select _l) select 0)]; + }; + _j = _j + _weight; + }; + dayz_CLBase set [count dayz_CLBase, _classname]; + dayz_CLChances set [count dayz_CLChances, _weighted]; +}; + +dayzE_CLSChances = []; +dayzE_CLSBase = []; + +_config = []; +if (DZE_MissionLootTable) then { + _config = missionConfigFile >> "cfgLootSmall"; +} else { + _config = configFile >> "cfgLootSmall"; }; for "_i" from 0 to ((count (_config)) - 1) do { @@ -49,25 +108,29 @@ for "_i" from 0 to ((count (_config)) - 1) do { _j = 0; for "_l" from 0 to ((count _itemChances) - 1) do { _weight = round (((_itemChances select _l) select 1) * 100); - for "_k" from 0 to (_weight - 1) do { + for "_k" from 0 to _weight - 1 do { _weighted set [_j + _k, _l]; - //_items set [count _items, ((_itemChances select _l) select 0)]; }; _j = _j + _weight; }; - dayz_CLBase set [count dayz_CLBase, _classname]; - //dayz_CLItemNames set [count dayz_CLBase, _items]; - dayz_CLChances set [count dayz_CLChances, _weighted]; - - //diag_log format["CFGLoot: %1, Array: %2", _classname, _items]; + dayzE_CLSBase set [count dayzE_CLSBase, _classname]; + dayzE_CLSChances set [count dayzE_CLSChances, _weighted]; }; -//diag_log ("BaseLoot: " +str(dayz_CLBase)); + dayz_ZombieBuildings = []; dayz_LootBuildings = []; -for "_i" from 0 to (count (configFile >> "CfgBuildingLoot") - 1) do { - _type = (configFile >> "CfgBuildingLoot") select _i; - _canZombie = getNumber (_type >> "zombieChance") > 0; - _canLoot = getNumber (_type >> "lootChance") > 0; + +_config = []; +if (DZE_MissionLootTable) then { + _config = missionConfigFile >> "CfgBuildingLoot"; +} else { + _config = configFile >> "CfgBuildingLoot"; +}; + +for "_i" from 0 to (count (_config) - 1) do { + _type = _config select _i; + _canZombie = getNumber (_type >> "zombieChance") > 0; + _canLoot = getNumber (_type >> "lootChance") > 0; if(_canZombie) then { if(!((configName _type) in dayz_ZombieBuildings)) then { dayz_ZombieBuildings set [count dayz_ZombieBuildings, configName _type]; @@ -78,6 +141,4 @@ for "_i" from 0 to (count (configFile >> "CfgBuildingLoot") - 1) do { dayz_LootBuildings set [count dayz_LootBuildings, configName _type]; }; }; -}; -//diag_log format["ZombieBuildings: %1", dayz_ZombieBuildings]; -//diag_log format["LootBuildings: %1", dayz_LootBuildings]; \ No newline at end of file +}; \ No newline at end of file