DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionUnrestrainTarget.c
См. документацию.
2{
3 const float DEFAULT_UNRESTRAIN_TIME = 2;
4
5 override void CreateActionComponent()
6 {
7 float time = ObtainUnrestrainTime();
8
9 if( time <=0 )
10 {
12 }
13
14 if( m_ActionData.m_Player.IsQuickRestrain() )
15 {
17 }
18
19 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
20 }
21
23 {
24 PlayerBase target_player = PlayerBase.Cast(m_ActionData.m_Target.GetObject());
25 PlayerBase source_player = m_ActionData.m_Player;
26
27 if (target_player.IsRestrained())
28 {
29 EntityAI item_in_hands_source = source_player.GetItemInHands();
30
31 ItemBase item_in_hands_target = target_player.GetItemInHands();
32
34 item_in_hands_target.ConfigGetTextArray( "CanBeUnrestrainedBy", CachedObjectsArrays.ARRAY_STRING );
35
36 string item_in_hands_name = item_in_hands_source.GetType();
37
38 for(int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count(); i++)
39 {
40 if((i % 2) == 0)
41 {
43 if( g_Game.IsKindOf(item_in_hands_name, class_name) )
44 {
45 float value = CachedObjectsArrays.ARRAY_STRING.Get(i+1).ToFloat();
46 return value;
47 }
48 }
49 }
50 }
51 return -1;
52 }
53};
54
56{
58 {
60 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_UNRESTRAINTARGET;
61 m_FullBody = true;
62 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
63 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
64 m_Text = "#unrestrain";
65 }
66
72
73 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
74 {
75 PlayerBase other_player = PlayerBase.Cast(target.GetObject());
76 EntityAI item_in_hands_source = player.GetItemInHands();
77
78 if( other_player.IsRestrained() )
79 {
80 EntityAI item_in_hands_target = other_player.GetItemInHands();
81
83
84 if( item_in_hands_target )
85 {
86 item_in_hands_target.ConfigGetTextArray( "CanBeUnrestrainedBy", CachedObjectsArrays.ARRAY_STRING );
87
88 string item_in_hands_name = item_in_hands_source.GetType();
89
90 for(int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count(); i++)
91 {
92 if((i % 2) == 0)
93 {
95 if( g_Game.IsKindOf(item_in_hands_name, class_name) )
96 {
97 return true;
98 }
99 }
100 }
101 }
102 }
103 return false;
104 }
105
106 override void OnFinishProgressServer( ActionData action_data )
107 {
108 PlayerBase player_target = PlayerBase.Cast(action_data.m_Target.GetObject());
109 PlayerBase player_source = PlayerBase.Cast(action_data.m_Player);
110
111 if (CanReceiveAction(action_data.m_Target) && player_target.IsRestrained())
112 {
113 EntityAI unrestraining_tool = action_data.m_MainItem;
114 EntityAI restraining_item = player_target.GetItemInHands();
115
116 player_target.SetRestrained(false);
117
118
119 //Damage applied to tool
121
122 restraining_item.ConfigGetTextArray( "CanBeUnrestrainedBy", CachedObjectsArrays.ARRAY_STRING );
123 restraining_item.ConfigGetFloatArray( "CanBeUnrestrainedByDMG", CachedObjectsArrays.ARRAY_FLOAT );
124
125 string item_in_hands_name = unrestraining_tool.GetType();
126 float damageToTool = 0;
127
128 for(int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count(); i++)
129 {
131 if( g_Game.IsKindOf(item_in_hands_name, class_name) )
132 {
133 damageToTool = CachedObjectsArrays.ARRAY_FLOAT.Get(i/2);
134 break;
135 }
136 }
137
138 MiscGameplayFunctions.DealAbsoluteDmg(action_data.m_MainItem, damageToTool);
139 //---------------------------
140
141 MiscGameplayFunctions.TransformRestrainItem(restraining_item, unrestraining_tool, player_source, player_target, true);
142 }
143 }
144};
145
146class ReplaceAndDestroyLambda : TurnItemIntoItemLambdaAnimSysNotifyLambda
147{
150 bool m_Drop;
151
152 void ReplaceAndDestroyLambda(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy = false)
153 {
154 m_TargetPlayer = player;
155 m_Destroy = destroy;
156 m_OldItem = old_item;
157 }
158
159 override void OnSuccess(EntityAI new_item)
160 {
161 super.OnSuccess(new_item);
162
163 if ( m_Destroy )
164 {
165 new_item.SetHealth("","",0);
166 }
167 }
168};
169
171{
172 void ReplaceAndDestroyLambdaEx(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy = false, bool enableDrop = true)
173 {
174 m_Drop = enableDrop;
175 }
176
177 override protected EntityAI CreateNewEntity()
178 {
179 EntityAI newItem = super.CreateNewEntity();
180
181 if (!newItem && m_Drop)
182 {
183 newItem = EntityAI.Cast(g_Game.CreateObjectEx(m_NewItemType, m_TargetPlayer.GetPosition(), ECE_PLACE_ON_SURFACE|ECE_LOCAL));
184 }
185
186 return newItem;
187 }
188};
bool m_FullBody
Определения ActionBase.c:60
string m_Text
Определения ActionBase.c:57
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
float m_SpecialtyWeight
Определения ActionBase.c:77
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
bool CanReceiveAction(ActionTarget target)
Определения ActionBase.c:861
int m_StanceMask
Определения ActionBase.c:61
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
const int ECE_LOCAL
Определения CentralEconomy.c:25
const int ECE_PLACE_ON_SURFACE
Определения CentralEconomy.c:38
DayZGame g_Game
Определения DayZGame.c:4074
class OptionSelectorMultistate extends OptionSelector class_name
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
PlayerBase m_Player
Определения ActionBase.c:40
ref ActionTarget m_Target
Определения ActionBase.c:39
ItemBase m_MainItem
Определения ActionBase.c:35
Определения ActionBase.c:22
override void OnFinishProgressServer(ActionData action_data)
Определения ActionUnrestrainTarget.c:106
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionUnrestrainTarget.c:73
void ActionUnrestrainTarget()
Определения ActionUnrestrainTarget.c:57
override void CreateConditionComponents()
Определения ActionUnrestrainTarget.c:67
float ObtainUnrestrainTime()
Определения ActionUnrestrainTarget.c:22
const float DEFAULT_UNRESTRAIN_TIME
Определения ActionUnrestrainTarget.c:3
override void CreateActionComponent()
Определения ActionUnrestrainTarget.c:5
int m_CommandUID
Определения AnimatedActionBase.c:147
Определения CCINonRuined.c:2
Определения CCTMan.c:2
static ref TStringArray ARRAY_STRING
Определения UtilityClasses.c:49
static ref TFloatArray ARRAY_FLOAT
Определения UtilityClasses.c:50
Определения PlayerBaseClient.c:2
PlayerBase m_TargetPlayer
Определения ActionUnrestrainTarget.c:148
override void OnSuccess(EntityAI new_item)
Определения ActionUnrestrainTarget.c:159
void ReplaceAndDestroyLambda(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy=false)
Определения ActionUnrestrainTarget.c:152
EntityAI CreateNewEntity()
Определения ActionUnrestrainTarget.c:177
void ReplaceAndDestroyLambdaEx(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy=false, bool enableDrop=true)
Определения ActionUnrestrainTarget.c:172
const float DEFAULT
Определения ActionConstants.c:114
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
const float DEBUG_QUICK_UNRESTRAIN_TIME
Определения 3_Game/DayZ/constants.c:684