Fix death cam height and rare duplicate weapon error

Vanilla commit:

1e01536fa7
This commit is contained in:
ebayShopper
2017-12-05 14:19:55 -05:00
parent 5e9a7271e9
commit 6edc98adb9
4 changed files with 25 additions and 17 deletions

View File

@@ -86,6 +86,8 @@
[FIXED] Updates to humanity and player stats after a skin change not always saving in hive (server_getDiff) [FIXED] Updates to humanity and player stats after a skin change not always saving in hive (server_getDiff)
[FIXED] Bad vehicle type crew error for RHIB2Turret on A2OA main menu intro scene [FIXED] Bad vehicle type crew error for RHIB2Turret on A2OA main menu intro scene
[FIXED] Fresh spawns running on login if they died while running [FIXED] Fresh spawns running on login if they died while running
[FIXED] Death camera height incorrect when player dies above terrain level
[FIXED] Duplicate weapon error when player dies with the same weapon in hands and on back
[NOTE] Fixes below were included in hotfix 1.0.6.1A (March 10th 2017) and are now in the default files. [NOTE] Fixes below were included in hotfix 1.0.6.1A (March 10th 2017) and are now in the default files.
[FIXED] Fixed food and drink going down 10x faster from melee and other "working" actions. [FIXED] Fixed food and drink going down 10x faster from melee and other "working" actions.

View File

