Advertisement
Guest User

Untitled

a guest
Oct 29th, 2017
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. #pragma once
  2.  
  3.  
  4. #include <Windows.h>
  5. #pragma comment(lib, "Winmm.lib")
  6.  
  7. #include "MiscClasses.h"
  8. #include "Interfaces.h"
  9. #include "Menu.h"
  10.  
  11. #define g_pGameEventManager Interfaces::EventManager
  12.  
  13. class hitmarker
  14. {
  15. class player_hurt_listener
  16. : public IGameEventListener2
  17. {
  18. public:
  19. void start()
  20. {
  21. if (!g_pGameEventManager->AddListener(this, "player_hurt", false)) {
  22. throw std::exception("Failed to register the event");
  23. }
  24. }
  25. void stop()
  26. {
  27. g_pGameEventManager->RemoveListener(this);
  28. }
  29. void FireGameEvent(IGameEvent *event) override
  30. {
  31. hitmarker::singleton()->on_fire_event(event);
  32. }
  33. int GetEventDebugID(void) override
  34. {
  35. return 0x2A;
  36. }
  37. };
  38. public:
  39. static hitmarker* singleton()
  40. {
  41. static hitmarker* instance = new hitmarker;
  42. return instance;
  43. }
  44.  
  45. void initialize()
  46. {
  47. _listener.start();
  48. }
  49. void on_fire_event(IGameEvent* event)
  50. {
  51. if (!strcmp(event->GetName(), "player_hurt")) {
  52. int attacker = event->GetInt("attacker");
  53. if (Interfaces::Engine->GetPlayerForUserID(attacker) == Interfaces::Engine->GetLocalPlayer() && Menu::Window.VisualsTab.OtherHitmarker.GetState())
  54. {
  55. _flHurtTime = Interfaces::Globals->curtime;
  56. }
  57. if (Interfaces::Engine->GetPlayerForUserID(attacker) == Interfaces::Engine->GetLocalPlayer() && Menu::Window.VisualsTab.HitmarkerSound.GetState())
  58. {
  59. PlaySoundA(_soundFileName, NULL, SND_ASYNC);
  60. }
  61. }
  62. }
  63.  
  64. void on_paint()
  65. {
  66. auto curtime = Interfaces::Globals->curtime;
  67. auto lineSize = 8;
  68. if (_flHurtTime + 0.25f >= curtime)
  69. {
  70. int screenSizeX, screenCenterX;
  71. int screenSizeY, screenCenterY;
  72. Interfaces::Engine->GetScreenSize(screenSizeX, screenSizeY);
  73.  
  74. screenCenterX = screenSizeX / 2;
  75. screenCenterY = screenSizeY / 2;
  76.  
  77. #define g_pSurface Interfaces::Surface
  78. g_pSurface->DrawSetColor(200, 200, 200, 255);
  79. g_pSurface->DrawLine(screenCenterX - lineSize, screenCenterY - lineSize, screenCenterX - (lineSize / 4), screenCenterY - (lineSize / 4));
  80. g_pSurface->DrawLine(screenCenterX - lineSize, screenCenterY + lineSize, screenCenterX - (lineSize / 4), screenCenterY + (lineSize / 4));
  81. g_pSurface->DrawLine(screenCenterX + lineSize, screenCenterY + lineSize, screenCenterX + (lineSize / 4), screenCenterY + (lineSize / 4));
  82. g_pSurface->DrawLine(screenCenterX + lineSize, screenCenterY - lineSize, screenCenterX + (lineSize / 4), screenCenterY - (lineSize / 4));
  83. }
  84. }
  85.  
  86. private:
  87. player_hurt_listener _listener;
  88. const char* _soundFileName = "csgo\sound\hitsound.wav";
  89. float _flHurtTime;
  90. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement