DayZ 1.27
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( GetGame().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 //Print("is restrained");
81 EntityAI item_in_hands_target = other_player.GetItemInHands();
82
84
85 if( item_in_hands_target )
86 {
87 item_in_hands_target.ConfigGetTextArray( "CanBeUnrestrainedBy", CachedObjectsArrays.ARRAY_STRING );
88
89 string item_in_hands_name = item_in_hands_source.GetType();
90
91 for(int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count(); i++)
92 {
93 if((i % 2) == 0)
94 {
96 if( GetGame().IsKindOf(item_in_hands_name, class_name) )
97 {
98 return true;
99 }
100 }
101 }
102 }
103 }
104 return false;
105 }
106
107 override void OnFinishProgressServer( ActionData action_data )
108 {
109 PlayerBase player_target = PlayerBase.Cast(action_data.m_Target.GetObject());
110 PlayerBase player_source = PlayerBase.Cast(action_data.m_Player);
111
112 if (CanReceiveAction(action_data.m_Target) && player_target.IsRestrained())
113 {
114 EntityAI unrestraining_tool = action_data.m_MainItem;
115 EntityAI restraining_item = player_target.GetItemInHands();
116
117 player_target.SetRestrained(false);
118
119
120 //Damage applied to tool
122
123 restraining_item.ConfigGetTextArray( "CanBeUnrestrainedBy", CachedObjectsArrays.ARRAY_STRING );
124 restraining_item.ConfigGetFloatArray( "CanBeUnrestrainedByDMG", CachedObjectsArrays.ARRAY_FLOAT );
125
126 string item_in_hands_name = unrestraining_tool.GetType();
127 float damageToTool = 0;
128
129 for(int i = 0; i < CachedObjectsArrays.ARRAY_STRING.Count(); i++)
130 {
132 if( GetGame().IsKindOf(item_in_hands_name, class_name) )
133 {
134 damageToTool = CachedObjectsArrays.ARRAY_FLOAT.Get(i/2);
135 break;
136 }
137 }
138
139 MiscGameplayFunctions.DealAbsoluteDmg(action_data.m_MainItem, damageToTool);
140 //---------------------------
141
142 MiscGameplayFunctions.TransformRestrainItem(restraining_item, unrestraining_tool, player_source, player_target);
143 }
144 }
145};
146
147class ReplaceAndDestroyLambda : TurnItemIntoItemLambdaAnimSysNotifyLambda
148{
151 bool m_Drop;
152
153 void ReplaceAndDestroyLambda(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy = false)
154 {
155 m_TargetPlayer = player;
156 m_Destroy = destroy;
157 m_OldItem = old_item;
158 }
159
160 override void OnSuccess(EntityAI new_item)
161 {
162 super.OnSuccess(new_item);
163
164 if ( m_Destroy )
165 {
166 new_item.SetHealth("","",0);
167 }
168 }
169};
170
172{
173 void ReplaceAndDestroyLambdaEx(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy = false, bool enableDrop = true)
174 {
175 m_Drop = enableDrop;
176 }
177
178 override protected EntityAI CreateNewEntity()
179 {
180 EntityAI newItem = super.CreateNewEntity();
181
182 if (!newItem && m_Drop)
183 {
184 newItem = EntityAI.Cast(GetGame().CreateObjectEx(m_NewItemType, m_TargetPlayer.GetPosition(), ECE_PLACE_ON_SURFACE|ECE_LOCAL));
185 }
186
187 return newItem;
188 }
189};
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
const int ECE_LOCAL
Определения CentralEconomy.c:24
const int ECE_PLACE_ON_SURFACE
Определения CentralEconomy.c:37
class OptionSelectorMultistate extends OptionSelector class_name
float m_SpecialtyWeight
Определения ActionBase.c:77
int m_StanceMask
Определения ActionBase.c:62
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
bool CanReceiveAction(ActionTarget target)
Определения ActionBase.c:793
bool m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
override void OnFinishProgressServer(ActionData action_data)
Определения ActionUnrestrainTarget.c:107
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:143
Определения CCINonRuined.c:2
Определения CCTMan.c:2
static ref TStringArray ARRAY_STRING
Определения UtilityClasses.c:49
static ref TFloatArray ARRAY_FLOAT
Определения UtilityClasses.c:50
Определения Building.c:6
Определения InventoryItem.c:731
Определения PlayerBaseClient.c:2
PlayerBase m_TargetPlayer
Определения ActionUnrestrainTarget.c:149
override void OnSuccess(EntityAI new_item)
Определения ActionUnrestrainTarget.c:160
void ReplaceAndDestroyLambda(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy=false)
Определения ActionUnrestrainTarget.c:153
EntityAI CreateNewEntity()
Определения ActionUnrestrainTarget.c:178
void ReplaceAndDestroyLambdaEx(EntityAI old_item, string new_item_type, PlayerBase player, bool destroy=false, bool enableDrop=true)
Определения ActionUnrestrainTarget.c:173
const float DEFAULT
Определения ActionConstants.c:112
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()
const float DEBUG_QUICK_UNRESTRAIN_TIME
Определения constants.c:645