-
Автор темы
- #1
Can someone help it crashing
Код:
class CBulletListener
{
class BulletListener : IGameEventListener2
{
public:
void start()
{
if (!Interfaces::EventManager->AddListener(this, "bullet_impact", false))
{
throw std::exception("Failed to register the event");
}
}
void stop()
{
Interfaces::EventManager->RemoveListener(this);
}
void FireGameEvent(IGameEvent* event) override
{
CBulletListener::singleton()->OnFireEvent(event);
}
int GetEventDebugID(void) override
{
return 0x2A;
}
};
public:
static CBulletListener* singleton()
{
static CBulletListener* instance = new CBulletListener();
return instance;
}
void init()
{
_listener.start();
}
void OnFireEvent(IGameEvent* event)
{
if (!strcmp(event->GetName(), "bullet_impact"))
{
auto index = Interfaces::Engine->GetPlayerForUserID(event->GetInt("userid"));
if (index != Interfaces::Engine->GetLocalPlayer())
return;
auto local = (IClientEntity*)Interfaces::EntList->GetClientEntity(index);
if (!local)
return;
Vector position(event->GetFloat("x"), event->GetFloat("y"), event->GetFloat("z"));
Ray_t ray;
ray.Init(local->GetEyePosition(), position);
CTraceFilter filter;
filter.pSkip = local;
trace_t tr;
Interfaces::Trace->TraceRay(ray, MASK_SHOT, &filter, &tr);
logs.push_back(cbullet_tracer_info(local->GetEyePosition(), position, Interfaces::Globals->curtime, Color(140, 29, 29, 255)));
}
}
void OnStudioRender()
{
if (!Menu::Window.VisualsTab.BulletTracers.GetState())
return;
auto local = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());
if (!local)
return;
for (size_t i = 0; i < logs.size(); i++)
{
auto current = logs.at(i);
Interfaces::DebugOverlay->AddLineOverlay(current.src, current.dst, current.color.r(), current.color.g(), current.color.b(), true, -1.f);
if (fabs(Interfaces::Globals->curtime - current.time) > 3.f)
logs.erase(logs.begin() + i);
}
}
private:
BulletListener _listener;
class cbullet_tracer_info
{
public:
cbullet_tracer_info(Vector src, Vector dst, float time, Color color)
{
this->src = src;
this->dst = dst;
this->time = time;
this->color = color;
}
Vector src, dst;
float time;
Color color;
};
std::vector<cbullet_tracer_info> logs;
};