@@ -1,4 +1,4 @@
private ["_amount","_item","_pos","_nearByPile","_holder","_type"]; private ["_amount","_item","_pos","_manualPos","_nearByPile","_holder","_type"];
//Radius to search for holder //Radius to search for holder
#define PILE_SEARCH_RADIUS 2 #define PILE_SEARCH_RADIUS 2
@@ -8,11 +8,10 @@ private ["_amount","_item","_pos","_nearByPile","_holder","_type"];
_item = _this select 0; _item = _this select 0;
_type = _this select 1; _type = _this select 1;
_amount = _this select 2; _amount = _this select 2;
_manualPos = count _this > 3;
_pos = if (_manualPos) then {_this select 3} else {player modeltoWorld PILE_OFFSET};
_holder = objNull; _holder = objNull;
//Lets get the location of the player in the world
_pos = player modeltoWorld PILE_OFFSET;
//Check if a holder is close by the player. //Check if a holder is close by the player.
_nearByPile= nearestObjects [_pos, ["WeaponHolder","WeaponHolderBase"],PILE_SEARCH_RADIUS]; _nearByPile= nearestObjects [_pos, ["WeaponHolder","WeaponHolderBase"],PILE_SEARCH_RADIUS];
@@ -23,15 +22,17 @@ if (count _nearByPile == 0) then {
//Found a near by weapon holder lets select it. //Found a near by weapon holder lets select it.
_holder = _nearByPile select 0; _holder = _nearByPile select 0;
if (!_manualPos) then {
//check to make sure the player can see the selected weapon holder. //check to make sure the player can see the selected weapon holder.
_objects = lineIntersectsWith [(_holder modeltoWorld PILE_OFFSET), _pos, player, _holder, true]; _objects = lineIntersectsWith [(_holder modeltoWorld PILE_OFFSET), _pos, player, _holder, true];
//Can you see the current selected weapon holder //Can you see the current selected weapon holder
if ((count _objects) > 0) then { if (count _objects > 0) then {
//Unable to see the current selected weapon holder within the radius lets create a new one. //Unable to see the current selected weapon holder within the radius lets create a new one.
_holder = createVehicle ["WeaponHolder", _pos, [], 0, "CAN_COLLIDE"]; _holder = createVehicle ["WeaponHolder", _pos, [], 0, "CAN_COLLIDE"];
}; };
}; };
};
//Add the item to the holder or to the newly created holder. //Add the item to the holder or to the newly created holder.
switch _type do { switch _type do {

View File

@@ -16,7 +16,7 @@ if (typeName (_this select 0) == "ARRAY") then {
_killed = false; _killed = false;
}; };
_deathPos = getPos _body; _deathPos = getPosATL _body;
_playerID = getPlayerUID player; _playerID = getPlayerUID player;
//Switch view to camera so player does not see debug plains at respawn_west //Switch view to camera so player does not see debug plains at respawn_west
@@ -25,7 +25,7 @@ _camera camSetDir 0;
_camera camSetFOV 1; _camera camSetFOV 1;
_camera cameraEffect ["Internal","TOP"]; _camera cameraEffect ["Internal","TOP"];
_camera camSetTarget _deathPos; _camera camSetTarget _deathPos;
_camera camSetPos [_deathPos select 0, (_deathPos select 1) + 2, 5]; _camera camSetPos [_deathPos select 0, (_deathPos select 1) + 2, (_deathPos select 2) + 5];
_camera camCommit 0; _camera camCommit 0;
if (!_killed) then { if (!_killed) then {
@@ -34,8 +34,13 @@ if (!_killed) then {
}; };
if (dayz_onBack != "") then { if (dayz_onBack != "") then {
if (dayz_onBack in weapons _body) then {
//Prevent duplicate weapon error
[dayz_onBack,2,1,[_deathPos select 0,_deathPos select 1,0]] call fn_dropItem;
} else {
_body addWeapon dayz_onBack; _body addWeapon dayz_onBack;
}; };
};
//Get killer information immediately. Weapon, distance or vehicle can change in seconds. //Get killer information immediately. Weapon, distance or vehicle can change in seconds.
_infected = if (r_player_infected && DZE_PlayerZed) then {1} else {0}; _infected = if (r_player_infected && DZE_PlayerZed) then {1} else {0};
@@ -53,7 +58,7 @@ _ammo = if (count _this > 2) then {_this select 2} else {""};
if (!isNull _source) then { if (!isNull _source) then {
if (!isNull _body) then { if (!isNull _body) then {
_distance = round (_body distance _source); _distance = round (_deathPos distance _source);
}; };
_sourceVehicleType = typeOf (vehicle _source); _sourceVehicleType = typeOf (vehicle _source);
@@ -178,7 +183,7 @@ if ((_body == (vehicle _body)) && {_animState != "deadstate" && {_animCheck != "
_deathPos = _this select 2; _deathPos = _this select 2;
waitUntil {camCommitted _camera}; waitUntil {camCommitted _camera};
_camera camSetPos [_deathPos select 0, (_deathPos select 1) + 2, 15]; _camera camSetPos [_deathPos select 0, (_deathPos select 1) + 2, (_deathPos select 2) + 15];
_camera camCommit 4; _camera camCommit 4;
uiSleep 5; uiSleep 5;

View File

@@ -29,7 +29,7 @@
5 playableUnits !"for [{_y=0},{_y < count(playableUnits)},{_y=_y+1}] do {" !"typeName player == \"OBJECT\" && {(player in playableUnits" !"AND {((alive _x) AND {((vehicle _x) distance _obj < 150)})}} count playableUnits)}) then {" !="_local = { _unit distance _x < _dis; } count playableUnits <= 1;" !"if (!_isOk) exitWith {false};\nuiSleep 0.001;\n} forEach playableUnits;" !"ManagementMustBeClose) then { player nearEntities [\"CAManBase\", 10] } else { playableUnits };" 5 playableUnits !"for [{_y=0},{_y < count(playableUnits)},{_y=_y+1}] do {" !"typeName player == \"OBJECT\" && {(player in playableUnits" !"AND {((alive _x) AND {((vehicle _x) distance _obj < 150)})}} count playableUnits)}) then {" !="_local = { _unit distance _x < _dis; } count playableUnits <= 1;" !"if (!_isOk) exitWith {false};\nuiSleep 0.001;\n} forEach playableUnits;" !"ManagementMustBeClose) then { player nearEntities [\"CAManBase\", 10] } else { playableUnits };"
5 selectPlayer !"addSwitchableUnit dayz_originalPlayer;\nsetPlayable dayz_originalPlayer;\nselectPlayer dayz_originalPlayer;" !"addSwitchableUnit _newUnit;\nsetPlayable _newUnit;\nselectPlayer _newUnit;" 5 selectPlayer !"addSwitchableUnit dayz_originalPlayer;\nsetPlayable dayz_originalPlayer;\nselectPlayer dayz_originalPlayer;" !"addSwitchableUnit _newUnit;\nsetPlayable _newUnit;\nselectPlayer _newUnit;"
5 serverCommand !="_character = if (serverCommandAvailable \"#kick\") then { call sched_tg_follow } else { player };" !"serverCommand (\"#vote kick \" + _selectedName);" 5 serverCommand !="_character = if (serverCommandAvailable \"#kick\") then { call sched_tg_follow } else { player };" !"serverCommand (\"#vote kick \" + _selectedName);"
5 setDamage !"if (_entity isKindOf \"Animal\") then {\n_entity setDamage 1;" !"player setDamage 1;\n};\n\nif (dayz_onBack != \"\") then {\n_body addWeapon dayz_onBack;" !"if (_ent isKindOf \"Animal\" || _ent isKindOf \"zZombie_base\") then {\n_ent setDamage 1;" 5 setDamage !"if (_entity isKindOf \"Animal\") then {\n_entity setDamage 1;" !"player setDamage 1;\n};\n\nif (dayz_onBack != \"\") then {\nif (dayz_onBack in w" !"if (_ent isKindOf \"Animal\" || _ent isKindOf \"zZombie_base\") then {\n_ent setDamage 1;"
5 setDammage 5 setDammage
5 SetEventHandler !"\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};" !"inGameUISetEventHandler [\"Action\",\"false\"];" 5 SetEventHandler !"\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};" !"inGameUISetEventHandler [\"Action\",\"false\"];"
5 setMarkerAlpha 5 setMarkerAlpha