DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionDrinkPondContinuous.c
См. документацию.
8
10{
11 private const float WATER_DRANK_PER_SEC = 35;
12 protected const string ALLOWED_WATER_SURFACES = string.Format("%1|%2", UAWaterType.FRESH, UAWaterType.STILL);
13 protected int m_AllowedLiquidMask;
14
16 {
17 m_CallbackClass = ActionDrinkPondContinuousCB;
18 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DRINKPOND;
19 m_FullBody = true;
20 m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
21 m_Text = "#drink";
22
26 }
27
28 override bool IsDrink()
29 {
30 return true;
31 }
32
33 override typename GetInputType()
34 {
36 }
37
38 override bool CanBeUsedInFreelook()
39 {
40 return false;
41 }
42
44 {
45 m_ConditionItem = new CCINone();
47 }
48
49 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
50 {
51 if (item && item.IsHeavyBehaviour())
52 return false;
53
54 int liquidType = LIQUID_NONE;
55 liquidType = target.GetSurfaceLiquidType();
56
57 return liquidType & m_AllowedLiquidMask && player.CanEatAndDrink();
58 }
59
60 override void OnStart(ActionData action_data)
61 {
62 super.OnStart(action_data);
63
64 action_data.m_Player.TryHideItemInHands(true);
65 }
66
67 override void OnEnd(ActionData action_data)
68 {
69 action_data.m_Player.TryHideItemInHands(false);
70 }
71
72 override void OnFinishProgressServer(ActionData action_data)
73 {
74 Param1<float> nacdata = Param1<float>.Cast(action_data.m_ActionComponent.GetACData());
75 if (nacdata)
76 {
77 EConsumeType consumeType;
78
79 CCTWaterSurfaceEx waterCheck = CCTWaterSurfaceEx.Cast(m_ConditionTarget);
80 if (!waterCheck)
81 return;
82
83 int liquidSource = waterCheck.GetLiquidType();
84 switch (liquidSource)
85 {
87 consumeType = EConsumeType.ENVIRO_WELL;
88 break;
89
90 default:
91 consumeType = EConsumeType.ENVIRO_POND;
92 break;
93 }
94
95 PlayerConsumeData consumeData = new PlayerConsumeData();
96
97 consumeData.m_Type = consumeType;
98 consumeData.m_Amount = UAQuantityConsumed.DRINK;
99 consumeData.m_Source = null;
100 consumeData.m_Agents = action_data.m_Player.GetBloodyHandsPenaltyAgents();
101 consumeData.m_LiquidType = liquidSource;
102
103 action_data.m_Player.Consume(consumeData);
104 }
105 }
106
107 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
108 {
109 super.WriteToContext(ctx, action_data);
110
111 if (HasTarget())
112 {
113 ctx.Write(action_data.m_Target.GetCursorHitPos());
114 return;
115 }
116
117 ctx.Write(vector.Zero);
118 }
119
120 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
121 {
122 super.ReadFromContext(ctx, action_recive_data);
123
124 if (HasTarget())
125 {
126 vector cursorPosition;
127 if (!ctx.Read(cursorPosition))
128 return false;
129
130 action_recive_data.m_Target.SetCursorHitPos(cursorPosition);
131 }
132
133 return true;
134 }
135
136 override bool IsLockTargetOnUse()
137 {
138 return false;
139 }
140
141 // DEPRECATED
142 [Obsolete("CCTWaterSurfaceEx::GetSurfaceLiquidType can be used instead")]
143 protected int GetLiquidSource(ActionTarget target)
144 {
145 vector hitPosition = target.GetCursorHitPos();
146 string surfaceType;
147 int liquidSource;
148
149 g_Game.SurfaceGetType3D(hitPosition[0], hitPosition[1], hitPosition[2], surfaceType);
150 string path = "CfgSurfaces " + surfaceType + " liquidType";
151 liquidSource = GetGame().ConfigGetInt(path);
152
153 return liquidSource;
154 }
155}
override void OnFinishProgressServer(ActionData action_data)
Определения ActionActivateTrap.c:116
override void CreateConditionComponents()
Определения ActionActivateTrap.c:30
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionActivateTrap.c:46
int m_CommandUID
Определения ActionBase.c:31
int m_StanceMask
Определения ActionBase.c:33
ActionBase ActionData
Определения ActionBase.c:30
override bool CanBeUsedInFreelook()
Определения ActionBuildPart.c:260
int GetLiquidSource(ActionTarget target)
Определения ActionDrinkPondContinuous.c:143
void ActionDrinkPondContinuous()
Определения ActionDrinkPondContinuous.c:15
ActionDrinkPondContinuousCB WATER_DRANK_PER_SEC
override bool IsDrink()
Определения ActionDrinkPondContinuous.c:28
override bool IsLockTargetOnUse()
Определения ActionDrinkPondContinuous.c:136
int m_AllowedLiquidMask
Определения ActionDrinkPondContinuous.c:13
const string ALLOWED_WATER_SURFACES
Определения ActionDrinkPondContinuous.c:12
override bool HasTarget()
Определения ActionInput.c:473
override GetInputType()
Определения ActionSequentialBase.c:32
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:121
void CCTWaterSurfaceEx(float maximal_target_distance, int allowedLiquidSource)
Определения CCTWaterSurface.c:63
DayZGame g_Game
Определения DayZGame.c:3868
EConsumeType
Определения EConsumeType.c:2
void ReadFromContext(ParamsReadContext ctx)
Определения Hand_Events.c:70
void WriteToContext(ParamsWriteContext ctx)
Определения Hand_Events.c:72
string path
Определения OptionSelectorMultistate.c:142
void OnStart(Param par=null)
Определения PPERequestPlatformsBase.c:787
ActionData m_ActionData
Определения AnimatedActionBase.c:3
override void CreateActionComponent()
Определения ActionDrinkPondContinuous.c:3
Определения CCINone.c:2
proto native int ConfigGetInt(string path)
Get int value from config on path.
Определения PlayerBaseClient.c:2
EConsumeType m_Type
Определения PlayerConsumeData.c:8
float m_Amount
Определения PlayerConsumeData.c:3
int m_LiquidType
Определения PlayerConsumeData.c:5
int m_Agents
Определения PlayerConsumeData.c:4
ItemBase m_Source
Определения PlayerConsumeData.c:7
proto bool Write(void value_out)
proto bool Read(void value_in)
const float DEFAULT
Определения ActionConstants.c:112
const float DRINK
Определения ActionConstants.c:14
const float DRINK_POND
Определения ActionConstants.c:74
Определения ActionConstants.c:28
const string FRESH
fake
Определения ActionConstants.c:163
const string STILL
Определения ActionConstants.c:164
Определения ActionConstants.c:161
static const vector Zero
Определения EnConvert.c:110
Определения EnConvert.c:106
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
void Obsolete(string msg="")
Определения EnScript.c:371
const int LIQUID_HOTWATER
Определения 3_Game/constants.c:553
const int LIQUID_NONE
Определения 3_Game/constants.c:529
const int LIQUID_GROUP_DRINKWATER
Определения 3_Game/constants.c:556
const int LIQUID_CLEANWATER
Определения 3_Game/constants.c:554
const int LIQUID_SNOW
Определения 3_Game/constants.c:549
void OnEnd()
Определения Sound.c:226