Converted all static strings to translation keys. (#2284)
This commit is contained in:
parent
d6c32533be
commit
37468ca7b0
@ -21,7 +21,7 @@ namespace big
|
||||
return;
|
||||
if (!scripts::force_host(RAGE_JOAAT("freemode")))
|
||||
{
|
||||
g_notification_service->push_error("Kick", "Force script host failed!");
|
||||
g_notification_service->push_error("END_KICK"_T.data(), "BACKEND_END_SESSION_KICK_FORCE_SCRIPT_HOST_FAILED"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ namespace big
|
||||
return;
|
||||
if (!g_player_service->get_self()->is_host())
|
||||
{
|
||||
g_notification_service->push_error("Host kick", "Host kick failed");
|
||||
g_notification_service->push_error("HOST_KICK"_T.data(), "BACKEND_HOST_KICK_FAILED"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx->report_error("Player does not appear to be in an interior");
|
||||
ctx->report_error("BACKEND_ENTER_INTERIOR_NOT_IN_INTERIOR"_T.data());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -19,7 +19,7 @@ namespace big
|
||||
|
||||
if (level < 0 || level > 5)
|
||||
{
|
||||
ctx->report_error(std::format("Wanted level {} is invalid [0 - 5]", level));
|
||||
ctx->report_error(std::format("{}: '{}' {} [0 - 5]", "WANTED_LEVEL"_T, level, "VIEW_MODEL_SWAPPER_INVALID_INDEX"_T));
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
|
@ -44,13 +44,13 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
start_script<20> g_start_tutorial("tutorial", "Start Tutorial", "Plays that unskippable cutscene used in the tutorial", 0);
|
||||
start_script<200> g_start_golf("golf", "Start Golf", "Starts golf", 0);
|
||||
start_script<203> g_start_flight_school("flightschool", "Start Flight School", "Teleports player to the airport and starts flight school", 0);
|
||||
start_script<9> g_start_darts("darts", "Start Darts", "Starts darts in a Sandy Shores bar", 0);
|
||||
start_script<218> g_start_badlands("badlands", "Start Badlands Revenge II", "Starts the arcade game Badlands Revenge II in fullscreen", 0);
|
||||
start_script<223> g_start_space_monkey("spacemonkey", "Start Space Monkey 3", "Starts the arcade game Space Monkey 3 in fullscreen", 0);
|
||||
start_script<219> g_start_wizards_ruin("wizard", "Start The Wizard's Ruin", "Starts the arcade game The Wizard's Ruin in fullscreen", 0);
|
||||
start_script<224> g_start_qub3d("qub3d", "Start Qub3D", "Starts the arcade game Qub3D in fullscreen", 0);
|
||||
start_script<225> g_start_camhedz("camhedz", "Start Camhedz", "Starts the arcade game Camhedz in fullscreen", 0);
|
||||
start_script<20> g_start_tutorial("tutorial", "BACKEND_START_SCRIPT_START_TUTORIAL", "BACKEND_START_SCRIPT_START_TUTORIAL_DESC", 0);
|
||||
start_script<200> g_start_golf("golf", "BACKEND_START_SCRIPT_START_GOLF", "BACKEND_START_SCRIPT_START_GOLF_DESC", 0);
|
||||
start_script<203> g_start_flight_school("flightschool", "BACKEND_START_SCRIPT_START_FLIGHT_SCHOOL", "BACKEND_START_SCRIPT_START_FLIGHT_SCHOOL_DESC", 0);
|
||||
start_script<9> g_start_darts("darts", "BACKEND_START_SCRIPT_START_DARTS", "BACKEND_START_SCRIPT_START_DARTS_DESC", 0);
|
||||
start_script<218> g_start_badlands("badlands", "BACKEND_START_SCRIPT_START_BADLANDS_REVENGE_II", "BACKEND_START_SCRIPT_START_BADLANDS_REVENGE_II_DESC", 0);
|
||||
start_script<223> g_start_space_monkey("spacemonkey", "BACKEND_START_SCRIPT_START_SPACE_MONKEY", "BACKEND_START_SCRIPT_START_SPACE_MONKEY_DESC", 0);
|
||||
start_script<219> g_start_wizards_ruin("wizard", "BACKEND_START_SCRIPT_START_WIZARD", "BACKEND_START_SCRIPT_START_WIZARD_DESC", 0);
|
||||
start_script<224> g_start_qub3d("qub3d", "BACKEND_START_SCRIPT_START_QUB3D", "BACKEND_START_SCRIPT_START_QUB3D_DESC", 0);
|
||||
start_script<225> g_start_camhedz("camhedz", "BACKEND_START_SCRIPT_START_CAMHEDZ", "BACKEND_START_SCRIPT_START_CAMHEDZ_DESC", 0);
|
||||
}
|
@ -23,11 +23,11 @@ namespace big
|
||||
{
|
||||
if (!NETWORK::NETWORK_IS_PLAYER_A_PARTICIPANT_ON_SCRIPT(id, "am_launcher", -1))
|
||||
{
|
||||
g_notification_service->push_error("Turn to Beast", "Cannot start the Hunt the Beast event, player not a participant of am_launcher");
|
||||
g_notification_service->push_error("TURN_INTO_BEAST"_T.data(), "BACKEND_TURN_INTO_BEAST_CANNOT_START_AM_LAUNCHER"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
g_notification_service->push("Turn to Beast", "Starting Hunt The Beast event. Please wait...");
|
||||
g_notification_service->push("TURN_INTO_BEAST"_T.data(), "BACKEND_TURN_INTO_BEAST_STARTING"_T.data());
|
||||
|
||||
scripts::start_launcher_script(47);
|
||||
|
||||
@ -35,7 +35,7 @@ namespace big
|
||||
{
|
||||
if (i >= 1000)
|
||||
{
|
||||
g_notification_service->push_error("Turn to Beast", "Failed to start the Hunt The Beast event");
|
||||
g_notification_service->push_error("TURN_INTO_BEAST"_T.data(), "BACKEND_TURN_INTO_BEAST_FAILED"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@ namespace big
|
||||
|
||||
if (!scripts::force_host(RAGE_JOAAT("am_hunt_the_beast")))
|
||||
{
|
||||
g_notification_service->push_error("Turn to Beast", "Failed to take control of am_hunt_the_beast");
|
||||
g_notification_service->push_error("TURN_INTO_BEAST"_T.data(), "BACKEND_TURN_INTO_BEAST_FAILED_CONTROL"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ namespace big
|
||||
{
|
||||
if (i >= 7000)
|
||||
{
|
||||
g_notification_service->push_error("Turn to Beast", "Failed to start the Hunt The Beast event");
|
||||
g_notification_service->push_error("TURN_INTO_BEAST"_T.data(), "BACKEND_TURN_INTO_BEAST_FAILED"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ namespace big
|
||||
|
||||
if (!scripts::force_host(RAGE_JOAAT("am_hunt_the_beast")))
|
||||
{
|
||||
g_notification_service->push_error("Turn to Beast", "Failed to take control of am_hunt_the_beast");
|
||||
g_notification_service->push_error("TURN_INTO_BEAST"_T.data(), "BACKEND_TURN_INTO_BEAST_FAILED_CONTROL"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ namespace big
|
||||
|
||||
if (entity::take_control_of(vehicle))
|
||||
{
|
||||
VEHICLE::SET_VEHICLE_FORWARD_SPEED(vehicle, 79);
|
||||
VEHICLE::SET_VEHICLE_FORWARD_SPEED(vehicle, VEHICLE::GET_VEHICLE_ESTIMATED_MAX_SPEED(vehicle));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -32,5 +32,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
boost_vehicle g_boost_vehicle("boostveh", "Boost Vehicle", "Boosts their car very fast.", 0);
|
||||
boost_vehicle g_boost_vehicle("boostveh", "BACKEND_BOOST_VEHICLE", "BACKEND_BOOST_VEHICLE_DESC", 0);
|
||||
}
|
@ -42,5 +42,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
break_doors g_break_doors("breakdoors", "Break Vehicle Doors", "Breaks all vehicle doors", 0);
|
||||
break_doors g_break_doors("breakdoors", "BACKEND_BREAK_VEHICLE_DOORS", "BACKEND_BREAK_VEHICLE_DOORS_DESC", 0);
|
||||
}
|
@ -33,5 +33,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
burst_tyres g_burst_tyres("burstwheels", "Burst Vehicle Tyres", "Removes their tyres", 0);
|
||||
burst_tyres g_burst_tyres("burstwheels", "BACKEND_BURST_VEHICLE_TIRES", "BACKEND_BURST_VEHICLE_TIRES_DESC", 0);
|
||||
}
|
||||
|
@ -26,11 +26,11 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
g_notification_service->push_warning("Toxic", "Failed to take control of vehicle.");
|
||||
g_notification_service->push_warning("TOXIC"_T.data(), "ERROR_FAILED_TO_TAKE_CONTROL"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
close_doors g_close_doors("closedoors", "Close Vehicle Doors", "Closes all vehicle doors", 0);
|
||||
close_doors g_close_doors("closedoors", "BACKEND_CLOSE_VEHICLE_DOORS", "BACKEND_CLOSE_VEHICLE_DOORS_DESC", 0);
|
||||
}
|
@ -33,5 +33,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
downgrade_vehicle g_downgrade_vehicle("downgradeveh", "Downgrade Vehicle", "Removes all upgrades", 0);
|
||||
downgrade_vehicle g_downgrade_vehicle("downgradeveh", "BACKEND_DOWNGRADE_VEHICLE", "BACKEND_DOWNGRADE_VEHICLE_DESC", 0);
|
||||
}
|
@ -40,7 +40,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
flip_180
|
||||
g_flip_180("flip180", "Rotate 180", "Rotates the player's car around", 0)
|
||||
;
|
||||
flip_180 g_flip_180("flip180", "BACKEND_FLIP", "BACKEND_FLIP_DESC", 0);
|
||||
}
|
@ -29,5 +29,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
flying_vehicle g_flying_vehicle("flyingveh", "Flying Vehicle", "Catapults the player's car to the sky", 0);
|
||||
flying_vehicle g_flying_vehicle("flyingveh", "BACKEND_FLYING_VEHICLE", "BACKEND_FLYING_VEHICLE_DESC", 0);
|
||||
}
|
@ -25,11 +25,11 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
g_notification_service->push_warning("Toxic", "Failed to take control of player vehicle.");
|
||||
g_notification_service->push_warning("TOXIC"_T.data(), "ERROR_FAILED_TO_TAKE_CONTROL"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
kill_engine g_kill_engine("killengine", "Kill Vehicle Engine", "Breaks their engine", 0);
|
||||
kill_engine g_kill_engine("killengine", "BACKEND_KILL_VEHICLE_ENGINE", "BACKEND_KILL_VEHICLE_ENGINE_DESC", 0);
|
||||
}
|
@ -31,5 +31,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
lock_vehicle g_lock_vehicle("lockveh", "Lock Vehicle", "Locks vehicle doors", 0);
|
||||
lock_vehicle g_lock_vehicle("lockveh", "BACKEND_LOCK_VEHICLE", "BACKEND_LOCK_VEHICLE_DESC", 0);
|
||||
}
|
@ -29,11 +29,11 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
g_notification_service->push_warning("Toxic", "Failed to take control of vehicle");
|
||||
g_notification_service->push_warning("TOXIC"_T.data(), "ERROR_FAILED_TO_TAKE_CONTROL"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
open_doors g_open_doors("opendoors", "Opens Vehicle Doors", "Opens all vehicle doors", 0);
|
||||
open_doors g_open_doors("opendoors", "BACKEND_OPEN_VEHICLE_DOORS", "BACKEND_OPEN_VEHICLE_DOORS_DESC", 0);
|
||||
}
|
@ -15,9 +15,9 @@ namespace big
|
||||
if (veh == 0)
|
||||
{
|
||||
if (g.player.spectating)
|
||||
g_notification_service->push_warning("Remote Control", "Player not in a vehicle");
|
||||
g_notification_service->push_warning("REMOTE_CONTROL"_T.data(), "ERROR_PLAYER_IS_NOT_IN_VEHICLE"_T.data());
|
||||
else
|
||||
g_notification_service->push_warning("Remote Control", "Player not in a vehicle, try spectating the player");
|
||||
g_notification_service->push_warning("REMOTE_CONTROL"_T.data(), std::format("{} {}", "ERROR_PLAYER_IS_NOT_IN_VEHICLE"_T, "BACKEND_REMOTE_CONTROL_VEHICLE_SPECTATE"_T).c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -26,5 +26,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
remote_control_vehicle g_remote_control_vehicle("rcplayer", "Remote Control Vehicle", "Take control of the player's vehicle. Spectate the player beforehand for best results", 0, false);
|
||||
remote_control_vehicle g_remote_control_vehicle("rcplayer", "BACKEND_REMOTE_CONTROL_VEHICLE", "BACKEND_REMOTE_CONTROL_VEHICLE_DESC", 0, false);
|
||||
}
|
@ -29,5 +29,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
smash_windows g_smash_windows("smashwindows", "Smash Vehicle Windows", "Smashes all their windows", 0);
|
||||
smash_windows g_smash_windows("smashwindows", "BACKEND_SMASH_VEHICLE_WINDOWS", "BACKEND_SMASH_VEHICLE_WINDOWS_DESC", 0);
|
||||
}
|
@ -24,8 +24,8 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
vehicle_special_ability<0> g_special_jump_vehicle("svehjump", "Special: Jump", "Activates the vehicle jump on the player's vehicle. This may cause undefined behavior if the vehicle cannot jump", 0);
|
||||
vehicle_special_ability<1> g_special_boost_vehicle("svehboost", "Special: Boost", "Activates the boost on the player's vehicle. This may cause undefined behavior if the vehicle cannot boost", 0);
|
||||
vehicle_special_ability<3> g_special_shunt_left("sshuntleft", "Special: Shunt Left", "Shunts the player's vehicle to the left", 0);
|
||||
vehicle_special_ability<2> g_special_shunt_right("sshuntright", "Special: Shunt Right", "Shunts the player's vehicle to the right", 0);
|
||||
vehicle_special_ability<0> g_special_jump_vehicle("svehjump", "BACKEND_SPECIAL_ABILITY_JUMP", "BACKEND_SPECIAL_ABILITY_JUMP_DESC", 0);
|
||||
vehicle_special_ability<1> g_special_boost_vehicle("svehboost", "BACKEND_SPECIAL_ABILITY_BOOST", "BACKEND_SPECIAL_ABILITY_BOOST_DESC", 0);
|
||||
vehicle_special_ability<3> g_special_shunt_left("sshuntleft", "BACKEND_SPECIAL_ABILITY_LEFT", "BACKEND_SPECIAL_ABILITY_LEFT_DESC", 0);
|
||||
vehicle_special_ability<2> g_special_shunt_right("sshuntright", "BACKEND_SPECIAL_ABILITY_RIGHT", "BACKEND_SPECIAL_ABILITY_RIGHT_DESC", 0);
|
||||
}
|
@ -25,11 +25,11 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
g_notification_service->push_warning("Toxic", "Failed to take control of player vehicle.");
|
||||
g_notification_service->push_warning("TOXIC"_T.data(), "ERROR_FAILED_TO_TAKE_CONTROL"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
stop_vehicle g_stop_vehicle("stopveh", "Stop Vehicle", "Stops the player's vehicle", 0);
|
||||
stop_vehicle g_stop_vehicle("stopveh", "BACKEND_STOP_VEHICLE", "BACKEND_STOP_VEHICLE_DESC", 0);
|
||||
}
|
@ -18,5 +18,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
unlock_vehicle g_unlock_vehicle("unlockveh", "Unlock Vehicle Doors", "Unlocks all vehicle doors", 0);
|
||||
unlock_vehicle g_unlock_vehicle("unlockveh", "BACKEND_UNLOCK_DOORS", "BACKEND_UNLOCK_DOORS_DESC", 0);
|
||||
}
|
@ -26,5 +26,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
upgrade_vehicle g_upgrade_vehicle("upgradeveh", "Upgrade Vehicle", "Upgrades players vehicle", 0);
|
||||
upgrade_vehicle g_upgrade_vehicle("upgradeveh", "MAX_VEHICLE", "BACKEND_UPGRADE_VEHICLE_DESC", 0);
|
||||
}
|
@ -24,5 +24,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
black_tint g_black_tint("blacktint", "Black Window Tint", "Makes the player's vehicle windows black", 0);
|
||||
black_tint g_black_tint("blacktint", "WINDOW_TINT", "BACKEND_WINDOW_TINT_DESC", 0);
|
||||
}
|
@ -85,5 +85,5 @@ namespace big
|
||||
session::join_type(args.shift<eSessionType>());
|
||||
}
|
||||
};
|
||||
switch_session g_switch_session("joinsession", "Join Session", "Join a specific session type.", 1);
|
||||
switch_session g_switch_session("joinsession", "JOIN_SESSION", "BACKEND_SESSION_JOIN_SESSION_DESC", 1);
|
||||
}
|
@ -15,8 +15,8 @@ namespace big
|
||||
{
|
||||
player_mgr->RemovePlayer(plyr->get_net_game_player());
|
||||
}
|
||||
g_notification_service->push("Empty Session", "Completed");
|
||||
g_notification_service->push("EMPTY_SESSION"_T.data(), "BACKEND_WIPE_SESSION_COMPLETE"_T.data());
|
||||
}
|
||||
};
|
||||
empty_session g_empty_session("emptysession", "EMPTY_SESSION", "Removes everyone from the session", 0);
|
||||
empty_session g_empty_session("emptysession", "EMPTY_SESSION", "BACKEND_WIPE_SESSION_DESC", 0);
|
||||
}
|
@ -28,7 +28,7 @@ namespace big
|
||||
const auto hash = args.get<rage::joaat_t>(0);
|
||||
if (!STREAMING::IS_MODEL_IN_CDIMAGE(hash) || !STREAMING::IS_MODEL_A_VEHICLE(hash))
|
||||
{
|
||||
ctx->report_error("Specified model is invalid");
|
||||
ctx->report_error("BACKEND_SPAWN_VEHICLE_INVALID_MODEL"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ namespace big
|
||||
|
||||
if (veh == 0)
|
||||
{
|
||||
g_notification_service->push_error("Vehicle", "Unable to spawn vehicle");
|
||||
g_notification_service->push_error("GUI_TAB_SPAWN_VEHICLE"_T.data(), "UNABLE_TO_SPAWN_VEHICLE"_T.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -60,7 +60,7 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
spawn_vehicle g_spawn_vehicle("spawn", "Spawn Vehicle", "Spawn a vehicle with the specified model", 1);
|
||||
spawn_vehicle g_spawn_vehicle("spawn", "GUI_TAB_SPAWN_VEHICLE", "BACKEND_SPAWN_VEHICLE_DESC", 1);
|
||||
bool_command g_spawn_maxed("spawnmaxed", "SPAWN_MAXED", "SPAWN_MAXED_DESC",
|
||||
g.spawn_vehicle.spawn_maxed);
|
||||
bool_command g_spawn_inside("spawnin", "SPAWN_IN", "SPAWN_IN_DESC",
|
||||
|
@ -12,5 +12,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
fast_quit g_fast_quit("fastquit", "Rage Quit", "We all have bad times sometimes. Close your GTA instant.", 0);
|
||||
fast_quit g_fast_quit("fastquit", "VIEW_HOTKEY_SETTINGS_RAGE_QUIT", "BACKEND_FAST_QUIT_DESC", 0);
|
||||
}
|
||||
|
@ -25,6 +25,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
window_hook g_window_hook("windowhook", "GTA Window Hook", "Only enable this if you know what you are doing, this will prevent AHK scripts from working.",
|
||||
g.debug.window_hook);
|
||||
window_hook g_window_hook("windowhook", "BACKEND_GTA_WINDOW_HOOK", "BACKEND_GTA_WINDOW_HOOK_DESC", g.debug.window_hook);
|
||||
}
|
||||
|
@ -16,5 +16,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
bring_personal_vehicle g_bring_personal_vehicle("bringpv", "Bring Personal Vehicle", "Teleports your PV near you", 0);
|
||||
bring_personal_vehicle g_bring_personal_vehicle("bringpv", "BRING_PV", "BACKEND_BRING_PERSONAL_VEHICLE_DESC", 0);
|
||||
}
|
@ -14,5 +14,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
teleport_to_highlighted_blip g_teleport_to_highlighted_blip("highlighttp", "Teleport to Selected Blip", "Teleports you to whichever blip you have in your crosshairs on the map.", 0);
|
||||
teleport_to_highlighted_blip g_teleport_to_highlighted_blip("highlighttp", "VIEW_HOTKEY_SETTINGS_TELEPORT_TO_SELECTED", "BACKEND_TELEPORT_TO_HIGHLIGHTED_BLIP_DESC", 0);
|
||||
}
|
@ -18,5 +18,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
teleport_to_last_vehicle g_teleport_to_last_vehicle("lastvehtp", "Teleport To Last Vehicle", "Teleports you into your last driven vehicle", 0);
|
||||
teleport_to_last_vehicle g_teleport_to_last_vehicle("lastvehtp", "BACKEND_TELEPORT_TO_LAST_VEHICLE", "BACKEND_TELEPORT_TO_LAST_VEHICLE_DESC", 0);
|
||||
}
|
@ -14,5 +14,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
teleport_to_objective g_teleport_to_objective("objectivetp", "Teleport To Objective", "Teleports you to your mission objective", 0);
|
||||
teleport_to_objective g_teleport_to_objective("objectivetp", "VIEW_HOTKEY_SETTINGS_TELEPORT_TO_OBJECTIVE", "BACKEND_TELEPORT_TO_OBJECTIVE_DESC", 0);
|
||||
}
|
@ -16,5 +16,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
teleport_to_personal_vehicle g_teleport_to_personal_vehicle("pvtp", "Teleport To Personal Vehicle", "Teleports you into your PV", 0);
|
||||
teleport_to_personal_vehicle g_teleport_to_personal_vehicle("pvtp", "TP_IN_PV", "BACKEND_TELEPORT_TO_PERSONAL_VEHICLE", 0);
|
||||
}
|
@ -14,5 +14,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
teleport_to_waypoint g_teleport_to_waypoint("waypointtp", "Teleport To Waypoint", "Teleports you to your waypoint", 0);
|
||||
teleport_to_waypoint g_teleport_to_waypoint("waypointtp", "VIEW_HOTKEY_SETTINGS_TELEPORT_TO_WAYPOINT", "BACKEND_TELEPORT_TO_WAYPOINT_DESC", 0);
|
||||
}
|
@ -14,11 +14,11 @@ namespace big
|
||||
|
||||
void default_command_context::report_output(const std::string& output) const
|
||||
{
|
||||
g_notification_service->push("Command", output);
|
||||
g_notification_service->push("BACKEND_COMMAND"_T.data(), output);
|
||||
}
|
||||
|
||||
void default_command_context::report_error(const std::string& error) const
|
||||
{
|
||||
g_notification_service->push_error("Command", error);
|
||||
g_notification_service->push_error("BACKEND_COMMAND"_T.data(), error);
|
||||
}
|
||||
}
|
@ -11,7 +11,29 @@
|
||||
namespace big
|
||||
{
|
||||
static float old_percent = NAN;
|
||||
constexpr char transition_states[][48] = {"TRANSITION_STATE_EMPTY", "Singleplayer Swoop Up", "Multiplayer Swoop Up", "Creator Swoop Up", "Pre-HUD Checks", "Wait HUD Exit", "Wait For Summon", "Singleplayer Swoop Down", "Multiplayer Swoop Down", "Cancel Joining", "Retry Loading", "Retry Loading Slot 1", "Retry Loading Slot 2", "Retry Loading Slot 3", "Retry Loading Slot 4", "Wait On Invite", "Prejoining Freemode Session Checks", "Look For Fresh Join Freemode", "Look To Join Another Session Freemode", "Confirm Freemode Session Joining", "Wait Join Freemode Session", "Creation Enter Session", "Pre-Freemode Launch Script", "Freemode Teamfull Check", "Start Freemode Launch Script", "Freemode Transition Create Player", "Is Freemode And Transition Ready", "Freemode Swoop Down", "Post Bink Video Warp", "Freemode Final Setup Player", "Move Freemode To Running State", "Freemode How To Terminate", "Start Creator Pre-Launch Script Check", "Start Creator Launch Script", "Creator Transition Create Player", "Is Creator And Transition Ready", "Creator Swoop Down", "Creator Final Setup Player", "Move Creator To Running State", "Prejoining Testbed Session Checks", "Look For Fresh Join Testbed", "Look For Fresh Host Testbed", "Look To Join Another Session Testbed", "Look To Host Session Testbed", "Confirm Testbed Session Joining", "Wait Join Testbed Session", "Start Testbed Launch Script", "Testbed Transition Create Player", "Is Testbed And Transition Ready", "Testbed Swoop Down", "Testbed Final Setup Player", "Move Testbed To Running State", "Testbed How To Terminate", "Quit Current Session Prompt", "Wait For Transition Session To Setup", "Terminate Singleplayer", "Wait Terminate Singleplayer", "Kick Terminate Session", "Terminate Session", "Wait Terminate Session", "Terminate Session And Hold", "Terminate Session And Move Into Holding State", "Team Swapping Checks", "Return To Singleplayer", "Wait For Singleplayer To Start", "Waiting For External Termination Call", "Terminate Maintransition", "Wait For Dirty Load Confirm", "DLC Intro Bink", "Spawn Into Personal Vehicle"};
|
||||
const std::vector<std::string_view> transition_states =
|
||||
{ "TRANSITION_STATE_EMPTY"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_SINGLEPLAYER_SWOOP_UP"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_MULTIPLAYER_SWOOP_UP"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_CREATOR_SWOOP_UP"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_PRE_HUD_CHECKS"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_HUD_EXIT"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_FOR_SUMMON"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_SINGLEPLAYER_SWOOP_DOWN"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_MULTIPLAYER_SWOOP_DOWN"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_CANCEL_JOINING"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_RETRY_LOADING"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_RETRY_LOADING_SLOT_1"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_RETRY_LOADING_SLOT_2"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_RETRY_LOADING_SLOT_3"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_RETRY_LOADING_SLOT_4"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_ON_INVITE"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_PREJOINING_FREEMODE_SESSION_CHECKS"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_FREEMODE"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_FREEMODE"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_CONFIRM_FREEMODE_SESSION_JOINING"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_JOIN_FREEMODE_SESSION"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_CREATION_ENTER_SESSION"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_PRE_FREEMODE_LAUNCH_SCRIPT"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_FREEMODE_TEAMFULL_CHECK"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_START_FREEMODE_LAUNCH_SCRIPT"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_FREEMODE_TRANSITION_CREATE_PLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_IS_FREEMODE_AND_TRANSITION_READY"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_FREEMODE_SWOOP_DOWN"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_POST_BINK_VIDEO_WARP"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_FREEMODE_FINAL_SETUP_PLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_MOVE_FREEMODE_TO_RUNNING_STATE"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_FREEMODE_HOW_TO_TERMINATE"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_START_CREATOR_PRE_LAUNCH_SCRIPT_CHECK"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_START_CREATOR_LAUNCH_SCRIPT"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_CREATOR_TRANSITION_CREATE_PLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_IS_CREATOR_AND_TRANSITION_READY"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_CREATOR_SWOOP_DOWN"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_CREATOR_FINAL_SETUP_PLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_MOVE_CREATOR_TO_RUNNING_STATE"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_PREJOINING_TESTBED_SESSION_CHECKS"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_TESTBED"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_LOOK_FOR_FRESH_HOST_TESTBED"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_TESTBED"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_LOOK_TO_HOST_SESSION_TESTBED"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_CONFIRM_TESTBED_SESSION_JOINING"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_JOIN_TESTBED_SESSION"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_START_TESTBED_LAUNCH_SCRIPT"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_TESTBED_TRANSITION_CREATE_PLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_IS_TESTBED_AND_TRANSITION_READY"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_TESTBED_SWOOP_DOWN"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_TESTBED_FINAL_SETUP_PLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_MOVE_TESTBED_TO_RUNNING_STATE"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_TESTBED_HOW_TO_TERMINATE"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_QUIT_CURRENT_SESSION_PROMPT"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_FOR_TRANSITION_SESSION_TO_SETUP"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_TERMINATE_SINGLEPLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_TERMINATE_SINGLEPLAYER"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_KICK_TERMINATE_SESSION"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_TERMINATE_SESSION"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_TERMINATE_SESSION"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_TERMINATE_SESSION_AND_HOLD"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_TERMINATE_SESSION_AND_MOVE_INTO_HOLDING_STATE"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_TEAM_SWAPPING_CHECKS"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_RETURN_TO_SINGLEPLAYER"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_FOR_SINGLEPLAYER_TO_START"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_TERMINATE_MAINTRANSITION"_T,
|
||||
"BACKEND_LOOPED_HUD_TRANSITION_STATE_WAIT_FOR_DIRTY_LOAD_CONFIRM"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_DLC_INTRO_BINK"_T, "BACKEND_LOOPED_HUD_TRANSITION_STATE_SPAWN_INTO_PERSONAL_VEHICLE"_T};
|
||||
|
||||
eTransitionState last_state = eTransitionState::TRANSITION_STATE_EMPTY;
|
||||
void looped::hud_transition_state()
|
||||
@ -37,7 +59,7 @@ namespace big
|
||||
HUD::BUSYSPINNER_OFF();
|
||||
}
|
||||
|
||||
if ((int)state > 0 && (int)state < std::size(transition_states))
|
||||
if ((int)state > 0 && (int)state < transition_states.size())
|
||||
{
|
||||
rage::scrThread* freemode{};
|
||||
if (state == eTransitionState::TRANSITION_STATE_FM_TRANSITION_CREATE_PLAYER
|
||||
@ -59,8 +81,7 @@ namespace big
|
||||
if (percent != old_percent)
|
||||
{
|
||||
HUD::BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("STRING");
|
||||
HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(
|
||||
std::format("Wait For Host Broadcast Data: {}%", (percent)).c_str());
|
||||
HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(std::format("{}: {}%", "BACKEND_LOOPED_HUD_TRANSITION_STATE_WAITING_FOR_HOST_BROADCAST_DATA"_T, percent).c_str());
|
||||
HUD::END_TEXT_COMMAND_BUSYSPINNER_ON(5);
|
||||
}
|
||||
|
||||
@ -70,7 +91,7 @@ namespace big
|
||||
{
|
||||
old_percent = NAN;
|
||||
HUD::BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("STRING");
|
||||
HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(transition_states[(int)state]);
|
||||
HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(transition_states[(int)state].data());
|
||||
HUD::END_TEXT_COMMAND_BUSYSPINNER_ON(5);
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,6 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
off_radar g_off_radar("otr", "OFF_RADAR", "OFF_RADAR_DESC", g.self.off_radar);
|
||||
off_radar g_off_radar("otr", "OFF_THE_RADAR", "OFF_RADAR_DESC", g.self.off_radar);
|
||||
bool_command ghost_org("ghostorg", "GHOST_ORG", "GHOST_ORG_DESC", g.self.ghost_org);
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ namespace big
|
||||
{
|
||||
on_disable();
|
||||
g.self.passive = false;
|
||||
g_notification_service->push_warning("Disabled passive mode", "Disabled passive mode because you started mission / joined CEO/MC");
|
||||
g_notification_service->push_warning("PASSIVE"_T.data(), "BACKEND_LOOPED_SELF_TOGGLE_PASSIVE_DISABLED_PASSIVE_MODE_MESSAGE"_T.data());
|
||||
return;
|
||||
}
|
||||
*g_tunables_service->get_tunable<int*>(-29732167) = 0; // End Passive Time = 0s
|
||||
|
@ -14,6 +14,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
auto_tp_to_waypoint g_auto_tp_to_waypoint("autotptowp", "Auto-Teleport To Waypoint", "Automatically teleports you to a waypoint as soon as you set one",
|
||||
g.self.auto_tp);
|
||||
auto_tp_to_waypoint g_auto_tp_to_waypoint("autotptowp", "BACKEND_LOOPED_AUTO_TP_TO_WAYPOINT", "BACKEND_LOOPED_AUTO_TP_TO_WAYPOINT_DESC", g.self.auto_tp);
|
||||
}
|
||||
|
@ -27,6 +27,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
voice_chat_audio g_voice_chat_audio("vcaudio", "Play Audio Through Voice Chat", "Plays the audio.wav file in the project folder through voice chat. The wave file must be encoded with a mono 16 bit 16kHz PCM format. You have to reset voice chat settings whenever you load the menu for the sound to play",
|
||||
g.spoofing.voice_chat_audio);
|
||||
voice_chat_audio g_voice_chat_audio("vcaudio", "BACKEND_LOOPED_SYSTEM_VOICE_CHAT_AUDIO", "BACKEND_LOOPED_SYSTEM_VOICE_CHAT_AUDIO_DESC", g.spoofing.voice_chat_audio);
|
||||
}
|
||||
|
@ -55,5 +55,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
no_idle_kick g_no_idle_kick("noidlekick", "NO_IDLE_KICK", "Prevents you from being kicked while idling.", g.tunables.no_idle_kick);
|
||||
no_idle_kick g_no_idle_kick("noidlekick", "NO_IDLE_KICK", "NO_IDLE_KICK_DESC", g.tunables.no_idle_kick);
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ namespace big
|
||||
{
|
||||
current_destination = AutoDriveDestination::STOPPED;
|
||||
changing_driving_styles = false;
|
||||
g_notification_service->push_warning("Warning", "Please be in a car first then try again.");
|
||||
g_notification_service->push_warning("AUTO_DRIVE"_T.data(), "PLAYER_INFO_NO_VEHICLE"_T.data());
|
||||
}
|
||||
else if (current_driving_flag != driving_style_flags[g.vehicle.auto_drive_style] || current_speed != g.vehicle.auto_drive_speed)
|
||||
{
|
||||
@ -77,11 +77,11 @@ namespace big
|
||||
|
||||
if (to_waypoint && !does_waypoint_exist)
|
||||
{
|
||||
g_notification_service->push_warning("Warning", "No Waypoint found please set one first.");
|
||||
g_notification_service->push_warning("AUTO_DRIVE"_T.data(), "TELEPORT_NO_WAYPOINT_SET"_T.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
g_notification_service->push_warning("Warning", "Auto Drive Stopped");
|
||||
g_notification_service->push_warning("AUTO_DRIVE"_T.data(), "BACKEND_LOOPED_VEHICLE_AUTO_DRIVE_STOPPED"_T.data());
|
||||
}
|
||||
|
||||
started = false;
|
||||
|
@ -68,15 +68,9 @@ namespace big
|
||||
}
|
||||
}
|
||||
|
||||
bool_command g_rainbow_paint_primary("rainbowpri", "Rainbow Paint: Apply to Primary", "Applies active rainbow effect to the current vehicle's primary color",
|
||||
g.vehicle.rainbow_paint.primary);
|
||||
bool_command g_rainbow_paint_secondary("rainbowsec", "Rainbow Paint: Apply to Secondary", "Applies active rainbow effect to the current vehicle's secondary color",
|
||||
g.vehicle.rainbow_paint.secondary);
|
||||
bool_command g_rainbow_paint_neon("rainbowneons", "Rainbow Paint: Apply to Neons", "Applies active rainbow effect to the current vehicle's neon color",
|
||||
g.vehicle.rainbow_paint.neon);
|
||||
bool_command g_rainbow_paint_smoke("rainbowsmoke", "Rainbow Paint: Apply to Tire Smoke", "Applies active rainbow effect to the current vehicle's tire smoke color",
|
||||
g.vehicle.rainbow_paint.smoke);
|
||||
int_command g_rainbow_paint_speed("rainbowspeed", "Rainbow Paint: Speed", "Speed of the rainbow paint effect",
|
||||
g.vehicle.rainbow_paint.speed, 1, 10);
|
||||
|
||||
bool_command g_rainbow_paint_primary("rainbowpri", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_PRIMARY", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_PRIMARY_DESC", g.vehicle.rainbow_paint.primary);
|
||||
bool_command g_rainbow_paint_secondary("rainbowsec", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SECONDARY", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SECONDARY_DESC", g.vehicle.rainbow_paint.secondary);
|
||||
bool_command g_rainbow_paint_neon("rainbowneons", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_NEONS", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_NEONS_DESC", g.vehicle.rainbow_paint.neon);
|
||||
bool_command g_rainbow_paint_smoke("rainbowsmoke", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_TIRE", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_TIRE_DESC", g.vehicle.rainbow_paint.smoke);
|
||||
int_command g_rainbow_paint_speed("rainbowspeed", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SPEED", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SPEED_DESC", g.vehicle.rainbow_paint.speed, 1, 10);
|
||||
}
|
@ -61,10 +61,7 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
speedo_meter
|
||||
g_speedo_meter("speedometer", "SPEEDO_METER", "SPEEDO_METER_DESC", g.vehicle.speedo_meter.enabled);
|
||||
bool_command g_speedo_meter_gears("speedometergears", "Show current gear", "Adds the current gear the vehicle is in to the speedo meter.",
|
||||
g.vehicle.speedo_meter.show_current_gear);
|
||||
bool_command g_speedo_meter_left_side("speedometerleftside", "Align to left", "Aligns the speedo meter text to the left instead of to the right.",
|
||||
g.vehicle.speedo_meter.left_side);
|
||||
speedo_meter g_speedo_meter("speedometer", "SPEEDO_METER", "SPEEDO_METER_DESC", g.vehicle.speedo_meter.enabled);
|
||||
bool_command g_speedo_meter_gears("speedometergears", "BACKEND_LOOPED_VEHICLE_SPEEDO_METER_SHOW_CURRENT_GEAR", "BACKEND_LOOPED_VEHICLE_SPEEDO_METER_SHOW_CURRENT_GEAR_DESC", g.vehicle.speedo_meter.show_current_gear);
|
||||
bool_command g_speedo_meter_left_side("speedometerleftside", "BACKEND_LOOPED_VEHICLE_SPEEDO_METER_ALIGN_TO_LEFT", "BACKEND_LOOPED_VEHICLE_SPEEDO_METER_ALIGN_TO_LEFT_DESC", g.vehicle.speedo_meter.left_side);
|
||||
}
|
@ -111,7 +111,7 @@ namespace big
|
||||
|
||||
virtual void on_enable() override
|
||||
{
|
||||
g_notification_service->push("Instructions", "Manual: J = Left, L = Right, K = Toggle Hazzards");
|
||||
g_notification_service->push("TURN_SIGNALS"_T.data(), "BACKEND_LOOPED_VEHICLE_TURN_SIGNALS_HELP"_T.data());
|
||||
}
|
||||
|
||||
virtual void on_tick() override
|
||||
|
@ -143,11 +143,10 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
aimbot g_aimbot("aimbot", "Aimbot", "Lock on and kill", g.weapons.aimbot.enable);
|
||||
bool_command g_smoothing("smoothing", "Smoothing", "Controls the snappiness of your lock on", g.weapons.aimbot.smoothing);
|
||||
bool_command g_aimbot_on_player("aimatplayer", "Player", "If you suck at PVP, this is for you", g.weapons.aimbot.on_player);
|
||||
bool_command g_aimbot_on_npc("aimatnpc", "NPC", "Generally kills normal NPCs", g.weapons.aimbot.on_npc);
|
||||
bool_command g_aimbot_on_police("aimatpolice", "Police", "Locks onto cops to kill", g.weapons.aimbot.on_police);
|
||||
bool_command
|
||||
g_aimbot_on_enemy("aimatenemy", "Enemy", "Eliminate your enemies, and win your missions", g.weapons.aimbot.on_enemy);
|
||||
aimbot g_aimbot("aimbot", "VIEW_OVERLAY_AIMBOT", "BACKEND_LOOPED_WEAPONS_AIMBOT_DESC", g.weapons.aimbot.enable);
|
||||
bool_command g_smoothing("smoothing", "BACKEND_LOOPED_WEAPONS_SMOOTHING", "BACKEND_LOOPED_WEAPONS_SMOOTHING_DESC", g.weapons.aimbot.smoothing);
|
||||
bool_command g_aimbot_on_player("aimatplayer", "PLAYER", "BACKEND_LOOPED_WEAPONS_AIM_AT_PLAYER_DESC", g.weapons.aimbot.on_player);
|
||||
bool_command g_aimbot_on_npc("aimatnpc", "NPC", "BACKEND_LOOPED_WEAPONS_AIM_AT_NPC_DESC", g.weapons.aimbot.on_npc);
|
||||
bool_command g_aimbot_on_police("aimatpolice", "POLICE", "BACKEND_LOOPED_WEAPONS_AIM_AT_POLICE_DESC", g.weapons.aimbot.on_police);
|
||||
bool_command g_aimbot_on_enemy("aimatenemy", "BACKEND_LOOPED_WEAPONS_AIM_AT_ENEMY", "BACKEND_LOOPED_WEAPONS_AIM_AT_ENEMY_DESC", g.weapons.aimbot.on_enemy);
|
||||
}
|
||||
|
@ -17,5 +17,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
always_full_ammo g_always_full_ammo("alwaysfullammo", "Always Full Ammo", "Refills your ammo every tick", g.weapons.always_full_ammo);
|
||||
always_full_ammo g_always_full_ammo("alwaysfullammo", "BACKEND_LOOPED_WEAPONS_ALWAYS_FULL_AMMO", "BACKEND_LOOPED_WEAPONS_ALWAYS_FULL_AMMO_DESC", g.weapons.always_full_ammo);
|
||||
}
|
@ -23,7 +23,9 @@ namespace big
|
||||
}
|
||||
}
|
||||
else
|
||||
g_notification_service->push_error("Weapons", "No entity found.");
|
||||
{
|
||||
g_notification_service->push_error("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_CAGE_GUN_NO_ENTITY_FOUND"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ namespace big
|
||||
{
|
||||
if (ENTITY::IS_ENTITY_A_PED(entity) && PED::IS_PED_A_PLAYER(entity))
|
||||
{
|
||||
g_notification_service->push_error("Weapons", "You can't delete player entities!");
|
||||
g_notification_service->push_error("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_DELETE_GUN_PLAYER"_T.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -29,7 +29,7 @@ namespace big
|
||||
|
||||
if (dist > 500)
|
||||
{
|
||||
g_notification_service->push_error("Weapons", "Entity is too far.");
|
||||
g_notification_service->push_error("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_DELETE_GUN_TOO_FAR"_T.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -38,12 +38,14 @@ namespace big
|
||||
entity::delete_entity(entity);
|
||||
}
|
||||
else
|
||||
g_notification_service->push_error("Weapons", "Failed to take control of entity.");
|
||||
g_notification_service->push_error("CUSTOM_WEAPONS"_T.data(), "TELEPORT_FAILED_TO_TAKE_CONTROL"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
g_notification_service->push_error("Weapons", "No entity found.");
|
||||
{
|
||||
g_notification_service->push_error("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_CAGE_GUN_NO_ENTITY_FOUND"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ namespace big
|
||||
{
|
||||
if (ENTITY::IS_ENTITY_A_PED(ent_to_add) && PED::IS_PED_A_PLAYER(ent_to_add))
|
||||
{
|
||||
g_notification_service->push_warning("Weapons", "You can't move player entities!");
|
||||
g_notification_service->push_warning("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_GRAVITY_GUN_PLAYER"_T.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -79,7 +79,7 @@ namespace big
|
||||
|
||||
if (temp_dist > 500)
|
||||
{
|
||||
g_notification_service->push_warning("Weapons", "Entity is too far.");
|
||||
g_notification_service->push_warning("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_DELETE_GUN_TOO_FAR"_T.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -87,7 +87,7 @@ namespace big
|
||||
{
|
||||
TASK::SET_HIGH_FALL_TASK(ent_to_add, 0, 0, 0);
|
||||
|
||||
g_notification_service->push_warning("Weapons", "Selected entity at crosshair.");
|
||||
g_notification_service->push_warning("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_GRAVITY_GUN_SET"_T.data());
|
||||
}
|
||||
|
||||
ents.push_back(ent_to_add);
|
||||
@ -121,7 +121,7 @@ namespace big
|
||||
|
||||
ents.clear();
|
||||
|
||||
g_notification_service->push_success("Weapons", "Released entity.");
|
||||
g_notification_service->push_success("CUSTOM_WEAPONS"_T.data(), "BACKEND_LOOPED_WEAPONS_GRAVITY_GUN_UNSET"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,5 +34,5 @@ namespace big
|
||||
};
|
||||
|
||||
increased_damage
|
||||
g_increased_damage("incrdamage", "Damage Override", "Sets your damage to whatever you want", g.weapons.increase_damage);
|
||||
g_increased_damage("incrdamage", "BACKEND_LOOPED_WEAPONS_INCREASE_DAMAGE", "BACKEND_LOOPED_WEAPONS_INCREASE_DAMAGE_DESC", g.weapons.increase_damage);
|
||||
}
|
||||
|
@ -18,5 +18,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
infinite_ammo g_infinite_ammo("infammo", "Infinite Ammo", "Never run out of ammo again", g.weapons.infinite_ammo);
|
||||
infinite_ammo g_infinite_ammo("infammo", "VIEW_OVERLAY_INFINITE_AMMO", "", g.weapons.infinite_ammo);
|
||||
}
|
@ -21,5 +21,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
infinite_mag g_infinite_mag("infclip", "Infinite Clip", "Shoot forever without needing to reload", g.weapons.infinite_mag);
|
||||
infinite_mag g_infinite_mag("infclip", "VIEW_OVERLAY_INFINITE_MAGAZINE", "BACKEND_LOOPED_WEAPONS_INFINITE_MAG_DESC", g.weapons.infinite_mag);
|
||||
}
|
||||
|
@ -46,5 +46,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
infinite_range g_infinite_range("infrange", "Infinite Range", "Kill anything at any distance", g.weapons.infinite_range);
|
||||
infinite_range g_infinite_range("infrange", "BACKEND_LOOPED_WEAPONS_INFINITE_RANGE", "BACKEND_LOOPED_WEAPONS_INFINITE_RANGE_DESC", g.weapons.infinite_range);
|
||||
}
|
@ -54,5 +54,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
no_recoil g_no_recoil("norecoil", "No Recoil", "Removes weapon recoil when shooting", g.weapons.no_recoil);
|
||||
no_recoil g_no_recoil("norecoil", "BACKEND_LOOPED_WEAPONS_NO_RECOIL", "BACKEND_LOOPED_WEAPONS_NO_RECOIL_DESC", g.weapons.no_recoil);
|
||||
}
|
||||
|
@ -47,5 +47,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
no_spread g_no_spread("nospread", "No Spread", "Removes weapon spread when shooting", g.weapons.no_spread);
|
||||
no_spread g_no_spread("nospread", "BACKEND_LOOPED_WEAPONS_NO_SPREAD", "BACKEND_LOOPED_WEAPONS_NO_SPREAD_DESC", g.weapons.no_spread);
|
||||
}
|
||||
|
@ -62,5 +62,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
rapid_fire g_rapid_fire("rapidfire", "Rapid Fire", "Makes your weapon fire insanely fast", g.weapons.rapid_fire);
|
||||
rapid_fire g_rapid_fire("rapidfire", "BACKEND_LOOPED_WEAPONS_RAPID_FIRE", "BACKEND_LOOPED_WEAPONS_RAPID_FIRE_DESC", g.weapons.rapid_fire);
|
||||
}
|
||||
|
@ -24,11 +24,13 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
g_notification_service->push_warning("Weapons", "Entity is not a vehicle.");
|
||||
g_notification_service->push_warning("BACKEND_LOOPED_WEAPONS_REPAIR_GUN"_T.data(), "VEHICLE_INVALID"_T.data());
|
||||
}
|
||||
}
|
||||
else
|
||||
g_notification_service->push_warning("Weapons", "No entity found.");
|
||||
{
|
||||
g_notification_service->push_warning("BACKEND_LOOPED_WEAPONS_REPAIR_GUN"_T.data(), "BACKEND_LOOPED_WEAPONS_CAGE_GUN_NO_ENTITY_FOUND"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,10 +30,14 @@ namespace big
|
||||
PED::SET_PED_INTO_VEHICLE(self::ped, ent, -1);
|
||||
}
|
||||
else
|
||||
g_notification_service->push_warning("Weapons", "Entity is not a vehicle.");
|
||||
{
|
||||
g_notification_service->push_warning("BACKEND_LOOPED_WEAPONS_STEAL_VEHICLE_GUN"_T.data(), "VEHICLE_INVALID"_T.data());
|
||||
}
|
||||
}
|
||||
else
|
||||
g_notification_service->push_warning("Weapons", "No entity found.");
|
||||
{
|
||||
g_notification_service->push_warning("BACKEND_LOOPED_WEAPONS_STEAL_VEHICLE_GUN"_T.data(), "BACKEND_LOOPED_WEAPONS_CAGE_GUN_NO_ENTITY_FOUND"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,13 +18,13 @@ namespace big
|
||||
{
|
||||
if (ENTITY::IS_ENTITY_A_PED(crosshair_catch) && !ENTITY::IS_ENTITY_DEAD(crosshair_catch, 0))
|
||||
{
|
||||
Vector3 coords = ENTITY::GET_ENTITY_COORDS(crosshair_catch, 1);
|
||||
Vector3 coords = ENTITY::GET_ENTITY_BONE_POSTION(crosshair_catch, 0x796E); //SKEL_Head (This will fix the edge case of peds in cars)
|
||||
PED::SET_PED_SHOOTS_AT_COORD(self::ped, coords.x, coords.y, coords.z, true);
|
||||
}// Add check for vehicles, currently only shoots peds not in vehicles
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
triggerbot g_triggerbot("triggerbot", "Triggerbot", "Shoots at a ped with fast ease", g.weapons.triggerbot);
|
||||
triggerbot g_triggerbot("triggerbot", "VIEW_OVERLAY_TRIGGERBOT", "BACKEND_LOOPED_WEAPONS_TRIGGERBOT_DESC", g.weapons.triggerbot);
|
||||
}
|
||||
|
@ -63,10 +63,7 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
blackhole g_blackhole("blackhole", "Blackhole", "Spawns a blackhole that picks up all the peds and vehicles in your area",
|
||||
g.world.blackhole.enable);
|
||||
bool_command g_blackhole_peds("blackholeincpeds", "Peds", "Includes all nearby peds in the blackhole's path of destruction",
|
||||
g.world.blackhole.include_peds);
|
||||
bool_command g_blackhole_vehicles("blackholeincvehs", "Vehicles", "Includes all nearby vehicles in the blackhole's path of destruction",
|
||||
g.world.blackhole.include_vehicles);
|
||||
blackhole g_blackhole("blackhole", "GUI_TAB_BLACKHOLE", "BACKEND_LOOPED_WORLD_BLACKHOLE_DESC", g.world.blackhole.enable);
|
||||
bool_command g_blackhole_peds("blackholeincpeds", "PEDS", "BACKEND_LOOPED_WORLD_BLACKHOLE_PEDS_DESC", g.world.blackhole.include_peds);
|
||||
bool_command g_blackhole_vehicles("blackholeincvehs", "VEHICLES", "BACKEND_LOOPED_WORLD_BLACKHOLE_VEHS_DESC", g.world.blackhole.include_vehicles);
|
||||
}
|
@ -24,6 +24,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
blackout g_blackout("blackout", "Blackout", "Enables blackout mode. This is local and cannot be seen by other players",
|
||||
g.world.blackout);
|
||||
blackout g_blackout("blackout", "BACKEND_LOOPED_WORLD_BLACKOUT", "BACKEND_LOOPED_WORLD_BLACKOUT_DESC", g.world.blackout);
|
||||
}
|
@ -38,5 +38,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
auto_disarm g_auto_disarm("autodisarm", "Auto Disarm", "Disarm nearby pedestrians", g.world.nearby.auto_disarm.enable);
|
||||
auto_disarm g_auto_disarm("autodisarm", "BACKEND_LOOPED_WORLD_NEARBY_AUTO_DISARM", "BACKEND_LOOPED_WORLD_NEARBY_AUTO_DISARM_DESC", g.world.nearby.auto_disarm.enable);
|
||||
}
|
||||
|
@ -21,6 +21,6 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
high_alert g_high_alert("highalert", "High Alert", "Not the CoD perk", g.world.nearby.high_alert);
|
||||
high_alert g_high_alert("highalert", "BACKEND_LOOPED_WORLD_NEARBY_HIGH_ALERT", "BACKEND_LOOPED_WORLD_NEARBY_HIGH_ALERT_DESC", g.world.nearby.high_alert);
|
||||
|
||||
}
|
@ -12,8 +12,8 @@ namespace big
|
||||
|
||||
virtual void on_enable() override //should help for any stragglers that aren't set by the tick (aka current event)
|
||||
{
|
||||
PLAYER::SET_EVERYONE_IGNORE_PLAYER(self::id, true);
|
||||
PLAYER::SET_POLICE_IGNORE_PLAYER(self::id, true);
|
||||
PLAYER::SET_EVERYONE_IGNORE_PLAYER(self::id, TRUE);
|
||||
PLAYER::SET_POLICE_IGNORE_PLAYER(self::id, TRUE);
|
||||
}
|
||||
|
||||
virtual void on_tick() override
|
||||
@ -30,12 +30,10 @@ namespace big
|
||||
|
||||
virtual void on_disable() override
|
||||
{
|
||||
PLAYER::SET_EVERYONE_IGNORE_PLAYER(self::id, false);
|
||||
PLAYER::SET_POLICE_IGNORE_PLAYER(self::id, false);
|
||||
PLAYER::SET_EVERYONE_IGNORE_PLAYER(self::id, FALSE);
|
||||
PLAYER::SET_POLICE_IGNORE_PLAYER(self::id, FALSE);
|
||||
}
|
||||
};
|
||||
|
||||
ignore g_ignore("pedsignore", "Ignore", "Nearby peds will ignore you and become oblivious to your actions",
|
||||
g.world.nearby.ignore);
|
||||
|
||||
ignore g_ignore("pedsignore", "BACKEND_LOOPED_WORLD_IGNORE", "BACKEND_LOOPED_WORLD_IGNORE_DESC", g.world.nearby.ignore);
|
||||
}
|
@ -27,6 +27,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
ped_rush g_ped_rush("pedrush", "Ped Rush", "Makes the nearby peds move with a purpose", g.world.nearby.ped_rush);
|
||||
|
||||
ped_rush g_ped_rush("pedrush", "BACKEND_LOOPED_WORLD_PED_RUSH", "BACKEND_LOOPED_WORLD_PED_RUSH_DESC", g.world.nearby.ped_rush);
|
||||
}
|
@ -26,6 +26,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
ped_rain g_ped_rain("pedrain", "Rain Peds", "Will pour down and rain nearby peds", g.world.nearby.ped_rain);
|
||||
|
||||
ped_rain g_ped_rain("pedrain", "BACKEND_LOOPED_WORLD_RAIN_PEDS", "BACKEND_LOOPED_WORLD_RAIN_PEDS_DESC", g.world.nearby.ped_rain);
|
||||
}
|
@ -30,7 +30,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
vehicle_rain g_vehicle_rain("vehiclerain", "Rain Vehicles", "Drops surrounding vehicles, vehicles can hit and kill you!",
|
||||
g.world.nearby.veh_rain);
|
||||
|
||||
vehicle_rain g_vehicle_rain("vehiclerain", "Rain Vehicles", "BACKEND_LOOPED_WORLD_RAIN_VEHICLES_DESC",g.world.nearby.veh_rain);
|
||||
}
|
@ -23,6 +23,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
time_override g_time_override("timeoverride", "Override Time", "Overrides current time. This is local and cannot be seen by other players",
|
||||
g.world.custom_time.override_time);
|
||||
time_override g_time_override("timeoverride", "BACKEND_LOOPED_WORLD_OVERRIDE_TIME", "BACKEND_LOOPED_WORLD_OVERRIDE_TIME_DESC", g.world.custom_time.override_time);
|
||||
}
|
@ -37,6 +37,5 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
weather_override g_weather_override("weatheroverride", "Override Weather", "Overrides current weather. This is local and cannot be seen by other players",
|
||||
g.world.override_weather);
|
||||
weather_override g_weather_override("weatheroverride", "BACKEND_LOOPED_WORLD_OVERRIDE_WEATHER", "BACKEND_LOOPED_WORLD_OVERRIDE_WEATHER_DESC", g.world.override_weather);
|
||||
}
|
@ -43,7 +43,7 @@ namespace big
|
||||
{
|
||||
char notification[500]{};// I don't like using sprintf but there isn't an alternative afaik
|
||||
snprintf(notification, sizeof(notification), m_notify_message, attacker->get_name(), victim->get_name());
|
||||
g_notification_service->push_warning("Protections", notification);
|
||||
g_notification_service->push_warning("PROTECTIONS"_T.data(), notification);
|
||||
}
|
||||
|
||||
process_common(attacker);
|
||||
|
@ -80,7 +80,7 @@ namespace big
|
||||
{
|
||||
char notification[500]{}; // I don't like using sprintf but there isn't an alternative afaik
|
||||
snprintf(notification, sizeof(notification), m_notify_message, player->get_name());
|
||||
g_notification_service->push_warning("Protections", notification);
|
||||
g_notification_service->push_warning("PROTECTIONS"_T.data(), notification);
|
||||
}
|
||||
|
||||
process_common(player);
|
||||
|
@ -1,20 +0,0 @@
|
||||
#pragma once
|
||||
#include "core/enums.hpp"
|
||||
|
||||
struct custom_weapon
|
||||
{
|
||||
big::CustomWeapon id;
|
||||
const char name[32];
|
||||
};
|
||||
|
||||
const custom_weapon custom_weapons[] = {
|
||||
{big::CustomWeapon::NONE, "No weapon"},
|
||||
{big::CustomWeapon::CAGE_GUN, "Cage Gun"},
|
||||
{big::CustomWeapon::DELETE_GUN, "Delete Gun"},
|
||||
{big::CustomWeapon::GRAVITY_GUN, "Gravity Gun"},
|
||||
{big::CustomWeapon::STEAL_VEHICLE_GUN, "Steal Vehicle Gun"},
|
||||
{big::CustomWeapon::REPAIR_GUN, "Repair Gun"},
|
||||
{big::CustomWeapon::VEHICLE_GUN, "Vehicle Gun"},
|
||||
{big::CustomWeapon::TP_GUN, "Tp Gun"},
|
||||
{big::CustomWeapon::PAINT_GUN, "Paint Gun"},
|
||||
};
|
@ -6,20 +6,20 @@ namespace big
|
||||
struct SessionType
|
||||
{
|
||||
eSessionType id;
|
||||
const char name[22];
|
||||
std::string_view name;
|
||||
};
|
||||
|
||||
const SessionType sessions[] = {
|
||||
{eSessionType::JOIN_PUBLIC, "Join Public Session"},
|
||||
{eSessionType::NEW_PUBLIC, "New Public Session"},
|
||||
{eSessionType::CLOSED_CREW, "Closed Crew Session"},
|
||||
{eSessionType::CREW, "Crew Session"},
|
||||
{eSessionType::CLOSED_FRIENDS, "Closed Friend Session"},
|
||||
{eSessionType::FIND_FRIEND, "Find Friend Session"},
|
||||
{eSessionType::SOLO, "Solo Session"},
|
||||
{eSessionType::INVITE_ONLY, "Invite Only Session"},
|
||||
{eSessionType::JOIN_CREW, "Join Crew Session"},
|
||||
{eSessionType::SC_TV, "SC TV"},
|
||||
{eSessionType::LEAVE_ONLINE, "Leave GTA Online"},
|
||||
{eSessionType::JOIN_PUBLIC, "BACKEND_SESSION_TYPE_JOIN_PUBLIC"_T},
|
||||
{eSessionType::NEW_PUBLIC, "BACKEND_SESSION_TYPE_NEW_PUBLIC"_T},
|
||||
{eSessionType::CLOSED_CREW, "BACKEND_SESSION_TYPE_CLOSED_CREW"_T},
|
||||
{eSessionType::CREW, "BACKEND_SESSION_TYPE_CREW"_T},
|
||||
{eSessionType::CLOSED_FRIENDS, "BACKEND_SESSION_TYPE_CLOSED_FRIENDS"_T},
|
||||
{eSessionType::FIND_FRIEND, "BACKEND_SESSION_TYPE_FIND_FRIEND"_T},
|
||||
{eSessionType::SOLO, "BACKEND_SESSION_TYPE_SOLO"_T},
|
||||
{eSessionType::INVITE_ONLY, "BACKEND_SESSION_TYPE_INVITE_ONLY"_T},
|
||||
{eSessionType::JOIN_CREW, "BACKEND_SESSION_TYPE_JOIN_CREW"_T},
|
||||
{eSessionType::SC_TV, "BACKEND_SESSION_TYPE_SC_TV"_T},
|
||||
{eSessionType::LEAVE_ONLINE, "BACKEND_SESSION_TYPE_LEAVE_ONLINE"_T},
|
||||
};
|
||||
}
|
@ -137,7 +137,7 @@ namespace big
|
||||
{
|
||||
ImGui::Text(std::format("{}: ", text).data());
|
||||
ImGui::SameLine(180);
|
||||
ImGui::TextColored(value ? green : red, value ? "Enabled" : "Disabled");
|
||||
ImGui::TextColored(value ? green : red, value ? "ENABLED"_T.data() : "CORE_GUI_COMPONENTS_DISABLED"_T.data());
|
||||
}
|
||||
|
||||
template<ImVec2 size = ImVec2(0, 0), ImVec4 color = ImVec4(0.24f, 0.23f, 0.29f, 1.00f)>
|
||||
|
@ -18,7 +18,7 @@ namespace big
|
||||
{
|
||||
render_elements();
|
||||
ImGui::Spacing();
|
||||
if (ImGui::Button(std::string("Close##" + element_name).data()) || ((!ImGui::IsWindowHovered() && !ImGui::IsAnyItemHovered()) && ImGui::IsMouseClicked(ImGuiMouseButton_Left)))
|
||||
if (ImGui::Button(std::format("{}##{}", "CLOSE"_T, element_name).c_str()) || ((!ImGui::IsWindowHovered() && !ImGui::IsAnyItemHovered()) && ImGui::IsMouseClicked(ImGuiMouseButton_Left)))
|
||||
ImGui::CloseCurrentPopup();
|
||||
|
||||
ImGui::EndPopup();
|
||||
|
@ -13,14 +13,14 @@ namespace big
|
||||
}
|
||||
g_handling_service->backup_vehicle();
|
||||
|
||||
if (components::button("HANDLING_SAVE_PROFILE"_T.data()))
|
||||
if (components::button("HANDLING_SAVE_PROFILE"_T))
|
||||
{
|
||||
ImGui::OpenPopup("HANDLING_SAVE_HANDLING"_T.data());
|
||||
}
|
||||
|
||||
modal_handling::modal_save_handling();
|
||||
ImGui::SameLine();
|
||||
if (components::button("HANDLING_RESTORE_HANDLING"_T.data()))
|
||||
if (components::button("HANDLING_RESTORE_HANDLING"_T))
|
||||
g_handling_service->restore_vehicle();
|
||||
|
||||
ImGui::Separator();
|
||||
|
@ -61,7 +61,7 @@ namespace big
|
||||
if (admin_rids.contains(net_player_data->m_gamer_handle.m_rockstar_id))
|
||||
{
|
||||
g_notification_service->push_warning("POTENTIAL_ADMIN_FOUND"_T.data(),
|
||||
std::vformat("PLAYER_DETECTED_AS_ADMIN"_T, std::make_format_args(net_player_data->m_name)));
|
||||
std::format("{} {}", net_player_data->m_name, "PLAYER_DETECTED_AS_ADMIN"_T));
|
||||
|
||||
LOG(WARNING) << net_player_data->m_name << " (" << net_player_data->m_gamer_handle.m_rockstar_id << ") has been detected as an admin";
|
||||
|
||||
@ -106,7 +106,7 @@ namespace big
|
||||
if (strcmp(plyr->get_name(), entry->name.data()))
|
||||
{
|
||||
g_notification_service->push("PLAYERS"_T.data(),
|
||||
std::vformat("PLAYER_CHANGED_NAME"_T, std::make_format_args(entry->name, plyr->get_name())));
|
||||
std::format("{} {}: {}", entry->name, "PLAYER_CHANGED_NAME"_T, plyr->get_name()));
|
||||
entry->name = plyr->get_name();
|
||||
g_player_database_service->save();
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ namespace big
|
||||
file_out << j.dump(4);
|
||||
file_out.close();
|
||||
|
||||
g_notification_service->push_success("Custom Teleport", std::format("Succesfully saved location {}", t.name));
|
||||
g_notification_service->push_success("GUI_TAB_CUSTOM_TELEPORT"_T.data(), std::format("Succesfully saved location {}", t.name));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ namespace big
|
||||
int64_t transition_session_id = -1;
|
||||
bool is_host_of_transition_session = false;
|
||||
GameMode game_mode = GameMode(-1);
|
||||
std::string game_mode_name = "Unknown";
|
||||
std::string game_mode_name = "VIEW_NET_PLAYER_DB_GAME_MODE_UNKNOWN"_T.data();
|
||||
std::string game_mode_id = "";
|
||||
rage::rlSessionInfo redirect_info{};
|
||||
|
||||
|
@ -69,5 +69,5 @@ namespace big
|
||||
}
|
||||
|
||||
bool_command
|
||||
g_cmd_executor("cmdexecutor", "Toggle Command Executor", "Toggles the command executor window", g.cmd_executor.enabled, false);
|
||||
g_cmd_executor("cmdexecutor", "CMD_EXECUTOR", "CMD_EXECUTOR_DESC", g.cmd_executor.enabled, false);
|
||||
}
|
@ -28,45 +28,48 @@ namespace big
|
||||
ImGui::Separator();
|
||||
|
||||
if (g.window.ingame_overlay.show_fps)
|
||||
ImGui::Text("%.0f FPS", ImGui::GetIO().Framerate);
|
||||
{
|
||||
ImGui::Text(std::format("{:.0f} {}", ImGui::GetIO().Framerate, "VIEW_OVERLAY_FPS"_T).c_str());
|
||||
}
|
||||
|
||||
if (CNetworkPlayerMgr* network_player_mgr = gta_util::get_network_player_mgr(); g.window.ingame_overlay.show_players)
|
||||
ImGui::Text(std::format("Players: {}/{}", network_player_mgr->m_player_count, network_player_mgr->m_player_limit)
|
||||
.c_str());
|
||||
{
|
||||
ImGui::Text(std::format("{}: {}/{}", "PLAYERS"_T, network_player_mgr->m_player_count, network_player_mgr->m_player_limit).c_str());
|
||||
}
|
||||
|
||||
if (g.window.ingame_overlay.show_indicators)
|
||||
{
|
||||
ImGui::Separator();
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_player_godmode)
|
||||
components::overlay_indicator("Player Godmode", g.self.god_mode);
|
||||
components::overlay_indicator("VIEW_OVERLAY_PLAYER_GODMODE"_T, g.self.god_mode);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_off_radar)
|
||||
components::overlay_indicator("Off Radar", g.self.off_radar);
|
||||
components::overlay_indicator("OFF_THE_RADAR"_T, g.self.off_radar);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_vehicle_godmode)
|
||||
components::overlay_indicator("Vehicle Godmode", g.vehicle.god_mode);
|
||||
components::overlay_indicator("VIEW_OVERLAY_VEHICLE_GODMODE"_T, g.vehicle.god_mode);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_never_wanted)
|
||||
components::overlay_indicator("Never Wanted", g.self.never_wanted);
|
||||
components::overlay_indicator("NEVER_WANTED"_T, g.self.never_wanted);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_infinite_ammo)
|
||||
components::overlay_indicator("Infinite Ammo", g.weapons.infinite_ammo);
|
||||
components::overlay_indicator("VIEW_OVERLAY_INFINITE_AMMO"_T, g.weapons.infinite_ammo);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_always_full_ammo)
|
||||
components::overlay_indicator("Always Full Ammo", g.weapons.always_full_ammo);
|
||||
components::overlay_indicator("VIEW_OVERLAY_ALWAYS_FULL_AMMO"_T, g.weapons.always_full_ammo);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_infinite_mag)
|
||||
components::overlay_indicator("Infinite Magazine", g.weapons.infinite_mag);
|
||||
components::overlay_indicator("VIEW_OVERLAY_INFINITE_MAGAZINE"_T, g.weapons.infinite_mag);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_aimbot)
|
||||
components::overlay_indicator("Aimbot", g.weapons.aimbot.enable);
|
||||
components::overlay_indicator("VIEW_OVERLAY_AIMBOT"_T, g.weapons.aimbot.enable);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_triggerbot)
|
||||
components::overlay_indicator("Triggerbot", g.weapons.triggerbot);
|
||||
components::overlay_indicator("VIEW_OVERLAY_TRIGGERBOT"_T, g.weapons.triggerbot);
|
||||
|
||||
if (g.window.ingame_overlay_indicators.show_invisibility)
|
||||
components::overlay_indicator("Invisibility", g.self.invisibility);
|
||||
components::overlay_indicator("INVISIBILITY"_T, g.self.invisibility);
|
||||
}
|
||||
|
||||
if (g.window.ingame_overlay.show_position && g_local_player)
|
||||
@ -75,7 +78,7 @@ namespace big
|
||||
|
||||
auto& pos = *g_local_player->get_position();
|
||||
|
||||
ImGui::Text("Pos: %.2f, %.2f, %.2f", pos.x, pos.y, pos.z);
|
||||
ImGui::Text(std::format("{}: {:.2f}, {:.2f}, {:.2f}", "VIEW_OVERLAY_POSITION"_T, pos.x, pos.y, pos.z).c_str());
|
||||
}
|
||||
|
||||
if (g.window.ingame_overlay.show_replay_interface)
|
||||
@ -85,29 +88,38 @@ namespace big
|
||||
ImGui::Separator();
|
||||
|
||||
if (*g_pointers->m_gta.m_ped_pool)
|
||||
ImGui::Text(std::format("Ped Pool: {}/{}",
|
||||
{
|
||||
ImGui::Text(std::format("{}: {}/{}",
|
||||
"VIEW_OVERLAY_PED_POOL"_T,
|
||||
(*g_pointers->m_gta.m_ped_pool)->get_item_count(),
|
||||
(*g_pointers->m_gta.m_ped_pool)->m_size)
|
||||
.c_str());
|
||||
}
|
||||
|
||||
if (*g_pointers->m_gta.m_vehicle_pool && **g_pointers->m_gta.m_vehicle_pool)
|
||||
ImGui::Text(std::format("Vehicle Pool: {}/{}",
|
||||
{
|
||||
ImGui::Text(std::format("{}: {}/{}",
|
||||
"VIEW_OVERLAY_VEHICLE_POOL"_T,
|
||||
(**g_pointers->m_gta.m_vehicle_pool)->m_item_count,
|
||||
(**g_pointers->m_gta.m_vehicle_pool)->m_size)
|
||||
.c_str());
|
||||
}
|
||||
|
||||
if (*g_pointers->m_gta.m_prop_pool)
|
||||
ImGui::Text(std::format("Object Pool: {}/{}",
|
||||
{
|
||||
ImGui::Text(std::format("{}: {}/{}",
|
||||
"VIEW_OVERLAY_OBJECT_POOL"_T,
|
||||
(*g_pointers->m_gta.m_prop_pool)->get_item_count(),
|
||||
(*g_pointers->m_gta.m_prop_pool)->m_size)
|
||||
.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (g.window.ingame_overlay.show_game_versions)
|
||||
{
|
||||
ImGui::Separator();
|
||||
ImGui::Text(std::format("Game Version: {}", g_pointers->m_gta.m_game_version).c_str());
|
||||
ImGui::Text(std::format("Online Version: {}", g_pointers->m_gta.m_online_version).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_OVERLAY_GAME_VERSION"_T, g_pointers->m_gta.m_game_version).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_OVERLAY_ONLINE_VERSION"_T, g_pointers->m_gta.m_online_version).c_str());
|
||||
}
|
||||
}
|
||||
ImGui::End();
|
||||
|
@ -19,7 +19,7 @@ namespace big
|
||||
script_events();
|
||||
scripts();
|
||||
threads();
|
||||
if (ImGui::BeginTabItem("Animations"))
|
||||
if (ImGui::BeginTabItem("GUI_TAB_ANIMATIONS"_T.data()))
|
||||
{
|
||||
animations();
|
||||
ImGui::EndTabItem();
|
||||
|
@ -25,15 +25,17 @@ namespace big
|
||||
}
|
||||
};
|
||||
|
||||
if(animations::has_anim_list_been_populated())
|
||||
ImGui::Text(std::format("There are {} dictionaries with {} animations in memory", animations::anim_dict_count(), animations::total_anim_count()).data());
|
||||
if (animations::has_anim_list_been_populated())
|
||||
{
|
||||
ImGui::Text("VIEW_DEBUG_ANIMATIONS_ANIMATIONS_IN_MEMORY"_T.data(), animations::anim_dict_count(), animations::total_anim_count());
|
||||
}
|
||||
|
||||
components::button("Fetch All Anims", [] {
|
||||
components::button("VIEW_DEBUG_ANIMATIONS_FETCH_ALL_ANIMS"_T, [] {
|
||||
animations::fetch_all_anims();
|
||||
});
|
||||
|
||||
ImGui::SetNextItemWidth(400);
|
||||
components::input_text_with_hint("##dictionaryfilter", "Dictionary", current_dict);
|
||||
components::input_text_with_hint("##dictionaryfilter", "DICT"_T, current_dict);
|
||||
|
||||
if (animations::has_anim_list_been_populated() && ImGui::BeginListBox("##dictionaries", ImVec2(400, 200)))
|
||||
{
|
||||
@ -66,12 +68,12 @@ namespace big
|
||||
ImGui::EndListBox();
|
||||
}
|
||||
|
||||
components::button("Play", [] {
|
||||
components::button("VIEW_DEBUG_ANIMATIONS_PLAY"_T, [] {
|
||||
TASK::CLEAR_PED_TASKS_IMMEDIATELY(self::ped);
|
||||
ped::ped_play_animation(self::ped, current_dict, current_anim, 4.f, -4.f, -1, 0, 0, false);
|
||||
});
|
||||
ImGui::SameLine();
|
||||
components::button("Stop", [] {
|
||||
components::button("VIEW_DEBUG_ANIMATIONS_STOP"_T, [] {
|
||||
TASK::CLEAR_PED_TASKS(self::ped);
|
||||
});
|
||||
}
|
||||
|
@ -137,62 +137,56 @@ namespace big
|
||||
static global_debug global_test{};
|
||||
static script_global glo_bal_sunday = script_global(global_test.global_index);
|
||||
ImGui::SetNextItemWidth(200.f);
|
||||
if (ImGui::InputScalar("Global", ImGuiDataType_U64, &global_test.global_index))
|
||||
if (ImGui::InputScalar("VIEW_DEBUG_GLOBAL"_T.data(), ImGuiDataType_U64, &global_test.global_index))
|
||||
glo_bal_sunday = script_global(global_test.global_index);
|
||||
|
||||
for (int i = 0; i < global_test.global_appendages.size(); i++)
|
||||
{
|
||||
auto item = global_test.global_appendages[i];
|
||||
ImGui::PushID(i + item.type);
|
||||
switch (item.type)
|
||||
{
|
||||
case GlobalAppendageType_At:
|
||||
ImGui::SetNextItemWidth(200.f);
|
||||
ImGui::InputScalar(std::format("At##{}{}", i, (int)item.type).c_str(),
|
||||
ImGuiDataType_S64,
|
||||
&global_test.global_appendages[i].index);
|
||||
ImGui::InputScalar("VIEW_DEBUG_GLOBAL_AT"_T.data(), ImGuiDataType_S64, &global_test.global_appendages[i].index);
|
||||
ImGui::SameLine();
|
||||
ImGui::SetNextItemWidth(200.f);
|
||||
ImGui::InputScalar(std::format("Size##{}{}", i, (int)item.type).c_str(),
|
||||
ImGuiDataType_S64,
|
||||
&global_test.global_appendages[i].size);
|
||||
ImGui::InputScalar("VIEW_DEBUG_GLOBAL_SIZE"_T.data(), ImGuiDataType_S64, &global_test.global_appendages[i].size);
|
||||
break;
|
||||
case GlobalAppendageType_ReadGlobal:
|
||||
ImGui::Text(std::format("Read Global {}", item.global_name).c_str());
|
||||
ImGui::Text(std::format("{} {}", "VIEW_DEBUG_GLOBAL_READ_GLOBAL"_T, item.global_name).c_str());
|
||||
ImGui::SameLine();
|
||||
ImGui::SetNextItemWidth(200.f);
|
||||
ImGui::InputScalar(std::format("Size##{}{}", i, (int)item.type).c_str(),
|
||||
ImGuiDataType_S64,
|
||||
&global_test.global_appendages[i].size);
|
||||
ImGui::InputScalar("VIEW_DEBUG_GLOBAL_SIZE"_T.data(), ImGuiDataType_S64, &global_test.global_appendages[i].size);
|
||||
break;
|
||||
case GlobalAppendageType_PlayerId:
|
||||
ImGui::SetNextItemWidth(200.f);
|
||||
ImGui::InputScalar(std::format("Read Player ID Size##{}{}", i, (int)item.type).c_str(),
|
||||
ImGuiDataType_S64,
|
||||
&global_test.global_appendages[i].size);
|
||||
ImGui::InputScalar("VIEW_DEBUG_GLOBAL_READ_PLAYER_ID_SIZE"_T.data(), ImGuiDataType_S64, &global_test.global_appendages[i].size);
|
||||
break;
|
||||
}
|
||||
ImGui::PopID();
|
||||
}
|
||||
|
||||
if (ImGui::Button("Add Offset"))
|
||||
if (ImGui::Button("VIEW_DEBUG_GLOBAL_ADD_OFFSET"_T.data()))
|
||||
global_test.global_appendages.push_back({GlobalAppendageType_At, 0LL, 0ULL});
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Add Read Player Id"))
|
||||
if (ImGui::Button("VIEW_DEBUG_GLOBAL_ADD_READ_PLAYER_ID"_T.data()))
|
||||
global_test.global_appendages.push_back({GlobalAppendageType_PlayerId, 0LL, 0ULL});
|
||||
|
||||
if (global_test.global_appendages.size() > 0 && ImGui::Button("Remove Offset"))
|
||||
if (global_test.global_appendages.size() > 0 && ImGui::Button("VIEW_DEBUG_GLOBAL_REMOVE_OFFSET"_T.data()))
|
||||
global_test.global_appendages.pop_back();
|
||||
|
||||
if (auto ptr = get_global_ptr(global_test))
|
||||
{
|
||||
ImGui::SetNextItemWidth(200.f);
|
||||
ImGui::InputScalar("Value", ImGuiDataType_S32, ptr);
|
||||
ImGui::InputScalar("VIEW_DEBUG_GLOBAL_VALUE"_T.data(), ImGuiDataType_S32, ptr);
|
||||
}
|
||||
else
|
||||
ImGui::Text("INVALID_GLOBAL_READ");
|
||||
ImGui::Text("VIEW_DEBUG_GLOBAL_INVALID_GLOBAL_READ"_T.data());
|
||||
|
||||
auto globals = list_globals();
|
||||
static std::string selected_global;
|
||||
ImGui::Text("Saved Globals");
|
||||
ImGui::Text("VIEW_DEBUG_GLOBAL_SAVED_GLOBALS"_T.data());
|
||||
if (ImGui::BeginListBox("##savedglobals", ImVec2(200, 200)))
|
||||
{
|
||||
for (auto pair : globals)
|
||||
@ -210,7 +204,7 @@ namespace big
|
||||
if (auto ptr = get_global_ptr(pair.second))
|
||||
ImGui::Selectable(std::format("{}", (std::int32_t)*ptr).c_str(), false, ImGuiSelectableFlags_Disabled);
|
||||
else
|
||||
ImGui::Selectable("INVALID_GLOBAL_READ", false, ImGuiSelectableFlags_Disabled);
|
||||
ImGui::Selectable("VIEW_DEBUG_GLOBAL_INVALID_GLOBAL_READ"_T.data(), false, ImGuiSelectableFlags_Disabled);
|
||||
}
|
||||
ImGui::EndListBox();
|
||||
}
|
||||
@ -226,12 +220,12 @@ namespace big
|
||||
save_global(global_name, global_test);
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Load Global"))
|
||||
if (ImGui::Button("VIEW_DEBUG_GLOBAL_LOAD_GLOBAL"_T.data()))
|
||||
{
|
||||
load_global_menu(selected_global, global_test);
|
||||
}
|
||||
|
||||
if (ImGui::Button("Delete Global"))
|
||||
if (ImGui::Button("VIEW_DEBUG_GLOBAL_DELETE_GLOBAL"_T.data()))
|
||||
{
|
||||
if (!selected_global.empty())
|
||||
{
|
||||
@ -240,12 +234,12 @@ namespace big
|
||||
}
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Add Read Global"))
|
||||
if (ImGui::Button("VIEW_DEBUG_GLOBAL_ADD_READ_GLOBAL"_T.data()))
|
||||
{
|
||||
global_test.global_appendages.push_back({GlobalAppendageType_ReadGlobal, 0LL, 0ULL, selected_global});
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Clear"))
|
||||
if (ImGui::Button("VIEW_DEBUG_GLOBAL_CLEAR"_T.data()))
|
||||
{
|
||||
global_test.global_index = 0;
|
||||
global_test.global_appendages.clear();
|
||||
|
@ -15,11 +15,11 @@ namespace big
|
||||
static int offsets[10][2] = {};
|
||||
static int offset_count = 0;
|
||||
static int previous_offset_count = 0;
|
||||
components::input_text("Name", name, sizeof(name));
|
||||
components::input_text("Script Name", script_thread_name, sizeof(script_thread_name));
|
||||
ImGui::Text("Base address");
|
||||
components::input_text("NAME"_T, name, sizeof(name));
|
||||
components::input_text("VIEW_DEBUG_LOCALS_SCRIPT_NAME"_T, script_thread_name, sizeof(script_thread_name));
|
||||
ImGui::Text("VIEW_DEBUG_LOCALS_BASE_ADDRESS"_T.data());
|
||||
ImGui::InputInt("##local_base_address", &base_address);
|
||||
ImGui::Text("Offsetcount");
|
||||
ImGui::Text("VIEW_DEBUG_LOCALS_OFFSET_COUNT"_T.data());
|
||||
ImGui::InputInt("##modal_offset_count", &offset_count);
|
||||
|
||||
offset_count = std::clamp(offset_count, 0, 10);
|
||||
@ -71,7 +71,7 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
g_notification_service->push_error("Locals editor", "Script does not exist");
|
||||
g_notification_service->push_error("DEBUG_TAB_LOCALS"_T.data(), "VIEW_DEBUG_LOCALS_SCRIPT_DOES_NOT_EXIST"_T.data());
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -86,7 +86,7 @@ namespace big
|
||||
if (components::button("SAVE"_T))
|
||||
g_locals_service.save();
|
||||
|
||||
if (components::button("Add Local"))
|
||||
if (components::button("VIEW_DEBUG_LOCALS_ADD_LOCAL"_T))
|
||||
{
|
||||
ImGui::OpenPopup("##addlocal");
|
||||
}
|
||||
@ -136,7 +136,7 @@ namespace big
|
||||
local_.m_edit_mode = 3;
|
||||
|
||||
|
||||
ImGui::LabelText(local_.get_local_chain_text(), "Value");
|
||||
ImGui::LabelText(local_.get_local_chain_text(), "VIEW_DEBUG_GLOBAL_VALUE"_T.data());
|
||||
|
||||
ImGui::SetNextItemWidth(200);
|
||||
|
||||
@ -198,7 +198,7 @@ namespace big
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Checkbox("Freeze", &local_.m_freeze))
|
||||
if (ImGui::Checkbox("VIEW_DEBUG_LOCALS_FREEZE"_T.data(), &local_.m_freeze))
|
||||
{
|
||||
local_.m_freeze_value_int = *local_.m_internal_address;
|
||||
local_.m_freeze_value_float = *reinterpret_cast<float*>(local_.m_internal_address);
|
||||
@ -207,7 +207,7 @@ namespace big
|
||||
}
|
||||
else
|
||||
{
|
||||
if (components::button("Fetch"))
|
||||
if (components::button("VIEW_DEBUG_LOCALS_FETCH"_T))
|
||||
{
|
||||
local_.fetch_local_pointer();
|
||||
}
|
||||
@ -216,10 +216,10 @@ namespace big
|
||||
else
|
||||
{
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 0.0f, 0.0f, 1.0f));
|
||||
ImGui::Text("%s isn't running", local_.m_script_thread_name);
|
||||
ImGui::Text(std::format("{} {}", local_.m_script_thread_name, "VIEW_DEBUG_LOCALS_SCRIPT_IS_NOT_RUNNING"_T).c_str());
|
||||
ImGui::PopStyleColor();
|
||||
}
|
||||
if (components::button("Delete"))
|
||||
if (components::button("DELETE"_T))
|
||||
std::erase_if(g_locals_service.m_locals, [local_](local l) {
|
||||
return l.get_id() == local_.get_id();
|
||||
});
|
||||
|
@ -18,28 +18,28 @@ namespace big
|
||||
{
|
||||
if (ImGui::BeginTabItem("DEBUG_TAB_MISC"_T.data()))
|
||||
{
|
||||
components::command_checkbox<"windowhook">("Disable GTA Window Hook");
|
||||
components::command_checkbox<"windowhook">("VIEW_DEBUG_MISC_DISABLE_GTA_WINDOW_HOOK"_T);
|
||||
|
||||
ImGui::Text("Fiber Pool Usage %d/%d", g_fiber_pool->get_used_fibers(), g_fiber_pool->get_total_fibers());
|
||||
ImGui::Text(std::format("{}: {}/{}", "VIEW_DEBUG_MISC_FIBER_POOL_USAGE"_T, g_fiber_pool->get_used_fibers(), g_fiber_pool->get_total_fibers()).c_str());
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if (components::button("RESET"_T.data()))
|
||||
if (components::button("RESET"_T))
|
||||
{
|
||||
g_fiber_pool->reset();
|
||||
}
|
||||
|
||||
if (components::button("Trigger GTA Error Message Box"))
|
||||
if (components::button("VIEW_DEBUG_MISC_TRIGGER_GTA_ERROR_BOX"_T))
|
||||
{
|
||||
hooks::log_error_message_box(0xBAFD530B, 1);
|
||||
}
|
||||
|
||||
if (components::button("DUMP_ENTRYPOINTS"_T.data()))
|
||||
if (components::button("DUMP_ENTRYPOINTS"_T))
|
||||
{
|
||||
system::dump_entry_points();
|
||||
}
|
||||
|
||||
components::button("NETWORK_BAIL"_T.data(), [] {
|
||||
components::button("NETWORK_BAIL"_T, [] {
|
||||
NETWORK::NETWORK_BAIL(16, 0, 0);
|
||||
});
|
||||
|
||||
@ -50,53 +50,53 @@ namespace big
|
||||
STATS::STAT_SET_BOOL(RAGE_JOAAT("MPPLY_CHAR_IS_BADSPORT"), false, true);
|
||||
});
|
||||
|
||||
components::button("LOAD_MP_MAP"_T.data(), [] {
|
||||
components::button("LOAD_MP_MAP"_T, [] {
|
||||
DLC::ON_ENTER_MP();
|
||||
});
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
components::button("LOAD_SP_MAP"_T.data(), [] {
|
||||
components::button("LOAD_SP_MAP"_T, [] {
|
||||
DLC::ON_ENTER_SP();
|
||||
});
|
||||
|
||||
components::button("SKIP_CUTSCENE"_T.data(), [] {
|
||||
components::button("SKIP_CUTSCENE"_T, [] {
|
||||
CUTSCENE::STOP_CUTSCENE_IMMEDIATELY();
|
||||
});
|
||||
|
||||
components::button("REFRESH_INTERIOR"_T.data(), [] {
|
||||
components::button("REFRESH_INTERIOR"_T, [] {
|
||||
Interior interior = INTERIOR::GET_INTERIOR_AT_COORDS(self::pos.x, self::pos.y, self::pos.z);
|
||||
INTERIOR::REFRESH_INTERIOR(interior);
|
||||
});
|
||||
|
||||
components::button("NET_SHUTDOWN_AND_LOAD_SP"_T.data(), [] {
|
||||
components::button("NET_SHUTDOWN_AND_LOAD_SP"_T, [] {
|
||||
NETWORK::SHUTDOWN_AND_LAUNCH_SINGLE_PLAYER_GAME();
|
||||
});
|
||||
|
||||
components::button("NET_SHUTDOWN_AND_LOAD_SAVE"_T.data(), [] {
|
||||
components::button("NET_SHUTDOWN_AND_LOAD_SAVE"_T, [] {
|
||||
NETWORK::SHUTDOWN_AND_LOAD_MOST_RECENT_SAVE();
|
||||
});
|
||||
|
||||
components::button("REMOVE_BLACKSCREEN"_T.data(), [] {
|
||||
components::button("REMOVE_BLACKSCREEN"_T, [] {
|
||||
CAM::DO_SCREEN_FADE_IN(0);
|
||||
});
|
||||
|
||||
components::button("TP_TO_SAFE_POS"_T.data(), [] {
|
||||
components::button("TP_TO_SAFE_POS"_T, [] {
|
||||
Vector3 safepos{};
|
||||
float heading;
|
||||
if (pathfind::find_closest_vehicle_node(self::pos, safepos, heading, 0))
|
||||
ENTITY::SET_ENTITY_COORDS(self::ped, safepos.x, safepos.y, safepos.z, 0, 0, 0, false);
|
||||
else
|
||||
g_notification_service->push_error("Find safe pos", "Failed to find a safe position");
|
||||
g_notification_service->push_error("DEBUG_TAB_MISC"_T.data(), "VIEW_DEBUG_MISC_TP_TO_SAFE_POS_FAILED"_T.data());
|
||||
});
|
||||
|
||||
ImGui::Checkbox("ImGui Demo", &g.window.demo);
|
||||
ImGui::Checkbox("VIEW_DEBUG_MISC_IMGUI_DEMO"_T.data(), &g.window.demo);
|
||||
|
||||
components::command_button<"fastquit">();
|
||||
|
||||
if (ImGui::TreeNode("Fuzzer"))
|
||||
if (ImGui::TreeNode("VIEW_DEBUG_MISC_FUZZER"_T.data()))
|
||||
{
|
||||
ImGui::Checkbox("Enabled", &g.debug.fuzzer.enabled);
|
||||
ImGui::Checkbox("ENABLED"_T.data(), &g.debug.fuzzer.enabled);
|
||||
|
||||
for (int i = 0; i < net_object_type_strs.size(); i++)
|
||||
{
|
||||
@ -152,8 +152,8 @@ namespace big
|
||||
static char dict[100], anim[100];
|
||||
|
||||
ImGui::PushItemWidth(200);
|
||||
components::input_text_with_hint("##dictionary", "DICT"_T.data(), dict, IM_ARRAYSIZE(dict));
|
||||
components::input_text_with_hint("##animation", "ANIMATION"_T.data(), anim, IM_ARRAYSIZE(anim));
|
||||
components::input_text_with_hint("##dictionary", "DICT"_T, dict, IM_ARRAYSIZE(dict));
|
||||
components::input_text_with_hint("##animation", "ANIMATION"_T, anim, IM_ARRAYSIZE(anim));
|
||||
if (ImGui::Button("PLAY_ANIMATION"_T.data()))
|
||||
g_fiber_pool->queue_job([=] {
|
||||
ped::ped_play_animation(self::ped, dict, anim);
|
||||
|
@ -16,7 +16,7 @@ namespace big
|
||||
{
|
||||
if (ImGui::Checkbox(script->name(), script->toggle_ptr()))
|
||||
{
|
||||
g_notification_service->push(std::string(script->name()).append(" script"), script->is_enabled() ? "Resumed" : "Halted");
|
||||
g_notification_service->push(std::string(script->name()).append("VIEW_DEBUG_SCRIPTS_SCRIPT"_T.data()), script->is_enabled() ? "VIEW_DEBUG_SCRIPTS_RESUMED"_T.data() : "VIEW_DEBUG_SCRIPTS_HALTED"_T.data());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -34,7 +34,7 @@ namespace big
|
||||
{
|
||||
void debug::threads()
|
||||
{
|
||||
if (ImGui::BeginTabItem("Threads"))
|
||||
if (ImGui::BeginTabItem("VIEW_DEBUG_THREADS"_T.data()))
|
||||
{
|
||||
if (!g_pointers->m_gta.m_script_threads)
|
||||
{
|
||||
@ -43,9 +43,9 @@ namespace big
|
||||
return;
|
||||
}
|
||||
|
||||
components::small_text("Threads");
|
||||
components::small_text("VIEW_DEBUG_THREADS"_T);
|
||||
|
||||
if (ImGui::BeginCombo("Thread", selected_thread ? selected_thread->m_name : "NONE"))
|
||||
if (ImGui::BeginCombo("VIEW_DEBUG_THREADS_THREAD"_T.data(), selected_thread ? selected_thread->m_name : "VIEW_DEBUG_THREADS_SELECTED_NONE"_T.data()))
|
||||
{
|
||||
for (auto script : *g_pointers->m_gta.m_script_threads)
|
||||
{
|
||||
@ -85,11 +85,11 @@ namespace big
|
||||
auto host = net_handler->get_host();
|
||||
if (host)
|
||||
{
|
||||
ImGui::Text("Script Host: %s", host->get_name());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_DEBUG_THREADS_SCRIPT_HOST"_T, host->get_name()).c_str());
|
||||
|
||||
if (!net_handler->is_local_player_host())
|
||||
{
|
||||
components::button("Take Control", [net_handler] {
|
||||
components::button("VIEW_DEBUG_THREADS_TAKE_CONTROL"_T, [net_handler] {
|
||||
net_handler->send_host_migration_event(g_player_service->get_self()->get_net_game_player());
|
||||
script::get_current()->yield(10ms);
|
||||
if (selected_thread->m_stack && selected_thread->m_net_component)
|
||||
@ -101,29 +101,37 @@ namespace big
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ImGui::Combo("State", (int*)&selected_thread->m_context.m_state, "RUNNING\0WAITING\0KILLED\0PAUSED\0STATE_4");
|
||||
static const std::string thread_states = std::string("VIEW_DEBUG_THREADS_STATE_0"_T.data()) + '\0'
|
||||
+ std::string("VIEW_DEBUG_THREADS_STATE_1"_T.data()) + '\0'
|
||||
+ std::string("VIEW_DEBUG_THREADS_STATE_2"_T.data()) + '\0'
|
||||
+ std::string("VIEW_DEBUG_THREADS_STATE_3"_T.data()) + '\0'
|
||||
+ std::string("VIEW_DEBUG_THREADS_STATE_4"_T.data());
|
||||
ImGui::Combo("VIEW_DEBUG_THREADS_STATE"_T.data(), (int*)&selected_thread->m_context.m_state, thread_states.c_str());
|
||||
//Script Pointer
|
||||
ImGui::Text("Script Pointer: ");
|
||||
ImGui::Text(std::format("{}: ", "VIEW_DEBUG_THREADS_SCRIPT_POINTER"_T).c_str());
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(std::format("0x{:X}", (DWORD64)selected_thread).c_str()))
|
||||
ImGui::SetClipboardText(std::format("0x{:X}", (DWORD64)selected_thread).c_str());
|
||||
//Stack Pointer
|
||||
ImGui::Text("Stack Pointer: ");
|
||||
ImGui::Text(std::format("{}: ", "VIEW_DEBUG_THREADS_STACK_POINTER"_T).c_str());
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(std::format("0x{:X}", (DWORD64)selected_thread->m_stack).c_str()))
|
||||
ImGui::SetClipboardText(std::format("0x{:X}", (DWORD64)selected_thread->m_stack).c_str());
|
||||
ImGui::SameLine();
|
||||
ImGui::Text("Internal Stack Pointer: %d Stack Size: %d",
|
||||
selected_thread->m_context.m_stack_pointer, selected_thread->m_context.m_stack_size);
|
||||
ImGui::Text(std::format("{}: {} {}: {}",
|
||||
"VIEW_DEBUG_THREADS_INTERNAL_STACK_POINTER"_T, selected_thread->m_context.m_stack_pointer,
|
||||
"VIEW_DEBUG_THREADS_STACK_SIZE"_T, selected_thread->m_context.m_stack_size)
|
||||
.c_str());
|
||||
//Instruction Pointer
|
||||
ImGui::Text("Instruction Pointer: %X", selected_thread->m_context.m_instruction_pointer);
|
||||
ImGui::Text(std::format("{}: 0x{:X}","VIEW_DEBUG_THREADS_INSTRUCTION_POINTER"_T, selected_thread->m_context.m_instruction_pointer).c_str());
|
||||
|
||||
if (selected_thread->m_context.m_state == rage::eThreadState::killed)
|
||||
ImGui::Text("Exit Reason: %s", selected_thread->m_exit_message);
|
||||
{
|
||||
ImGui::Text(std::format("{}: {}","VIEW_DEBUG_THREADS_EXIT_REASON"_T, selected_thread->m_exit_message).c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ImGui::Button("Kill"))
|
||||
if (ImGui::Button("VIEW_DEBUG_THREADS_KILL"_T.data()))
|
||||
{
|
||||
if (selected_thread->m_context.m_stack_size != 0)
|
||||
selected_thread->kill();
|
||||
@ -133,9 +141,9 @@ namespace big
|
||||
}
|
||||
}
|
||||
|
||||
components::small_text("New");
|
||||
components::small_text("VIEW_DEBUG_THREADS_NEW"_T);
|
||||
|
||||
if (ImGui::BeginCombo("Script", selected_script))
|
||||
if (ImGui::BeginCombo("VIEW_DEBUG_THREADS_SCRIPT"_T.data(), selected_script))
|
||||
{
|
||||
for (auto script : all_script_names)
|
||||
{
|
||||
@ -150,7 +158,7 @@ namespace big
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
|
||||
if (ImGui::BeginCombo("Stack Size", selected_stack_size_str))
|
||||
if (ImGui::BeginCombo("VIEW_DEBUG_THREADS_STACK_SIZE"_T.data(), selected_stack_size_str))
|
||||
{
|
||||
for (auto& p : stack_sizes)
|
||||
{
|
||||
@ -170,9 +178,9 @@ namespace big
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
|
||||
ImGui::Text("Free Stacks: %d", free_stacks);
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_DEBUG_THREADS_FREE_STACKS"_T, free_stacks).c_str());
|
||||
|
||||
components::button("Start", [] {
|
||||
components::button("SETTINGS_NOTIFY_GTA_THREADS_START"_T, [] {
|
||||
auto hash = rage::joaat(selected_script);
|
||||
|
||||
if (!SCRIPT::DOES_SCRIPT_WITH_NAME_HASH_EXIST(hash))
|
||||
@ -182,7 +190,7 @@ namespace big
|
||||
|
||||
if (MISC::GET_NUMBER_OF_FREE_STACKS_OF_THIS_SIZE(selected_stack_size) == 0)
|
||||
{
|
||||
g_notification_service->push_warning("Script Launcher", "No free stacks for this stack size");
|
||||
g_notification_service->push_warning("VIEW_DEBUG_THREADS"_T.data(), "VIEW_DEBUG_THREADS_NO_FREE_STACKS"_T.data());
|
||||
}
|
||||
|
||||
while (!SCRIPT::HAS_SCRIPT_WITH_NAME_HASH_LOADED(hash))
|
||||
@ -200,13 +208,13 @@ namespace big
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
components::button("Start With Launcher", [] {
|
||||
components::button("VIEW_DEBUG_THREADS_START_WITH_LAUNCHER"_T, [] {
|
||||
auto hash = rage::joaat(selected_script);
|
||||
auto idx = scripts::launcher_index_from_hash(hash);
|
||||
|
||||
if (idx == -1)
|
||||
{
|
||||
g_notification_service->push_warning("Script Launcher", "This script cannot be started using am_launcher");
|
||||
g_notification_service->push_warning("VIEW_DEBUG_THREADS"_T.data(), "VIEW_DEBUG_THREADS_FAILED_WITH_LAUNCHER"_T.data());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ namespace big
|
||||
if (ImGui::BeginTabItem("DEBUG_TABS_LOGS"_T.data()))
|
||||
{
|
||||
ImGui::Checkbox("DEBUG_LOG_METRICS"_T.data(), &g.debug.logs.metric_logs);
|
||||
ImGui::Checkbox("Log Packets", &g.debug.logs.packet_logs);// TODO: translate
|
||||
ImGui::Checkbox("VIEW_DEBUG_LOGS_LOG_PACKETS"_T.data(), &g.debug.logs.packet_logs);
|
||||
ImGui::Checkbox("DEBUG_LOG_NATIVE_SCRIPT_HOOKS"_T.data(), &g.debug.logs.script_hook_logs);
|
||||
|
||||
if (ImGui::TreeNode("DEBUG_LOG_TREE_SCRIPT_EVENT"_T.data()))
|
||||
@ -32,7 +32,7 @@ namespace big
|
||||
ImGui::EndListBox();
|
||||
}
|
||||
|
||||
ImGui::Checkbox("Block All", &g.debug.logs.script_event.block_all);
|
||||
ImGui::Checkbox("VIEW_DEBUG_LOGS_BLOCK_ALL"_T.data(), &g.debug.logs.script_event.block_all);
|
||||
|
||||
ImGui::TreePop();
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ namespace big
|
||||
(plyr->get_ped()->m_ped_task_flag & (uint32_t)ePedTask::TASK_DRIVING) &&
|
||||
(player_vehicle->m_damage_bits & (uint32_t)eEntityProofs::GOD))
|
||||
{
|
||||
mode_str =+ "Vehicle God";
|
||||
mode_str =+ "VEHICLE_GOD"_T.data();
|
||||
}
|
||||
|
||||
if (!mode_str.empty())
|
||||
|
@ -7,21 +7,22 @@ namespace big
|
||||
{
|
||||
inline void render_cp_collection_ui()
|
||||
{
|
||||
components::sub_title("Checkpoints");
|
||||
components::sub_title("VIEW_NET_MISSIONS_CHECKPOINTS"_T);
|
||||
|
||||
components::button("Start Event##cp_collection", [] {
|
||||
ImGui::PushID(1);
|
||||
components::button("VIEW_NET_MISSIONS_START_EVENT"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_cp_collection")))
|
||||
if (auto script = gta_util::find_script_thread(RAGE_JOAAT("am_cp_collection")))
|
||||
*script_local(script->m_stack, scr_locals::am_cp_collection::broadcast_idx).at(667).as<int*>() = 0;
|
||||
});
|
||||
ImGui::SameLine();
|
||||
components::button("Finish Event##cp_collection", [] {
|
||||
components::button("VIEW_NET_MISSIONS_FINISH_EVENT"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_cp_collection")))
|
||||
if (auto script = gta_util::find_script_thread(RAGE_JOAAT("am_cp_collection")))
|
||||
*script_local(script->m_stack, scr_locals::am_cp_collection::broadcast_idx).at(661).as<int*>() = 0;
|
||||
});
|
||||
|
||||
components::button("Win Event", [] {
|
||||
ImGui::PopID();
|
||||
components::button("VIEW_NET_MISSIONS_WIN_EVENT"_T, [] {
|
||||
if (auto checkpoints = gta_util::find_script_thread(RAGE_JOAAT("am_cp_collection")))
|
||||
*script_local(checkpoints->m_stack, scr_locals::am_cp_collection::player_broadcast_idx)
|
||||
.at(((CGameScriptHandlerNetComponent*)checkpoints->m_net_component)->m_local_participant_index, 5)
|
||||
@ -39,7 +40,7 @@ namespace big
|
||||
}
|
||||
});
|
||||
ImGui::SameLine();
|
||||
components::button("Scramble Checkpoints", [] {
|
||||
components::button("VIEW_NET_MISSIONS_SCRAMBLE_CHECKPOINTS"_T, [] {
|
||||
std::vector<Vector3> active_player_positions;
|
||||
|
||||
for (auto& plyr : g_player_service->players())
|
||||
|
@ -6,20 +6,22 @@ namespace big
|
||||
{
|
||||
inline void render_criminal_damage_ui()
|
||||
{
|
||||
components::sub_title("Criminal Damage");
|
||||
components::button("Start Event##criminal_damage", [] {
|
||||
components::sub_title("CRIMINAL_DAMAGE"_T);
|
||||
ImGui::PushID(2);
|
||||
components::button("VIEW_NET_MISSIONS_START_EVENT"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_criminal_damage")))
|
||||
if (auto script = gta_util::find_script_thread(RAGE_JOAAT("am_criminal_damage")))
|
||||
*script_local(script->m_stack, scr_locals::am_criminal_damage::broadcast_idx).at(43).as<int*>() = 0;
|
||||
});
|
||||
ImGui::SameLine();
|
||||
components::button("Finish Event##criminal_damage", [] {
|
||||
components::button("VIEW_NET_MISSIONS_FINISH_EVENT"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_criminal_damage")))
|
||||
if (auto script = gta_util::find_script_thread(RAGE_JOAAT("am_criminal_damage")))
|
||||
*script_local(script->m_stack, scr_locals::am_criminal_damage::broadcast_idx).at(39).as<int*>() = 0;
|
||||
});
|
||||
ImGui::PopID();
|
||||
|
||||
components::button("Max Score", [] {
|
||||
components::button("VIEW_NET_MISSIONS_MAX_SCORE"_T, [] {
|
||||
if (auto criminal_damage = gta_util::find_script_thread(RAGE_JOAAT("am_criminal_damage")))
|
||||
*script_local(criminal_damage->m_stack, scr_locals::am_criminal_damage::score_idx).as<int*>() = 999'999'999;
|
||||
});
|
||||
|
@ -40,9 +40,9 @@ namespace big
|
||||
*script_local(hunt_the_beast_script_thread, scr_locals::am_hunt_the_beast::broadcast_idx).at(1).at(6).as<uint32_t*>();
|
||||
if (auto beast = g_player_service->get_by_id(beast_player_index))
|
||||
{
|
||||
ImGui::Text("%s is the beast", g_player_service->get_by_id(beast_player_index).get()->get_name());
|
||||
ImGui::Text(std::format("{} {}", g_player_service->get_by_id(beast_player_index).get()->get_name(), "VIEW_NET_MISSIONS_IS_THE_BEAST"_T).c_str());
|
||||
ImGui::SameLine();
|
||||
components::button("Set as selected", [beast] {
|
||||
components::button("VIEW_NET_MISSIONS_SET_AS_SELECTED"_T, [beast] {
|
||||
g_player_service->set_selected(beast);
|
||||
});
|
||||
|
||||
@ -60,17 +60,14 @@ namespace big
|
||||
for (int i = 0; i < (num_landmarks ? *num_landmarks : 10); i++)
|
||||
{
|
||||
auto script_local_land_mark = *beast_land_mark_list.at(i, 3).as<Vector3*>();
|
||||
std::string label = std::format("TP To Landmark {} at {} {} {}",
|
||||
i,
|
||||
script_local_land_mark.x,
|
||||
script_local_land_mark.y,
|
||||
script_local_land_mark.z);
|
||||
|
||||
if (ImGui::Selectable(label.data(), i == get_land_mark_beast_is_closest_to(g_player_service->get_by_id(beast_player_index), beast_land_mark_list, num_landmarks ? *num_landmarks : 10)))
|
||||
auto label = std::vformat("VIEW_NET_MISSIONS_TP_TO_LANDMARK"_T, std::make_format_args(i, script_local_land_mark.x, script_local_land_mark.y, script_local_land_mark.z));
|
||||
if (ImGui::Selectable(label.c_str(), i == get_land_mark_beast_is_closest_to(g_player_service->get_by_id(beast_player_index), beast_land_mark_list, num_landmarks ? *num_landmarks : 10)))
|
||||
{
|
||||
g_fiber_pool->queue_job([script_local_land_mark, beast] {
|
||||
teleport::teleport_player_to_coords(g.player.spectating ? beast : g_player_service->get_self(), script_local_land_mark);
|
||||
});
|
||||
}
|
||||
}
|
||||
ImGui::EndListBox();
|
||||
}
|
||||
}
|
||||
|
@ -4,56 +4,36 @@ namespace big
|
||||
{
|
||||
inline void render_king_of_the_castle_ui()
|
||||
{
|
||||
components::sub_title("King Of The Castle");
|
||||
components::button("Complete Event##kotc", [] {
|
||||
components::sub_title("KING_OF_THE_CASTLE"_T);
|
||||
ImGui::PushID(3);
|
||||
components::button("VIEW_NET_MISSIONS_START_EVENT"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
if (auto script = gta_util::find_script_thread(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
*script_local(script->m_stack, scr_locals::am_king_of_the_castle::broadcast_idx).at(1).at(1).as<int*>() = 0;
|
||||
});
|
||||
ImGui::SameLine();
|
||||
components::button("Expire Event (if possible)##kotc", [] {
|
||||
components::button("VIEW_NET_MISSIONS_FINISH_EVENT"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
if (auto script = gta_util::find_script_thread(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
*script_local(script->m_stack, scr_locals::am_king_of_the_castle::broadcast_idx).at(1).at(3).as<int*>() = 0;
|
||||
});
|
||||
ImGui::PopID();
|
||||
|
||||
components::button("Become The King##kotc", [] {
|
||||
components::button("VIEW_NET_MISSIONS_KOTC_BECOME_THE_KING"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
{
|
||||
if (auto kotc = gta_util::find_script_thread(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
{
|
||||
*script_local(kotc->m_stack, scr_locals::am_king_of_the_castle::broadcast_idx)
|
||||
.at(6)
|
||||
.at(0, 204)
|
||||
.at(74)
|
||||
.at(0, 4)
|
||||
.as<int*>() = 0;
|
||||
*script_local(kotc->m_stack, scr_locals::am_king_of_the_castle::broadcast_idx)
|
||||
.at(6)
|
||||
.at(0, 204)
|
||||
.at(74)
|
||||
.at(0, 4)
|
||||
.at(1)
|
||||
.as<int*>() = self::id;
|
||||
*script_local(kotc->m_stack, scr_locals::am_king_of_the_castle::broadcast_idx)
|
||||
.at(6)
|
||||
.at(0, 204)
|
||||
.at(74)
|
||||
.at(0, 4)
|
||||
.at(2)
|
||||
.as<int*>() = self::id;
|
||||
*script_local(kotc->m_stack, scr_locals::am_king_of_the_castle::broadcast_idx)
|
||||
.at(6)
|
||||
.at(0, 204)
|
||||
.at(74)
|
||||
.at(0, 4)
|
||||
.at(3)
|
||||
.as<float*>() = 999999999.0f;
|
||||
auto kotc_king = script_local(kotc->m_stack, scr_locals::am_king_of_the_castle::broadcast_idx).at(6).at(0, 204).at(74).at(0, 4);
|
||||
*kotc_king.as<int*>() = 0;
|
||||
*kotc_king.at(1).as<int*>() = self::id;
|
||||
*kotc_king.at(2).as<int*>() = self::id;
|
||||
*kotc_king.at(3).as<float*>() = 999999999.0f;
|
||||
}
|
||||
}
|
||||
});
|
||||
ImGui::SameLine();
|
||||
components::button("Dethrone Everyone##kotc", [] {
|
||||
components::button("VIEW_NET_MISSIONS_KOTC_DETHRONE_EVERYONE"_T, [] {
|
||||
if (scripts::force_host(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
{
|
||||
if (auto kotc = gta_util::find_script_thread(RAGE_JOAAT("am_king_of_the_castle")))
|
||||
|
@ -28,22 +28,22 @@ namespace big
|
||||
{
|
||||
mission_found = false;
|
||||
|
||||
components::sub_title("Event Starter");
|
||||
components::sub_title("VIEW_NET_MISSIONS_EVENT_STARTER"_T);
|
||||
|
||||
ImGui::BeginGroup();
|
||||
components::button("Hot Target", [] {
|
||||
components::button("VIEW_NET_MISSIONS_HOT_TARGET"_T, [] {
|
||||
scripts::start_launcher_script(36);
|
||||
});
|
||||
components::button("Kill List", [] {
|
||||
components::button("KILL_LIST"_T, [] {
|
||||
scripts::start_launcher_script(37);
|
||||
});
|
||||
components::button("Checkpoints", [] {
|
||||
components::button("VIEW_NET_MISSIONS_CHECKPOINTS"_T, [] {
|
||||
scripts::start_launcher_script(39);
|
||||
});
|
||||
components::button("Challenges", [] {
|
||||
components::button("CHALLENGES"_T, [] {
|
||||
scripts::start_launcher_script(40);
|
||||
});
|
||||
components::button("Penned In", [] {
|
||||
components::button("PENNED_IN"_T, [] {
|
||||
scripts::start_launcher_script(41);
|
||||
});
|
||||
ImGui::EndGroup();
|
||||
@ -51,19 +51,19 @@ namespace big
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::BeginGroup();
|
||||
components::button("Hot Property", [] {
|
||||
components::button("HOT_PROPERTY"_T, [] {
|
||||
scripts::start_launcher_script(43);
|
||||
});
|
||||
components::button("King Of The Castle", [] {
|
||||
components::button("KING_OF_THE_CASTLE"_T, [] {
|
||||
scripts::start_launcher_script(45);
|
||||
});
|
||||
components::button("Criminal Damage", [] {
|
||||
components::button("CRIMINAL_DAMAGE"_T, [] {
|
||||
scripts::start_launcher_script(46);
|
||||
});
|
||||
components::button("Hunt The Beast", [] {
|
||||
components::button("HUNT_THE_BEAST"_T, [] {
|
||||
scripts::start_launcher_script(47);
|
||||
});
|
||||
components::button("Business Battles", [] {
|
||||
components::button("BUSINESS_BATTLES"_T, [] {
|
||||
scripts::start_launcher_script(114);
|
||||
});
|
||||
ImGui::EndGroup();
|
||||
@ -71,50 +71,50 @@ namespace big
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::BeginGroup();
|
||||
components::button("One-On-One Deathmatch", [] {
|
||||
components::button("VIEW_NET_MISSIONS_ONE_ON_ONE_DEATHMATCH"_T, [] {
|
||||
scripts::start_launcher_script(204);
|
||||
});
|
||||
components::button("Impromptu Race", [] {
|
||||
components::button("VIEW_NET_MISSIONS_IMPROMTU_RACE"_T, [] {
|
||||
scripts::start_launcher_script(16);
|
||||
});
|
||||
components::button("Flight School", [] {
|
||||
components::button("FLIGHT_SCHOOL"_T, [] {
|
||||
scripts::start_launcher_script(203);
|
||||
});
|
||||
components::button("Golf", [] {
|
||||
components::button("GOLF"_T, [] {
|
||||
scripts::start_launcher_script(200);
|
||||
});
|
||||
components::button("Tutorial", [] {
|
||||
components::button("TUTORIAL"_T, [] {
|
||||
scripts::start_launcher_script(20);
|
||||
});
|
||||
if (ImGui::IsItemHovered())
|
||||
ImGui::SetTooltip("Only works on joining players");
|
||||
ImGui::SetTooltip("VIEW_NET_MISSIONS_ONLY_WORK_ON_JOINING"_T.data());
|
||||
ImGui::EndGroup();
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::BeginGroup();
|
||||
components::button("Gunslinger", [] {
|
||||
components::button("VIEW_NET_MISSIONS_GUNSLINGER"_T, [] {
|
||||
scripts::start_launcher_script(218);
|
||||
});
|
||||
components::button("Space Monkey", [] {
|
||||
components::button("VIEW_NET_MISSIONS_SPACE_MONKEY"_T, [] {
|
||||
scripts::start_launcher_script(223);
|
||||
});
|
||||
components::button("Wizard", [] {
|
||||
components::button("VIEW_NET_MISSIONS_WIZARD"_T, [] {
|
||||
scripts::start_launcher_script(219);
|
||||
});
|
||||
components::button("QUB3D", [] {
|
||||
components::button("VIEW_NET_MISSIONS_QUB3D"_T, [] {
|
||||
scripts::start_launcher_script(224);
|
||||
});
|
||||
components::button("Camhedz", [] {
|
||||
components::button("VIEW_NET_MISSIONS_CAMHEDZ"_T, [] {
|
||||
scripts::start_launcher_script(225);
|
||||
});
|
||||
ImGui::EndGroup();
|
||||
|
||||
ImGui::BeginGroup();
|
||||
components::button("Ghost Hunt", [] {
|
||||
components::button("VIEW_NET_MISSIONS_GHOST_HUNT"_T, [] {
|
||||
scripts::start_launcher_script(174);
|
||||
});
|
||||
components::button("Possesed Animals", [] {
|
||||
components::button("VIEW_NET_MISSIONS_POSESSED_ANIMALS"_T, [] {
|
||||
scripts::start_launcher_script(179);
|
||||
});
|
||||
ImGui::EndGroup();
|
||||
@ -135,7 +135,7 @@ namespace big
|
||||
|
||||
if (!mission_found)
|
||||
{
|
||||
ImGui::Text("No active mission");
|
||||
ImGui::Text("VIEW_NET_MISSIONS_NO_ACTIVE_MISSION"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
@ -21,7 +21,7 @@ namespace big
|
||||
void render_rid_joiner()
|
||||
{
|
||||
ImGui::BeginGroup();
|
||||
components::sub_title("RID_JOINER"_T.data());
|
||||
components::sub_title("RID_JOINER"_T);
|
||||
if (ImGui::BeginListBox("##ridjoiner", get_listbox_dimensions()))
|
||||
{
|
||||
static uint64_t rid = 0;
|
||||
@ -50,7 +50,7 @@ namespace big
|
||||
if (g_pointers->m_gta.m_decode_session_info(&info, base64, nullptr))
|
||||
session::join_session(info);
|
||||
else
|
||||
g_notification_service->push_error("Join", "Session info is invalid");
|
||||
g_notification_service->push_error("RID_JOINER"_T.data(), "VIEW_NET_RIDJOINER_SESSION_INFO_INVALID"_T.data());
|
||||
});
|
||||
|
||||
components::button("COPY_SESSION_INFO"_T, [] {
|
||||
@ -84,10 +84,10 @@ namespace big
|
||||
|
||||
ImGui::Spacing();
|
||||
|
||||
for (const auto& session_type : sessions)
|
||||
for (const auto& [id, name] : sessions)
|
||||
{
|
||||
components::selectable(session_type.name, false, [&session_type] {
|
||||
session::join_type(session_type.id);
|
||||
components::selectable(name, false, [&id] {
|
||||
session::join_type(id);
|
||||
});
|
||||
}
|
||||
ImGui::EndListBox();
|
||||
@ -100,7 +100,7 @@ namespace big
|
||||
{
|
||||
ImGui::BeginGroup();
|
||||
|
||||
components::sub_title("MISC"_T.data());
|
||||
components::sub_title("DEBUG_TAB_MISC"_T);
|
||||
if (ImGui::BeginListBox("##miscsession", get_listbox_dimensions()))
|
||||
{
|
||||
ImGui::Checkbox("JOIN_IN_SCTV"_T.data(), &g.session.join_in_sctv_slots);
|
||||
@ -137,9 +137,9 @@ namespace big
|
||||
&g.session.unhide_players_from_player_list,
|
||||
"REVEAL_HIDDEN_PLAYERS_DESC"_T.data());
|
||||
|
||||
components::command_button<"sextall">({}, "SEND_SEXT"_T.data());
|
||||
components::command_button<"sextall">({}, "SEND_SEXT"_T);
|
||||
ImGui::SameLine();
|
||||
components::command_button<"fakebanall">({}, "FAKE_BAN_MESSAGE"_T.data());
|
||||
components::command_button<"fakebanall">({}, "FAKE_BAN_MESSAGE"_T);
|
||||
|
||||
ImGui::EndListBox();
|
||||
}
|
||||
@ -158,7 +158,7 @@ namespace big
|
||||
ImGui::Checkbox("AUTO_KICK_CHAT_SPAMMERS"_T.data(), &g.session.kick_chat_spammers);
|
||||
ImGui::Checkbox("LOG_CHAT_MSG"_T.data(), &g.session.log_chat_messages);
|
||||
ImGui::Checkbox("LOG_TXT_MSG"_T.data(), &g.session.log_text_messages);
|
||||
components::input_text_with_hint("##message", "Chat message", msg, sizeof(msg));
|
||||
components::input_text_with_hint("##message", "VIEW_NET_CHAT_MESSAGE"_T, msg, sizeof(msg));
|
||||
|
||||
ImGui::Checkbox("IS_TEAM"_T.data(), &g.session.is_team);
|
||||
ImGui::SameLine();
|
||||
@ -178,7 +178,7 @@ namespace big
|
||||
ImGui::Checkbox("CHAT_COMMANDS"_T.data(), &g.session.chat_commands);
|
||||
if (g.session.chat_commands)
|
||||
{
|
||||
components::small_text("DEFAULT_CMD_PERMISSIONS"_T.data());
|
||||
components::small_text("DEFAULT_CMD_PERMISSIONS"_T);
|
||||
if (ImGui::BeginCombo("##defualtchatcommands", COMMAND_ACCESS_LEVELS[g.session.chat_command_default_access_level]))
|
||||
{
|
||||
for (const auto& [type, name] : COMMAND_ACCESS_LEVELS)
|
||||
@ -208,7 +208,7 @@ namespace big
|
||||
{
|
||||
ImGui::BeginGroup();
|
||||
|
||||
components::sub_title("GLOBALS"_T.data());
|
||||
components::sub_title("GLOBALS"_T);
|
||||
if (ImGui::BeginListBox("##globals", get_listbox_dimensions()))
|
||||
{
|
||||
static int global_wanted_level = 0;
|
||||
@ -216,14 +216,14 @@ namespace big
|
||||
ImGui::Checkbox("OFF_THE_RADAR"_T.data(), &g.session.off_radar_all);
|
||||
ImGui::Checkbox("NEVER_WANTED"_T.data(), &g.session.never_wanted_all);
|
||||
ImGui::Checkbox("SEMI_GODMODE"_T.data(), &g.session.semi_godmode_all);
|
||||
ImGui::Checkbox("Fix Vehicle", &g.session.vehicle_fix_all);
|
||||
ImGui::Checkbox("VIEW_NET_SESSION_FIX_VEHICLE"_T.data(), &g.session.vehicle_fix_all);
|
||||
ImGui::Checkbox("EXPLOSION_KARMA"_T.data(), &g.session.explosion_karma);
|
||||
ImGui::Checkbox("DAMAGE_KARMA"_T.data(), &g.session.damage_karma);
|
||||
ImGui::Checkbox("DISABLE_PEDS"_T.data(), &g.session.disable_peds);
|
||||
ImGui::Checkbox("DISABLE_TRAFFIC"_T.data(), &g.session.disable_traffic);
|
||||
ImGui::Checkbox("FORCE_THUNDER"_T.data(), &g.session.force_thunder);
|
||||
|
||||
components::small_text("WANTED_LVL"_T.data());
|
||||
components::small_text("WANTED_LVL"_T);
|
||||
ImGui::SetNextItemWidth(150);
|
||||
if (ImGui::SliderInt("##wantedlevel", &global_wanted_level, 0, 5))
|
||||
{
|
||||
@ -240,7 +240,7 @@ namespace big
|
||||
ImGui::EndListBox();
|
||||
}
|
||||
|
||||
components::small_text("WARP_TIME"_T.data());
|
||||
components::small_text("WARP_TIME"_T);
|
||||
|
||||
components::button("PLUS_1_MINUTE"_T, [] {
|
||||
toxic::warp_time_forward_all(60 * 1000);
|
||||
@ -321,7 +321,7 @@ namespace big
|
||||
|
||||
ImGui::Spacing();
|
||||
|
||||
components::sub_title("PLAYERS"_T.data());
|
||||
components::sub_title("PLAYERS"_T);
|
||||
components::options_modal(
|
||||
"GRIEFING"_T.data(),
|
||||
[] {
|
||||
@ -357,13 +357,13 @@ namespace big
|
||||
|
||||
components::command_button<"ceoraidall">({});
|
||||
ImGui::SameLine();
|
||||
components::button("TRIGGER_MC_RAID"_T.data(), [] {
|
||||
components::button("TRIGGER_MC_RAID"_T, [] {
|
||||
g_player_service->iterate([](auto& plyr) {
|
||||
toxic::start_activity(plyr.second, eActivityType::BikerDefend);
|
||||
});
|
||||
});
|
||||
ImGui::SameLine();
|
||||
components::button("TRIGGER_BUNKER_RAID"_T.data(), [] {
|
||||
components::button("TRIGGER_BUNKER_RAID"_T, [] {
|
||||
g_player_service->iterate([](auto& plyr) {
|
||||
toxic::start_activity(plyr.second, eActivityType::GunrunningDefend);
|
||||
});
|
||||
@ -498,11 +498,9 @@ namespace big
|
||||
|
||||
ImGui::Checkbox("RANDOMIZE_CEO_COLORS"_T.data(), &g.session.randomize_ceo_colors);
|
||||
ImGui::SameLine();
|
||||
components::script_patch_checkbox("BLOCK_MUGGERS"_T.data(), &g.session.block_muggers, "BLOCK_MUGGERS_DESC"_T.data());
|
||||
components::script_patch_checkbox("BLOCK_MUGGERS"_T, &g.session.block_muggers, "BLOCK_MUGGERS_DESC"_T.data());
|
||||
|
||||
components::script_patch_checkbox("BLOCK_CEO_RAIDS"_T.data(),
|
||||
&g.session.block_ceo_raids,
|
||||
"BLOCK_CEO_RAIDS_DESC"_T.data());
|
||||
components::script_patch_checkbox("BLOCK_CEO_RAIDS"_T, &g.session.block_ceo_raids, "BLOCK_CEO_RAIDS_DESC"_T);
|
||||
|
||||
ImGui::EndGroup();
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ namespace big
|
||||
if (ImGui::InputScalar("RID"_T.data(), ImGuiDataType_S64, ¤t_player->rockstar_id)
|
||||
|| ImGui::Checkbox("IS_MODDER"_T.data(), ¤t_player->is_modder)
|
||||
|| ImGui::Checkbox("BLOCK_JOIN"_T.data(), ¤t_player->block_join)
|
||||
|| ImGui::Checkbox("Track Player", ¤t_player->notify_online))
|
||||
|| ImGui::Checkbox("VIEW_NET_PLAYER_DB_TRACK_PLAYER"_T.data(), ¤t_player->notify_online))
|
||||
{
|
||||
if (current_player->rockstar_id != selected->rockstar_id)
|
||||
g_player_database_service->update_rockstar_id(selected->rockstar_id, current_player->rockstar_id);
|
||||
@ -186,7 +186,7 @@ namespace big
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::InputTextMultiline("Notes", note_buffer, sizeof(note_buffer)))
|
||||
if (ImGui::InputTextMultiline("VIEW_NET_PLAYER_DB_NOTES"_T.data(), note_buffer, sizeof(note_buffer)))
|
||||
{
|
||||
current_player->notes = note_buffer;
|
||||
notes_dirty = true;
|
||||
@ -194,13 +194,13 @@ namespace big
|
||||
if (ImGui::IsItemActive())
|
||||
g.self.hud.typing = TYPING_TICKS;
|
||||
|
||||
ImGui::Checkbox("Join Redirect", ¤t_player->join_redirect);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_JOIN_REDIRECT"_T.data(), ¤t_player->join_redirect);
|
||||
if (ImGui::IsItemHovered())
|
||||
ImGui::SetTooltip("Anyone trying to join you will join this player instead if they are active. The preference slider will control redirect priority if multiple players with join redirect are active");
|
||||
ImGui::SetTooltip("VIEW_NET_PLAYER_DB_JOIN_REDIRECT_DESC"_T.data());
|
||||
|
||||
if (current_player->join_redirect)
|
||||
{
|
||||
ImGui::SliderInt("Preference", ¤t_player->join_redirect_preference, 1, 10);
|
||||
ImGui::SliderInt("VIEW_NET_PLAYER_DB_PREFERENCE"_T.data(), ¤t_player->join_redirect_preference, 1, 10);
|
||||
}
|
||||
|
||||
components::button("JOIN_SESSION"_T, [] {
|
||||
@ -221,23 +221,23 @@ namespace big
|
||||
});
|
||||
};
|
||||
|
||||
ImGui::Text("Session Type: %s", player_database_service::get_session_type_str(selected->session_type));
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_NET_PLAYER_DB_SESSION_TYPE"_T, player_database_service::get_session_type_str(selected->session_type)).c_str());
|
||||
|
||||
if (selected->session_type != GSType::Invalid && selected->session_type != GSType::Unknown)
|
||||
{
|
||||
ImGui::Text("Is Host Of Session: %s", selected->is_host_of_session ? "Yes" : "No");
|
||||
ImGui::Text("Is Spectating: %s", selected->is_spectating ? "Yes" : "No");
|
||||
ImGui::Text("In Job Lobby: %s", selected->transition_session_id != -1 ? "Yes" : "No");
|
||||
ImGui::Text("Is Host Of Job Lobby: %s", selected->is_host_of_transition_session ? "Yes" : "No");
|
||||
ImGui::Text("Current Mission Type: %s", player_database_service::get_game_mode_str(selected->game_mode));
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_NET_PLAYER_DB_IS_HOST_OF_SESSION"_T, selected->is_host_of_session ? "YES"_T : "NO"_T).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_NET_PLAYER_DB_IS_SPECTATING"_T, selected->is_spectating ? "YES"_T : "NO"_T).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_NET_PLAYER_DB_IN_JOB_LOBBY"_T, selected->transition_session_id != -1 ? "YES"_T : "NO"_T).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_NET_PLAYER_DB_IS_HOST_OF_JOB_LOBBY"_T, selected->is_host_of_transition_session ? "YES"_T : "NO"_T).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_NET_PLAYER_DB_CURRENT_MISSION_TYPE"_T, player_database_service::get_game_mode_str(selected->game_mode)).c_str());
|
||||
if (selected->game_mode != GameMode::None && player_database_service::can_fetch_name(selected->game_mode))
|
||||
{
|
||||
ImGui::Text("Current Mission Name: %s", selected->game_mode_name.c_str());
|
||||
if ((selected->game_mode_name == "Unknown" || selected->game_mode_name.empty())
|
||||
ImGui::Text("VIEW_NET_PLAYER_DB_CURRENT_MISSION_TYPE"_T.data(), selected->game_mode_name.c_str());
|
||||
if ((selected->game_mode_name == "VIEW_NET_PLAYER_DB_GAME_MODE_UNKNOWN"_T.data() || selected->game_mode_name.empty())
|
||||
&& !selected->game_mode_id.empty())
|
||||
{
|
||||
ImGui::SameLine();
|
||||
components::button("Fetch", [] {
|
||||
components::button("VIEW_DEBUG_LOCALS_FETCH"_T, [] {
|
||||
current_player->game_mode_name =
|
||||
player_database_service::get_name_by_content_id(current_player->game_mode_id);
|
||||
});
|
||||
@ -271,9 +271,9 @@ namespace big
|
||||
|
||||
if (ImGui::BeginPopupModal("##removeall"))
|
||||
{
|
||||
ImGui::Text("Are you sure?");
|
||||
ImGui::Text("VIEW_NET_PLAYER_DB_ARE_YOU_SURE"_T.data());
|
||||
|
||||
if (ImGui::Button("Yes"))
|
||||
if (ImGui::Button("YES"_T.data()))
|
||||
{
|
||||
g_player_database_service->set_selected(nullptr);
|
||||
g_player_database_service->get_players().clear();
|
||||
@ -282,7 +282,7 @@ namespace big
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("No"))
|
||||
if (ImGui::Button("NO"_T.data()))
|
||||
{
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
@ -296,21 +296,21 @@ namespace big
|
||||
g_player_database_service->update_player_states();
|
||||
});
|
||||
|
||||
if (ImGui::TreeNode("Player Tracking"))
|
||||
if (ImGui::TreeNode("VIEW_NET_PLAYER_DB_PLAYER_TRACKING"_T.data()))
|
||||
{
|
||||
if (components::command_checkbox<"player_db_auto_update_states">("Enable"))
|
||||
if (components::command_checkbox<"player_db_auto_update_states">("ENABLED"_T))
|
||||
g_player_database_service->start_update_loop();
|
||||
|
||||
ImGui::Checkbox("Notify When Online", &g.player_db.notify_when_online);
|
||||
ImGui::Checkbox("Notify When Joinable", &g.player_db.notify_when_joinable);
|
||||
ImGui::Checkbox("Notify When Unjoinable", &g.player_db.notify_when_unjoinable);
|
||||
ImGui::Checkbox("Notify When Offline", &g.player_db.notify_when_offline);
|
||||
ImGui::Checkbox("Notify On Session Type Change", &g.player_db.notify_on_session_type_change);
|
||||
ImGui::Checkbox("Notify On Session Change", &g.player_db.notify_on_session_change);
|
||||
ImGui::Checkbox("Notify On Spectator Change", &g.player_db.notify_on_spectator_change);
|
||||
ImGui::Checkbox("Notify On Become Host", &g.player_db.notify_on_become_host);
|
||||
ImGui::Checkbox("Notify On Job Lobby Change", &g.player_db.notify_on_transition_change);
|
||||
ImGui::Checkbox("Notify On Mission Change", &g.player_db.notify_on_mission_change);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_WHEN_ONLINE"_T.data(), &g.player_db.notify_when_online);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_WHEN_JOINABLE"_T.data(), &g.player_db.notify_when_joinable);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_WHEN_UNJOINABLE"_T.data(), &g.player_db.notify_when_unjoinable);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_WHEN_OFFLINE"_T.data(), &g.player_db.notify_when_offline);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_ON_SESSION_TYPE_CHANGE"_T.data(), &g.player_db.notify_on_session_type_change);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_ON_SESSION_CHANGE"_T.data(), &g.player_db.notify_on_session_change);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_ON_SPECTATOR_CHANGE"_T.data(), &g.player_db.notify_on_spectator_change);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_ON_BECOME_HOST"_T.data(), &g.player_db.notify_on_become_host);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_JOB_LOBBY_CHANGE"_T.data(), &g.player_db.notify_on_transition_change);
|
||||
ImGui::Checkbox("VIEW_NET_PLAYER_DB_NOTIFY_MISSION_CHANGE"_T.data(), &g.player_db.notify_on_mission_change);
|
||||
ImGui::TreePop();
|
||||
}
|
||||
|
||||
@ -334,14 +334,14 @@ namespace big
|
||||
g_thread_pool->push([] {
|
||||
if (!g_api_service->get_rid_from_username(new_name, *(uint64_t*)&new_rockstar_id))
|
||||
{
|
||||
g_notification_service->push_error("New Player DB Entry", std::format("No user '{}' called could be found.", new_name));
|
||||
g_notification_service->push_error("GUI_TAB_PLAYER_DATABASE"_T.data(), std::vformat("VIEW_NET_PLAYER_DB_NO_USER_CAN_BE_FOUND"_T, std::make_format_args(new_name)));
|
||||
new_rockstar_id = 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
if (ImGui::IsItemHovered())
|
||||
{
|
||||
ImGui::SetTooltip("Do you know only the name of someone and not their Rockstar ID? Just fill in the username and click \"search\".");
|
||||
ImGui::SetTooltip("VIEW_NET_PLAYER_DB_TOOLTIP"_T.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,8 +18,7 @@ namespace big
|
||||
static char name_buf[32];
|
||||
static char search[64];
|
||||
static char session_info[0x100]{};
|
||||
|
||||
ImGui::Text(std::format("Total sessions found: {}", g_matchmaking_service->get_num_found_sessions()).data());
|
||||
ImGui::Text(std::format("{}: {}", "VIEW_SESSION_TOTAL_SESSIONS_FOUND"_T.data(), g_matchmaking_service->get_num_found_sessions()).c_str());
|
||||
|
||||
ImGui::SetNextItemWidth(300.f);
|
||||
|
||||
@ -42,12 +41,11 @@ namespace big
|
||||
|
||||
if (ImGui::IsItemHovered())
|
||||
{
|
||||
ImGui::SetTooltip(std::format("Num Players: {}\nRegion: {}\nLanguage: {}\nHost: {}",
|
||||
session.attributes.player_count,
|
||||
regions[session.attributes.region].name,
|
||||
languages[session.attributes.language].name,
|
||||
session.info.m_net_player_data.m_gamer_handle.m_rockstar_id)
|
||||
.c_str());
|
||||
auto tool_tip = std::format("{}: {}\n{}: {}\n{}: {}\n{}: {}", "SESSION_BROWSER_NUM_PLAYERS"_T, session.attributes.player_count,
|
||||
"REGION"_T, regions[session.attributes.region].name,
|
||||
"LANGUAGE"_T, languages[session.attributes.language].name,
|
||||
"SESSION_BROWSER_HOST_RID"_T, session.info.m_net_player_data.m_gamer_handle.m_rockstar_id);
|
||||
ImGui::SetTooltip(tool_tip.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -66,13 +64,13 @@ namespace big
|
||||
{
|
||||
auto& session = g_matchmaking_service->get_found_sessions()[selected_session_idx];
|
||||
|
||||
ImGui::Text("SESSION_BROWSER_NUM_PLAYERS"_T.data(), session.attributes.player_count);
|
||||
ImGui::Text("SESSION_BROWSER_DISCRIMINATOR"_T.data(), session.attributes.discriminator);
|
||||
ImGui::Text("SESSION_BROWSER_REGION"_T.data(), regions[session.attributes.region].name);
|
||||
ImGui::Text("SESSION_BROWSER_LANGUAGE"_T.data(), languages[session.attributes.language].name);
|
||||
ImGui::Text(std::format("{}: {}", "SESSION_BROWSER_NUM_PLAYERS"_T, session.attributes.player_count).c_str());
|
||||
ImGui::Text(std::format("{}: 0x{:X}", "SESSION_BROWSER_DISCRIMINATOR"_T, session.attributes.discriminator).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "REGION"_T, regions[session.attributes.region].name).c_str());
|
||||
ImGui::Text(std::format("{}: {}", "LANGUAGE"_T, languages[session.attributes.language].name).c_str());
|
||||
|
||||
auto& data = session.info.m_net_player_data;
|
||||
ImGui::Text("SESSION_BROWSER_HOST_RID"_T.data(), data.m_gamer_handle.m_rockstar_id);
|
||||
ImGui::Text(std::format("{}: {}", "SESSION_BROWSER_HOST_RID"_T, data.m_gamer_handle.m_rockstar_id).c_str());
|
||||
|
||||
components::button("COPY_SESSION_INFO"_T, [] {
|
||||
ImGui::SetClipboardText(session_info);
|
||||
@ -155,7 +153,8 @@ namespace big
|
||||
if (g.session_browser.pool_filter_enabled)
|
||||
{
|
||||
ImGui::SameLine();
|
||||
ImGui::Combo("###pooltype", &g.session_browser.pool_filter, "Normal\0Bad Sport");
|
||||
static const std::string pool_filter_options = std::string("NORMAL"_T.data()) + '\0' + std::string("BAD_SPORT"_T.data());
|
||||
ImGui::Combo("###pooltype", &g.session_browser.pool_filter, pool_filter_options.c_str());
|
||||
}
|
||||
|
||||
ImGui::TreePop();
|
||||
@ -163,9 +162,11 @@ namespace big
|
||||
|
||||
if (ImGui::TreeNode("SORTING"_T.data()))
|
||||
{
|
||||
ImGui::Combo("SORT_BY"_T.data(), &g.session_browser.sort_method, "Off\0Player Count");
|
||||
static const std::string sort_by_options = std::string("OFF"_T.data()) + '\0' + std::string("PLAYER_COUNT"_T.data());
|
||||
static const std::string sort_direction_options = std::string("ASCENDING"_T.data()) + '\0' + std::string("DESCENDING"_T.data());
|
||||
ImGui::Combo("SORT_BY"_T.data(), &g.session_browser.sort_method, sort_by_options.c_str());
|
||||
if (g.session_browser.sort_method != 0)
|
||||
ImGui::Combo("DIRECTION"_T.data(), &g.session_browser.sort_direction, "Ascending\0Descending");
|
||||
ImGui::Combo("DIRECTION"_T.data(), &g.session_browser.sort_direction, sort_direction_options.c_str());
|
||||
ImGui::TreePop();
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,8 @@ namespace big
|
||||
if (g.spoofing.spoof_bad_sport)
|
||||
{
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Combo("###badsport_select", &g.spoofing.badsport_type, "Clean Player\0Dirty Player\0Bad Sport"))
|
||||
static const std::string badsport_options = std::string("CLEAN_PLAYER"_T.data()) + '\0' + std::string("VIEW_SPOOFING_DIRTY_PLAYER"_T.data()) + '\0' + std::string("BAD_SPORT"_T.data());
|
||||
if (ImGui::Combo("###badsport_select", &g.spoofing.badsport_type, badsport_options.c_str()))
|
||||
{
|
||||
*g_pointers->m_gta.m_force_player_card_refresh = true;
|
||||
}
|
||||
@ -148,11 +149,11 @@ namespace big
|
||||
ImGui::InputInt("###player_count", &g.spoofing.session_player_count);
|
||||
}
|
||||
|
||||
ImGui::Checkbox("Spoof Session Bad Sport Status", &g.spoofing.spoof_session_bad_sport_status);
|
||||
ImGui::Checkbox("VIEW_SPOOFING_SPOOF_SESSION_BAD_SPORT_STATUS"_T.data(), &g.spoofing.spoof_session_bad_sport_status);
|
||||
if (g.spoofing.spoof_session_bad_sport_status)
|
||||
{
|
||||
ImGui::SameLine();
|
||||
ImGui::Checkbox("Badsport", &g.spoofing.session_bad_sport);
|
||||
ImGui::Checkbox("VIEW_SPOOFING_BADSPORT"_T.data(), &g.spoofing.session_bad_sport);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user