Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
actionemptymagazine.c
Go to the documentation of this file.
2{
3 Magazine m_magazinePile;
4}
5
6class ActionEmptyMagazineCB : ActionContinuousBaseCB
7{
8 override void CreateActionComponent()
9 {
10 m_ActionData.m_ActionComponent = new CAContinuousRepeat(UATimeSpent.MAG_EMPTY);
11 }
12};
13
15{
17 {
18 m_CallbackClass = ActionEmptyMagazineCB;
19 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_EMPTYMAG;
20 m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_EMPTYMAG;
21 m_Text = "#empty_magazine";
22 }
23
24 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
25 {
26 if ( super.SetupAction( player, target, item, action_data, extra_data))
27 {
28 EmptyMagazineActionData emActionData = EmptyMagazineActionData.Cast(action_data);
29 emActionData.m_magazinePile = NULL;
30 return true;
31 }
32 return false;
33 }
34
36 {
38 return action_data;
39 }
40
46
47 override bool HasProneException()
48 {
49 return true;
50 }
51
52 bool CanEmpty(ItemBase item)
53 {
54 Magazine mag;
55 return ( item && Class.CastTo(mag, item) && mag.GetAmmoCount() > 0 );
56 }
57
58 override bool ActionConditionContinue( ActionData action_data )
59 {
60 return CanEmpty(action_data.m_MainItem);
61 }
62
63 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
64 {
65 Magazine itm;
66 return CanEmpty(item);
67 }
68
69 override bool HasTarget()
70 {
71 return false;
72 }
73
74 override void OnExecuteServer( ActionData action_data )
75 {
76 EmptyMagazineActionData emActionData = EmptyMagazineActionData.Cast(action_data);
77
78 Magazine mag;
79 if (!Class.CastTo(mag, action_data.m_MainItem))
80 return;
81
82 float dmg;
83 string ammoType;
84
85 if (!mag.ServerAcquireCartridge(dmg,ammoType))
86 return;
87
88 mag.ApplyManipulationDamage();
89
90 string magazineTypeName;
91 g_Game.ConfigGetText( "CfgAmmo " + ammoType + " spawnPileType" , magazineTypeName);
92
93 if (!DayZPlayerUtils.HandleStoreCartridge(action_data.m_Player, NULL, -1, dmg, ammoType, magazineTypeName, false))
94 {
96 vector posHead;
97 MiscGameplayFunctions.GetHeadBonePos(action_data.m_Player,posHead);
98 vector posTarget = action_data.m_Player.GetPosition() + (action_data.m_Player.GetDirection() * DEFAULT_SPAWN_DISTANCE);
99
100 if (!emActionData.m_magazinePile)
101 {
102 piles = MiscGameplayFunctions.CreateMagazinePilesDispersed(magazineTypeName,posHead,posTarget,UAItemsSpreadRadius.NARROW,1,dmg,action_data.m_Player);
103 if (piles.Count() > 0)
104 emActionData.m_magazinePile = piles[0];
105 }
106 else
107 {
108 if (emActionData.m_magazinePile.GetAmmoMax() > emActionData.m_magazinePile.GetAmmoCount() && emActionData.m_magazinePile.GetType() == magazineTypeName && (vector.DistanceSq(action_data.m_Player.GetPosition(), emActionData.m_magazinePile.GetPosition()) < (UAMaxDistances.DEFAULT * UAMaxDistances.DEFAULT)))
109 {
110 emActionData.m_magazinePile.ServerStoreCartridge(dmg,ammoType);
111 }
112 else
113 {
114 piles = MiscGameplayFunctions.CreateMagazinePilesFromBulletDispersed(ammoType,posHead,posTarget,UAItemsSpreadRadius.VERY_NARROW,1,dmg,action_data.m_Player);
115 if (piles.Count() > 0)
116 emActionData.m_magazinePile = piles[0];
117 }
118 }
119 }
120 }
121};
ActionBase ActionData
Definition actionbase.c:30
class ActionTargets ActionTarget
void CreateActionComponent()
string m_Text
Definition actionbase.c:64
ref CCIBase m_ConditionItem
Definition actionbase.c:70
ref CCTBase m_ConditionTarget
Definition actionbase.c:71
override bool ActionConditionContinue(ActionData action_data)
override void OnExecuteServer(ActionData action_data)
override ActionData CreateActionData()
override void CreateConditionComponents()
bool CanEmpty(ItemBase item)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override bool HasTarget()
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
override bool HasProneException()
Super root of all classes in Enforce script.
Definition enscript.c:11
Base Param Class with no parameters.
Definition param.c:12
const float DEFAULT
const float MAG_EMPTY
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
DayZGame g_Game
Definition dayzgame.c:3942
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
void DayZPlayerUtils()
cannot be instantiated
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
const float DEFAULT_SPAWN_DISTANCE
Definition recipebase.c:3