DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionPackGift.c
См. документацию.
2{
3 override void CreateActionComponent()
4 {
5 m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.UNPACK);
6 }
7};
8
10{
12 {
14 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_OPENITEM;
15 //m_FullBody = true;
16 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
17 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_LOW;
18 m_Text = "#STR_Wrap";
19 }
20
26
27 override bool HasTarget()
28 {
29 return true;
30 }
31
32 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
33 {
34 ItemBase item_to_pack = ItemBase.Cast(target.GetObject());
35 if (!item_to_pack)
36 return false;
37
38 if ( !item_to_pack.IsTakeable() ) return false;
39 if ( item_to_pack.IsBeingPlaced() ) return false;
40 if ( BaseBuildingBase.Cast(item_to_pack) ) return false;
41 if ( !item_to_pack.CanPutInCargo(null) ) return false;
42
43 EntityAI tgt_parent = EntityAI.Cast( target.GetParent() );
44
45 if ( tgt_parent )
46 {
47 if ( item_to_pack.GetInventory().IsAttachment() )
48 {
49 if ( !item_to_pack.CanDetachAttachment(tgt_parent) || !tgt_parent.CanReleaseAttachment(item_to_pack) )
50 return false;
51 }
52 else
53 {
54 if ( !item_to_pack.CanRemoveFromCargo(tgt_parent) || !tgt_parent.CanReleaseCargo(item_to_pack) )
55 return false;
56 }
57 }
58
59 if ( item_to_pack.GetInventory().GetCargo() && item_to_pack.GetInventory().GetCargo().GetItemCount() > 0)
60 return false;
61
62 if ( !item_to_pack.IsWeapon() && item_to_pack.GetInventory().AttachmentCount() > 0)
63 return false;
64
65
66 int x,y;
67 GetGame().GetInventoryItemSize( item_to_pack, x, y );
68
69 if( x > 5 || y > 5 )
70 return false;
71
72 return true;
73 }
74
75 override void OnFinishProgressClient( ActionData action_data )
76 {
77 PlayerBase player = action_data.m_Player;
78 ItemBase item_to_pack = ItemBase.Cast(action_data.m_Target.GetObject());
79
80 player.RemoveQuickBarEntityShortcut(item_to_pack);
81
82 }
83
84 override void OnFinishProgressServer( ActionData action_data )
85 {
86 ItemBase item_to_pack = ItemBase.Cast(action_data.m_Target.GetObject());
87 ItemBase item = action_data.m_MainItem;
88 PlayerBase player = action_data.m_Player;
89 string typeName;
90
91 if (item_to_pack)
92 {
93 int x,y;
94 GetGame().GetInventoryItemSize( item_to_pack, x, y );
95 int rnd = Math.RandomIntInclusive(1, 4);
96
98
99 if( x <= 2 && y <= 2 )
100 {
101 typeName = "GiftBox_Small_" + rnd;
102 }
103 else if( x <= 3 && y <= 3 )
104 {
105 typeName = "GiftBox_Medium_" + rnd;
106 }
107 else if( x <= 5 && y <= 5 )
108 {
109 typeName = "GiftBox_Large_" + rnd;
110 }
111 else return;
112
113
114 if(!GetGame().IsDedicatedServer())
115 player.RemoveQuickBarEntityShortcut(item_to_pack);
116
117 lambda = new ReplaceWithNewReciveCargoLambda( item, typeName, player,item_to_pack);
118 player.ServerReplaceItemWithNew(lambda);
119
120 }
121
122
123 }
124};
125
127{
129 void ReplaceWithNewReciveCargoLambda(EntityAI old_item, string new_item_type, PlayerBase player, EntityAI item_to_cargo)
130 {
131 m_ItemToCargo = item_to_cargo;
132 }
133
134 override void OnSuccess(EntityAI new_item)
135 {
136 super.OnSuccess(new_item);
137
139 m_ItemToCargo.GetInventory().GetCurrentInventoryLocation(src);
141
142 dst.SetCargo(new_item, m_ItemToCargo, 0,0,0,false);
143
144 if ( dst.IsValid() )
145 {
146 if(GetGame().IsDedicatedServer())
147 m_Player.ServerTakeToDst(src,dst);
148 else
149 m_Player.LocalTakeToDst(src,dst);
150
151 }
152 }
153};
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
DayZPlayer m_Player
Определения Hand_Events.c:42
Icon x
Icon y
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
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
override void OnFinishProgressClient(ActionData action_data)
Определения ActionPackGift.c:75
void ActionPackGift()
Определения ActionPackGift.c:11
override void CreateConditionComponents()
Определения ActionPackGift.c:21
override void OnFinishProgressServer(ActionData action_data)
Определения ActionPackGift.c:84
override bool HasTarget()
Определения ActionPackGift.c:27
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionPackGift.c:32
override void CreateActionComponent()
Определения ActionPackGift.c:3
Определения ActionPackGift.c:2
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения Fence.c:2
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
proto void GetInventoryItemSize(InventoryItem item, out int width, out int height)
Определения Building.c:6
proto native bool IsValid()
verify current set inventory location
proto native void SetCargo(notnull EntityAI parent, EntityAI e, int idx, int row, int col, bool flip)
sets current inventory location type to Cargo with coordinates (idx, row, col)
InventoryLocation.
Определения InventoryLocation.c:29
override bool CanDetachAttachment(EntityAI parent)
Определения GardenLime.c:42
override bool CanRemoveFromCargo(EntityAI parent)
Определения BaseBuildingBase.c:999
override bool CanPutInCargo(EntityAI parent)
Определения GardenBase.c:269
override bool IsTakeable()
Определения BaseBuildingBase.c:988
Определения InventoryItem.c:731
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
void ReplaceWithNewReciveCargoLambda(EntityAI old_item, string new_item_type, PlayerBase player, EntityAI item_to_cargo)
Определения ActionPackGift.c:129
override void OnSuccess(EntityAI new_item)
Определения ActionPackGift.c:134
EntityAI m_ItemToCargo
Определения ActionPackGift.c:128
const float UNPACK
Определения ActionConstants.c:86
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Определения EnMath.c:54