DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnAction()

override bool GetBurningMaterial::OnAction ( int action_id,
Man player,
ParamsReadContext ctx )

См. определение в файле Broom.c строка 240

241{
242 override void Init()
243 {
244 super.Init();
245 m_DecraftResult = "LongWoodenStick";
246 m_ParticleLocalPos = Vector(0, 1.2, 0);
247 }
248
249 override void SetActions()
250 {
251 super.SetActions();
252
255 }
256
257 override bool CanReceiveUpgrade()
258 {
259 return false;
260 }
261
262 override void OnWorkStart()
263 {
264 super.OnWorkStart();
266 }
267
268 override void ApplyResultModifications(ItemBase result)
269 {
270 result.SetHealth(result.GetHealthLevelValue(2,""));
271 result.SetQuantity(1);
272 }
273
274 override bool CanTransformIntoStick()
275 {
276 if ( GetGame().IsServer() && !IsIgnited() && GetEnergy() < 1 && !IsSetForDeletion())
277 return true;
278 else
279 return false;
280 }
281
282
283 override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
284 {
285 super.EEHitBy(damageResult, damageType, source, component, dmgZone, ammo, modelPos, speedCoef);
286
287 GetCompEM().SetEnergy0To1(GetHealth01("",""));
288 }
289
290
291 override void CalculateQuantity()
292 {
293 if (GetGame().IsServer())
294 {
295 float currentHealth01 = GetHealth01();
296 float currentEnergy01 = GetCompEM().GetEnergy0To1();
297
298 //Health needs to copy internal energy, but only if that means it will be going down from its current value(the item can't heal itself after obtaining damage just because it has full internal energy)
299 SetHealth01("","",Math.Min(currentHealth01,currentEnergy01));
300 //Energy needs to copy health, but only if it is higher(in 01 terms) than health, that means if an item with full energy gets damaged and lit, the internal energy needs to be adjusted to follow the health. Situations where internal energy is lower than health are handled on the line above
301 GetCompEM().SetEnergy0To1(GetHealth01());
302 }
303 }
304
305 override void UpdateParticle()
306 {
307 float normalizedQuant = GetQuantity() / GetQuantityMax();
308
309 if (!m_FireParticle)
310 {
311 m_FireParticle = ParticleManager.GetInstance().PlayOnObject(ParticleList.BROOM_TORCH_T1, this, m_ParticleLocalPos);
312 }
313 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.VELOCITY, 1.0);
314 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.VELOCITY_RND, 1.0);
315 if (m_FireParticle)
316 {
317 float scale = Math.Max(normalizedQuant * 2.4, 0.4);
318
319 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.SIZE, scale);
320 }
321 }
322
323 // DEBUG BELLOW
324 void DebugSetHealthAndEnergy(float time)
325 {
326 float max_energy = GetCompEM().GetEnergyMaxPristine();
327 float health01 = Math.InverseLerp(0, max_energy, time);
328 SetHealth01("","", health01);
329 GetCompEM().SetEnergy( time );
330 }
331
332 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
333 {
334 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_VERY_SHORT, "SetBurnTimeTo15Secs", FadeColors.LIGHT_GREY));
335 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_SHORT, "SetBurnTimeTo1Min", FadeColors.LIGHT_GREY));
336 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_MEDIUM, "SetBurnTimeTo10Min", FadeColors.LIGHT_GREY));
337 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_LONG, "SetBurnTimeToMax", FadeColors.LIGHT_GREY));
338 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.SEPARATOR, "___________________________", FadeColors.LIGHT_GREY));
339
340 super.GetDebugActions(outputList);
341 }
342
343 override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
344 {
345 if (super.OnAction(action_id, player, ctx))
346 return true;
347 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
348 {
349 if (action_id == EActions.BROOM_BURN_VERY_SHORT)
350 {
352 OnIgnitedThis(null);
353 }
354 else if (action_id == EActions.BROOM_BURN_SHORT)
355 {
357 OnIgnitedThis(null);
358 }
359 else if (action_id == EActions.BROOM_BURN_MEDIUM)
360 {
362 OnIgnitedThis(null);
363 }
364 else if (action_id == EActions.BROOM_BURN_LONG)
365 {
366 DebugSetHealthAndEnergy(GetCompEM().GetEnergyMaxPristine());
367 OnIgnitedThis(null);
368 }
369 }
370 return false;
371 }
372
373}
374
375class Broom: BroomBase
376{
377 override string GetBurningMaterial()
378 {
379 return "DZ\\gear\\tools\\data\\broom_emissive.rvmat";
380 }
381
382 override string GetBurntMaterial()
383 {
384 return "DZ\\gear\\tools\\data\\broom_burn.rvmat";
385 }
386}
Param4< int, int, string, int > TSelectableActionInfoWithColor
Определения EntityAI.c:97
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
override void UpdateParticle()
Определения Broom.c:202
override void CalculateQuantity()
Определения Broom.c:188
override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
Определения Broom.c:229
override bool CanReceiveUpgrade()
Определения Broom.c:154
override void SetActions()
Определения Broom.c:146
override void OnWorkStart()
Определения Broom.c:159
override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
Определения Broom.c:240
override bool CanTransformIntoStick()
Определения Broom.c:171
override void Init()
Launched from 'DayZGame.DeferredInit' to make earlier access, use, and updates impossible (downside o...
Определения Broom.c:139
override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
Определения Broom.c:180
void DebugSetHealthAndEnergy(float time)
Определения Broom.c:221
override void ApplyResultModifications(ItemBase result)
Определения Broom.c:165
EActions
Определения EActions.c:2
override void OnIgnitedThis(EntityAI fire_source)
Executed on Server when some item ignited this one.
Определения FireworksBase.c:96
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
override float GetQuantity()
Определения ItemBase.c:8154
float GetEnergy()
Определения ItemBase.c:8278
override int GetQuantityMax()
Определения ItemBase.c:8106
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Определения ParticleManager.c:88
Определения Broom.c:2
Определения Building.c:6
override void SetActions()
Определения Torch.c:754
string GetBurningMaterial()
Определения Torch.c:796
string GetBurntMaterial()
Определения Torch.c:801
Определения Torch.c:2
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfWoodenPlanks.c:88
Определения InventoryItem.c:731
Определения EnMath.c:7
static const int BROOM_TORCH_T1
Определения ParticleList.c:78
Определения ParticleList.c:12
Определения DamageSystem.c:2
Определения EnConvert.c:106
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Min(float x, float y)
Returns smaller of two given values.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
EmitorParam
Определения EnVisual.c:114
const int SAT_DEBUG_ACTION
Определения constants.c:452