DayZ 1.27
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
15 {
16 m_CallbackClass = ActionDrinkPondContinuousCB;
17 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DRINKPOND;
18 m_FullBody = true;
19 m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
20 m_Text = "#drink";
21 }
22
23 override bool IsDrink()
24 {
25 return true;
26 }
27
28 override typename GetInputType()
29 {
31 }
32
33 override bool CanBeUsedInFreelook()
34 {
35 return false;
36 }
37
39 {
40 m_ConditionItem = new CCINone();
42 }
43
44 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
45 {
46 if (item && item.IsHeavyBehaviour())
47 return false;
48
49 return player.CanEatAndDrink();
50 }
51
52 override void OnStart(ActionData action_data)
53 {
54 super.OnStart(action_data);
55
56 action_data.m_Player.TryHideItemInHands(true);
57 }
58
59 override void OnEnd(ActionData action_data)
60 {
61 action_data.m_Player.TryHideItemInHands(false);
62 }
63
64 override void OnFinishProgressServer(ActionData action_data)
65 {
66 Param1<float> nacdata = Param1<float>.Cast(action_data.m_ActionComponent.GetACData());
67 if (nacdata)
68 {
69 EConsumeType consumeType;
70 int liquidSource = GetLiquidSource(action_data.m_Target);
71 switch (liquidSource)
72 {
74 consumeType = EConsumeType.ENVIRO_WELL;
75 break;
76
77 default:
78 consumeType = EConsumeType.ENVIRO_POND;
79 break;
80 }
81
82 PlayerConsumeData consumeData = new PlayerConsumeData();
83
84 consumeData.m_Type = consumeType;
85 consumeData.m_Amount = UAQuantityConsumed.DRINK;
86 consumeData.m_Source = null;
87 consumeData.m_Agents = action_data.m_Player.GetBloodyHandsPenaltyAgents();
88 consumeData.m_LiquidType = liquidSource;
89
90 action_data.m_Player.Consume(consumeData);
91 }
92 }
93
94 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
95 {
96 super.WriteToContext(ctx, action_data);
97
98 if (HasTarget())
99 {
100 ctx.Write(action_data.m_Target.GetCursorHitPos());
101 return;
102 }
103
104 ctx.Write(vector.Zero);
105 }
106
107 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
108 {
109 super.ReadFromContext(ctx, action_recive_data);
110
111 if (HasTarget())
112 {
113 vector cursorPosition;
114 if (!ctx.Read(cursorPosition))
115 return false;
116
117 action_recive_data.m_Target.SetCursorHitPos(cursorPosition);
118 }
119
120 return true;
121 }
122
123 protected int GetLiquidSource(ActionTarget target)
124 {
125 vector hitPosition = target.GetCursorHitPos();
126 string surfaceType;
127 int liquidSource;
128
129 g_Game.SurfaceGetType3D(hitPosition[0], hitPosition[1], hitPosition[2], surfaceType);
130 string path = "CfgSurfaces " + surfaceType + " liquidType";
131 liquidSource = GetGame().ConfigGetInt(path);
132
133 return liquidSource;
134 }
135}
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:123
void ActionDrinkPondContinuous()
Определения ActionDrinkPondContinuous.c:14
ActionDrinkPondContinuousCB WATER_DRANK_PER_SEC
override bool IsDrink()
Определения ActionDrinkPondContinuous.c:23
const string ALLOWED_WATER_SURFACES
Определения ActionDrinkPondContinuous.c:12
override bool HasTarget()
Определения ActionInput.c:473
override GetInputType()
Определения ActionSequentialBase.c:32
class ActionTargets ActionTarget
void CCTWaterSurfaceEx(float maximal_target_distance, int allowedLiquidSource)
Определения CCTWaterSurface.c:62
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.
Определения InventoryItem.c:731
Определения 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
const int LIQUID_HOTWATER
Определения constants.c:551
const int LIQUID_GROUP_DRINKWATER
Определения constants.c:554
const int LIQUID_CLEANWATER
Определения constants.c:552
const int LIQUID_SNOW
Определения constants.c:547
void OnEnd()
Определения Sound.c:226