Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "singleton.hpp"
- #include "ValveSDK/interfaces/IGameEventManager.hpp"
- #include "ValveSDK/interfaces/IGameEventManager.hpp"
- #include "ValveSDK/interfaces.hpp"
- #include <Windows.h>
- #pragma comment(lib, "Winmm.lib")
- #define g_pGameEventManager g_GameEvents
- class hitmarker
- {
- class player_hurt_listener
- : public IGameEventListener2
- {
- public:
- void start()
- {
- if (!g_pGameEventManager->AddListener(this, "player_hurt", false)) {
- throw std::exception("Failed to register the event");
- }
- }
- void stop()
- {
- g_pGameEventManager->RemoveListener(this);
- }
- void FireGameEvent(IGameEvent *event) override
- {
- hitmarker::singleton()->on_fire_event(event);
- }
- int GetEventDebugID(void) override
- {
- return EVENT_DEBUG_ID_INIT /*0x2A*/;
- }
- };
- public:
- static hitmarker* singleton()
- {
- static hitmarker* instance = new hitmarker;
- return instance;
- }
- void initialize()
- {
- _listener.start();
- }
- void on_fire_event(IGameEvent* event)
- {
- if (!strcmp(event->GetName(), "player_hurt")) {
- int attacker = event->GetInt("attacker");
- if (g_EngineClient->GetPlayerForUserID(attacker) == g_EngineClient->GetLocalPlayer()) {
- //g_pSurface->PlaySound doesnt work for some reason
- PlaySoundA(_soundFileName, NULL, SND_ASYNC);
- _flHurtTime = g_GlobalVars->curtime;
- }
- }
- }
- void on_paint()
- {
- auto curtime = g_GlobalVars->curtime;
- auto lineSize = 8;
- if (_flHurtTime + 0.25f >= curtime) {
- int screenSizeX, screenCenterX;
- int screenSizeY, screenCenterY;
- g_EngineClient->GetScreenSize(screenSizeX, screenSizeY);
- screenCenterX = screenSizeX / 2;
- screenCenterY = screenSizeY / 2;
- g_VGuiSurface->DrawSetColor(200, 200, 200, 255);
- g_VGuiSurface->DrawLine(screenCenterX - lineSize, screenCenterY - lineSize, screenCenterX - (lineSize / 4), screenCenterY - (lineSize / 4));
- g_VGuiSurface->DrawLine(screenCenterX - lineSize, screenCenterY + lineSize, screenCenterX - (lineSize / 4), screenCenterY + (lineSize / 4));
- g_VGuiSurface->DrawLine(screenCenterX + lineSize, screenCenterY + lineSize, screenCenterX + (lineSize / 4), screenCenterY + (lineSize / 4));
- g_VGuiSurface->DrawLine(screenCenterX + lineSize, screenCenterY - lineSize, screenCenterX + (lineSize / 4), screenCenterY - (lineSize / 4));
- }
- }
- private:
- player_hurt_listener _listener;
- const char* _soundFileName = "csgo\\sound\\hitsound.wav";
- float _flHurtTime;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement