Jump to content
  • 0

Quick weapon switch or Add slot in inventory for secondory waeapon.


lucho

Question

I Need help to realise this any ideas?

 

Weapon Quickswitch

2 Primary Weapon Slots. Assign your primary to secondary which auto places into your backpack and “Quickswitch” between them with Shift + F!

 

dayz_spaceInterrupt

 

QuoteQuote

 

private ["_dikCode","_handled","_primaryWeapon","_secondaryWeapon","_nearbyObjects","_nill","_shift","_ctrl","_alt","_dropPrimary","_dropSecondary","_iItem","_removed","_iPos","_radius","_item"];
_dikCode = _this select 1;
_handled = false;
if ((animationState player) in ["smk_urbanproneright","smk_prone_to_urbanprone_right","smk_urbanproneleft","smk_prone_to_urbanprone_left"]) then {
 player switchMove "";
 player playActionNow "stop";
};
if (_dikCode in[0x02,0x03,0x04,0x58,0x57,0x44,0x43,0x42,0x41,0x40,0x3F,0x3E,0x3D,0x3C,0x3B,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05]) then {
 _handled = true;
};
if ((_dikCode == 0x3E or _dikCode == 0x0F or _dikCode == 0xD3)) then {
 if(diag_tickTime - dayz_lastCheckBit > 10) then {
  dayz_lastCheckBit = diag_tickTime;
  call dayz_forceSave;
 };
 call dayz_EjectPlayer;
};
if (_dikCode == 0x01) then {
 DZE_cancelBuilding = true;
 call dayz_EjectPlayer;
};
if (_dikCode == 0x01 && r_player_dead) then {
 _handled = true;
};
if (_dikCode in actionKeys "Surrender") then { 
 _vehicle = vehicle player;
 _inVehicle = (_vehicle != player);
 _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
 _canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder and !_inVehicle); 
 if (_canDo and !DZE_Surrender and !(player isKindOf  "PZombie_VB")) then {
  DZE_Surrender = true;
  _dropPrimary = false;
  _dropSecondary = false;
  _primaryWeapon = primaryWeapon player;
  if (_primaryWeapon != "") then {_dropPrimary = true;};
  _secondaryWeapon = "";
  {
   if ((getNumber (configFile >> "CfgWeapons" >> _x >> "Type")) == 2) exitWith {
     _secondaryWeapon = _x;
   };
  } forEach (weapons player);
  if (_secondaryWeapon != "") then {_dropSecondary = true;};

  if (_dropPrimary or _dropSecondary) then {
   player playActionNow "PutDown";
   _iPos = getPosATL player;
   _radius = 1;
   _item = createVehicle ["WeaponHolder", _iPos, [], _radius, "CAN_COLLIDE"];
   _item setposATL _iPos;
   if (_dropPrimary) then {
    _iItem = _primaryWeapon;
    _removed = ([player,_iItem,1] call BIS_fnc_invRemove);
    if (_removed == 1) then {
     _item addWeaponCargoGlobal [_iItem,1];
    };
   };
   if (_dropSecondary) then {
    _iItem = _secondaryWeapon;
    _removed = ([player,_iItem,1] call BIS_fnc_invRemove);
    if (_removed == 1) then {
     _item addWeaponCargoGlobal [_iItem,1];
    };
   };
   player reveal _item;
  };
  player setVariable ["DZE_Surrendered", true, true];
  player playMove "AmovPercMstpSsurWnonDnon";
 };
 _handled = true;
};
if (_dikCode in actionKeys "MoveForward") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};
if (_dikCode in actionKeys "MoveLeft") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};
if (_dikCode in actionKeys "MoveRight") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};
if (_dikCode in actionKeys "MoveBack") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};
if ((_dikCode in actionKeys "Prone") and r_drag_sqf) exitWith { force_dropBody = true; };
if ((_dikCode in actionKeys "Crouch") and r_drag_sqf) exitWith { force_dropBody = true; };
_shift = _this select 2;
_ctrl = _this select 3;
_alt = _this select 4;
if ((_dikCode in actionKeys "Gear") and (vehicle player != player) and !_shift and !_ctrl and !_alt && !dialog) then {
 createGearDialog [player, "RscDisplayGear"];
 _handled = true;
};
if (_dikCode in (actionKeys "GetOver")) then { 
 if (player isKindOf  "PZombie_VB") then {
  _handled = true;
  DZE_PZATTACK = true;
 } else {
  _nearbyObjects = nearestObjects[getPosATL player, dayz_disallowedVault, 8];
  if (count _nearbyObjects > 0) then {
   if((diag_tickTime - dayz_lastCheckBit > 4)) then {
    [objNull, player, rSwitchMove,"GetOver"] call RE;
    player playActionNow "GetOver";
    dayz_lastCheckBit = diag_tickTime;
   } else {
    _handled = true;
   };
  };
 };
};
if (_dikCode == 66) then {
 _nill = [] spawn RSD_fnc_serverrules;
};
if (_dikCode == 65) then {
 _nill = [] spawn RSD_fnc_serverfeatures;
};
if (_dikCode == 64) then {
 if (isNil("RSD_Buddys")) then { titleText [format["\n\n Buddy List Loading.... Please Wait",_budName], "PLAIN DOWN"];
 }else{ [] spawn {_dialog = createdialog "FriendDialog"; waitUntil { !(dialog) }; }; };
};
if (_dikCode in actionKeys "ForceCommandingMode") then {_handled = true};
if (_dikCode in actionKeys "PushToTalk" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
 dayz_lastCheckBit = diag_tickTime;
 [player,50,true,(getPosATL player)] spawn player_alertZombies;
};
if (_dikCode in actionKeys "VoiceOverNet" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
 dayz_lastCheckBit = diag_tickTime;
 [player,50,true,(getPosATL player)] spawn player_alertZombies;
};
if (_dikCode in actionKeys "PushToTalkDirect" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
 dayz_lastCheckBit = diag_tickTime;
 [player,15,false,(getPosATL player)] spawn player_alertZombies;
};
if (_dikCode in actionKeys "Chat" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
 dayz_lastCheckBit = diag_tickTime;
 [player,15,false,(getPosATL player)] spawn player_alertZombies;
};
if ((_dikCode == 0xC9 and (!_alt or !_ctrl)) or (_dikCode in actionKeys "User15")) then {
 DZE_Q = true;
};
if ((_dikCode == 0xD1 and (!_alt or !_ctrl)) or (_dikCode in actionKeys "User16")) then {
 DZE_Z = true;
};
if ((_dikCode == 0xC9 and (_alt and !_ctrl)) or (_dikCode in actionKeys "User13")) then {
 DZE_Q_alt = true;
};
if ((_dikCode == 0xD1 and (_alt and !_ctrl)) or (_dikCode in actionKeys "User14")) then {
 DZE_Z_alt = true;
};
if ((_dikCode == 0xC9 and (!_alt and _ctrl)) or (_dikCode in actionKeys "User7")) then {
 DZE_Q_ctrl = true;
};
if ((_dikCode == 0xD1 and (!_alt and _ctrl)) or (_dikCode in actionKeys "User8")) then {
 DZE_Z_ctrl = true;
};
if (_dikCode == 0x10 or (_dikCode in actionKeys "User17")) then {
 DZE_4 = true;
};
if (_dikCode == 0x12 or (_dikCode in actionKeys "User18")) then {
 DZE_6 = true;
};
if (_dikCode == 0x39 or (_dikCode in actionKeys "User19")) then {
 DZE_5 = true;
};
if ((_dikCode == 0x21 and (!_alt and !_ctrl)) or (_dikCode in actionKeys "User6")) then {
 if(!_shift) then { DZE_F = true;}else{ _nill = execVM "fncs\fnc_switchweptosecondary.sqf";};
};
_handled

 

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

