DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionUnpackBox.c
Go to the documentation of this file.
2{
3 override void CreateActionComponent()
4 {
6 }
7};
8
10{
12 {
14 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_OPENITEM;
15 m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_OPENITEM;
17 m_Text = "#unbox";
18 }
19
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";
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 action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight );
67 }
68 }
69 }
70};
71
73{
75 void UnboxLambda (EntityAI old_item, string new_item_type, PlayerBase player, int count) { m_ItemCount = count; }
76
77 override void CopyOldPropertiesToNew (notnull EntityAI old_item, EntityAI new_item)
78 {
79 super.CopyOldPropertiesToNew(old_item, new_item);
80
81 if ( GetGame().ConfigIsExisting( "CfgMagazines " + m_NewItemType ) )
82 {
83 Magazine pile;
84 Class.CastTo(pile, new_item);
85 pile.ServerSetAmmoCount(m_ItemCount);
86 Print("UnboxLambda::SetupNewMagazine new_item=" + new_item + " count=" + m_ItemCount);
87 }
88 else
89 {
90 ItemBase unboxed;
91 Class.CastTo(unboxed, new_item);
92 unboxed.SetQuantity(m_ItemCount);
93 Print("UnboxLambda::SetupNewItem new_item=" + new_item + " count=" + m_ItemCount);
94 }
95 }
96
97 override void OnSuccess(EntityAI new_item)
98 {
99 super.OnSuccess(new_item);
100
101 //spawns wrapping Paper
102 ItemBase paper = ItemBase.Cast( GetGame().CreateObjectEx("Paper", new_item.GetHierarchyRoot().GetPosition(), ECE_PLACE_ON_SURFACE) );
103 }
104};
105
protected float m_SpecialtyWeight
Definition ActionBase.c:68
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56
protected string m_Text
Definition ActionBase.c:49
const int ECE_PLACE_ON_SURFACE
protected ActionData m_ActionData
ItemBase m_MainItem
Definition ActionBase.c:28
PlayerBase m_Player
Definition ActionBase.c:33
ref CABase m_ActionComponent
Definition ActionBase.c:30
override void CreateActionComponent()
override void OnFinishProgressServer(ActionData action_data)
override void CreateConditionComponents()
override bool HasTarget()
override bool HasProneException()
protected int m_CommandUIDProne
proto native int ConfigGetChildrenCount(string path)
Get count of subclasses in config class on path.
proto native int ConfigGetInt(string path)
Get int value from config on path.
proto bool ConfigGetChildName(string path, int index, out string name)
Get name of subclass in config class on path.
Super root of all classes in Enforce script.
Definition EnScript.c:11
base class for transformation operations (creating one item from another)
const float UNPACK
override void CopyOldPropertiesToNew(notnull EntityAI old_item, EntityAI new_item)
override void OnSuccess(EntityAI new_item)
void UnboxLambda(EntityAI old_item, string new_item_type, PlayerBase player, int count)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.