From faded02ce6eec5da3dccdcbdb3454dd08edd94ed Mon Sep 17 00:00:00 2001 From: mactan-sc <77816662+mactan-sc@users.noreply.github.com> Date: Tue, 16 Apr 2024 21:30:25 -0500 Subject: [PATCH 01/10] shader paths refresh and back up custom characters --- lug-helper.sh | 74 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 19 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index 3f9e49e..9fa22e7 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -144,7 +144,10 @@ eptu_dir="EPTU" appdata_path="drive_c/users/$USER/AppData/Local/Star Citizen" # The shaders subdirectory name -shaders_subdir="shaders" +shaders_subdirs=( + "Shaders" + "VulkanShaderCache" +) # Remaining directory paths are set at the end of the getdirs() function @@ -679,11 +682,13 @@ getdirs() { # $game_version is set in the version_menu() function ############################################################################ # The game's user directory - user_dir="$game_path/$game_version/USER/Client/0" + user_dir="$game_path/$game_version/user/client/0" # The location within the USER directory to which the game exports keybinds keybinds_dir="$user_dir/Controls/Mappings" - # Shaders directory - shaders_dir="$wine_prefix/$appdata_path" + # game data mask + game_data_mask="sc-alpha-*" + # Custom Characters + custom_characters_dir="$user_dir/CustomCharacters" # dxvk cache file dxvk_cache="$game_path/$game_version/StarCitizen.dxvk-cache" # Where to store backed up keybinds @@ -2023,7 +2028,7 @@ version_menu(){ # Save exported keybinds, wipe the USER directory, and restore keybinds rm_userdir() { # Prompt user to back up the current keybinds in the game - message info "Before proceeding, please be sure you have exported\nyour Star Citizen keybinds from within the game.\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nGo on; I'll wait." + message info "Before proceeding, please be sure you have exported\nyour Star Citizen keybinds and characters from within the game.\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nTo export your character, go to the character creator from the main menu and save it with a name.\n\nGo on; I'll wait." # Get/Set directory paths getdirs @@ -2035,40 +2040,65 @@ rm_userdir() { # Sanity check if [ ! -d "$user_dir" ]; then - message warning "USER directory not found. There is nothing to delete!\n\n$user_dir" + message warning "user directory not found. There is nothing to delete!\n\n$user_dir" return 0 fi # Check for exported keybind files if [ ! -d "$keybinds_dir" ] || [ -z "$(ls -A "$keybinds_dir")" ]; then if message question "Warning: No exported keybindings found.\nContinuing will erase your existing keybinds!\n\nDo you want to continue anyway?"; then - exported=0 + keybinds_exported=0 else # User said no return 0 fi else - exported=1 + keybinds_exported=1 + fi + + # Check for exported custom character files + if [ ! -d "$custom_characters_dir" ] || [ -z "$(ls -A "$custom_characters_dir")" ]; then + if message question "Warning: No exported characters found.\nContinuing will erase your existing characters!\n\nDo you want to continue anyway?"; then + characters_exported=0 + else + # User said no + return 0 + fi + else + characters_exported=1 fi if message question "The following directory will be deleted:\n\n$user_dir\n\nDo you want to proceed?"; then # Back up keybinds - if [ "$exported" -eq 1 ]; then + if [ "$keybinds_exported" -eq 1 ]; then debug_print continue "Backing up keybinds to $backup_path/keybinds..." mkdir -p "$backup_path/keybinds" && cp -r "$keybinds_dir/." "$backup_path/keybinds/" fi + #Back up characters + if [ "$characters_exported" -eq 1 ]; then + debug_print continue "Backing up characters to $backup_path/custom_characters..." + mkdir -p "$backup_path/custom_characters" && cp -r "$custom_characters_dir/." "$backup_path/custom_characters/" + fi + # Wipe the user directory debug_print continue "Wiping $user_dir..." - rm -r "$user_dir" + rm -r --interactive=never "$user_dir" # Restore custom keybinds - if [ "$exported" -eq 1 ]; then + if [ "$keybinds_exported" -eq 1 ]; then debug_print continue "Restoring keybinds..." mkdir -p "$keybinds_dir" && cp -r "$backup_path/keybinds/." "$keybinds_dir/" message info "To re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles" fi + # Restore custom characters + if [ "$characters_exported" -eq 1 ]; then + debug_print continue "Restoring custom characters..." + mkdir -p "$custom_characters_dir" && cp -r "$backup_path/custom_characters/." "$custom_characters_dir/" + message info "To re-import your character, select it in-game from the list." + fi + message info "Your Star Citizen USER directory has been cleaned up!" fi } @@ -2083,14 +2113,20 @@ rm_shaders() { fi # Loop through all possible shader directories - for appdata_dir in "$shaders_dir"/*; do - if [ -d "$appdata_dir/$shaders_subdir" ]; then - # If a shaders directory is found, delete it - if message question "The following directory will be deleted:\n\n$appdata_dir/$shaders_subdir\n\nDo you want to proceed?"; then - debug_print continue "Deleting $appdata_dir/$shaders_subdir..." - rm -r "${appdata_dir:?}/$shaders_subdir" + for appdata_dir in "$wine_prefix/$appdata_path"/$game_data_mask; do + debug_print continue "appdata_dir is $appdata_dir" + # Loop through the shaders subdir array + for shaders_subdir in "${shaders_subdirs[@]}"; do + if [ -d "$appdata_dir/$shaders_subdir" ]; then + # If a shaders directory is found, delete it + if message question "The following directory will be deleted:\n\n$appdata_dir/$shaders_subdir\n\nDo you want to proceed?"; then + debug_print continue "Deleting $appdata_dir/$shaders_subdir..." + rm -r --interactive=never "${appdata_dir:?}/$shaders_subdir" + fi + else + debug_print continue "skipping $appdata_dir/$shaders_subdir" fi - fi + done done message info "Shader operations completed" @@ -2207,7 +2243,7 @@ maintenance_menu() { # Configure the menu options version_msg="Switch the Helper between LIVE/PTU/EPTU (Currently: $game_version)" - userdir_msg="Delete my Star Citizen USER folder and preserve my keybinds" + userdir_msg="Delete my user folder and preserve my keybinds and characters" shaders_msg="Delete my shaders (Do this after each game update)" vidcache_msg="Delete my DXVK cache" eac_msg="Deploy Global Easy Anti-Cheat Workaround" From 12a05a01ae74f35113fd0f4a547f0c2739d742d7 Mon Sep 17 00:00:00 2001 From: mactan Date: Thu, 4 Jul 2024 19:15:25 -0500 Subject: [PATCH 02/10] remove global workaround option --- lug-helper.sh | 87 +++------------------------------------------------ 1 file changed, 4 insertions(+), 83 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index 9fa22e7..d4695c6 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -2246,15 +2246,14 @@ maintenance_menu() { userdir_msg="Delete my user folder and preserve my keybinds and characters" shaders_msg="Delete my shaders (Do this after each game update)" vidcache_msg="Delete my DXVK cache" - eac_msg="Deploy Global Easy Anti-Cheat Workaround" dirs_msg="Display Helper and Star Citizen directories" reset_msg="Reset Helper configs" quit_msg="Return to the main menu" # Set the options to be displayed in the menu - menu_options=("$version_msg" "$userdir_msg" "$shaders_msg" "$vidcache_msg" "$eac_msg" "$dirs_msg" "$reset_msg" "$quit_msg") + menu_options=("$version_msg" "$userdir_msg" "$shaders_msg" "$vidcache_msg" "$dirs_msg" "$reset_msg" "$quit_msg") # Set the corresponding functions to be called for each of the options - menu_actions=("version_menu" "rm_userdir" "rm_shaders" "rm_dxvkcache" "eac_workaround" "display_dirs" "reset_helper" "menu_loop_done") + menu_actions=("version_menu" "rm_userdir" "rm_shaders" "rm_dxvkcache" "display_dirs" "reset_helper" "menu_loop_done") # Calculate the total height the menu should be # menu_option_height = pixels per menu option @@ -2314,9 +2313,9 @@ install_game() { # Run the appropriate installer if [ "$install_version" = "native" ]; then - lutris --install "$install_script" & + lutris && lutris --install "$install_script" & elif [ "$install_version" = "flatpak" ]; then - flatpak run --file-forwarding net.lutris.Lutris --install @@ "$install_script" @@ & + flatpak run net.lutris.Lutris && flatpak run --file-forwarding net.lutris.Lutris --install @@ "$install_script" @@ & else # We shouldn't get here debug_print exit "Script error: Unknown condition for install_version in install_game() function. Aborting." @@ -2326,80 +2325,6 @@ install_game() { fi } -# Deploy Easy Anti-Cheat Workaround -eac_workaround() { - # Get/set directory paths - getdirs - if [ "$?" -eq 1 ]; then - # User cancelled and wants to return to the main menu - # or there was an error - return 0 - fi - - # Set the EAC directory path and hosts modification - eac_dir="$wine_prefix/drive_c/users/$USER/AppData/Roaming/EasyAntiCheat" - eac_hosts="127.0.0.1 modules-cdn.eac-prod.on.epicgames.com" - - # Configure message variables - eac_title="Easy Anti-Cheat Workaround" - eac_hosts_formatted="$eac_hosts" - eac_dir_formatted="$eac_dir" - if [ "$use_zenity" -eq 1 ]; then - eac_title="$eac_title" - eac_hosts_formatted="$eac_hosts_formatted" - eac_dir_formatted="$eac_dir_formatted" - fi - - apply_eac_hosts="false" - delete_eac_dir="false" - if grep -q "^$eac_hosts" /etc/hosts; then - # Hosts workaround is in place - # Check if we still need to delete the eac directory - if [ -d "$eac_dir" ]; then - delete_eac_dir="true" - eac_message="$eac_title\n\nYour /etc/hosts is already modified with the Easy Anti-Cheat workaround.\n\nThe following directory must still be deleted:\n$eac_dir_formatted" - fi - else - # Hosts workaround is needed - apply_eac_hosts="true" - eac_message="$eac_title\n\nThe following entry will be added to /etc/hosts:\n$eac_hosts_formatted" - # Check if we also need to delete the eac directory - if [ -d "$eac_dir" ]; then - delete_eac_dir="true" - eac_message="$eac_message\n\nThe following directory will be deleted:\n$eac_dir_formatted" - fi - fi - # Finish up the message - eac_message="$eac_message\n\n\nTo revert these changes, delete the marked EAC workaround line\nin /etc/hosts and relaunch the game\n\nDo you want to proceed?" - - # Check if the EAC workaround has already been fully applied - if [ "$apply_eac_hosts" = "false" ] && [ "$delete_eac_dir" = "false" ]; then - message info "The Easy Anti-Cheat workaround has already been applied.\nYou're all set!" - return 0 - fi - - if message question "$eac_message"; then - # Apply the hosts workaround if needed - if [ "$apply_eac_hosts" = "true" ]; then - debug_print continue "Editing hosts file..." - # Try to modify /etc/hosts as root - try_exec "printf '\n$eac_hosts #Star Citizen EAC workaround\n' >> /etc/hosts" - if [ "$?" -eq 1 ]; then - message error "Authentication failed or there was an error modifying /etc/hosts.\nSee terminal for more information.\n\nReturning to main menu." - return 0 - fi - fi - - # Delete the EAC directory if it exists - if [ -d "$eac_dir" ]; then - debug_print continue "Deleting $eac_dir..." - rm -r "$eac_dir" - fi - - message info "Easy Anti-Cheat workaround has been deployed!" - fi -} - # Format some URLs for Zenity format_urls() { if [ "$use_zenity" -eq 1 ]; then @@ -2512,7 +2437,6 @@ if [ "$#" -gt 0 ]; then Usage: lug-helper -p, --preflight-check Run system optimization checks -i, --install Install Star Citizen - -e, --eac Deploy Easy Anti-Cheat Workaround -m, --manage-runners Install or remove Lutris runners -k, --manage-dxvk Install or remove DXVK versions -u, --delete-user-folder Delete Star Citizen USER dir, preserve keybinds @@ -2534,9 +2458,6 @@ Usage: lug-helper --install | -i ) cargs+=("install_game") ;; - --eac | -e ) - cargs+=("eac_workaround") - ;; --manage-runners | -m ) cargs+=("runner_manage") ;; From 8fa64ca1eda2569161486b2c3c0c56776229ba21 Mon Sep 17 00:00:00 2001 From: mactan Date: Tue, 13 Aug 2024 23:18:22 -0500 Subject: [PATCH 03/10] CustomCharacters directory and shader directory variable name --- lug-helper.sh | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index d4695c6..ce5496f 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -686,7 +686,7 @@ getdirs() { # The location within the USER directory to which the game exports keybinds keybinds_dir="$user_dir/Controls/Mappings" # game data mask - game_data_mask="sc-alpha-*" + appdata_dir_mask="sc-alpha-*" # Custom Characters custom_characters_dir="$user_dir/CustomCharacters" # dxvk cache file @@ -2077,8 +2077,8 @@ rm_userdir() { #Back up characters if [ "$characters_exported" -eq 1 ]; then - debug_print continue "Backing up characters to $backup_path/custom_characters..." - mkdir -p "$backup_path/custom_characters" && cp -r "$custom_characters_dir/." "$backup_path/custom_characters/" + debug_print continue "Backing up characters to $backup_path/CustomCharacters..." + mkdir -p "$backup_path/CustomCharacters" && cp -r "$custom_characters_dir/." "$backup_path/CustomCharacters/" fi # Wipe the user directory @@ -2095,7 +2095,7 @@ rm_userdir() { # Restore custom characters if [ "$characters_exported" -eq 1 ]; then debug_print continue "Restoring custom characters..." - mkdir -p "$custom_characters_dir" && cp -r "$backup_path/custom_characters/." "$custom_characters_dir/" + mkdir -p "$custom_characters_dir" && cp -r "$backup_path/CustomCharacters/." "$custom_characters_dir/" message info "To re-import your character, select it in-game from the list." fi @@ -2113,8 +2113,7 @@ rm_shaders() { fi # Loop through all possible shader directories - for appdata_dir in "$wine_prefix/$appdata_path"/$game_data_mask; do - debug_print continue "appdata_dir is $appdata_dir" + for appdata_dir in "$wine_prefix/$appdata_path"/$appdata_dir_mask; do # Loop through the shaders subdir array for shaders_subdir in "${shaders_subdirs[@]}"; do if [ -d "$appdata_dir/$shaders_subdir" ]; then @@ -2313,9 +2312,9 @@ install_game() { # Run the appropriate installer if [ "$install_version" = "native" ]; then - lutris && lutris --install "$install_script" & + lutris --install "$install_script" & elif [ "$install_version" = "flatpak" ]; then - flatpak run net.lutris.Lutris && flatpak run --file-forwarding net.lutris.Lutris --install @@ "$install_script" @@ & + flatpak run --file-forwarding net.lutris.Lutris --install @@ "$install_script" @@ & else # We shouldn't get here debug_print exit "Script error: Unknown condition for install_version in install_game() function. Aborting." From d8b8b47262edd81e7d3951357e376cd4eeea56aa Mon Sep 17 00:00:00 2001 From: "the Sane." <3657071+the-sane@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:19:55 -0400 Subject: [PATCH 04/10] Add backwards compatibility check for the user dir --- lug-helper.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lug-helper.sh b/lug-helper.sh index ce5496f..eaeb1af 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -682,7 +682,12 @@ getdirs() { # $game_version is set in the version_menu() function ############################################################################ # The game's user directory - user_dir="$game_path/$game_version/user/client/0" + if [ -d "$game_path/$game_version/USER/Client" ]; then + # Backwards compatibility for older installs + user_dir="$game_path/$game_version/USER/Client/0" + else + user_dir="$game_path/$game_version/user/client/0" + fi # The location within the USER directory to which the game exports keybinds keybinds_dir="$user_dir/Controls/Mappings" # game data mask From d956739d9cd1b81d6f3c0fa792f7761bea40747b Mon Sep 17 00:00:00 2001 From: "the Sane." <3657071+the-sane@users.noreply.github.com> Date: Thu, 15 Aug 2024 09:40:14 -0400 Subject: [PATCH 05/10] Improve word wrap and formatting --- lug-helper.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index eaeb1af..2c4f480 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -2033,7 +2033,7 @@ version_menu(){ # Save exported keybinds, wipe the USER directory, and restore keybinds rm_userdir() { # Prompt user to back up the current keybinds in the game - message info "Before proceeding, please be sure you have exported\nyour Star Citizen keybinds and characters from within the game.\n\nTo do this, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nTo export your character, go to the character creator from the main menu and save it with a name.\n\nGo on; I'll wait." + message info "Before proceeding, please be sure you have exported your Star Citizen keybinds and characters from within the game.\n\nTo export keybinds, launch the game and go to:\nOptions->Keybindings->Control Profiles->Save Control Settings\n\nTo export your character, go to the character creator from the main menu and save it with a name.\n\nGo on; I'll wait." # Get/Set directory paths getdirs @@ -2247,7 +2247,7 @@ maintenance_menu() { # Configure the menu options version_msg="Switch the Helper between LIVE/PTU/EPTU (Currently: $game_version)" - userdir_msg="Delete my user folder and preserve my keybinds and characters" + userdir_msg="Delete my user folder and preserve keybinds/characters" shaders_msg="Delete my shaders (Do this after each game update)" vidcache_msg="Delete my DXVK cache" dirs_msg="Display Helper and Star Citizen directories" From 57f49507643327cf44a251def723e99d67ee3933 Mon Sep 17 00:00:00 2001 From: mactan Date: Thu, 15 Aug 2024 18:16:16 -0500 Subject: [PATCH 06/10] remove shader appdata dir mask sc-alpha- --- lug-helper.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index 2c4f480..0553b4a 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -690,8 +690,7 @@ getdirs() { fi # The location within the USER directory to which the game exports keybinds keybinds_dir="$user_dir/Controls/Mappings" - # game data mask - appdata_dir_mask="sc-alpha-*" + # Custom Characters custom_characters_dir="$user_dir/CustomCharacters" # dxvk cache file @@ -2118,7 +2117,7 @@ rm_shaders() { fi # Loop through all possible shader directories - for appdata_dir in "$wine_prefix/$appdata_path"/$appdata_dir_mask; do + for appdata_dir in "$wine_prefix/$appdata_path"/*; do # Loop through the shaders subdir array for shaders_subdir in "${shaders_subdirs[@]}"; do if [ -d "$appdata_dir/$shaders_subdir" ]; then From 57732f3d459c729feb71f5d6a21817ae4cf99b0a Mon Sep 17 00:00:00 2001 From: "the Sane." <3657071+the-sane@users.noreply.github.com> Date: Thu, 15 Aug 2024 19:52:53 -0400 Subject: [PATCH 07/10] Fix backwards compatibility with old shaders directories --- lug-helper.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/lug-helper.sh b/lug-helper.sh index 0553b4a..7bc0cda 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -145,6 +145,7 @@ appdata_path="drive_c/users/$USER/AppData/Local/Star Citizen" # The shaders subdirectory name shaders_subdirs=( + "shaders" "Shaders" "VulkanShaderCache" ) From 8fc54f1fea6bd626d82b666e0b62eb4678d2e9e3 Mon Sep 17 00:00:00 2001 From: mactan Date: Thu, 15 Aug 2024 22:41:54 -0500 Subject: [PATCH 08/10] shaders_dir --- lug-helper.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index 7bc0cda..93b1970 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -691,8 +691,9 @@ getdirs() { fi # The location within the USER directory to which the game exports keybinds keybinds_dir="$user_dir/Controls/Mappings" - - # Custom Characters + # Shaders + shaders_dir="$wine_prefix/$appdata_path" + # Custom characters custom_characters_dir="$user_dir/CustomCharacters" # dxvk cache file dxvk_cache="$game_path/$game_version/StarCitizen.dxvk-cache" @@ -2118,7 +2119,7 @@ rm_shaders() { fi # Loop through all possible shader directories - for appdata_dir in "$wine_prefix/$appdata_path"/*; do + for appdata_dir in "$shaders_dir"/*; do # Loop through the shaders subdir array for shaders_subdir in "${shaders_subdirs[@]}"; do if [ -d "$appdata_dir/$shaders_subdir" ]; then From 4fc8781abf36254dce455ef7f6d5e173f46adc54 Mon Sep 17 00:00:00 2001 From: "the Sane." <3657071+the-sane@users.noreply.github.com> Date: Sat, 17 Aug 2024 09:36:03 -0400 Subject: [PATCH 09/10] Clarify comments --- lug-helper.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index 93b1970..973d40c 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -691,9 +691,9 @@ getdirs() { fi # The location within the USER directory to which the game exports keybinds keybinds_dir="$user_dir/Controls/Mappings" - # Shaders + # Shaders directory shaders_dir="$wine_prefix/$appdata_path" - # Custom characters + # Custom characters directory custom_characters_dir="$user_dir/CustomCharacters" # dxvk cache file dxvk_cache="$game_path/$game_version/StarCitizen.dxvk-cache" From 26fe714826aed32af8bd0ee55c2c811cce845323 Mon Sep 17 00:00:00 2001 From: "the Sane." <3657071+the-sane@users.noreply.github.com> Date: Sat, 17 Aug 2024 09:58:55 -0400 Subject: [PATCH 10/10] Simplify/reduce the number of message dialogs when clearing user dir --- lug-helper.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lug-helper.sh b/lug-helper.sh index 973d40c..e41614b 100755 --- a/lug-helper.sh +++ b/lug-helper.sh @@ -2062,9 +2062,9 @@ rm_userdir() { keybinds_exported=1 fi - # Check for exported custom character files + # Check for saved custom character files if [ ! -d "$custom_characters_dir" ] || [ -z "$(ls -A "$custom_characters_dir")" ]; then - if message question "Warning: No exported characters found.\nContinuing will erase your existing characters!\n\nDo you want to continue anyway?"; then + if message question "Warning: No saved characters found.\nContinuing will erase your existing character!\n\nDo you want to continue anyway?"; then characters_exported=0 else # User said no @@ -2095,17 +2095,15 @@ rm_userdir() { if [ "$keybinds_exported" -eq 1 ]; then debug_print continue "Restoring keybinds..." mkdir -p "$keybinds_dir" && cp -r "$backup_path/keybinds/." "$keybinds_dir/" - message info "To re-import your keybinds, select it in-game from the list:\nOptions->Keybindings->Control Profiles" fi # Restore custom characters if [ "$characters_exported" -eq 1 ]; then debug_print continue "Restoring custom characters..." mkdir -p "$custom_characters_dir" && cp -r "$backup_path/CustomCharacters/." "$custom_characters_dir/" - message info "To re-import your character, select it in-game from the list." fi - message info "Your Star Citizen USER directory has been cleaned up!" + message info "Your Star Citizen USER directory has been cleaned up!\n\nExported keybinds can be re-imported in-game from:\nOptions->Keybindings->Control Profiles\n\nSaved characters can be selected in the character creator." fi }