This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/src/backend/looped/player/remote_control_vehicle.cpp

48 lines
1.3 KiB
C++
Raw Normal View History

2022-11-21 15:42:12 +00:00
#include "backend/looped/looped.hpp"
#include "fiber_pool.hpp"
2022-11-21 15:42:12 +00:00
#include "natives.hpp"
#include "util/entity.hpp"
namespace big
{
void looped::player_remote_control_vehicle()
2022-11-21 15:42:12 +00:00
{
if (g.m_remote_controller_vehicle == -1)
2022-11-21 15:42:12 +00:00
return;
if (!ENTITY::DOES_ENTITY_EXIST(g.m_remote_controlled_vehicle))
2022-11-21 15:42:12 +00:00
{
g.m_remote_controlled_vehicle = -1;
g.m_remote_controlled_vehicle = -1;
2022-11-21 15:42:12 +00:00
return;
}
if (!ENTITY::DOES_ENTITY_EXIST(g.m_remote_controller_vehicle))
2022-11-21 15:42:12 +00:00
{
g.m_remote_controlled_vehicle = -1;
g.m_remote_controlled_vehicle = -1;
2022-11-21 15:42:12 +00:00
return;
}
if (VEHICLE::IS_VEHICLE_SEAT_FREE(g.m_remote_controller_vehicle, -1, TRUE))
2022-11-21 15:42:12 +00:00
{
auto controlled = g.m_remote_controlled_vehicle;
auto controller = g.m_remote_controller_vehicle;
g_fiber_pool->queue_job([controlled, &controller] {
2022-11-21 15:42:12 +00:00
if (entity::take_control_of(controlled))
{
ENTITY::SET_ENTITY_COLLISION(g.m_remote_controlled_vehicle, TRUE, TRUE);
2022-11-21 15:42:12 +00:00
ENTITY::DETACH_ENTITY(controlled, TRUE, TRUE);
VEHICLE::SET_VEHICLE_DOORS_LOCKED(controlled, 0);
VEHICLE::SET_VEHICLE_DOORS_LOCKED_FOR_ALL_PLAYERS(controlled, FALSE);
ENTITY::SET_ENTITY_INVINCIBLE(controlled, FALSE);
entity::delete_entity(controller);
}
});
g.m_remote_controller_vehicle = -1;
g.m_remote_controlled_vehicle = -1;
2022-11-21 15:42:12 +00:00
}
}
};