DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionMountBarbedWire.c
Go to the documentation of this file.
2{
3 override void CreateActionComponent()
4 {
6 }
7};
8
10{
12 string m_SlotName;
13
15 {
17 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
18 m_FullBody = true;
19 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
20
23 m_Text = "#mount";
24 }
25
27 {
30 }
31
32 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
33 {
34 Object targetObject = target.GetObject();
35
36 if ( targetObject && targetObject.CanUseConstruction() && targetObject.CanUseConstructionBuild() )
37 {
38 BaseBuildingBase base_building = BaseBuildingBase.Cast( targetObject );
39
40 string selection = targetObject.GetActionComponentName( target.GetComponentIndex() );
41
42 if ( selection.Length() > 0 )
43 {
44 BarbedWire barbed_wire = BarbedWire.Cast( base_building.FindAttachmentBySlotName( selection ) );
45 if ( barbed_wire && !barbed_wire.IsMounted() && !barbed_wire.IsRuined() )
46 {
47 m_SlotName = selection;
48
49 return true;
50 }
51 }
52 }
53
54 return false;
55 }
56
57 override void OnFinishProgressServer( ActionData action_data )
58 {
59 BaseBuildingBase base_building = BaseBuildingBase.Cast( action_data.m_Target.GetObject() );
60 BarbedWire barbed_wire = BarbedWire.Cast( base_building.FindAttachmentBySlotName( m_SlotName ) );
61
62 //mount and refresh parent
63 barbed_wire.SetMountedState( true );
64
65 //solution for DamageSystem's case sensitivity
66 string zone = "invalid";
67 array<string> zones = new array<string>;
68 zones.Copy(base_building.GetEntityDamageZoneMap().GetKeyArray());
69
70 string tmp = "";
71 string test = "";
72 for (int i = 0; i < zones.Count(); i++)
73 {
74 tmp = zones.Get(i);
75 test = tmp;
76 test.ToLower();
77
78 if (test == m_SlotName)
79 {
80 zone = tmp;
81 break;
82 }
83 }
84
85 base_building.SetHealth01(zone,"Health",barbed_wire.GetHealth01("","Health")); //attachment slot names and damagezone names must match
86
87 action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight );
88 }
89
90 override string GetAdminLogMessage( ActionData action_data )
91 {
92 string message = string.Format("Player %1 Mounted BarbedWire on %2", action_data.m_Player, action_data.m_Target.GetObject() );
93 return message;
94 }
95}
protected float m_SpecialtyWeight
Definition ActionBase.c:68
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56
protected string m_Text
Definition ActionBase.c:49
protected bool m_FullBody
Definition ActionBase.c:52
protected int m_StanceMask
Definition ActionBase.c:53
class ActionTargets ActionTarget
protected ActionData m_ActionData
PlayerBase m_Player
Definition ActionBase.c:33
ref CABase m_ActionComponent
Definition ActionBase.c:30
ref ActionTarget m_Target
Definition ActionBase.c:32
override void CreateActionComponent()
override void OnFinishProgressServer(ActionData action_data)
override string GetAdminLogMessage(ActionData action_data)
override void CreateConditionComponents()
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
const float BASEBUILDING
const float DEFAULT_CONSTRUCT
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
static proto string Format(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
Gets n-th character from string.
proto int ToLower()
Changes string to lowercase. Returns length.
proto native int Length()
Returns length of string.