diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf index 808b4d56..3db648db 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_checkPlayer.sqf @@ -25,9 +25,7 @@ if (_playerObj isEqualType objNull) then { _dead = false; _isMale = true; - _instanceID = call EPOCH_fn_InstanceID; - _class = "Epoch_Female_F"; _arr = []; if ((_response select 0) == 1 && (_response select 1) isEqualType []) then { @@ -41,13 +39,9 @@ if (_playerObj isEqualType objNull) then { if !(_arr isEqualTypeParams _defaultData) then { _dead = true; } else { - _medical = _arr select 1; - _apperance = _arr select 2; - _class = _apperance select 5; - if (_class == "Epoch_Female_F") then { - _isMale = false; - }; - _vars = _arr select 4; + _arr params ["","_medical","_apperance","","_vars"]; + _class = _apperance param [5, "Epoch_Female_F"]; + _isMale = (_class == "Epoch_Male_F"); _medical params ["","","","_damage",["_hitpoints",[0,0,0,0,0,0,0,0,0,0,0]] ]; _deadPlayer = ["PlayerStats", _playerUID, 0] call EPOCH_fnc_server_hiveGETBIT; // check if player is already dead or was critically hit HitHead = 2 or HitBody = 7 and if blood pressure too high. diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf index 8eb9b268..e138c4e6 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf @@ -13,7 +13,7 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_loadPlayer.sqf */ //[[[cog import generate_private_arrays ]]] -private ["_CheckLocation","_allGroupMembers","_alreadyDead","_assignedItems","_attachments","_backpack","_backpackItems","_canBeRevived","_class","_communityStats","_communityStatsArray","_currWeap","_deadPlayer","_defaultData","_dir","_equipped","_found","_goggles","_group","_handgunWeapon","_headgear","_instanceID","_jammer","_jammers","_linkedItems","_loadout","_location","_newLocation","_newPlyr","_playerData","_playerGroup","_playerGroupArray","_playerNetID","_playerUID","_primaryWeapon","_reject","_secondaryWeapon","_serverSettingsConfig","_type","_uniform","_uniformItems","_vars","_vest","_vestItems","_wMags","_wMagsArray","_weapon"]; +private ["_CheckLocation","_allGroupMembers","_alreadyDead","_assignedItems","_attachments","_backpack","_backpackItems","_canBeRevived","_class","_communityStats","_communityStatsArray","_currentWeapon","_deadPlayer","_defaultData","_dir","_equipped","_found","_goggles","_group","_handgunWeapon","_headgear","_instanceID","_jammer","_jammers","_linkedItems","_loadout","_location","_newLocation","_newPlyr","_playerData","_playerGroup","_playerGroupArray","_playerNetID","_playerUID","_primaryWeapon","_reject","_secondaryWeapon","_serverSettingsConfig","_type","_uniform","_uniformItems","_vars","_vest","_vestItems","_wMags","_wMagsArray","_weapon"]; //[[[end]]] _reject = true; @@ -62,6 +62,7 @@ if (!isNull _player) then { _backpackItems = [_serverSettingsConfig, "defaultbackpackItems", []] call EPOCH_fnc_returnConfigEntry; // [["Medikit",1],["FirstAidKit",10],[["hgun_P07_F","","","",["16Rnd_9x21_Mag",16],[],""],1]]; _assignedItems = [_serverSettingsConfig, "defaultassignedItems", ["","","","",[],[],""]] call EPOCH_fnc_returnConfigEntry; // ["Rangefinder","","","",[],[],""] _linkedItems = [_serverSettingsConfig, "defaultlinkedItems", ["ItemMap","","EpochRadio0","","",""]] call EPOCH_fnc_returnConfigEntry; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"] + _currentWeapon = [_serverSettingsConfig, "defaultSelectedWeapon", ""] call EPOCH_fnc_returnConfigEntry; // class of selected weapon _loadout = [ _primaryWeapon, @@ -77,7 +78,7 @@ if (!isNull _player) then { ]; // default data, if "Player" data format is changed update this array! - _defaultData = [[0, [], _instanceID, 1.0], [0, 0, 1, 0, [0,0,0,0,0,0,0,0,0,0,0]], ["", "", "", "", "", _class], [], call EPOCH_defaultVars_SEPXVar, _loadout, [], [], [], [], "", true]; + _defaultData = [[0, [], _instanceID, 1.0], [0, 0, 1, 0, [0,0,0,0,0,0,0,0,0,0,0]], ["", "", "", "", _currentWeapon, _class], [], call EPOCH_defaultVars_SEPXVar, _loadout, [], [], [], [], "", true]; // If data does not validate against default or is too short, override with default data. if !(_playerData isEqualTypeParams _defaultData) then { @@ -199,9 +200,14 @@ if (!isNull _player) then { _newPlyr setDir _dir; _newPlyr setPosATL _location; + // + + // set player loadout if (_schemaVersion >= 1.0) then { - _playerData params ["","","","","","_loadout"]; + _playerData params ["","","_apperance","","","_loadout"]; + // get current weapon to send to param for selectWeapon + _currentWeapon = _apperance param [4,""]; _newPlyr setUnitLoadout [_loadout, false]; diag_log format["DEBUG: loaded player %1 with new schema Version %2", _newPlyr, _schemaVersion]; @@ -230,11 +236,11 @@ if (!isNull _player) then { _newPlyr addVest _vest; }; // Load Apperance END - _currWeap = ""; + // Load inventory + defaults START if (count _weaponsAndItems >= 3) then { - _weaponsAndItems params ["_currWeapTmp","_weaponsAndItemsArray","_equipped"]; - _currWeap = _currWeapTmp; + _weaponsAndItems params ["_currentWeaponTmp","_weaponsAndItemsArray","_equipped"]; + _currentWeapon = _currentWeaponTmp; { _weapon = _x deleteAt 0; _type = getNumber(configfile >> "cfgweapons" >> _weapon >> "type"); @@ -352,7 +358,7 @@ if (!isNull _player) then { _newPlyr setVariable["SETUP", true, true]; // Send message to player so they can take over the new body. - [_playerNetID, _playerUID, [_newPlyr, _vars, _currWeap, loadAbs _newPlyr, _playerGroup, _canBeRevived, _newPlyr call EPOCH_server_setPToken,_playerGroupArray, _communityStats, _hitpoints]] call EPOCH_server_pushPlayer; + [_playerNetID, _playerUID, [_newPlyr, _vars, _currentWeapon, loadAbs _newPlyr, _playerGroup, _canBeRevived, _newPlyr call EPOCH_server_setPToken,_playerGroupArray, _communityStats, _hitpoints]] call EPOCH_server_pushPlayer; // revive test _newPlyr setVariable ['#rev_enabled', true, true]; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf index 2333c53a..b77d93e3 100644 --- a/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf @@ -13,7 +13,7 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_player/EPOCH_server_savePlayer.sqf */ //[[[cog import generate_private_arrays ]]] -private ["_Svars","_allowSave","_appearance","_cIndex","_dmg","_group","_hitpoints","_itemsplayer","_loadout","_medical","_playerUID","_pos","_return","_return2","_revive","_schemaVersion","_server_vars","_stats","_vehiclePlyr","_weapons","_weaponsplayer"]; +private ["_Svars","_allowSave","_appearance","_cIndex","_dmg","_extraLoadoutInfo","_group","_hitpoints","_loadout","_medical","_playerUID","_pos","_return","_return2","_revive","_schemaVersion","_server_vars","_stats","_vehiclePlyr"]; //[[[end]]] params [["_player",objNull], ["_vars",[]] ]; @@ -80,11 +80,14 @@ if (_allowSave) then{ }; }; - _dmg = damage _player; + // get players hitpoint damage _hitpoints = (getAllHitPointsDamage _player) param [2,[]]; - _medical = [getBleedingRemaining _player, 0, getOxygenRemaining _player, _dmg, _hitpoints]; + + // build medical array + _medical = [getBleedingRemaining _player, 0, getOxygenRemaining _player, damage _player, _hitpoints]; + // appearance now handled with getUnitLoadout, typeof is still need to determine players class. - _appearance = ["", "", "", "", "", typeOf _player]; + _appearance = ["", "", "", "", currentWeapon _player, typeOf _player]; // new save format _loadout = getUnitLoadout _player;