123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466 |
- // *************************************************************************************
- // ! PluginDayzPlayerWeaponsDebugUserData
- // *************************************************************************************
- class PluginDayzPlayerWeaponsDebugUserData
- {
- void PluginDayzPlayerWeaponsDebugUserData(int pAction, int pActionType)
- {
- m_iAction = pAction;
- m_iActionT = pActionType;
- }
-
- int GetAction()
- {
- return m_iAction;
- }
- int GetActionType()
- {
- return m_iActionT;
- }
- protected int m_iAction;
- protected int m_iActionT;
- }
- // *************************************************************************************
- // ! PluginDayzPlayerDebug_AbilityConfig
- // *************************************************************************************
- class PluginDayzPlayerDebug_AbilityConfig
- {
- void PluginDayzPlayerDebug_AbilityConfig(string pName, int pAction, int pActionT)
- {
- m_Name = pName;
- m_iAction = pAction;
- m_iActionT = pActionT;
- }
- string m_Name;
- int m_iAction;
- int m_iActionT;
- };
- // *************************************************************************************
- // ! PluginDayzPlayerDebug
- // *************************************************************************************
- class PluginDayzPlayerDebug_Weapons
- {
- Widget m_MainWnd;
- TextListboxWidget m_Selector;
- ButtonWidget m_ButtonStart;
- TextWidget m_WidgetActionRunning;
- TextWidget m_WidgetActionEvents;
- Weapon_Base m_CurrentWeapon;
- EditBoxWidget m_SetInitStateI;
- ButtonWidget m_SetInitStateB;
- ButtonWidget m_WeaponChange;
- ButtonWidget m_WeaponHide;
- EditBoxWidget m_WeaponSlotH;
- EditBoxWidget m_WeaponSlotS;
- EditBoxWidget m_WeaponActionProgressStart;
- EditBoxWidget m_WeaponActionProgressEnd;
- // command handler properties
- int m_CH_WeapAction = -1;
- int m_CH_WeapActionType = -1;
- int m_CH_LastWeapAction = -1;
- int m_CH_LastWeapActionType = -1;
- float m_CH_WeapActionProgressStart = 0;
- float m_CH_WeapActionProgressEnd = 1;
- string m_CH_WeaponChangeI;
- int m_CH_WeaponChangeSlotH = -1;
- int m_CH_WeaponChangeSlotS = -1;
- //---------------------------------------------------
- //
- //!
- ref array<ref PluginDayzPlayerDebug_AbilityConfig> m_AbilityConfig =
- {
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_BULLET),
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag Buller", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_BULLET),
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_NOBULLET),
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_NOBULLET),
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag NoBullet lock", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_NOBULLET_OPEN),
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag NoBullet lock", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_NOBULLET_OPEN),
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Clip NoBullet", WeaponActions.RELOAD_CLIP, WeaponActionReloadClipTypes.RELOADRIFLE_CLIP_NOBULLET),
- PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Clip Bullet", WeaponActions.RELOAD_CLIP, WeaponActionReloadClipTypes.RELOADRIFLE_CLIP_BULLET),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Closed - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_BULLET_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Closed - Reload NoMag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_BULLET_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Charged - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_COCKED),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Charged - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_COCKED),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Discharged - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_UNCOCKED),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Discharged - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_UNCOCKED),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Opened - Reload NoMag ", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_OPENED),
- PluginDayzPlayerDebug_AbilityConfig("Pistol Opened - Reload Mag ", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_OPENED),
-
- PluginDayzPlayerDebug_AbilityConfig("Pistol Detach Magazine", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOAD_MAGAZINE_DETACH),
- PluginDayzPlayerDebug_AbilityConfig("Rifle Detach Magazine", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_DETACH),
-
- PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_MAGAZINE_BULLET),
- PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload NoMag Buller", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_NOMAGAZINE_BULLET),
- PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_MAGAZINE_NOBULLET),
- PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_NOMAGAZINE_NOBULLET),
- PluginDayzPlayerDebug_AbilityConfig("Mechanism Opened", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED),
- PluginDayzPlayerDebug_AbilityConfig("Mechanism Closed", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Mechanism Spec", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL),
- PluginDayzPlayerDebug_AbilityConfig("Mechanism Closed Uncocked", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED_UNCOCKED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_OPENED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Unique Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_UNIQUE_OPENED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Unique Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_UNIQUE_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 2 Bullets Start", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_TWOBULLETS_START),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 2 Bullets End", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_TWOBULLETS_END),
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Closed keep bullet", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP),
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable End", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE),
-
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Shotgun Start Uncocked", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_SHOTGUN_UNCOCKED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Shotgun Start Cocked", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_SHOTGUN_COCKED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 1", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_1),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 2", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_2),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 3", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_3),
- PluginDayzPlayerDebug_AbilityConfig("Chamb 4", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_4),
- PluginDayzPlayerDebug_AbilityConfig("Crossbow Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_OPENED),
- PluginDayzPlayerDebug_AbilityConfig("Crossbow Close", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Crossbow Full", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_FULL),
-
- PluginDayzPlayerDebug_AbilityConfig("INTERRUPT", WeaponActions.INTERRUPT, -1),
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loader 1 Bullet Opened", WeaponActions.CHAMBERING_LOADER, WeaponActionChamberingLoaderTypes.CHAMBERINGLOADER_OPENED),
- PluginDayzPlayerDebug_AbilityConfig("Chamb Loader 1 Bullet Closed", WeaponActions.CHAMBERING_LOADER, WeaponActionChamberingLoaderTypes.CHAMBERINGLOADER_CLOSED),
- PluginDayzPlayerDebug_AbilityConfig("Unjamming Start", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START),
- PluginDayzPlayerDebug_AbilityConfig("Unjamming End", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END),
- PluginDayzPlayerDebug_AbilityConfig("Unjamming Interrupt", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_INTERRUPT),
- PluginDayzPlayerDebug_AbilityConfig("Fire Normal", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL),
- PluginDayzPlayerDebug_AbilityConfig("Fire Last", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST),
- PluginDayzPlayerDebug_AbilityConfig("Fire Empty Cocked", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED),
- PluginDayzPlayerDebug_AbilityConfig("Fire Empty Uncocked", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED),
- PluginDayzPlayerDebug_AbilityConfig("Fire and Jam", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM),
- PluginDayzPlayerDebug_AbilityConfig("Fire Dry", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY),
- };
- int FindAbilityConfig(int pAction, int pActionT)
- {
- int l = m_AbilityConfig.Count();
- for (int i = 0; i < l; i++)
- {
- if (m_AbilityConfig[i].m_iAction == pAction && m_AbilityConfig[i].m_iActionT == pActionT)
- {
- return i;
- }
- }
- return -1;
- }
- //---------------------------------------------------
- // gui stuff
- void PluginDayzPlayerDebug_Weapons(Widget pMainWnd)
- {
- m_MainWnd = pMainWnd;
- CreateModuleWidgets();
- //!
- DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
- if (player)
- {
- HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
- hcw.DebugResetEvents();
- }
- }
-
-
- void ~PluginDayzPlayerDebug_Weapons()
- {
- DestroyModuleWidgets();
- }
-
-
- void CreateModuleWidgets()
- {
- m_Selector = TextListboxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionSelector") );
- m_ButtonStart = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionStart") );
- m_WidgetActionRunning = TextWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionRunning") );
- m_WidgetActionEvents = TextWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionEvents") );
- m_SetInitStateI = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapInitStateI") );
- m_SetInitStateB = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapInitStateB") );
- m_WeaponChange = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapChange") );
- m_WeaponHide = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapHide") );
- m_WeaponSlotH = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeaponChangeSlotH") );
- m_WeaponSlotS = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeaponChangeSlotS") );
- m_WeaponActionProgressStart = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionProgressStart") );
- m_WeaponActionProgressEnd = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionProgressEnd") );
- m_WidgetActionEvents.SetText("Events:");
- }
-
- void DestroyModuleWidgets()
- {
- }
-
- //---------------------------------------------------
- // main update
-
- void Tick()
- {
- DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
- if (!player)
- {
- return;
- }
-
- if (player)
- {
- EntityAI entityInHands = player.GetHumanInventory().GetEntityInHands();
- Weapon_Base w;
- if (Class.CastTo(w, entityInHands))
- {
- if (m_CurrentWeapon != w)
- WeaponsInit(w);
- }
- else
- {
- m_Selector.ClearItems();
- }
- }
- //! update running action
- HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
-
- string text = "Action: " + hcw.GetRunningAction().ToString() + " " + hcw.GetRunningActionType().ToString();
- m_WidgetActionRunning.SetText(text);
- int aEvent = hcw.DebugIsEvent();
- if (aEvent != -1)
- {
- string eventStr = "Event: ";
- eventStr = eventStr + aEvent.ToString() + " ";
- while(true)
- {
- aEvent = hcw.DebugIsEvent();
- if (aEvent == -1)
- {
- break;
- }
- Print("Event: " + aEvent.ToString());
-
- eventStr += aEvent.ToString();
- eventStr += " ";
- }
- m_WidgetActionEvents.SetText(eventStr);
- }
- }
-
-
- //---------------------------------------------------
- // Actions
- void WeaponsInit(Weapon_Base w)
- {
-
- m_Selector.ClearItems();
- //! select weapon abilities
- int abilityCount = w.GetAbilityCount();
- for (int i = 0; i < abilityCount; ++i)
- {
- AbilityRecord rec = w.GetAbility(i);
- int abConfigIndex = FindAbilityConfig(rec.m_action, rec.m_actionType);
- if (abConfigIndex != -1)
- {
- m_Selector.AddItem(m_AbilityConfig[abConfigIndex].m_Name, new PluginDayzPlayerWeaponsDebugUserData(rec.m_action, rec.m_actionType), 0);
- }
- }
- m_Selector.AddItem("=========== All - not safe =========", NULL, 0);
- // if (abilityCount == 0)
- {
- int l = m_AbilityConfig.Count();
- for (int a = 0; a < l; a++)
- {
- m_Selector.AddItem(m_AbilityConfig[a].m_Name, new PluginDayzPlayerWeaponsDebugUserData(m_AbilityConfig[a].m_iAction, m_AbilityConfig[a].m_iActionT), 0);
- }
- }
- m_CurrentWeapon = w;
- }
- //!
- void WeaponsStartAction()
- {
- int row = m_Selector.GetSelectedRow();
- if (row == -1)
- {
- return;
- }
- PluginDayzPlayerWeaponsDebugUserData userData;
- m_Selector.GetItemData(row, 0, userData);
- if (userData)
- {
- m_CH_WeapAction = userData.GetAction();
- m_CH_WeapActionType = userData.GetActionType();
- m_CH_WeapActionProgressStart = m_WeaponActionProgressStart.GetText().ToFloat();
- m_CH_WeapActionProgressEnd = m_WeaponActionProgressEnd.GetText().ToFloat();
- Print("DayzPlayerImplement_Weapons::WeaponsStartAction");
- }
- }
- //---------------------------------------------------
- // window ui clicks
- //! buttons clicks
- bool OnClick(Widget w, int x, int y, int button)
- {
- if (w == m_ButtonStart)
- {
- WeaponsStartAction();
- return true;
- }
- else if (w == m_SetInitStateB)
- {
- int frameI = m_SetInitStateI.GetText().ToInt();
-
- DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
- HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
- hcw.SetInitState(frameI);
- }
- else if (w == m_WeaponChange)
- {
- Print("Weapon Change pressed");
- Dispatcher d = GetDispatcher();
- if (d == null)
- {
- Print("No dispatcher - cannot get selected weapon");
- return false;
- }
- Param p = d.CallMethod(CALL_ID_SCR_CNSL_GETSELECTEDITEM, null);
- if (p == null)
- {
- Print("No selected object");
- return false;
- }
- Param1<string> p1 = Param1<string>.Cast(p);
- Print(p1.param1);
- m_CH_WeaponChangeI = p1.param1;
- m_CH_WeaponChangeSlotH = m_WeaponSlotH.GetText().ToInt();
- m_CH_WeaponChangeSlotS = m_WeaponSlotS.GetText().ToInt();
- }
- else if (w == m_WeaponHide)
- {
- m_CH_WeaponChangeI = "";
- m_CH_WeaponChangeSlotH = m_WeaponSlotH.GetText().ToInt();
- m_CH_WeaponChangeSlotS = m_WeaponSlotS.GetText().ToInt();
- }
-
-
- return false;
- }
- //---------------------------------------------------
- // Global handler to handle commands from player
- bool IsWeaponChange(out string pNewWeapon, out int pHideSlot, out int pShowSlot)
- {
- if (m_CH_WeaponChangeSlotH == -1)
- {
- return false;
- }
- pNewWeapon = m_CH_WeaponChangeI;
- pHideSlot = m_CH_WeaponChangeSlotH;
- pShowSlot = m_CH_WeaponChangeSlotS;
- m_CH_WeaponChangeSlotH = -1;
- m_CH_WeaponChangeSlotS = -1;
- return true;
- }
- //---------------------------------------------------
- // Global handler to handle commands from player
- void CommandHandler()
- {
- // last action again
- if (KeyState(KeyCode.KC_MULTIPLY) == 1)
- {
- ClearKey(KeyCode.KC_MULTIPLY);
- m_CH_WeapAction = m_CH_LastWeapAction;
- m_CH_WeapActionType = m_CH_LastWeapActionType;
- Print("DayzPlayerImplement_Weapons OnKC_MULTIPLY");
- }
- if (m_CH_WeapAction >= 0)
- {
- m_CH_LastWeapAction = m_CH_WeapAction;
- m_CH_LastWeapActionType = m_CH_WeapActionType;
-
- //!
- DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
- if (player != NULL)
- {
- HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
- hcw.SetActionProgressParams(m_CH_WeapActionProgressStart, m_CH_WeapActionProgressEnd);
- hcw.StartAction(m_CH_WeapAction, m_CH_WeapActionType);
- Print("DayzPlayerImplement_Weapons::WeaponsStartAction2");
- }
- m_CH_WeapAction = -1;
- }
- }
- }
|