Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
actionunpackbox.c
Go to the documentation of this file.
2{
3 override void CreateActionComponent()
4 {
5 m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.UNPACK);
6 }
7};
8
10{
11 void ActionUnpackBox()
12 {
14 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_OPENITEM;
15 m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_OPENITEM;
16 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
17 m_Text = "#unbox";
18 }
19
20 override void CreateConditionComponents()
21 {
24 }
25
26 override bool HasProneException()
27 {
28 return true;
29 }
30
31 override bool HasTarget()
32 {
33 return false;
34 }
35
36 override void OnFinishProgressServer( ActionData action_data )
37 {
38 if ( action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player )
39 {
40 string path = "CfgVehicles " + action_data.m_MainItem.GetType();
41 string child_name = "";
42 int count;
43 array<string> resources = new array<string>;
44
45 if( GetGame().ConfigIsExisting( path ) && GetGame().ConfigIsExisting( path + " Resources") )
46 {
47 path = path + " Resources";
48 count = GetGame().ConfigGetChildrenCount ( path );
49 for (int i = 0; i < count; i++)
50 {
51 GetGame().ConfigGetChildName ( path, i, child_name );
52
53 if ( GetGame().ConfigGetInt( path + " " + child_name + " value" ) )
54 {
55 resources.Insert( child_name );
56 }
57 }
58
59 //TODO modify to allow for multiple ammo types spawning (if needed??)
60 string itemType = resources.Get(0);
61 int itemCount = GetGame().ConfigGetInt( path + " " + itemType + " value" );
62
63 UnboxLambda lambda = new UnboxLambda(action_data.m_MainItem, itemType, action_data.m_Player, itemCount);
64 action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda);
65 }
66 }
67 }
68};
69
71{
72 int m_ItemCount;
73 void UnboxLambda (EntityAI old_item, string new_item_type, PlayerBase player, int count) { m_ItemCount = count; }
74
75 override void CopyOldPropertiesToNew (notnull EntityAI old_item, EntityAI new_item)
76 {
77 super.CopyOldPropertiesToNew(old_item, new_item);
78
79 if ( GetGame().ConfigIsExisting( "CfgMagazines " + m_NewItemType ) )
80 {
81 Magazine pile;
82 Class.CastTo(pile, new_item);
83 pile.ServerSetAmmoCount(m_ItemCount);
84 }
85 else
86 {
87 ItemBase unboxed;
88 Class.CastTo(unboxed, new_item);
89 unboxed.SetQuantity(m_ItemCount);
90 }
91 }
92
93 override void OnSuccess(EntityAI new_item)
94 {
95 super.OnSuccess(new_item);
96
97 //spawns wrapping Paper
98 ItemBase paper = ItemBase.Cast( GetGame().CreateObjectEx("Paper", new_item.GetHierarchyRoot().GetPosition(), ECE_PLACE_ON_SURFACE) );
99 }
100};
101
const int ECE_PLACE_ON_SURFACE
ActionData m_ActionData
float m_SpecialtyWeight
Definition actionbase.c:77
string m_Text
Definition actionbase.c:58
ref CCIBase m_ConditionItem
Definition actionbase.c:64
ref CCTBase m_ConditionTarget
Definition actionbase.c:65
Super root of all classes in Enforce script.
Definition enscript.c:11
base class for transformation operations (creating one item from another)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()
class SeedPackBase extends Inventory_Base m_ItemCount