fnc_switchweptosecondary

private ["_onLadder","_pWeap","_sWep","_pack","_count","_pack_Items","_pack_Items_types","_pack_Items_count"];
if(RSD_wepswitch_inprogress) exitWith {cutText ["Slow Down! Not so fast!" , "PLAIN DOWN"];};
RSD_wepswitch_inprogress = true;
closeDialog 602;
player removeAction RSD_action_addsecondary;
RSD_action_addsecondary = -1;
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if(_onLadder) exitWith {RSD_wepswitch_inprogress = false; cutText ["You can't perform this action while on a ladder!" , "PLAIN DOWN"];};
if(vehicle player != player) exitWith {RSD_wepswitch_inprogress = false; cutText ["You can't perform this action while in a vehicle", "PLAIN DOWN"];};
if(DZE_ActionInProgress) exitWith {RSD_wepswitch_inprogress = false; cutText [(localize "str_epoch_player_103") , "PLAIN DOWN"];};
_pWeap = primaryWeapon player;
if(_pWeap == "") exitWith {RSD_wepswitch_inprogress = false; cutText ["You have no primary weapon to switch with!" , "PLAIN DOWN"];};
_sWep = player getVariable ["RSDSecondary",""];
if(_sWep == "") exitWith {RSD_wepswitch_inprogress = false; cutText ["You have no weapon assigned to secondary!" , "PLAIN DOWN"];};
_pack = unitBackpack player;
if( _pack == objNull ) exitWith {RSD_wepswitch_inprogress = false; cutText ["You need a Backpack for this action", "PLAIN DOWN"];};
_packC = getWeaponCargo _pack;
_sWepN = getText (configFile >> "CfgWeapons" >> _sWep >> "displayName");
if(!(_sWep in (_packC select 0))) exitWith {
 RSD_wepswitch_inprogress = false;
 cutText [format ["%1 is no longer in your backpack!",_sWepN], "PLAIN DOWN"];
 player setVariable ["RSDSecondary","",false];
 player removeAction RSD_action_addsecondary;
 RSD_action_addsecondary = -1;
};
player removeWeapon _pWeap;
_count = 1;
_pack_Items = getWeaponCargo _pack;
_pack_Items_types = _pack_Items select 0;
_pack_Items_count = _pack_Items select 1;
clearWeaponCargoGlobal _pack;
for [{_i=0}, {_i<(count _pack_Items_types)}, {_i=_i+1}] do {
 private["_sWep_type","_sWep_count"];
 _sWep_type = _pack_Items_types select _i;
 _sWep_count = _pack_Items_count select _i;
 if (_sWep_type == _sWep) then {
  _sWep_count = _sWep_count - _count;
  if (_sWep_count > 0) then { _pack addWeaponCargoGlobal [_sWep_type, _sWep_count]; };
 }else{ _pack addWeaponCargoGlobal [_sWep_type, _sWep_count]; };
};
_pack addWeaponCargoGlobal [_pWeap,1];
player addWeapon _sWep;
player setVariable ["RSDSecondary",_pWeap,false];
uiSleep 1;
player selectWeapon _sWep;
_nill = [] spawn {
 uiSleep 5;
 RSD_wepswitch_inprogress = false;
};

 

