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