Converted all static strings to translation keys. (#2284)

This commit is contained in:
gir489 2023-10-20 12:24:44 -04:00 committed by GitHub
parent d6c32533be
commit 37468ca7b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
133 changed files with 1027 additions and 1021 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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());
}
}
};

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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",

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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());
}
}
}
}

View File

@ -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());
}
}
}
}

View File

@ -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());
}
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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());
}
}
}
}

View File

@ -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());
}
}
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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);

View File

@ -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"},
};

View File

@ -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},
};
}

View File

@ -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)>

View File

@ -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();

View File

@ -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();

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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{};

View File

@ -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);
}

View File

@ -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();

View File

@ -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();

View File

@ -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);
});
}

View File

@ -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::SameLine();
ImGui::SetNextItemWidth(200.f);
ImGui::InputScalar(std::format("Size##{}{}", i, (int)item.type).c_str(),
ImGuiDataType_S64,
&global_test.global_appendages[i].size);
break;
case GlobalAppendageType_ReadGlobal:
ImGui::Text(std::format("Read Global {}", 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);
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);
break;
case GlobalAppendageType_At:
ImGui::SetNextItemWidth(200.f);
ImGui::InputScalar("VIEW_DEBUG_GLOBAL_AT"_T.data(), ImGuiDataType_S64, &global_test.global_appendages[i].index);
ImGui::SameLine();
ImGui::SetNextItemWidth(200.f);
ImGui::InputScalar("VIEW_DEBUG_GLOBAL_SIZE"_T.data(), ImGuiDataType_S64, &global_test.global_appendages[i].size);
break;
case GlobalAppendageType_ReadGlobal:
ImGui::Text(std::format("{} {}", "VIEW_DEBUG_GLOBAL_READ_GLOBAL"_T, item.global_name).c_str());
ImGui::SameLine();
ImGui::SetNextItemWidth(200.f);
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("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();

View File

@ -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();
});

View File

@ -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);

View File

@ -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());
}
}
});

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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())

View File

@ -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())

View File

@ -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;
});

View File

@ -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,16 +60,13 @@ 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();
}

View File

@ -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")))

View File

@ -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());
}
}
}

View File

@ -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();
}

View File

@ -126,7 +126,7 @@ namespace big
if (ImGui::InputScalar("RID"_T.data(), ImGuiDataType_S64, &current_player->rockstar_id)
|| ImGui::Checkbox("IS_MODDER"_T.data(), &current_player->is_modder)
|| ImGui::Checkbox("BLOCK_JOIN"_T.data(), &current_player->block_join)
|| ImGui::Checkbox("Track Player", &current_player->notify_online))
|| ImGui::Checkbox("VIEW_NET_PLAYER_DB_TRACK_PLAYER"_T.data(), &current_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", &current_player->join_redirect);
ImGui::Checkbox("VIEW_NET_PLAYER_DB_JOIN_REDIRECT"_T.data(), &current_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", &current_player->join_redirect_preference, 1, 10);
ImGui::SliderInt("VIEW_NET_PLAYER_DB_PREFERENCE"_T.data(), &current_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());
}
}
}

View File

@ -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();
}

View File

@ -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