DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionEmptyMagazine.c
См. документацию.
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.ServerAcquireCartridgeEx(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 {
95 array<Magazine> piles;
96 vector playerPosition = action_data.m_Player.GetPosition();
97 vector posHead = MiscGameplayFunctions.GetPlayerHeadPosition(action_data.m_Player);
98 vector posTarget = playerPosition + (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.ServerStoreCartridgeEx(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};
string m_Text
Определения ActionBase.c:57
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
DayZGame g_Game
Определения DayZGame.c:4074
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
string ammoType
Определения DustKickupEffects.c:24
const float DEFAULT_SPAWN_DISTANCE
Определения RecipeBase.c:3
void CreateActionComponent()
Определения AnimatedActionBase.c:63
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
PlayerBase m_Player
Определения ActionBase.c:40
ItemBase m_MainItem
Определения ActionBase.c:35
void ActionData()
Определения ActionBase.c:23
Определения ActionBase.c:22
override ActionData CreateActionData()
Определения ActionEmptyMagazine.c:35
override bool HasProneException()
Определения ActionEmptyMagazine.c:47
override bool HasTarget()
Определения ActionEmptyMagazine.c:69
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionEmptyMagazine.c:24
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionEmptyMagazine.c:63
override void OnExecuteServer(ActionData action_data)
Определения ActionEmptyMagazine.c:74
override bool ActionConditionContinue(ActionData action_data)
Определения ActionEmptyMagazine.c:58
void ActionEmptyMagazine()
Определения ActionEmptyMagazine.c:16
override void CreateConditionComponents()
Определения ActionEmptyMagazine.c:41
bool CanEmpty(ItemBase item)
Определения ActionEmptyMagazine.c:52
int m_CommandUID
Определения AnimatedActionBase.c:147
int m_CommandUIDProne
Определения AnimatedActionBase.c:148
Определения CCINonRuined.c:2
Определения CCTNone.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Magazine m_magazinePile
Определения ActionEmptyMagazine.c:3
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
const float NARROW
Определения ActionConstants.c:130
const float VERY_NARROW
Определения ActionConstants.c:129
const float DEFAULT
Определения ActionConstants.c:114
const float MAG_EMPTY
Определения ActionConstants.c:94
Определения ActionConstants.c:28
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
Определения EnConvert.c:119
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.