123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- class ActionLoadMagazineCB : ActionContinuousBaseCB
- {
- override void CreateActionComponent()
- {
- m_ActionData.m_ActionComponent = new CAContinuousRepeat(UATimeSpent.MAG_LOAD);
- }
- };
- class ActionLoadMagazine: ActionContinuousBase
- {
- void ActionLoadMagazine()
- {
- m_CallbackClass = ActionLoadMagazineCB;
- m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_FILLMAG;
- m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_FILLMAG;
- m_Text = "#load_magazine";
- }
-
- override bool HasProneException()
- {
- return true;
- }
-
- override void CreateConditionComponents()
- {
- m_ConditionItem = new CCINonRuined();
- m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
- }
-
- bool CanLoadMagazine(ActionTarget target, ItemBase item)
- {
- Magazine trg;
- Magazine itm;
- return ( Class.CastTo(trg, target.GetObject()) && Class.CastTo(itm, item) && itm.GetAmmoCount() < itm.GetAmmoMax() && trg.GetAmmoCount() != 0 && itm.IsCompatiableAmmo( trg ) );
- }
-
- override bool ActionConditionContinue( ActionData action_data )
- {
- return CanLoadMagazine(action_data.m_Target, action_data.m_MainItem);
- }
-
- override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
- {
- return CanLoadMagazine(target, item);
- }
-
- override bool CanBePerformedFromQuickbar()
- {
- return true;
- }
-
- override void OnExecuteServer( ActionData action_data )
- {
- //Param1<float> timeSpendParam;
- //if( !Class.CastTo(timeSpendParam, action_data.m_ActionComponent.GetACData()) ) return;
-
- Magazine trg;
- Magazine itm;
- if ( Class.CastTo(trg, action_data.m_Target.GetObject()) && Class.CastTo(itm, action_data.m_MainItem) )
- {
- float dmg;
- string ammoType;
-
- if ( trg.ServerAcquireCartridge(dmg, ammoType) )
- {
- if ( !itm.ServerStoreCartridge(dmg, ammoType) )
- trg.ServerStoreCartridge(dmg, ammoType);
- else
- itm.ApplyManipulationDamage(); //damages magazine
- }
- trg.SetSynchDirty();
- itm.SetSynchDirty();
- }
- }
- };
- class ActionLoadMagazineQuickCB : ActionContinuousBaseCB
- {
- override void CreateActionComponent()
- {
- m_ActionData.m_ActionComponent = new CAContinuousRepeat(UATimeSpent.MAG_LOAD);
- }
- };
- class ActionLoadMagazineQuick: ActionContinuousBase
- {
- void ActionLoadMagazineQuick()
- {
- m_CallbackClass = ActionLoadMagazineQuickCB;
- m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_FILLMAG;
- m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_FILLMAG;
- }
-
- override bool HasProneException()
- {
- return true;
- }
-
- override typename GetInputType()
- {
- return ContinuousWeaponManipulationActionInput;
- }
-
- override void CreateConditionComponents()
- {
- m_ConditionItem = new CCINonRuined();
- m_ConditionTarget = new CCTSelf;
- }
-
- override bool HasTarget()
- {
- return false;
- }
-
- bool CanLoadMagazine( PlayerBase player, ItemBase item )
- {
- Magazine mag = Magazine.Cast( item );
- return mag && player.GetWeaponManager().GetPreparedMagazine() != null && mag.GetAmmoCount() < mag.GetAmmoMax();
- }
-
- override bool ActionConditionContinue( ActionData action_data )
- {
- return CanLoadMagazine(action_data.m_Player, action_data.m_MainItem);
- }
-
- override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
- {
- return CanLoadMagazine(player, item);
- }
-
- override void OnExecuteServer( ActionData action_data )
- {
- //Param1<float> timeSpendParam;
- //if( !Class.CastTo(timeSpendParam, action_data.m_ActionComponent.GetACData()) ) return;
-
- Magazine itm = Magazine.Cast(action_data.m_MainItem);
- Magazine trg = action_data.m_Player.GetWeaponManager().GetPreparedMagazine();
-
- if ( !itm || !trg )
- return;
-
- float dmg;
- string ammoType;
-
- if ( trg.ServerAcquireCartridge(dmg, ammoType) )
- {
- if ( !itm.ServerStoreCartridge(dmg, ammoType) )
- trg.ServerStoreCartridge(dmg, ammoType);
- else
- itm.ApplyManipulationDamage(); //damages magazine
- }
-
- trg.SetSynchDirty();
- itm.SetSynchDirty();
- //manipulationDamage
- //if(trg.GetAmmoCount() > 0 )
- //trg.SetSynchDirty();
- //itm.SetSynchDirty();
- }
- };
|