DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionWorldCraft.c
См. документацию.
1class WorldCraftActionReciveData : ActionReciveData
2{
4}
5class WorldCraftActionData : ActionData
6{
10}
11
13{
14 override void CreateActionComponent()
15 {
16 m_ActionData.m_ActionComponent = new CAContinuousCraft(UATimeSpent.DEFAULT_CRAFT); //default value can be set in recipes
17 }
18
19 /*override void OnFinish(bool pCanceled)
20 {
21 super.OnFinish(pCanceled);
22 if( !GetGame().IsDedicatedServer() )
23 {
24 PlayerBase player;
25 if( Class.CastTo(player, GetGame().GetPlayer()) )
26 {
27 if( player.GetCraftingManager().IsInventoryCraft() )
28 player.GetCraftingManager().CancelInventoryCraft();
29 }
30 }
31 }*/
32};
33
35{
36 private string m_ActionPrompt;
37
39 {
41 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
42 m_FullBody = true;
43 m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
44 }
45
47 {
48 ActionData action_data = new WorldCraftActionData;
49 return action_data;
50 }
51
57
58 override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item )
59 {
60 PluginRecipesManager module_recipes_manager;
61 Class.CastTo(module_recipes_manager, GetPlugin(PluginRecipesManager) );
62 m_Text = module_recipes_manager.GetRecipeName( player.GetCraftingManager().GetRecipeID(m_VariantID) );
63 }
64
65 override string GetText()
66 {
67 PlayerBase player;
68 if( Class.CastTo(player, GetGame().GetPlayer()) )
69 {
70 PluginRecipesManager moduleRecipesManager;
71 Class.CastTo(moduleRecipesManager, GetPlugin(PluginRecipesManager) );
72 return moduleRecipesManager.GetRecipeName( player.GetCraftingManager().GetRecipeID(m_VariantID) );
73 }
74
75 return "Default worldcraft text";
76 }
77
78 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
79 {
80 if (GetGame().IsServer())
81 {
82 if (!target.GetObject() || !item)
83 return false;
84 }
85
86 return true;
87 }
88
89 override bool ActionConditionContinue(ActionData action_data)
90 {
91 if (GetGame().IsServer())
92 {
93 if (!action_data.m_Target.GetObject() || !action_data.m_MainItem)
94 return false;
95
96 PluginRecipesManager moduleRecipesManager;
97 Class.CastTo(moduleRecipesManager, GetPlugin(PluginRecipesManager) );
98
99 WorldCraftActionData action_data_wc = WorldCraftActionData.Cast(action_data);
100
101 ItemBase item2;
102 Class.CastTo(item2, action_data_wc.m_Target.GetObject());
103 if(!moduleRecipesManager.IsRecipePossibleToPerform(action_data_wc.m_RecipeID, action_data.m_MainItem, item2, action_data.m_Player))
104 {
105 return false;
106 }
107 }
108
109 return true;
110 }
111
112 override string GetSoundCategory(ActionData action_data)
113 {
114 WorldCraftActionData actionDataWorldCraft = WorldCraftActionData.Cast(action_data);
115
116 ItemBase target = ItemBase.Cast(actionDataWorldCraft.m_Target.GetObject());
117 ItemBase item = actionDataWorldCraft.m_MainItem;
118
119 PluginRecipesManager recipesManager = PluginRecipesManager.Cast(GetPlugin(PluginRecipesManager));
120
121 string soundCat = recipesManager.GetSoundCategory(actionDataWorldCraft.m_RecipeID,target, item);
122
123 return soundCat;
124 }
125
126 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
127 {
128 if (super.SetupAction(player, target, item, action_data, extra_data ))
129 {
130 WorldCraftActionData action_data_wc = WorldCraftActionData.Cast(action_data);
131
132 if (!GetGame().IsDedicatedServer()) // server synchs the recipe id through HandleReceiveData before this
133 action_data_wc.m_RecipeID = player.GetCraftingManager().GetRecipeID(m_VariantID);
134
135 PluginRecipesManager moduleRecipesManager;
136 Class.CastTo(moduleRecipesManager, GetPlugin(PluginRecipesManager));
137
138 RecipeAnimationInfo recipeAnimationInfo = moduleRecipesManager.GetRecipeAnimationInfo(action_data_wc.m_RecipeID, player, action_data_wc.m_MainItem, ItemBase.Cast(action_data_wc.m_Target.GetObject()));
139
140 action_data_wc.m_AnimationID = recipeAnimationInfo.m_AnimationUID;
141 action_data_wc.m_ShowItem = recipeAnimationInfo.m_ItemVisible;
142
143 m_CommandUID = action_data_wc.m_AnimationID;
144
145 return true;
146 }
147 return false;
148 }
149
150 override void Start( ActionData action_data ) //Setup on start of action
151 {
152 super.Start(action_data);
153 WorldCraftActionData action_data_wc = WorldCraftActionData.Cast(action_data);
154 if ( action_data_wc.m_Player && !action_data_wc.m_ShowItem )
155 action_data.m_Player.TryHideItemInHands(true);
156 }
157
158 override void OnEndServer( ActionData action_data )
159 {
160 if ( action_data.m_Player ) action_data.m_Player.TryHideItemInHands(false);
161
162 super.OnEndServer(action_data);
163 }
164
165 override void OnEndClient( ActionData action_data )
166 {
167 if ( action_data.m_Player ) action_data.m_Player.TryHideItemInHands(false);
168 }
169
170 override void OnFinishProgressServer(ActionData action_data)
171 {
172 WorldCraftActionData action_data_wc;
173 PluginRecipesManager module_recipes_manager;
174 ItemBase item2;
175
176 Class.CastTo(action_data_wc, action_data);
177 Class.CastTo(module_recipes_manager, GetPlugin(PluginRecipesManager));
178 Class.CastTo(item2, action_data.m_Target.GetObject());
179
180 if (action_data.m_MainItem && item2)
181 {
182 if (GetGame().IsMultiplayer())
183 ClearActionJuncture(action_data);
184 else
185 ClearInventoryReservationEx(action_data);
186
187 module_recipes_manager.PerformRecipeServer(action_data_wc.m_RecipeID, action_data.m_MainItem, item2, action_data.m_Player);
188
189 if (GetGame().IsMultiplayer())
190 AddActionJuncture(action_data);
191 else
192 InventoryReservation(action_data);
193 }
194 }
195
196 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
197 {
198 super.WriteToContext(ctx, action_data);
199
200 WorldCraftActionData action_data_wc = WorldCraftActionData.Cast(action_data);
201
202 ctx.Write(action_data_wc.m_RecipeID);
203 }
204
205 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data )
206 {
207 if (!action_recive_data)
208 {
209 action_recive_data = new WorldCraftActionReciveData;
210 }
211
212 super.ReadFromContext(ctx, action_recive_data);
213
214 int recipeID;
215 if (!ctx.Read(recipeID))
216 return false;
217
218 WorldCraftActionReciveData recive_data_wc = WorldCraftActionReciveData.Cast(action_recive_data);
219 recive_data_wc.m_RecipeID = recipeID;
220
221 return true;
222 }
223
224 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
225 {
226
227 WorldCraftActionReciveData recive_data_wc = WorldCraftActionReciveData.Cast(action_recive_data);
228 WorldCraftActionData action_data_wc = WorldCraftActionData.Cast(action_data);
229
230 action_data_wc.m_MainItem = recive_data_wc.m_MainItem;
231 if (!action_recive_data.m_Target)
232 {
233 action_data.m_Target = new ActionTarget(NULL, NULL, -1, vector.Zero, 0);
234 }
235 else
236 {
237 action_data_wc.m_Target = recive_data_wc.m_Target;
238 }
239 action_data_wc.m_RecipeID = recive_data_wc.m_RecipeID;
240 }
241};
242
ActionBase ActionData
Определения ActionBase.c:30
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:121
WorldCraftActionReciveData m_RecipeID
bool m_ShowItem
Определения ActionWorldCraft.c:9
int m_AnimationID
Определения Hand_Events.c:41
PlayerBase GetPlayer()
Определения ModifierBase.c:51
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:316
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1122
int m_StanceMask
Определения ActionBase.c:62
bool InventoryReservation(ActionData action_data)
Определения ActionBase.c:1003
string m_Text
Определения ActionBase.c:58
int m_VariantID
Определения ActionBase.c:68
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
bool AddActionJuncture(ActionData action_data)
Определения ActionBase.c:1093
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1061
bool m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionWorldCraft.c:205
override void CreateConditionComponents()
Определения ActionWorldCraft.c:52
override string GetText()
Определения ActionWorldCraft.c:65
override void OnFinishProgressServer(ActionData action_data)
Определения ActionWorldCraft.c:170
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionWorldCraft.c:224
void ActionWorldCraft()
Определения ActionWorldCraft.c:38
override void OnEndServer(ActionData action_data)
Определения ActionWorldCraft.c:158
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionWorldCraft.c:196
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionWorldCraft.c:126
override ActionData CreateActionData()
Определения ActionWorldCraft.c:46
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionWorldCraft.c:58
override string GetSoundCategory(ActionData action_data)
Определения ActionWorldCraft.c:112
override void OnEndClient(ActionData action_data)
Определения ActionWorldCraft.c:165
string m_ActionPrompt
Определения ActionWorldCraft.c:36
override void Start(ActionData action_data)
Определения ActionWorldCraft.c:150
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionWorldCraft.c:78
override bool ActionConditionContinue(ActionData action_data)
Определения ActionWorldCraft.c:89
override void CreateActionComponent()
Определения ActionWorldCraft.c:14
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения CCINone.c:2
Определения CCTObject.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
bool m_ItemVisible
Определения RecipeBase.c:9
int m_AnimationUID
Определения RecipeBase.c:8
Определения RecipeBase.c:6
proto bool Write(void value_out)
proto bool Read(void value_in)
const float DEFAULT
Определения ActionConstants.c:112
const float DEFAULT_CRAFT
Определения ActionConstants.c:39
Определения ActionConstants.c:28
static const vector Zero
Определения EnConvert.c:110
Определения EnConvert.c:106
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.