diff --git a/CHANGE LOG 1.0.5.txt b/CHANGE LOG 1.0.5.txt index 7b48d6d44..84e5ccfd2 100644 --- a/CHANGE LOG 1.0.5.txt +++ b/CHANGE LOG 1.0.5.txt @@ -2,14 +2,16 @@ [ADDED] Latest version of Napf 1.0 by Momo [ADDED] Classname C130J_US_EP1_DZ Weapon: 50 Magazine: 400 Backpack: 10 @Fank [ADDED] Variable DZE_ForceNameTagsInTrader to force name tags in traders. @Skaronator @Fank +[ADDED] Switch seats in all vehicles. @icomrade [FIXED] Instance already initialized error in server_monitor.sqf @vbawol [FIXED] Fixed infinite chainsaw fuel when put into vaults/lockboxes. @SilvDev [FIXED] Cargo Check overlapping. @SilvDev [CHANGED] Lootsystem based on DayZ 1.8 @Skaronator @Fank -[CHANGED] Consum Eat/Drink in vehicle will add empty food/drink cans into vehicle inventory. @SilvDev @Fank +[CHANGED] Consume Eat/Drink in vehicle will add empty food/drink cans into vehicle inventory. @SilvDev @Fank [CHANGED] SQL Removed empty fuel barrel from vehicle parts trader and moved to wholesaler as increased buy/sell price. @Fank +[CHANGED] You can switch skins with while wearing a backpack. @icomrade [INFO] Models/textures by Paul Tomany. @Sequisha. [INFO] Special thanks to http://verthosting.com for hosting our development server. diff --git a/SQF/dayz_code/actions/player_countmagazines.sqf b/SQF/dayz_code/actions/player_countmagazines.sqf index a1a09f61e..d8722bd16 100644 --- a/SQF/dayz_code/actions/player_countmagazines.sqf +++ b/SQF/dayz_code/actions/player_countmagazines.sqf @@ -1,55 +1,70 @@ /* count player magazines with ammo count -value = call player_countmagazines; +value = call player_countMagazines; //must be called from a spawned thread (or use spawn) return all player magazines with ammo count +Modified to save backpack magazine count by icomrade - Base for fix by Ziellos2k */ -private ["_dialog","_control","_magazineArray","_item","_val","_max","_created"]; +private ["_control","_item","_val","_max","_count","_magazineArray","_dialog"]; disableSerialization; -disableUserInput true; -_dialog = findDisplay 106; -_created = false; -if ( isNull _dialog ) then { - //startLoadingScreen [""]; - createGearDialog [player, "RscDisplayGear"]; - _dialog = findDisplay 106; - _created = true; -}; -_magazineArray = []; -for "_i" from 109 to 120 do -{ - _control = _dialog displayCtrl _i; - _item = gearSlotData _control; - _val = gearSlotAmmoCount _control; - _max = getNumber (configFile >> "CfgMagazines" >> _item >> "count"); +_magazineArray = [[],[]]; +_dialog = ["0"] call gearDialog_create; +if ((isNull _dialog) || (isNil "_dialog")) exitWith {disableUserInput false; (findDisplay 106) closeDisplay 0; closeDialog 0; _magazineArray}; + +//Main inventory +for "_i" from 109 to 120 do { + _control = _dialog displayCtrl _i; + _item = gearSlotData _control; + _val = gearSlotAmmoCount _control; + _max = getNumber (configFile >> "CfgMagazines" >> _item >> "count"); if (_item != "") then { if (_val != _max) then { - _magazineArray set [count _magazineArray,[_item,_val]]; + (_magazineArray select 0) set [count (_magazineArray select 0),[_item,_val]]; } else { - _magazineArray set [count _magazineArray,_item]; + (_magazineArray select 0) set [count (_magazineArray select 0),_item]; }; }; }; - -for "_i" from 122 to 129 do -{ - _control = _dialog displayCtrl _i; - _item = gearSlotData _control; - _val = gearSlotAmmoCount _control; - _max = getNumber (configFile >> "CfgMagazines" >> _item >> "count"); +//Pistol/secondary ammo +for "_i" from 122 to 129 do { + _control = _dialog displayCtrl _i; + _item = gearSlotData _control; + _val = gearSlotAmmoCount _control; + _max = getNumber (configFile >> "CfgMagazines" >> _item >> "count"); if (_item != "") then { if (_val != _max) then { - _magazineArray set [count _magazineArray,[_item,_val]]; + (_magazineArray select 0) set [count (_magazineArray select 0),[_item,_val]]; } else { - _magazineArray set [count _magazineArray,_item]; + (_magazineArray select 0) set [count (_magazineArray select 0),_item]; }; }; }; -if ( _created ) then { -closeDialog 0; - //endLoadingScreen; + +//backpack items +if ((typeOf (unitBackPack player)) != "") then { + _count = getNumber (configFile >> "CfgVehicles" >> (typeOf (unitBackpack Player)) >> "transportMaxMagazines"); + ctrlActivate (_dialog displayCtrl 157); + if (gear_done) then { + waitUntil {ctrlShown (_dialog displayCtrl 159)}; + sleep 0.001; + }; + + for "_i" from 5000 to (5000 + _count) do { + _control = _dialog displayCtrl _i; + _item = gearSlotData _control; + _val = gearSlotAmmoCount _control; + _max = getNumber (configFile >> "CfgMagazines" >> _item >> "count"); + if (_item != "") then { + if (_val != _max) then { + (_magazineArray select 1) set [count (_magazineArray select 1),[_item,_val]]; + } else { + (_magazineArray select 1) set [count (_magazineArray select 1),_item]; + }; + }; + }; }; -disableUserInput false; -dayz_Magazines=_magazineArray; -_magazineArray \ No newline at end of file + +(findDisplay 106) closeDisplay 0; +if (gear_done) then {sleep 0.001;}; +_magazineArray diff --git a/SQF/dayz_code/actions/player_wearClothes.sqf b/SQF/dayz_code/actions/player_wearClothes.sqf index 847ab323a..09d99642d 100644 --- a/SQF/dayz_code/actions/player_wearClothes.sqf +++ b/SQF/dayz_code/actions/player_wearClothes.sqf @@ -21,7 +21,7 @@ if (!_hasclothesitem) exitWith { DZE_ActionInProgress = false; cutText [format[( if (vehicle player != player) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_85"), "PLAIN DOWN"]}; -if (!isNull (unitBackpack player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_9"), "PLAIN DOWN"] }; +//if (!isNull (unitBackpack player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_9"), "PLAIN DOWN"] }; if ("CSGAS" in (magazines player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_10"), "PLAIN DOWN"] }; diff --git a/SQF/dayz_code/compile/player_onPause.sqf b/SQF/dayz_code/compile/player_onPause.sqf index 0c6bf5b84..3f3f84881 100644 --- a/SQF/dayz_code/compile/player_onPause.sqf +++ b/SQF/dayz_code/compile/player_onPause.sqf @@ -20,7 +20,8 @@ if(r_fracture_legs && !r_player_dead) then {_btnRespawn ctrlEnable true;}; if (!r_player_dead and time - dayz_lastCheckBit > 10) then { call dayz_forceSave; }; - + +if (r_player_dead || (!alive player)) exitWith {_btnAbort ctrlEnable true; _btnAbort ctrlSetText _btnAbortText;}; _sleep = 1; while {!isNull _display} do { diff --git a/SQF/dayz_code/compile/player_switchModel.sqf b/SQF/dayz_code/compile/player_switchModel.sqf index e2f7f4335..424f15198 100644 --- a/SQF/dayz_code/compile/player_switchModel.sqf +++ b/SQF/dayz_code/compile/player_switchModel.sqf @@ -1,25 +1,20 @@ -private ["_class","_position","_dir","_group","_oldUnit","_newUnit","_currentWpn","_muzzles","_currentAnim","_playerUID","_weapons","_magazines","_primweapon","_secweapon","_playerObjName","_wpnType","_ismelee","_tagSetting"]; -_class = _this; +private ["_weapons","_backpackWpn","_backpackMag","_currentWpn","_backpackWpnTypes","_backpackWpnQtys","_countr","_class","_position","_dir","_currentAnim","_tagSetting","_playerUID","_countMags","_magazines","_primweapon","_secweapon","_newBackpackType","_muzzles","_oldUnit","_group","_newUnit","_playerObjName","_wpnType","_ismelee"]; +_class = _this; _position = getPosATL player; _dir = getDir player; _currentAnim = animationState player; - _tagSetting = player getVariable["DZE_display_name",false]; - -//Get PlayerID _playerUID = getPlayerUID player; - -//BackUp Weapons and Mags _weapons = weapons player; -_magazines = call player_countmagazines; //magazines player; +_countMags = call player_countMagazines; +_magazines = _countMags select 0; -if ( (_playerUID == dayz_playerUID) && (count _magazines == 0) && (count (magazines player) > 0 )) exitWith {cutText [(localize "str_epoch_player_17"), "PLAIN DOWN"]}; +if ((_playerUID == dayz_playerUID) && (count _magazines == 0) && (count (magazines player) > 0 )) exitWith {cutText [(localize "str_epoch_player_17"), "PLAIN DOWN"]}; _primweapon = primaryWeapon player; _secweapon = secondaryWeapon player; -//Checks if(!(_primweapon in _weapons) && _primweapon != "") then { _weapons = _weapons + [_primweapon]; }; @@ -28,6 +23,14 @@ if(!(_secweapon in _weapons) && _secweapon != "") then { _weapons = _weapons + [_secweapon]; }; +//BackUp Backpack +dayz_myBackpack = unitBackpack player; +_newBackpackType = (typeOf dayz_myBackpack); +if(_newBackpackType != "") then { + _backpackWpn = getWeaponCargo unitBackpack player; + _backpackMag = _countMags select 1; +}; + //Get Muzzle _currentWpn = currentWeapon player; _muzzles = getArray(configFile >> "cfgWeapons" >> _currentWpn >> "muzzles"); @@ -40,13 +43,12 @@ player setPosATL dayz_spawnPos; //BackUp Player Object _oldUnit = player; - + /**********************************/ //DONT USE player AFTER THIS POINT// /**********************************/ //Create New Character -//[player] joinSilent grpNull; _group = createGroup west; _newUnit = _group createUnit [_class,dayz_spawnPos,[],0,"NONE"]; @@ -59,9 +61,9 @@ removeAllWeapons _newUnit; //Equip New Charactar { - if (typeName _x == "ARRAY") then {_newUnit addMagazine [_x select 0,_x select 1] } else { _newUnit addMagazine _x }; + if (typeName _x == "ARRAY") then {if ((count _x) > 0) then {_newUnit addMagazine [(_x select 0), (_x select 1)]; }; } else { _newUnit addMagazine _x; }; } forEach _magazines; - + { _newUnit addWeapon _x; } forEach _weapons; @@ -78,11 +80,10 @@ if(str(_weapons) != str(weapons _newUnit)) then { _newUnit addWeapon _x; } forEach _weapons; }; - + if(_primweapon != (primaryWeapon _newUnit)) then { _newUnit addWeapon _primweapon; }; - if (_primweapon == "MeleeCrowbar") then { _newUnit addMagazine 'crowbar_swing'; }; @@ -102,25 +103,53 @@ if (_primweapon == "MeleeFishingPole") then { if(_secweapon != (secondaryWeapon _newUnit) && _secweapon != "") then { _newUnit addWeapon _secweapon; }; - -//Make New Unit Playable -addSwitchableUnit _newUnit; -setPlayable _newUnit; -selectPlayer _newUnit; - -//Clear and delete old Unit -removeAllWeapons _oldUnit; -{_oldUnit removeMagazine _x;} forEach magazines _oldUnit; - -deleteVehicle _oldUnit; - -//Move player inside - -if(_currentWpn != "") then {_newUnit selectWeapon _currentWpn;}; +_switchUnit = { + addSwitchableUnit _newUnit; + setPlayable _newUnit; + selectPlayer _newUnit; + removeAllWeapons _oldUnit; + {_oldUnit removeMagazine _x;} forEach magazines _oldUnit; + deleteVehicle _oldUnit; + if(_currentWpn != "") then {_newUnit selectWeapon _currentWpn;}; +}; +//Add and Fill BackPack +if (!isNil "_newBackpackType") then { + if (_newBackpackType != "") then { + _newUnit addBackpack _newBackpackType; + dayz_myBackpack = unitBackpack _newUnit; + //Weapons + _backpackWpnTypes = []; + _backpackWpnQtys = []; + if (count _backpackWpn > 0) then { + _backpackWpnTypes = _backpackWpn select 0; + _backpackWpnQtys = _backpackWpn select 1; + }; + [] call _switchUnit; + if (gear_done) then {sleep 0.001;}; + ["1"] call gearDialog_create; + //magazines + _countr = 0; + { + _countr = _countr + 1; + if ((typeName _x) != "STRING") then { + (unitBackpack player) addMagazineCargoGlobal [(_x select 0), 1]; + _idc = 4999 + _countr; + _idc setIDCAmmoCount (_x select 1); + } else { + (unitBackpack player) addMagazineCargoGlobal [_x, 1]; + }; + } forEach _backpackMag; + (findDisplay 106) closeDisplay 0; + _countr = 0; + { + (unitBackpack player) addWeaponCargoGlobal [_x,(_backpackWpnQtys select _countr)]; + _countr = _countr + 1; + } forEach _backpackWpnTypes; + } else { [] call _switchUnit; }; +} else { [] call _switchUnit; }; [objNull, player, rSwitchMove,_currentAnim] call RE; -//dayz_originalPlayer attachTo [_newUnit]; player disableConversation true; - + //player setVariable ["bodyName",dayz_playerName,true]; //Outcommit (Issue #991) - Also removed in DayZ Mod 1.8 if (_tagSetting) then { @@ -131,13 +160,13 @@ _playerUID = getPlayerUID player; _playerObjName = format["PVDZE_player%1",_playerUID]; call compile format["%1 = player;",_playerObjName]; publicVariableServer _playerObjName; //Outcommit in DayZ 1.8 No clue for what this is - Skaronator - + //melee check _wpnType = primaryWeapon player; _ismelee = (gettext (configFile >> "CfgWeapons" >> _wpnType >> "melee")); if (_ismelee == "true") then { call dayz_meleeMagazineCheck; }; - + //reveal the same objects we do on login {player reveal _x} forEach (nearestObjects [getPosATL player, dayz_reveal, 50]); \ No newline at end of file diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index 5502680d5..90a9dbac0 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -287,6 +287,40 @@ if (!isDedicated) then { _control ctrlShow true; }; }; + + gearDialog_create = { + private ["_i","_dialog"]; + if (!isNull (findDisplay 106)) then { + (findDisplay 106) closeDisplay 0; + }; + openMap false; + closeDialog 0; + if (gear_done) then {sleep 0.001;}; + player action ["Gear", player]; + if (gear_done) then {sleep 0.001;}; + _dialog = findDisplay 106; + _i = 0; + while {isNull _dialog} do {//DO NOT CHANGE TO A FOR LOOP! + _i = _i + 1; + _dialog = findDisplay 106; + if (gear_done) then {sleep 0.001;}; + if (_i in [100,200,299]) then { + closeDialog 0; + player action ["Gear", player]; + }; + if (_i > 300) exitWith {}; + }; + if (gear_done) then {sleep 0.001;}; + _dialog = findDisplay 106; + if ((parseNumber(_this select 0)) != 0) then { + ctrlActivate (_dialog displayCtrl 157); + if (gear_done) then { + waitUntil {ctrlShown (_dialog displayCtrl 159)}; + sleep 0.001; + }; + }; + _dialog + }; gear_ui_offMenu = { private["_control","_parent","_menu"]; diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index 30b6f89d5..c52e4655d 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -15,6 +15,7 @@ Soldier1_DZ = "Soldier1_DZ"; Rocket_DZ = "Rocket_DZ"; AllPlayers = ["Survivor2_DZ","SurvivorWcombat_DZ","SurvivorWdesert_DZ","SurvivorWurban_DZ","SurvivorWsequishaD_DZ","SurvivorWsequisha_DZ","SurvivorWpink_DZ","SurvivorW3_DZ","SurvivorW2_DZ","Bandit1_DZ","Bandit2_DZ","BanditW1_DZ","BanditW2_DZ","Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","Rocker1_DZ","Rocker2_DZ","Rocker3_DZ","Rocker4_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","Soldier_TL_PMC_DZ","Soldier_Sniper_PMC_DZ","Soldier_Bodyguard_AA12_PMC_DZ","Drake_Light_DZ","CZ_Special_Forces_GL_DES_EP1_DZ","TK_INS_Soldier_EP1_DZ","TK_INS_Warlord_EP1_DZ","FR_OHara_DZ","FR_Rodriguez_DZ","CZ_Soldier_Sniper_EP1_DZ","Graves_Light_DZ","GUE_Soldier_MG_DZ","GUE_Soldier_Sniper_DZ","GUE_Soldier_Crew_DZ","GUE_Soldier_CO_DZ","GUE_Soldier_2_DZ","TK_Special_Forces_MG_EP1_DZ","TK_Soldier_Sniper_EP1_DZ","TK_Commander_EP1_DZ","RU_Soldier_Crew_DZ","INS_Lopotev_DZ","INS_Soldier_AR_DZ","INS_Soldier_CO_DZ","INS_Bardak_DZ","INS_Worker2_DZ"]; +gear_done = false; //Cooking meatraw = [ diff --git a/SQF/dayz_code/system/player_monitor.fsm b/SQF/dayz_code/system/player_monitor.fsm index 8e6a4e60c..14ae67497 100644 --- a/SQF/dayz_code/system/player_monitor.fsm +++ b/SQF/dayz_code/system/player_monitor.fsm @@ -1,7 +1,7 @@ /*%FSM*/ /*%FSM*/ /* -item0[] = {"init",0,4346,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"init"}; +item0[] = {"init",0,250,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"init"}; item1[] = {"isServer",4,218,50.000000,-350.000000,150.000000,-300.000000,0.000000,"isServer"}; item2[] = {"wait",2,250,50.000000,-275.000000,150.000000,-225.000000,0.000000,"wait"}; item3[] = {"Allow_Conn",4,218,50.000000,-200.000000,150.000000,-150.000000,0.000000,"Allow" \n "Conn"}; @@ -20,7 +20,7 @@ item15[] = {"Parse_Login",2,250,-75.000000,500.000000,25.000000,550.000000,0.000 item16[] = {"Hive_Bad",4,218,50.000000,500.000000,150.000000,550.000000,10.000000,"Hive" \n "Bad"}; item17[] = {"ERROR__Wrong_HIVE",2,250,175.000000,500.000000,275.000000,550.000000,0.000000,"ERROR:" \n "Wrong HIVE" \n "Version"}; item18[] = {"Hive_Ok",4,218,-175.000000,550.000000,-75.000000,600.000000,0.000000,"Hive" \n "Ok"}; -item19[] = {"Phase_One",2,250,-75.000000,600.000000,25.000000,650.000000,0.000000,"Phase One"}; +item19[] = {"Phase_One",2,4346,-75.000000,600.000000,25.000000,650.000000,0.000000,"Phase One"}; item20[] = {"Response",4,218,-175.000000,650.000000,-75.000000,700.000000,0.000000,"Response"}; item21[] = {"Phase_Two",2,250,-75.000000,700.000000,25.000000,750.000000,0.000000,"Phase Two"}; item22[] = {"Dead_Player",4,218,50.000000,700.000000,150.000000,750.000000,0.000000,"Dead" \n "Player"}; @@ -169,8 +169,8 @@ link85[] = {75,57}; link86[] = {76,78}; link87[] = {77,76}; link88[] = {78,57}; -globals[] = {25.000000,1,0,0,0,640,480,1,143,6316128,1,-578.392273,577.375793,454.378448,-471.659088,1137,911,1}; -window[] = {2,0,0,-1,-1,817,340,1618,59,3,1155}; +globals[] = {25.000000,1,0,0,0,640,480,1,143,6316128,1,-629.823975,628.807434,621.934326,-518.250671,1137,1030,1}; +window[] = {2,-1,-1,-1,-1,1018,260,1538,260,3,1155}; *//*%FSM*/ class FSM { @@ -194,7 +194,7 @@ class FSM "_timeStart = diag_tickTime;" \n "_readytoAuth = false;" \n "_startCheck = 0;" \n - "_debug = DZEdebug;" \n + "_debug = DZEdebug;" \n "" \n "if (_debug) then {" \n "diag_log (""DAYZ: CLIENT IS RUNNING DAYZ_CODE "" + str(dayz_versionNo));" \n @@ -639,6 +639,7 @@ class FSM init = /*%FSM*/"dayz_playerName = name player;" \n "_model call player_switchModel;" \n "" \n + "gear_done= true;" \n "player allowDamage false;" \n "_lastAte = _survival select 1;" \n "_lastDrank = _survival select 2;" \n