plugindayzplayerdebug_weapons.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. // *************************************************************************************
  2. // ! PluginDayzPlayerWeaponsDebugUserData
  3. // *************************************************************************************
  4. class PluginDayzPlayerWeaponsDebugUserData
  5. {
  6. void PluginDayzPlayerWeaponsDebugUserData(int pAction, int pActionType)
  7. {
  8. m_iAction = pAction;
  9. m_iActionT = pActionType;
  10. }
  11. int GetAction()
  12. {
  13. return m_iAction;
  14. }
  15. int GetActionType()
  16. {
  17. return m_iActionT;
  18. }
  19. protected int m_iAction;
  20. protected int m_iActionT;
  21. }
  22. // *************************************************************************************
  23. // ! PluginDayzPlayerDebug_AbilityConfig
  24. // *************************************************************************************
  25. class PluginDayzPlayerDebug_AbilityConfig
  26. {
  27. void PluginDayzPlayerDebug_AbilityConfig(string pName, int pAction, int pActionT)
  28. {
  29. m_Name = pName;
  30. m_iAction = pAction;
  31. m_iActionT = pActionT;
  32. }
  33. string m_Name;
  34. int m_iAction;
  35. int m_iActionT;
  36. };
  37. // *************************************************************************************
  38. // ! PluginDayzPlayerDebug
  39. // *************************************************************************************
  40. class PluginDayzPlayerDebug_Weapons
  41. {
  42. Widget m_MainWnd;
  43. TextListboxWidget m_Selector;
  44. ButtonWidget m_ButtonStart;
  45. TextWidget m_WidgetActionRunning;
  46. TextWidget m_WidgetActionEvents;
  47. Weapon_Base m_CurrentWeapon;
  48. EditBoxWidget m_SetInitStateI;
  49. ButtonWidget m_SetInitStateB;
  50. ButtonWidget m_WeaponChange;
  51. ButtonWidget m_WeaponHide;
  52. EditBoxWidget m_WeaponSlotH;
  53. EditBoxWidget m_WeaponSlotS;
  54. EditBoxWidget m_WeaponActionProgressStart;
  55. EditBoxWidget m_WeaponActionProgressEnd;
  56. // command handler properties
  57. int m_CH_WeapAction = -1;
  58. int m_CH_WeapActionType = -1;
  59. int m_CH_LastWeapAction = -1;
  60. int m_CH_LastWeapActionType = -1;
  61. float m_CH_WeapActionProgressStart = 0;
  62. float m_CH_WeapActionProgressEnd = 1;
  63. string m_CH_WeaponChangeI;
  64. int m_CH_WeaponChangeSlotH = -1;
  65. int m_CH_WeaponChangeSlotS = -1;
  66. //---------------------------------------------------
  67. //
  68. //!
  69. ref array<ref PluginDayzPlayerDebug_AbilityConfig> m_AbilityConfig =
  70. {
  71. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_BULLET),
  72. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag Buller", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_BULLET),
  73. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_NOBULLET),
  74. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_NOBULLET),
  75. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag NoBullet lock", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_NOBULLET_OPEN),
  76. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag NoBullet lock", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_NOBULLET_OPEN),
  77. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Clip NoBullet", WeaponActions.RELOAD_CLIP, WeaponActionReloadClipTypes.RELOADRIFLE_CLIP_NOBULLET),
  78. PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Clip Bullet", WeaponActions.RELOAD_CLIP, WeaponActionReloadClipTypes.RELOADRIFLE_CLIP_BULLET),
  79. PluginDayzPlayerDebug_AbilityConfig("Pistol Closed - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_BULLET_CLOSED),
  80. PluginDayzPlayerDebug_AbilityConfig("Pistol Closed - Reload NoMag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_BULLET_CLOSED),
  81. PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Charged - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_COCKED),
  82. PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Charged - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_COCKED),
  83. PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Discharged - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_UNCOCKED),
  84. PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Discharged - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_UNCOCKED),
  85. PluginDayzPlayerDebug_AbilityConfig("Pistol Opened - Reload NoMag ", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_OPENED),
  86. PluginDayzPlayerDebug_AbilityConfig("Pistol Opened - Reload Mag ", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_OPENED),
  87. PluginDayzPlayerDebug_AbilityConfig("Pistol Detach Magazine", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOAD_MAGAZINE_DETACH),
  88. PluginDayzPlayerDebug_AbilityConfig("Rifle Detach Magazine", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_DETACH),
  89. PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_MAGAZINE_BULLET),
  90. PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload NoMag Buller", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_NOMAGAZINE_BULLET),
  91. PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_MAGAZINE_NOBULLET),
  92. PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_NOMAGAZINE_NOBULLET),
  93. PluginDayzPlayerDebug_AbilityConfig("Mechanism Opened", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED),
  94. PluginDayzPlayerDebug_AbilityConfig("Mechanism Closed", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED),
  95. PluginDayzPlayerDebug_AbilityConfig("Mechanism Spec", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL),
  96. PluginDayzPlayerDebug_AbilityConfig("Mechanism Closed Uncocked", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED_UNCOCKED),
  97. PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_OPENED),
  98. PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED),
  99. PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Unique Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_UNIQUE_OPENED),
  100. PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Unique Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_UNIQUE_CLOSED),
  101. PluginDayzPlayerDebug_AbilityConfig("Chamb 2 Bullets Start", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_TWOBULLETS_START),
  102. PluginDayzPlayerDebug_AbilityConfig("Chamb 2 Bullets End", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_TWOBULLETS_END),
  103. PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED),
  104. PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Closed keep bullet", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP),
  105. PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED),
  106. PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable End", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE),
  107. PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Shotgun Start Uncocked", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_SHOTGUN_UNCOCKED),
  108. PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Shotgun Start Cocked", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_SHOTGUN_COCKED),
  109. PluginDayzPlayerDebug_AbilityConfig("Chamb 1", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_1),
  110. PluginDayzPlayerDebug_AbilityConfig("Chamb 2", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_2),
  111. PluginDayzPlayerDebug_AbilityConfig("Chamb 3", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_3),
  112. PluginDayzPlayerDebug_AbilityConfig("Chamb 4", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_4),
  113. PluginDayzPlayerDebug_AbilityConfig("Crossbow Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_OPENED),
  114. PluginDayzPlayerDebug_AbilityConfig("Crossbow Close", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_CLOSED),
  115. PluginDayzPlayerDebug_AbilityConfig("Crossbow Full", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_FULL),
  116. PluginDayzPlayerDebug_AbilityConfig("INTERRUPT", WeaponActions.INTERRUPT, -1),
  117. PluginDayzPlayerDebug_AbilityConfig("Chamb Loader 1 Bullet Opened", WeaponActions.CHAMBERING_LOADER, WeaponActionChamberingLoaderTypes.CHAMBERINGLOADER_OPENED),
  118. PluginDayzPlayerDebug_AbilityConfig("Chamb Loader 1 Bullet Closed", WeaponActions.CHAMBERING_LOADER, WeaponActionChamberingLoaderTypes.CHAMBERINGLOADER_CLOSED),
  119. PluginDayzPlayerDebug_AbilityConfig("Unjamming Start", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START),
  120. PluginDayzPlayerDebug_AbilityConfig("Unjamming End", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END),
  121. PluginDayzPlayerDebug_AbilityConfig("Unjamming Interrupt", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_INTERRUPT),
  122. PluginDayzPlayerDebug_AbilityConfig("Fire Normal", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL),
  123. PluginDayzPlayerDebug_AbilityConfig("Fire Last", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST),
  124. PluginDayzPlayerDebug_AbilityConfig("Fire Empty Cocked", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED),
  125. PluginDayzPlayerDebug_AbilityConfig("Fire Empty Uncocked", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED),
  126. PluginDayzPlayerDebug_AbilityConfig("Fire and Jam", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM),
  127. PluginDayzPlayerDebug_AbilityConfig("Fire Dry", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY),
  128. };
  129. int FindAbilityConfig(int pAction, int pActionT)
  130. {
  131. int l = m_AbilityConfig.Count();
  132. for (int i = 0; i < l; i++)
  133. {
  134. if (m_AbilityConfig[i].m_iAction == pAction && m_AbilityConfig[i].m_iActionT == pActionT)
  135. {
  136. return i;
  137. }
  138. }
  139. return -1;
  140. }
  141. //---------------------------------------------------
  142. // gui stuff
  143. void PluginDayzPlayerDebug_Weapons(Widget pMainWnd)
  144. {
  145. m_MainWnd = pMainWnd;
  146. CreateModuleWidgets();
  147. //!
  148. DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
  149. if (player)
  150. {
  151. HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
  152. hcw.DebugResetEvents();
  153. }
  154. }
  155. void ~PluginDayzPlayerDebug_Weapons()
  156. {
  157. DestroyModuleWidgets();
  158. }
  159. void CreateModuleWidgets()
  160. {
  161. m_Selector = TextListboxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionSelector") );
  162. m_ButtonStart = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionStart") );
  163. m_WidgetActionRunning = TextWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionRunning") );
  164. m_WidgetActionEvents = TextWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionEvents") );
  165. m_SetInitStateI = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapInitStateI") );
  166. m_SetInitStateB = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapInitStateB") );
  167. m_WeaponChange = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapChange") );
  168. m_WeaponHide = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapHide") );
  169. m_WeaponSlotH = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeaponChangeSlotH") );
  170. m_WeaponSlotS = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeaponChangeSlotS") );
  171. m_WeaponActionProgressStart = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionProgressStart") );
  172. m_WeaponActionProgressEnd = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionProgressEnd") );
  173. m_WidgetActionEvents.SetText("Events:");
  174. }
  175. void DestroyModuleWidgets()
  176. {
  177. }
  178. //---------------------------------------------------
  179. // main update
  180. void Tick()
  181. {
  182. DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
  183. if (!player)
  184. {
  185. return;
  186. }
  187. if (player)
  188. {
  189. EntityAI entityInHands = player.GetHumanInventory().GetEntityInHands();
  190. Weapon_Base w;
  191. if (Class.CastTo(w, entityInHands))
  192. {
  193. if (m_CurrentWeapon != w)
  194. WeaponsInit(w);
  195. }
  196. else
  197. {
  198. m_Selector.ClearItems();
  199. }
  200. }
  201. //! update running action
  202. HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
  203. string text = "Action: " + hcw.GetRunningAction().ToString() + " " + hcw.GetRunningActionType().ToString();
  204. m_WidgetActionRunning.SetText(text);
  205. int aEvent = hcw.DebugIsEvent();
  206. if (aEvent != -1)
  207. {
  208. string eventStr = "Event: ";
  209. eventStr = eventStr + aEvent.ToString() + " ";
  210. while(true)
  211. {
  212. aEvent = hcw.DebugIsEvent();
  213. if (aEvent == -1)
  214. {
  215. break;
  216. }
  217. Print("Event: " + aEvent.ToString());
  218. eventStr += aEvent.ToString();
  219. eventStr += " ";
  220. }
  221. m_WidgetActionEvents.SetText(eventStr);
  222. }
  223. }
  224. //---------------------------------------------------
  225. // Actions
  226. void WeaponsInit(Weapon_Base w)
  227. {
  228. m_Selector.ClearItems();
  229. //! select weapon abilities
  230. int abilityCount = w.GetAbilityCount();
  231. for (int i = 0; i < abilityCount; ++i)
  232. {
  233. AbilityRecord rec = w.GetAbility(i);
  234. int abConfigIndex = FindAbilityConfig(rec.m_action, rec.m_actionType);
  235. if (abConfigIndex != -1)
  236. {
  237. m_Selector.AddItem(m_AbilityConfig[abConfigIndex].m_Name, new PluginDayzPlayerWeaponsDebugUserData(rec.m_action, rec.m_actionType), 0);
  238. }
  239. }
  240. m_Selector.AddItem("=========== All - not safe =========", NULL, 0);
  241. // if (abilityCount == 0)
  242. {
  243. int l = m_AbilityConfig.Count();
  244. for (int a = 0; a < l; a++)
  245. {
  246. m_Selector.AddItem(m_AbilityConfig[a].m_Name, new PluginDayzPlayerWeaponsDebugUserData(m_AbilityConfig[a].m_iAction, m_AbilityConfig[a].m_iActionT), 0);
  247. }
  248. }
  249. m_CurrentWeapon = w;
  250. }
  251. //!
  252. void WeaponsStartAction()
  253. {
  254. int row = m_Selector.GetSelectedRow();
  255. if (row == -1)
  256. {
  257. return;
  258. }
  259. PluginDayzPlayerWeaponsDebugUserData userData;
  260. m_Selector.GetItemData(row, 0, userData);
  261. if (userData)
  262. {
  263. m_CH_WeapAction = userData.GetAction();
  264. m_CH_WeapActionType = userData.GetActionType();
  265. m_CH_WeapActionProgressStart = m_WeaponActionProgressStart.GetText().ToFloat();
  266. m_CH_WeapActionProgressEnd = m_WeaponActionProgressEnd.GetText().ToFloat();
  267. Print("DayzPlayerImplement_Weapons::WeaponsStartAction");
  268. }
  269. }
  270. //---------------------------------------------------
  271. // window ui clicks
  272. //! buttons clicks
  273. bool OnClick(Widget w, int x, int y, int button)
  274. {
  275. if (w == m_ButtonStart)
  276. {
  277. WeaponsStartAction();
  278. return true;
  279. }
  280. else if (w == m_SetInitStateB)
  281. {
  282. int frameI = m_SetInitStateI.GetText().ToInt();
  283. DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
  284. HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
  285. hcw.SetInitState(frameI);
  286. }
  287. else if (w == m_WeaponChange)
  288. {
  289. Print("Weapon Change pressed");
  290. Dispatcher d = GetDispatcher();
  291. if (d == null)
  292. {
  293. Print("No dispatcher - cannot get selected weapon");
  294. return false;
  295. }
  296. Param p = d.CallMethod(CALL_ID_SCR_CNSL_GETSELECTEDITEM, null);
  297. if (p == null)
  298. {
  299. Print("No selected object");
  300. return false;
  301. }
  302. Param1<string> p1 = Param1<string>.Cast(p);
  303. Print(p1.param1);
  304. m_CH_WeaponChangeI = p1.param1;
  305. m_CH_WeaponChangeSlotH = m_WeaponSlotH.GetText().ToInt();
  306. m_CH_WeaponChangeSlotS = m_WeaponSlotS.GetText().ToInt();
  307. }
  308. else if (w == m_WeaponHide)
  309. {
  310. m_CH_WeaponChangeI = "";
  311. m_CH_WeaponChangeSlotH = m_WeaponSlotH.GetText().ToInt();
  312. m_CH_WeaponChangeSlotS = m_WeaponSlotS.GetText().ToInt();
  313. }
  314. return false;
  315. }
  316. //---------------------------------------------------
  317. // Global handler to handle commands from player
  318. bool IsWeaponChange(out string pNewWeapon, out int pHideSlot, out int pShowSlot)
  319. {
  320. if (m_CH_WeaponChangeSlotH == -1)
  321. {
  322. return false;
  323. }
  324. pNewWeapon = m_CH_WeaponChangeI;
  325. pHideSlot = m_CH_WeaponChangeSlotH;
  326. pShowSlot = m_CH_WeaponChangeSlotS;
  327. m_CH_WeaponChangeSlotH = -1;
  328. m_CH_WeaponChangeSlotS = -1;
  329. return true;
  330. }
  331. //---------------------------------------------------
  332. // Global handler to handle commands from player
  333. void CommandHandler()
  334. {
  335. // last action again
  336. if (KeyState(KeyCode.KC_MULTIPLY) == 1)
  337. {
  338. ClearKey(KeyCode.KC_MULTIPLY);
  339. m_CH_WeapAction = m_CH_LastWeapAction;
  340. m_CH_WeapActionType = m_CH_LastWeapActionType;
  341. Print("DayzPlayerImplement_Weapons OnKC_MULTIPLY");
  342. }
  343. if (m_CH_WeapAction >= 0)
  344. {
  345. m_CH_LastWeapAction = m_CH_WeapAction;
  346. m_CH_LastWeapActionType = m_CH_WeapActionType;
  347. //!
  348. DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
  349. if (player != NULL)
  350. {
  351. HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
  352. hcw.SetActionProgressParams(m_CH_WeapActionProgressStart, m_CH_WeapActionProgressEnd);
  353. hcw.StartAction(m_CH_WeapAction, m_CH_WeapActionType);
  354. Print("DayzPlayerImplement_Weapons::WeaponsStartAction2");
  355. }
  356. m_CH_WeapAction = -1;
  357. }
  358. }
  359. }