Link to comment
Share on other sites

  • 0

if i remember right this should be the exact same thing you are looking for the switch weapon part:

 

https://github.com/SurvivalOperations/HardCorps/blob/master/@HC_DAYZ/addons/dayz_code/actions/player_switchWeapon.sqf

 

not tested though, but if read that right it should replace the arma default animation with faster weapon animations

 

for the second problem, im not sure what you want to archive. Same thing as vanilla DayZ did with 2 primary weapons? For that just check how they did it and try to implement that into epoch, but this requires database edits. on vanilla dayz the scheme was something like this:

[["ItemGPS"],["HandRoadFlare","ItemBandage","ItemSodaCoke","FoodCanBakedBeans"],"SecondPrimaryComeshere"]

or my english to bad to understand that this is already a release thread for all of that ^^"

Link to comment
Share on other sites

  • 0

SchwEde i think your english is ok ;o

Lucho. Sorry to be unfriendly, but the files you are showing us are the basic dayz files, except you changed a few names and strimgs. I really don't mind helping anybody but to be honest this looks like you changed a few lines but then never really tryed to get your problems solved. It's like you threw all you into that file and then scream hey here needs fixing... Concider using arma2 script reference it helps a lot and if you then got any problems nobody will mind helping out!

Link to comment
Share on other sites

  • 0

In your dayz_spaceInterrupt.sqf, add the following:

if (_dikCode == ****) then {
        ["rifle"] call player_switchWeapon;
        _handled = true;   
    };

    if (_dikCode == ****) then {
        ["pistol"] call player_switchWeapon;
        _handled = true;   
     };

Of course, where the "****" is, replace it with the key you wish to use.

These can be found here: https://resources.bisimulations.com/wiki/DIK_KeyCodes

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Discord

×
×
  • Create New...