DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionEmptyBottleBase.c
См. документацию.
2{
3 bool m_RPCStopAlreadySent;//since stopping contains a sound tail, we need to stop it only once, this bool ensures that
4 override void CreateActionComponent()
5 {
6 float EmptiedQuantity;
7 Bottle_Base bottle = Bottle_Base.Cast(m_ActionData.m_MainItem);
8 if (bottle)
9 EmptiedQuantity = bottle.GetLiquidEmptyRate() * bottle.GetLiquidThroughputCoef();
10 m_ActionData.m_ActionComponent = new CAContinuousEmpty(EmptiedQuantity);
11 }
12
13 override void EndActionComponent()
14 {
17 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_FINISH);
18 else
19 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_END);
20 }
21};
22
24{
26 {
27 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_EMPTY_VESSEL;
28 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
29
31 m_FullBody = false;
32 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
33 m_Text = "#empty";
34 }
35
41
42 override bool HasTarget()
43 {
44 return false;
45 }
46
48 {
49 return true;
50 }
51
52 override bool UseAlternativeInterrupt(ActionData action_data)
53 {
54 return HasAlternativeInterrupt() && (action_data.m_ActionComponent.GetProgress() >= 1);
55 }
56
57 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
58 {
59 if ( GetGame().IsServer() && GetGame().IsMultiplayer() )
60 return true;
61
62 return item.IsLiquidPresent() && item.GetQuantity() > item.GetQuantityMin() && !item.GetIsFrozen();
63 }
64
65 override bool ActionConditionContinue( ActionData action_data )
66 {
67 return true;
68 }
69
70 override void OnStartAnimationLoop( ActionData action_data )
71 {
72 SendRPC(action_data,true);
73 }
74
75 override void OnEndAnimationLoop( ActionData action_data )
76 {
77 SendRPC(action_data,false);
78 }
79
80 override void OnEndServer( ActionData action_data )
81 {
82 SendRPC(action_data,false);
83
84 super.OnEndServer(action_data);
85 }
86
87 protected void SendRPC(ActionData actionData, bool enable)
88 {
89 if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
90 {
91 ActionEmptyBottleBaseCB comp = ActionEmptyBottleBaseCB.Cast(actionData.m_Callback);
92 if (comp.m_RPCStopAlreadySent)
93 return;
94
95 Bottle_Base target_vessel = Bottle_Base.Cast( actionData.m_MainItem );
96 Param1<bool> play = new Param1<bool>( enable );
97 GetGame().RPCSingleParam( target_vessel, SoundTypeBottle.EMPTYING, play, true );
98 if (!enable)
99 comp.m_RPCStopAlreadySent = true;
100 }
101 }
102};
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
SoundTypeBottle
Определения Bottle_Base.c:2
void SendRPC()
Определения DisplayStatus.c:167
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 m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
void SetCommand(int command_uid)
Определения AnimatedActionBase.c:54
ActionData m_ActionData
Определения AnimatedActionBase.c:3
bool UseAlternativeInterrupt(ActionData action_data)
Определения ActionContinuousBase.c:152
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
override void OnEndAnimationLoop(ActionData action_data)
Определения ActionEmptyBottleBase.c:75
override bool HasAlternativeInterrupt()
Определения ActionEmptyBottleBase.c:47
override bool UseAlternativeInterrupt(ActionData action_data)
Определения ActionEmptyBottleBase.c:52
void ActionEmptyBottleBase()
Определения ActionEmptyBottleBase.c:25
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionEmptyBottleBase.c:57
override void CreateConditionComponents()
Определения ActionEmptyBottleBase.c:36
override void OnEndServer(ActionData action_data)
Определения ActionEmptyBottleBase.c:80
override bool ActionConditionContinue(ActionData action_data)
Определения ActionEmptyBottleBase.c:65
void SendRPC(ActionData actionData, bool enable)
Определения ActionEmptyBottleBase.c:87
override void OnStartAnimationLoop(ActionData action_data)
Определения ActionEmptyBottleBase.c:70
override bool HasTarget()
Определения ActionEmptyBottleBase.c:42
bool m_RPCStopAlreadySent
Определения ActionEmptyBottleBase.c:3
override void CreateActionComponent()
Определения ActionEmptyBottleBase.c:4
override void EndActionComponent()
Определения ActionEmptyBottleBase.c:13
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения Canteen.c:2
Определения CCINonRuined.c:2
Определения CCTNone.c:2
proto native void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
Определения InventoryItem.c:731
Определения PlayerBaseClient.c:2
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()