DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionForceConsume.c
См. документацию.
8
10{
11 protected const float SOUND_REPEAT_INTERVAL = 1.5;
12
14 {
15 m_CallbackClass = ActionForceConsumeCB;
16 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_FORCEFEED;
17 m_StanceMask = DayZPlayerConstants.STANCEIDX_ERECT | DayZPlayerConstants.STANCEIDX_CROUCH;
18 m_FullBody = true;
19 m_Text = "#feed";
20 }
21
27
28 override void OnStartServer(ActionData action_data)
29 {
30 super.OnStartServer(action_data);
31
32 PlayerBase player = PlayerBase.Cast(action_data.m_Target.GetObject());
33 if (player)
34 g_Game.GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(PlaySound, SOUND_REPEAT_INTERVAL * 1000, true, player);
35 }
36
37 override void OnEndServer(ActionData action_data)
38 {
39 super.OnEndServer(action_data);
40
41 if (action_data.m_MainItem && (action_data.m_MainItem.GetQuantity() <= 0.01))
42 {
43 action_data.m_MainItem.SetQuantity(0);
44 }
45
46 g_Game.GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(PlaySound);
47 }
48
49 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
50 {
51 if (!super.ActionCondition(player, target, item))
52 return false;
53
54 PlayerBase targetPlayer = PlayerBase.Cast(target.GetObject());
55 ConsumeConditionData dta = new ConsumeConditionData(targetPlayer,item);
56 if (!targetPlayer || !targetPlayer.CanEatAndDrink() || !targetPlayer.CanConsumeFood(dta) || !item.CanBeConsumed(dta))
57 return false;
58
59 float angleDiff = Math.AbsFloat(player.GetDirection().VectorToAngles()[0] - targetPlayer.GetDirection().VectorToAngles()[0]);
60 if (angleDiff < 135 || angleDiff > 225) // not in 90 deg cone angle facing the other player
61 return false;
62
63 if (targetPlayer.GetPerformedActionID() != -1 || targetPlayer.GetActivePrimarySymptomID() == SymptomIDs.SYMPTOM_VOMIT)
64 return false;
65
66 return item.GetQuantity() > item.GetQuantityMin();
67 }
68
69 protected void PlaySound(PlayerBase player)
70 {
71 if (player)
72 player.RequestSoundEventEx(EPlayerSoundEventID.FORCE_FEED);
73 }
74}
bool m_FullBody
Определения ActionBase.c:60
string m_Text
Определения ActionBase.c:57
void OnEndServer(ActionData action_data)
Определения ActionBase.c:1409
void CreateConditionComponents()
Определения ActionBase.c:245
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
void OnStartServer(ActionData action_data)
Определения ActionBase.c:1391
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBase.c:441
int m_StanceMask
Определения ActionBase.c:61
ActionForceConsumeCB SOUND_REPEAT_INTERVAL
void ActionForceConsume()
Определения ActionForceConsume.c:13
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
DayZGame g_Game
Определения DayZGame.c:4074
void PlaySound()
Определения HungerSoundHandler.c:39
EPlayerSoundEventID
Определения PlayerSoundEventHandler.c:3
ActionData m_ActionData
Определения AnimatedActionBase.c:3
ref ActionTarget m_Target
Определения ActionBase.c:39
ItemBase m_MainItem
Определения ActionBase.c:35
Определения ActionBase.c:22
override void CreateActionComponent()
Определения ActionForceConsume.c:3
Определения CCINonRuined.c:2
Определения CCTMan.c:2
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfBricks.c:64
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:114
const float DEFAULT
Определения ActionConstants.c:5
const float DEFAULT
Определения ActionConstants.c:29
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
static proto float AbsFloat(float f)
Returns absolute value.
const int CALL_CATEGORY_GAMEPLAY
Определения 3_Game/DayZ/tools/tools.c:10