feature(GUI): Notifications are gui styled. (#69)
* feature(GUI): Notifications are gui styled. * feature(GUI): Removed ~r~
This commit is contained in:
parent
665371e116
commit
dcdeebf415
@ -2,7 +2,6 @@
|
|||||||
#include "gta_util.hpp"
|
#include "gta_util.hpp"
|
||||||
#include "script_local.hpp"
|
#include "script_local.hpp"
|
||||||
#include "util/math.hpp"
|
#include "util/math.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
#include "util/scripts.hpp"
|
#include "util/scripts.hpp"
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
@ -38,7 +37,7 @@ namespace big
|
|||||||
busy = false;
|
busy = false;
|
||||||
g->vehicle.ls_customs = false;
|
g->vehicle.ls_customs = false;
|
||||||
|
|
||||||
notify::above_map("You aren't in a vehicle.");
|
g_notification_service->push_warning("LS Customs", "You aren't in a vehicle.");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#include "backend/looped/looped.hpp"
|
#include "backend/looped/looped.hpp"
|
||||||
#include "core/enums.hpp"
|
#include "core/enums.hpp"
|
||||||
#include "util/entity.hpp"
|
#include "util/entity.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -30,7 +29,7 @@ namespace big
|
|||||||
entity::cage_ped(entity);
|
entity::cage_ped(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else notify::above_map("No entity found.");
|
else g_notification_service->push_error("Weapons", "No entity found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#include "core/enums.hpp"
|
#include "core/enums.hpp"
|
||||||
#include "util/entity.hpp"
|
#include "util/entity.hpp"
|
||||||
#include "util/math.hpp"
|
#include "util/math.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -28,7 +27,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
if (ENTITY::IS_ENTITY_A_PED(entity) && PED::IS_PED_A_PLAYER(entity))
|
if (ENTITY::IS_ENTITY_A_PED(entity) && PED::IS_PED_A_PLAYER(entity))
|
||||||
{
|
{
|
||||||
notify::above_map("You can't delete player entities!");
|
g_notification_service->push_error("Weapons", "You can't delete player entities!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -38,7 +37,7 @@ namespace big
|
|||||||
|
|
||||||
if (dist > 500)
|
if (dist > 500)
|
||||||
{
|
{
|
||||||
notify::above_map("Entity is too far.");
|
g_notification_service->push_error("Weapons", "Entity is too far.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -46,11 +45,11 @@ namespace big
|
|||||||
{
|
{
|
||||||
entity::delete_entity(entity);
|
entity::delete_entity(entity);
|
||||||
}
|
}
|
||||||
else notify::above_map("~r~Failed to take control of entity.");
|
else g_notification_service->push_error("Weapons", "Failed to take control of entity.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else notify::above_map("No entity found.");
|
else g_notification_service->push_error("Weapons", "No entity found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#include "core/enums.hpp"
|
#include "core/enums.hpp"
|
||||||
#include "util/entity.hpp"
|
#include "util/entity.hpp"
|
||||||
#include "util/math.hpp"
|
#include "util/math.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -37,7 +36,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
ent = 0;
|
ent = 0;
|
||||||
|
|
||||||
notify::above_map("You can't move player entities!");
|
g_notification_service->push_warning("Weapons", "You can't move player entities!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -48,7 +47,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
ent = 0;
|
ent = 0;
|
||||||
|
|
||||||
notify::above_map("Entity is too far.");
|
g_notification_service->push_warning("Weapons", "Entity is too far.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -56,7 +55,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
TASK::SET_HIGH_FALL_TASK(ent, 0, 0, 0);
|
TASK::SET_HIGH_FALL_TASK(ent, 0, 0, 0);
|
||||||
|
|
||||||
notify::above_map("Selected entity at crosshair.");
|
g_notification_service->push_warning("Weapons", "Selected entity at crosshair.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -65,7 +64,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
ent = 0;
|
ent = 0;
|
||||||
|
|
||||||
notify::above_map("No entity found.");
|
g_notification_service->push_warning("Weapons", "No entity found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +79,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
ent = 0;
|
ent = 0;
|
||||||
|
|
||||||
return notify::above_map("Failed to take control of entity.");
|
return g_notification_service->push_warning("Weapons", "Failed to take control of entity.");
|
||||||
}
|
}
|
||||||
|
|
||||||
ENTITY::SET_ENTITY_COLLISION(ent, false, false);
|
ENTITY::SET_ENTITY_COLLISION(ent, false, false);
|
||||||
@ -109,7 +108,7 @@ namespace big
|
|||||||
|
|
||||||
ent = 0;
|
ent = 0;
|
||||||
|
|
||||||
notify::above_map("Released entity.");
|
g_notification_service->push("Weapons", "Released entity.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,6 @@
|
|||||||
#include "core/enums.hpp"
|
#include "core/enums.hpp"
|
||||||
#include "util/entity.hpp"
|
#include "util/entity.hpp"
|
||||||
#include "util/vehicle.hpp"
|
#include "util/vehicle.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -32,10 +31,10 @@ namespace big
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
notify::above_map("Entity is not a vehicle.");
|
g_notification_service->push_warning("Weapons", "Entity is not a vehicle.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else notify::above_map("No entity found.");
|
else g_notification_service->push_warning("Weapons", "No entity found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#include "backend/looped/looped.hpp"
|
#include "backend/looped/looped.hpp"
|
||||||
#include "core/enums.hpp"
|
#include "core/enums.hpp"
|
||||||
#include "util/entity.hpp"
|
#include "util/entity.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -38,9 +37,9 @@ namespace big
|
|||||||
|
|
||||||
PED::SET_PED_INTO_VEHICLE(PLAYER::PLAYER_PED_ID(), ent, -1);
|
PED::SET_PED_INTO_VEHICLE(PLAYER::PLAYER_PED_ID(), ent, -1);
|
||||||
}
|
}
|
||||||
else notify::above_map("Entity is not a vehicle.");
|
else g_notification_service->push_warning("Weapons", "Entity is not a vehicle.");
|
||||||
}
|
}
|
||||||
else notify::above_map("No entity found.");
|
else g_notification_service->push_warning("Weapons", "No entity found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,8 @@
|
|||||||
#include "gta/natives.hpp"
|
#include "gta/natives.hpp"
|
||||||
#include "CPed.hpp"
|
#include "CPed.hpp"
|
||||||
|
|
||||||
|
#include "services/notification_service.hpp"
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
|
|
||||||
#include "views/view.hpp"
|
#include "views/view.hpp"
|
||||||
#include "util/notify.hpp"
|
#include "services/notification_service.hpp"
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -87,9 +87,18 @@ namespace big
|
|||||||
EXCEPT_CLAUSE
|
EXCEPT_CLAUSE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gui::always_draw()
|
||||||
|
{
|
||||||
|
TRY_CLAUSE
|
||||||
|
{
|
||||||
|
view::always();
|
||||||
|
}
|
||||||
|
EXCEPT_CLAUSE
|
||||||
|
}
|
||||||
|
|
||||||
void gui::script_init()
|
void gui::script_init()
|
||||||
{
|
{
|
||||||
notify::display_help_text("Press INSERT on your keyboard to open Yim's Mod Menu.");
|
g_notification_service->push("Welcome", "Loaded YimMenu. Press INSERT to open");
|
||||||
}
|
}
|
||||||
|
|
||||||
void gui::script_on_tick()
|
void gui::script_on_tick()
|
||||||
|
@ -8,6 +8,7 @@ namespace big
|
|||||||
public:
|
public:
|
||||||
void dx_init();
|
void dx_init();
|
||||||
void dx_on_tick();
|
void dx_on_tick();
|
||||||
|
void always_draw();
|
||||||
|
|
||||||
void script_init();
|
void script_init();
|
||||||
void script_on_tick();
|
void script_on_tick();
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#include "hooking.hpp"
|
#include "hooking.hpp"
|
||||||
#include "natives.hpp"
|
#include "natives.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -13,9 +12,9 @@ namespace big
|
|||||||
case RAGE_JOAAT("MPPLY_EXPLOITS"):
|
case RAGE_JOAAT("MPPLY_EXPLOITS"):
|
||||||
case RAGE_JOAAT("MPPLY_TC_ANNOYINGME"):
|
case RAGE_JOAAT("MPPLY_TC_ANNOYINGME"):
|
||||||
case RAGE_JOAAT("MPPLY_TC_HATE"):
|
case RAGE_JOAAT("MPPLY_TC_HATE"):
|
||||||
std::string report = fmt::format("~g~BLOCKED REPORT~s~\nFrom: <C>{}</C>", sender->get_name());
|
std::string report = fmt::format("From: {}", sender->get_name());
|
||||||
|
|
||||||
notify::above_map(report);
|
g_notification_service->push_warning("BLOCKED REPORT", report);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#include "gta/net_game_event.hpp"
|
#include "gta/net_game_event.hpp"
|
||||||
#include "hooking.hpp"
|
#include "hooking.hpp"
|
||||||
#include "natives.hpp"
|
#include "natives.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -36,8 +35,8 @@ namespace big
|
|||||||
{
|
{
|
||||||
g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
|
g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
|
||||||
|
|
||||||
notify::above_map(
|
g_notification_service->push_warning("Protection",
|
||||||
fmt::format("<C>{}</C> possible attempt at freezing entity.", source_player->get_name())
|
fmt::format("{} possible attempt at freezing entity.", source_player->get_name())
|
||||||
);
|
);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -57,8 +56,8 @@ namespace big
|
|||||||
|
|
||||||
if (money >= 2000)
|
if (money >= 2000)
|
||||||
{
|
{
|
||||||
notify::above_map(
|
g_notification_service->push_warning("Protection",
|
||||||
fmt::format("<C>{}</C> is spawning cash.", source_player->get_name())
|
fmt::format("{} is spawning cash.", source_player->get_name())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,8 +67,8 @@ namespace big
|
|||||||
case RockstarEvent::NETWORK_CHECK_CODE_CRCS_EVENT:
|
case RockstarEvent::NETWORK_CHECK_CODE_CRCS_EVENT:
|
||||||
case RockstarEvent::REPORT_MYSELF_EVENT:
|
case RockstarEvent::REPORT_MYSELF_EVENT:
|
||||||
{
|
{
|
||||||
notify::above_map(
|
g_notification_service->push_warning("Protection",
|
||||||
fmt::format("Detected <C>{}</C> as cheating.", source_player->get_name())
|
fmt::format("Detected {} as cheating.", source_player->get_name())
|
||||||
);
|
);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -78,8 +77,8 @@ namespace big
|
|||||||
{
|
{
|
||||||
g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
|
g_pointers->m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
|
||||||
|
|
||||||
notify::above_map(
|
g_notification_service->push_warning("Protection",
|
||||||
fmt::format("Denied player control request from <C>{}</C>", source_player->get_name())
|
fmt::format("Denied player control request from {}", source_player->get_name())
|
||||||
);
|
);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#include "hooking.hpp"
|
#include "hooking.hpp"
|
||||||
#include "gta/enums.hpp"
|
#include "gta/enums.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
@ -114,8 +113,8 @@ namespace big
|
|||||||
|
|
||||||
if (strlen(type) != 0)
|
if (strlen(type) != 0)
|
||||||
{
|
{
|
||||||
notify::above_map(
|
g_notification_service->push_warning("Protection",
|
||||||
fmt::format("~g~BLOCKED SCRIPT EVENT~s~\nFrom: <C>{}</C>\nEvent Type: ~b~{}", player->get_name(), type)
|
fmt::format("BLOCKED SCRIPT EVENT\nFrom: {}\nEvent Type: {}", player->get_name(), type)
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "services/globals_service.hpp"
|
#include "services/globals_service.hpp"
|
||||||
#include "services/player_service.hpp"
|
#include "services/player_service.hpp"
|
||||||
#include "services/mobile_service.hpp"
|
#include "services/mobile_service.hpp"
|
||||||
|
#include "services/notification_service.hpp"
|
||||||
#include "services/vehicle_service.hpp"
|
#include "services/vehicle_service.hpp"
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HMODULE hmod, DWORD reason, PVOID)
|
BOOL APIENTRY DllMain(HMODULE hmod, DWORD reason, PVOID)
|
||||||
@ -64,6 +65,7 @@ BOOL APIENTRY DllMain(HMODULE hmod, DWORD reason, PVOID)
|
|||||||
|
|
||||||
auto globals_service_instace = std::make_unique<globals_service>();
|
auto globals_service_instace = std::make_unique<globals_service>();
|
||||||
auto mobile_service_instance = std::make_unique<mobile_service>();
|
auto mobile_service_instance = std::make_unique<mobile_service>();
|
||||||
|
auto notification_service_instance = std::make_unique<notification_service>();
|
||||||
auto player_service_instance = std::make_unique<player_service>();
|
auto player_service_instance = std::make_unique<player_service>();
|
||||||
auto vehicle_service_instance = std::make_unique<vehicle_service>();
|
auto vehicle_service_instance = std::make_unique<vehicle_service>();
|
||||||
LOG(INFO) << "Registered service instances...";
|
LOG(INFO) << "Registered service instances...";
|
||||||
|
@ -83,6 +83,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
g_gui.dx_on_tick();
|
g_gui.dx_on_tick();
|
||||||
}
|
}
|
||||||
|
g_gui.always_draw();
|
||||||
|
|
||||||
ImGui::Render();
|
ImGui::Render();
|
||||||
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
|
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
|
||||||
|
58
BigBaseV2/src/services/notification_service.cpp
Normal file
58
BigBaseV2/src/services/notification_service.cpp
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include "notification_service.hpp"
|
||||||
|
|
||||||
|
namespace big
|
||||||
|
{
|
||||||
|
notification_service::notification_service()
|
||||||
|
{
|
||||||
|
g_notification_service = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
notification_service::~notification_service()
|
||||||
|
{
|
||||||
|
g_notification_service = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void notification_service::push(notification n)
|
||||||
|
{
|
||||||
|
this->notifications.emplace(std::hash<std::string>{}(n.message), n);
|
||||||
|
}
|
||||||
|
|
||||||
|
void notification_service::push(std::string title, std::string message)
|
||||||
|
{
|
||||||
|
this->push({ NotificationType::INFO, title, message, std::chrono::system_clock::now(), 3000.f , 1.f});
|
||||||
|
}
|
||||||
|
|
||||||
|
void notification_service::push_warning(std::string title, std::string message)
|
||||||
|
{
|
||||||
|
this->push({ NotificationType::WARNING, title, message, std::chrono::system_clock::now(), 3000.f , 1.f });
|
||||||
|
}
|
||||||
|
|
||||||
|
void notification_service::push_error(std::string title, std::string message)
|
||||||
|
{
|
||||||
|
this->push({ NotificationType::DANGER, title, message, std::chrono::system_clock::now(), 3000.f , 1.f });
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<notification> notification_service::get()
|
||||||
|
{
|
||||||
|
std::vector<notification> notifications_to_sent;
|
||||||
|
std::vector<std::size_t> to_remove;
|
||||||
|
for (auto& n : this->notifications) {
|
||||||
|
std::chrono::time_point<std::chrono::system_clock> curTime = std::chrono::system_clock::now();
|
||||||
|
const float time_diff = (float)std::chrono::duration_cast<std::chrono::milliseconds>(curTime - n.second.created_on).count();
|
||||||
|
n.second.alpha = 1;
|
||||||
|
if (n.second.destroy_in <= time_diff) {
|
||||||
|
n.second.alpha = 1.f - ((time_diff - n.second.destroy_in) / 600);
|
||||||
|
n.second.alpha = n.second.alpha < 0.f ? 0.f : n.second.alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n.second.alpha > 0.f)
|
||||||
|
notifications_to_sent.push_back(n.second);
|
||||||
|
else to_remove.push_back(n.first);
|
||||||
|
}
|
||||||
|
for (std::size_t k : to_remove)
|
||||||
|
this->notifications.erase(k);
|
||||||
|
|
||||||
|
return notifications_to_sent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
45
BigBaseV2/src/services/notification_service.hpp
Normal file
45
BigBaseV2/src/services/notification_service.hpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#pragma once
|
||||||
|
namespace big
|
||||||
|
{
|
||||||
|
enum class NotificationType {
|
||||||
|
INFO,
|
||||||
|
SUCCESS,
|
||||||
|
WARNING,
|
||||||
|
DANGER,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct notification
|
||||||
|
{
|
||||||
|
NotificationType type;
|
||||||
|
const std::string title;
|
||||||
|
const std::string message;
|
||||||
|
const std::chrono::time_point<std::chrono::system_clock> created_on;
|
||||||
|
const float destroy_in;
|
||||||
|
float alpha;
|
||||||
|
};
|
||||||
|
|
||||||
|
class notification_service final
|
||||||
|
{
|
||||||
|
std::unordered_map<std::size_t, notification> notifications;
|
||||||
|
|
||||||
|
public:
|
||||||
|
notification_service();
|
||||||
|
virtual ~notification_service();
|
||||||
|
|
||||||
|
void push(notification);
|
||||||
|
void push(std::string, std::string);
|
||||||
|
void push_warning(std::string, std::string);
|
||||||
|
void push_error(std::string, std::string);
|
||||||
|
std::vector<notification> get();
|
||||||
|
|
||||||
|
std::map<NotificationType, ImVec4> notification_colors = {
|
||||||
|
{NotificationType::INFO, ImVec4(0.80f, 0.80f, 0.83f, 1.00f)},
|
||||||
|
{NotificationType::SUCCESS, ImVec4(0.29f, 0.69f, 0.34f, 1.00f)},
|
||||||
|
{NotificationType::WARNING, ImVec4(0.69f ,0.49f, 0.29f, 1.00f) },
|
||||||
|
{NotificationType::DANGER, ImVec4(0.69f, 0.29f , 0.29f, 1.00f)},
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
inline notification_service* g_notification_service{};
|
||||||
|
}
|
@ -87,7 +87,7 @@ namespace big::mobile
|
|||||||
inline void summon_vehicle_by_index(int veh_idx)
|
inline void summon_vehicle_by_index(int veh_idx)
|
||||||
{
|
{
|
||||||
if (*mechanic_global.at(958).as<int*>() != -1)
|
if (*mechanic_global.at(958).as<int*>() != -1)
|
||||||
return notify::display_help_text("Mechanic is not ready to deliver a vehicle right now.");
|
return g_notification_service->push_warning("Vehicle", "Mechanic is not ready to deliver a vehicle right now.");
|
||||||
|
|
||||||
TASK::CLEAR_PED_TASKS_IMMEDIATELY(PLAYER::PLAYER_PED_ID());
|
TASK::CLEAR_PED_TASKS_IMMEDIATELY(PLAYER::PLAYER_PED_ID());
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "blip.hpp"
|
#include "blip.hpp"
|
||||||
#include "entity.hpp"
|
#include "entity.hpp"
|
||||||
#include "notify.hpp"
|
|
||||||
|
|
||||||
namespace big::teleport
|
namespace big::teleport
|
||||||
{
|
{
|
||||||
@ -11,14 +10,14 @@ namespace big::teleport
|
|||||||
|
|
||||||
if (ENTITY::IS_ENTITY_DEAD(ent, true))
|
if (ENTITY::IS_ENTITY_DEAD(ent, true))
|
||||||
{
|
{
|
||||||
notify::display_help_text("Target player is dead.");
|
g_notification_service->push_warning("Teleport", "Target player is dead.");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PED::IS_PED_IN_ANY_VEHICLE(ent, true))
|
if (!PED::IS_PED_IN_ANY_VEHICLE(ent, true))
|
||||||
{
|
{
|
||||||
notify::display_help_text("Target player is not in a vehicle.");
|
g_notification_service->push_warning("Teleport", "Target player is not in a vehicle.");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -30,7 +29,7 @@ namespace big::teleport
|
|||||||
if (entity::take_control_of(ent))
|
if (entity::take_control_of(ent))
|
||||||
ENTITY::SET_ENTITY_COORDS(ent, location.x, location.y, location.z, 0, 0, 0, 0);
|
ENTITY::SET_ENTITY_COORDS(ent, location.x, location.y, location.z, 0, 0, 0, 0);
|
||||||
else
|
else
|
||||||
notify::display_help_text("Failed to take control of player vehicle.");
|
g_notification_service->push_warning("Teleport", "Failed to take control of player vehicle.");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -69,7 +68,7 @@ namespace big::teleport
|
|||||||
{
|
{
|
||||||
if (!veh)
|
if (!veh)
|
||||||
{
|
{
|
||||||
notify::display_help_text("Player is not in a vehicle.");
|
g_notification_service->push_warning("Teleport", "Player is not in a vehicle.");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -82,7 +81,7 @@ namespace big::teleport
|
|||||||
|
|
||||||
if (seat_index == 255)
|
if (seat_index == 255)
|
||||||
{
|
{
|
||||||
notify::display_help_text("No seats are free in the player vehicle.");
|
g_notification_service->push_warning("Teleport", "No seats are free in the player vehicle.");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -136,7 +135,7 @@ namespace big::teleport
|
|||||||
{
|
{
|
||||||
if (!to_blip((int)BlipIcons::Waypoint))
|
if (!to_blip((int)BlipIcons::Waypoint))
|
||||||
{
|
{
|
||||||
notify::above_map("Failed to find waypoint position");
|
g_notification_service->push_warning("Teleport", "Failed to find waypoint position");
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
#include "gta/joaat.hpp"
|
#include "gta/joaat.hpp"
|
||||||
#include "math.hpp"
|
#include "math.hpp"
|
||||||
#include "natives.hpp"
|
#include "natives.hpp"
|
||||||
#include "notify.hpp"
|
|
||||||
#include "pointers.hpp"
|
#include "pointers.hpp"
|
||||||
#include "script.hpp"
|
#include "script.hpp"
|
||||||
#include "teleport.hpp"
|
#include "teleport.hpp"
|
||||||
@ -16,7 +15,7 @@ namespace big::vehicle
|
|||||||
teleport::load_ground_at_3dcoord(vecVehicleLocation);
|
teleport::load_ground_at_3dcoord(vecVehicleLocation);
|
||||||
|
|
||||||
if (!entity::take_control_of(veh))
|
if (!entity::take_control_of(veh))
|
||||||
return notify::above_map("Failed to take control of remote vehicle.");
|
return g_notification_service->push_warning("Vehicle", "Failed to take control of remote vehicle.");
|
||||||
ENTITY::SET_ENTITY_COORDS(veh, location.x, location.y, location.z + 1.f, 0, 0, 0, 0);
|
ENTITY::SET_ENTITY_COORDS(veh, location.x, location.y, location.z + 1.f, 0, 0, 0, 0);
|
||||||
ENTITY::SET_ENTITY_HEADING(veh, ENTITY::GET_ENTITY_HEADING(PLAYER::PLAYER_PED_ID()));
|
ENTITY::SET_ENTITY_HEADING(veh, ENTITY::GET_ENTITY_HEADING(PLAYER::PLAYER_PED_ID()));
|
||||||
|
|
||||||
@ -59,7 +58,7 @@ namespace big::vehicle
|
|||||||
}
|
}
|
||||||
if (!STREAMING::HAS_MODEL_LOADED(hash))
|
if (!STREAMING::HAS_MODEL_LOADED(hash))
|
||||||
{
|
{
|
||||||
notify::above_map("~r~Failed to spawn model, did you give an incorrect model?");
|
g_notification_service->push_warning("Spawn", "Failed to spawn model, did you give an incorrect model?");
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ namespace big
|
|||||||
static void settings();
|
static void settings();
|
||||||
static void spoofing();
|
static void spoofing();
|
||||||
static void navigation();
|
static void navigation();
|
||||||
|
static void notifications();
|
||||||
static void active_view();
|
static void active_view();
|
||||||
|
|
||||||
inline static animator window_animator = animator();
|
inline static animator window_animator = animator();
|
||||||
@ -67,5 +68,10 @@ namespace big
|
|||||||
active_view();
|
active_view();
|
||||||
navigation();
|
navigation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void always()
|
||||||
|
{
|
||||||
|
notifications();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -30,7 +30,7 @@ namespace big
|
|||||||
ImGui::SetNextWindowPos({ tabs_open_animation, 0.f }, ImGuiCond_Always);
|
ImGui::SetNextWindowPos({ tabs_open_animation, 0.f }, ImGuiCond_Always);
|
||||||
ImGui::SetNextWindowSize({ (float)g->window.x * 0.3f, (float)g->window.y }, ImGuiCond_Always);
|
ImGui::SetNextWindowSize({ (float)g->window.x * 0.3f, (float)g->window.y }, ImGuiCond_Always);
|
||||||
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.10f, 0.09f, 0.12f, 1.00f));
|
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.10f, 0.09f, 0.12f, 1.00f));
|
||||||
if (ImGui::Begin("main", 0, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoNav))
|
if (ImGui::Begin("main", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoNav))
|
||||||
{
|
{
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, alpha);
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, alpha);
|
||||||
if (current_tab->tab != tabs::NONE)
|
if (current_tab->tab != tabs::NONE)
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#include "fiber_pool.hpp"
|
#include "fiber_pool.hpp"
|
||||||
#include "script.hpp"
|
#include "script.hpp"
|
||||||
#include "util/mobile.hpp"
|
#include "util/mobile.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
#include "services/mobile_service.hpp"
|
#include "services/mobile_service.hpp"
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
@ -10,8 +9,8 @@ namespace big
|
|||||||
void view::mobile() {
|
void view::mobile() {
|
||||||
components::button("Mors Mutual Fix All Vehicles", [] {
|
components::button("Mors Mutual Fix All Vehicles", [] {
|
||||||
int amount_fixed = mobile::mors_mutual::fix_all();
|
int amount_fixed = mobile::mors_mutual::fix_all();
|
||||||
notify::above_map(
|
g_notification_service->push("Mobile",
|
||||||
fmt::format("<C>{}</C> vehicle{} been fixed.", amount_fixed, amount_fixed == 1 ? " has" : "s have")
|
fmt::format("{} vehicle{} been fixed.", amount_fixed, amount_fixed == 1 ? " has" : "s have")
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
32
BigBaseV2/src/views/view_notifications.cpp
Normal file
32
BigBaseV2/src/views/view_notifications.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "view.hpp"
|
||||||
|
#include "services/notification_service.hpp"
|
||||||
|
|
||||||
|
namespace big
|
||||||
|
{
|
||||||
|
void view::notifications()
|
||||||
|
{
|
||||||
|
ImGui::SetNextWindowSize({ (float)g->window.x * 0.2f, (float)g->window.y });
|
||||||
|
ImGui::SetNextWindowPos({ (float)g->window.x - (float)g->window.x * 0.2f, 0 });
|
||||||
|
if (ImGui::Begin("notifications", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoBackground))
|
||||||
|
{
|
||||||
|
std::vector<notification> notifications = g_notification_service->get();
|
||||||
|
|
||||||
|
for (int i = 0; i < notifications.size(); i++)
|
||||||
|
{
|
||||||
|
notification& n = notifications[i];
|
||||||
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, n.alpha);
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImVec4(0.10f, 0.09f, 0.12f, 1.00f));
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.10f, 0.09f, 0.12f, 1.00f));
|
||||||
|
ImGui::SetNextWindowBgAlpha(n.alpha);
|
||||||
|
ImGui::BeginChild(i, ImVec2(0, 75.f + (float)(20 * (int)(n.message.size() / 28) + 20 * (float)std::count(n.message.begin(), n.message.end(), '\n'))), true, ImGuiWindowFlags_NoScrollbar);
|
||||||
|
ImGui::Text(n.title.c_str());
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Text, g_notification_service->notification_colors.at(n.type));
|
||||||
|
ImGui::TextWrapped(n.message.c_str());
|
||||||
|
ImGui::PopStyleColor();
|
||||||
|
ImGui::EndChild();
|
||||||
|
ImGui::PopStyleVar();
|
||||||
|
ImGui::PopStyleColor(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -4,7 +4,6 @@
|
|||||||
#include "script_global.hpp"
|
#include "script_global.hpp"
|
||||||
#include "util/entity.hpp"
|
#include "util/entity.hpp"
|
||||||
#include "util/player.hpp"
|
#include "util/player.hpp"
|
||||||
#include "util/notify.hpp"
|
|
||||||
#include "util/session.hpp"
|
#include "util/session.hpp"
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
@ -79,7 +78,7 @@ namespace big
|
|||||||
}
|
}
|
||||||
if (!STREAMING::HAS_MODEL_LOADED(hash))
|
if (!STREAMING::HAS_MODEL_LOADED(hash))
|
||||||
{
|
{
|
||||||
notify::above_map("~r~Failed to spawn model, did you give an incorrect model?");
|
g_notification_service->push_error("Self", "Failed to spawn model, did you give an incorrect model ? ");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ namespace big
|
|||||||
|
|
||||||
components::button("Bring Personal Vehicle", [] {
|
components::button("Bring Personal Vehicle", [] {
|
||||||
Vehicle veh = globals::get_personal_vehicle();
|
Vehicle veh = globals::get_personal_vehicle();
|
||||||
if (ENTITY::IS_ENTITY_DEAD(veh, false)) return notify::above_map("Invalid vehicle handle...");
|
if (ENTITY::IS_ENTITY_DEAD(veh, false)) return g_notification_service->push_error("Teleport", "Invalid vehicle handle...");
|
||||||
|
|
||||||
Vector3 location = ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), true);
|
Vector3 location = ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), true);
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ namespace big
|
|||||||
|
|
||||||
components::button("Teleport to Personal Vehicle", [] {
|
components::button("Teleport to Personal Vehicle", [] {
|
||||||
Vehicle veh = globals::get_personal_vehicle();
|
Vehicle veh = globals::get_personal_vehicle();
|
||||||
if (ENTITY::IS_ENTITY_DEAD(veh, false)) return notify::above_map("Invalid vehicle handle...");
|
if (ENTITY::IS_ENTITY_DEAD(veh, false)) return g_notification_service->push_error("Teleport", "Invalid vehicle handle...");
|
||||||
|
|
||||||
teleport::to_coords(
|
teleport::to_coords(
|
||||||
ENTITY::GET_ENTITY_COORDS(veh, true)
|
ENTITY::GET_ENTITY_COORDS(veh, true)
|
||||||
|
Reference in New Issue
Block a user