diff --git a/Readme_release.txt b/Readme_release.txt index 62519a4c..45db81c8 100644 --- a/Readme_release.txt +++ b/Readme_release.txt @@ -57,8 +57,8 @@ Some games like payday 2 check which groups you are subscribed in and unlock thi See steam_settings.EXAMPLE\subscribed_groups.EXAMPLE.txt for an example for payday 2. Subscribed Groups (Clans): -Some games like counter-strike check which groups you are subscribed in and allow you to choose a group clan. You can provide a list of subscribed group ids, names, and tags to the game with a subscribed_groups_clans.txt file placed in the Goldberg SteamEmu Saves\settings or in steam_settings folder. -Group ids must be valid and can be obtained by pasting '/memberslistxml/?xml=1' at the end of a Steam group page. Double tabs that are used as seperators must not be removed. +Some games like counter-strike check which groups you are subscribed in and allow you to choose a group clan. You can provide a list of subscribed group ids, names, and tags to the game with a steam_settings\subscribed_groups_clans.txt file. +Group ids must be valid and can be obtained by pasting '/memberslistxml/?xml=1' at the end of a Steam group page. See steam_settings.EXAMPLE\subscribed_groups_clans.EXAMPLE.txt for an example. App paths: @@ -70,7 +70,6 @@ Note that paths are treated as relative paths from where the steam_api dll is lo Mods: Put your mods in the steam_settings\mods\ folder. The steam_settings folder must be placed right beside my emulator dll. Mod folders must be a number corresponding to the file id of the mod. -Some games may require extra information about a mod. This information can be passed to the game by using a mods.EXAMPLE.txt file and mod_images folder stored in the steam_settings folder. See the steam_settings.EXAMPLE folder for an example. Steam appid: @@ -129,18 +128,12 @@ For example this url: https://en.wikipedia.org/wiki/Main_Page Would be: steam_settings\http\en.wikipedia.org\wiki\Main_Page The Main_Page file would contain the data returned by the steamHTTP api when it tries to access: https://en.wikipedia.org/wiki/Main_Page An example that was made for payday 2 can be found in steam_settings.EXAMPLE -To allow external downloads which will be stored in this steam_settings\http folder copy the http_online file from the example folder to the steam_settings folder with .EXAMPLE removed from the file name. +To allow external downloads which will be stored in this steam_settings\http folder copy the disable_lan_only file to the steam_settings folder with .EXAMPLE removed from the file name. Avatar: -Copy a PNG or JPG image to your Goldberg SteamEmu Saves\settings or steam_settings folder and name it account_avatar +Copy a PNG or JPG image to your Goldberg SteamEmu Settings\settings folder and name it account_avatar You can also set a default profile picture for users who are missing one by copying a similar file called account_avatar_default -For games that do not work with avatars you can place a disable_account_avatar.txt file into the steam_settings folder. -You can find examples in steam_settings.EXAMPLE - -Server browser: -Create a text file called serverbrowser.txt with a list of ips in the Goldberg SteamEmu Saves\7\remote folder. -serverbrowser_favorites.txt and serverbrowser_history.txt are also stored in this folder. -Best to keep amount of servers to a low since server browser is not threaded yet and will cause the game to freeze for a bit while refreshing. +You can find example in steam_settings.EXAMPLE Support for CPY steam_api(64).dll cracks: See the build in the experimental folder. diff --git a/dll/settings.h b/dll/settings.h index c9ab366d..04871ca3 100644 --- a/dll/settings.h +++ b/dll/settings.h @@ -98,6 +98,10 @@ struct Group_Clans { std::string tag; }; +struct Overlay_Appearance { + float font_size = 16.0; +}; + class Settings { CSteamID steam_id; CGameID game_id; @@ -192,6 +196,8 @@ public: //overlay bool disable_overlay = false; bool disable_overlay_achievement_notification = false; + bool disable_overlay_friend_notification = false; + Overlay_Appearance overlay_appearance; //app build id int build_id = 10; diff --git a/dll/settings_parser.cpp b/dll/settings_parser.cpp index c42aed2f..6cf1a0b0 100644 --- a/dll/settings_parser.cpp +++ b/dll/settings_parser.cpp @@ -82,6 +82,36 @@ static void load_subscribed_groups_clans(std::string clans_filepath, Settings *s } } +static void load_overlay_appearance(std::string appearance_filepath, Settings *settings_client, Settings *settings_server) +{ + PRINT_DEBUG("Overlay appearance file path: %s\n", appearance_filepath.c_str()); + std::ifstream appearance_file(utf8_decode(appearance_filepath)); + consume_bom(appearance_file); + if (appearance_file.is_open()) { + std::string line; + while (std::getline(appearance_file, line)) { + if (line.length() < 0) continue; + + std::size_t seperator = line.find(" "); + std::string name; + std::string value; + if (seperator != std::string::npos) { + name = line.substr(0, seperator); + value = line.substr(seperator); + } + + try { + if (name.compare("Font_Size") == 0) { + float nfont_size = std::stoull(value, NULL, 0); + settings_client->overlay_appearance.font_size = nfont_size; + settings_server->overlay_appearance.font_size = nfont_size; + } + PRINT_DEBUG("Overlay appearance %s %s\n", name.c_str(), value.c_str()); + } catch (...) {} + } + } +} + template static void split_string(const std::string &s, char delim, Out result) { std::stringstream ss(s); @@ -340,6 +370,7 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s bool disable_networking = false; bool disable_overlay = false; bool disable_overlay_achievement_notification = false; + bool disable_overlay_friend_notification = false; bool disable_lobby_creation = false; bool disable_source_query = false; bool disable_account_avatar = false; @@ -363,6 +394,8 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s disable_overlay = true; } else if (p == "disable_overlay_achievement_notification.txt") { disable_overlay_achievement_notification = true; + } else if (p == "disable_overlay_friend_notification.txt") { + disable_overlay_friend_notification = true; } else if (p == "disable_lobby_creation.txt") { disable_lobby_creation = true; } else if (p == "disable_source_query.txt") { @@ -417,6 +450,8 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s settings_server->disable_overlay = disable_overlay; settings_client->disable_overlay_achievement_notification = disable_overlay_achievement_notification; settings_server->disable_overlay_achievement_notification = disable_overlay_achievement_notification; + settings_client->disable_overlay_friend_notification = disable_overlay_friend_notification; + settings_server->disable_overlay_friend_notification = disable_overlay_friend_notification; settings_client->disable_lobby_creation = disable_lobby_creation; settings_server->disable_lobby_creation = disable_lobby_creation; settings_client->disable_source_query = disable_source_query; @@ -669,6 +704,9 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s load_subscribed_groups_clans(local_storage->get_global_settings_path() + "subscribed_groups_clans.txt", settings_client, settings_server); load_subscribed_groups_clans(Local_Storage::get_game_settings_path() + "subscribed_groups_clans.txt", settings_client, settings_server); + load_overlay_appearance(local_storage->get_global_settings_path() + "overlay_appearance.txt", settings_client, settings_server); + load_overlay_appearance(Local_Storage::get_game_settings_path() + "overlay_appearance.txt", settings_client, settings_server); + { std::string mod_path = Local_Storage::get_game_settings_path() + "mods"; nlohmann::json mod_items = nlohmann::json::object(); diff --git a/dll/steam_friends.h b/dll/steam_friends.h index 736b74e4..c4d69a15 100644 --- a/dll/steam_friends.h +++ b/dll/steam_friends.h @@ -1201,6 +1201,7 @@ void Callback(Common_Message *msg) friends.push_back(msg->friend_()); overlay->FriendConnect(msg->friend_()); persona_change((uint64)msg->friend_().id(), k_EPersonaChangeName); + GetLargeFriendAvatar((uint64)msg->friend_().id()); } } else { std::map map1(f->rich_presence().begin(), f->rich_presence().end()); diff --git a/files_example/steam_settings.EXAMPLE/disable_overlay.EXAMPLE.txt b/files_example/steam_settings.EXAMPLE/disable_overlay.EXAMPLE.txt index 005893ce..7a6f2f7f 100644 --- a/files_example/steam_settings.EXAMPLE/disable_overlay.EXAMPLE.txt +++ b/files_example/steam_settings.EXAMPLE/disable_overlay.EXAMPLE.txt @@ -1 +1 @@ -Rename this to: disable_overlay.EXAMPLE.txt to disable the overlay. \ No newline at end of file +Rename this to: disable_overlay.txt to disable the overlay. \ No newline at end of file diff --git a/files_example/steam_settings.EXAMPLE/disable_overlay_achievement_notification.EXAMPLE.txt b/files_example/steam_settings.EXAMPLE/disable_overlay_achievement_notification.EXAMPLE.txt index b8157c1e..615d45e9 100644 --- a/files_example/steam_settings.EXAMPLE/disable_overlay_achievement_notification.EXAMPLE.txt +++ b/files_example/steam_settings.EXAMPLE/disable_overlay_achievement_notification.EXAMPLE.txt @@ -1 +1 @@ -Rename this to: disable_overlay_achievement_notification.EXAMPLE.txt to disable the achievement notifications. +Rename this to: disable_overlay_achievement_notification.txt to disable the achievement notifications. diff --git a/files_example/steam_settings.EXAMPLE/disable_overlay_friend_notification.EXAMPLE.txt b/files_example/steam_settings.EXAMPLE/disable_overlay_friend_notification.EXAMPLE.txt new file mode 100644 index 00000000..3a7fcb27 --- /dev/null +++ b/files_example/steam_settings.EXAMPLE/disable_overlay_friend_notification.EXAMPLE.txt @@ -0,0 +1 @@ +Rename this to: disable_overlay_friend_notification.txt to disable the friend invite and message notifications. diff --git a/files_example/steam_settings.EXAMPLE/overlay_appearance.EXAMPLE.txt b/files_example/steam_settings.EXAMPLE/overlay_appearance.EXAMPLE.txt new file mode 100644 index 00000000..fb8fbbfe --- /dev/null +++ b/files_example/steam_settings.EXAMPLE/overlay_appearance.EXAMPLE.txt @@ -0,0 +1 @@ +Font_Size 16.0 \ No newline at end of file diff --git a/overlay_experimental/steam_overlay.cpp b/overlay_experimental/steam_overlay.cpp index 60c5e5e5..672fbcd0 100644 --- a/overlay_experimental/steam_overlay.cpp +++ b/overlay_experimental/steam_overlay.cpp @@ -48,7 +48,8 @@ static constexpr char *valid_languages[] = { "thai", "turkish", "ukrainian", - "vietnamese" + "vietnamese", + "croatian" }; #define URL_WINDOW_NAME "URL Window" @@ -324,6 +325,7 @@ void Steam_Overlay::ShowOverlay(bool state) void Steam_Overlay::NotifyUser(friend_window_state& friend_state) { + if (settings->disable_overlay_friend_notification) return; if (!(friend_state.window_state & window_state_show) || !show_overlay) { friend_state.window_state |= window_state_need_attention; @@ -398,6 +400,7 @@ void Steam_Overlay::FriendDisconnect(Friend _friend) void Steam_Overlay::AddMessageNotification(std::string const& message) { + if (settings->disable_overlay_friend_notification) return; std::lock_guard lock(notifications_mutex); int id = find_free_notification_id(notifications); if (id != 0) @@ -448,6 +451,7 @@ void Steam_Overlay::AddAchievementNotification(nlohmann::json const& ach) void Steam_Overlay::AddInviteNotification(std::pair& wnd_state) { + if (settings->disable_overlay_friend_notification) return; std::lock_guard lock(notifications_mutex); int id = find_free_notification_id(notifications); if (id != 0) @@ -731,7 +735,7 @@ void Steam_Overlay::CreateFonts() ImFontConfig fontcfg; - float font_size = 16.0; + float font_size = settings->overlay_appearance.font_size; fontcfg.OversampleH = fontcfg.OversampleV = 1; fontcfg.PixelSnapH = true; fontcfg.SizePixels = font_size; diff --git a/overlay_experimental/steam_overlay_translations.h b/overlay_experimental/steam_overlay_translations.h index f42f822f..36e9db70 100644 --- a/overlay_experimental/steam_overlay_translations.h +++ b/overlay_experimental/steam_overlay_translations.h @@ -1,5 +1,5 @@ -const int TRANSLATION_NUMBER_OF_LANGUAGES = 29; +const int TRANSLATION_NUMBER_OF_LANGUAGES = 30; const int TRANSLATION_BUFFER_SIZE = 256; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt @@ -90,7 +90,10 @@ const char translationChat[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S "Чат", // 28 - Vietnamese - "Trò chuyện" + "Trò chuyện", + + // 29 - Croatian + "Razgovor" }; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt @@ -181,7 +184,10 @@ const char translationInvite[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER "Запросити у гру", // 28 - Vietnamese - "Mời vào trò chơi" + "Mời vào trò chơi", + + // 29 - Croatian + "Pozovi u igru" }; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt @@ -272,98 +278,104 @@ const char translationJoin[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S "Прийняти запрошення до гри", // 28 - Vietnamese - "Nhập lời mời" + "Nhập lời mời", + + // 29 - Croatian + "Prihvati poziv" }; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt // friends_chat_game_invite_details const char translationInvitedYouToJoinTheGame[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { // 0 - English - "%s has invited you to play GAME_ID_%d", + "%s has invited you to play %d", // 1 - Arabic - "%s has invited you to play GAME_ID_%d", + "%s has invited you to play %d", // 2 - Bulgarian - "%s Ви покани да играете GAME_ID_%d", + "%s Ви покани да играете %d", // 3 - Simplified Chinese - "%s 已邀请您玩 GAME_ID_%d", + "%s 已邀请您玩 %d", // 4 - Traditional Chinese - "%s 邀請您一同遊玩 GAME_ID_%d", + "%s 邀請您一同遊玩 %d", // 5 - Czech - "%s Vás pozval do hry GAME_ID_%d", + "%s Vás pozval do hry %d", // 6 - Danish - "%s har inviteret dig til at spille GAME_ID_%d", + "%s har inviteret dig til at spille %d", // 7 - Dutch - "%s heeft je uitgenodigd om GAME_ID_%d te spelen", + "%s heeft je uitgenodigd om %d te spelen", // 8 - Finnish - "%s on kutsunut sinut pelaamaan peliä GAME_ID_%d", + "%s on kutsunut sinut pelaamaan peliä %d", // 9 - French - "%s vous a invité à jouer à GAME_ID_%d", + "%s vous a invité à jouer à %d", // 10 - German - "%s hat Sie eingeladen, GAME_ID_%d zu spielen", + "%s hat Sie eingeladen, %d zu spielen", // 11 - Greek - "Ο %s σας προσκάλεσε να παίξετε GAME_ID_%d", + "Ο %s σας προσκάλεσε να παίξετε %d", // 12 - Hungarian - "%s játszani hívott a(z) GAME_ID_%d játékba.", + "%s játszani hívott a(z) %d játékba.", // 13 - Italian - "%s ti ha invitato a giocare a GAME_ID_%d", + "%s ti ha invitato a giocare a %d", // 14 - Japanese - "%s があなたを GAME_ID_%d のプレイに招待しています", + "%s があなたを %d のプレイに招待しています", // 15 - Korean - "%s님이 GAME_ID_%d 게임을 하자고 초대했습니다.", + "%s님이 %d 게임을 하자고 초대했습니다.", // 16 - Norwegian - "%s har invitert deg til å spille GAME_ID_%d", + "%s har invitert deg til å spille %d", // 17 - Polish - "%s zaprasza cię do gry w GAME_ID_%d", + "%s zaprasza cię do gry w %d", // 18 - Portuguese - "%s convidou-te para jogar GAME_ID_%d", + "%s convidou-te para jogar %d", // 19 - Brazilian Portuguese - "%s convidou você para jogar GAME_ID_%d", + "%s convidou você para jogar %d", // 20 - Romanian - "%s te-a invitat să jucați GAME_ID_%d", + "%s te-a invitat să jucați %d", // 21 - Russian - "%s приглашает вас в GAME_ID_%d", + "%s приглашает вас в %d", // 22 - Spanish - "%s te ha invitado a jugar a GAME_ID_%d", + "%s te ha invitado a jugar a %d", // 23 - Latin American - "%s te invitó a jugar GAME_ID_%d", + "%s te invitó a jugar %d", // 24 - Swedish - "%s har bjudit in dig att spela GAME_ID_%d", + "%s har bjudit in dig att spela %d", // 25 - Thai - "%s ได้เชิญคุณเล่น GAME_ID_%d", + "%s ได้เชิญคุณเล่น %d", // 26 - Turkish - "%s sizi GAME_ID_%d oynamaya davet etti", + "%s sizi %d oynamaya davet etti", // 27 - Ukrainian - "%s запросив вас пограти у GAME_ID_%d", + "%s запросив вас пограти у %d", // 28 - Vietnamese - "%s mời bạn chơi GAME_ID_%d" + "%s mời bạn chơi %d", + + // 29 - Croatian + "%s vas je pozvao igrati %d" }; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt @@ -454,7 +466,10 @@ const char translationAccept[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER "Прийняти", // 28 - Vietnamese - "Đồng ý" + "Đồng ý", + + // 29 - Croatian + "Prihvati" }; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt @@ -545,7 +560,10 @@ const char translationRefuse[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER "Відхилити", // 28 - Vietnamese - "Phớt lờ" + "Phớt lờ", + + // 29 - Croatian + "Ignoriraj" }; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt @@ -636,7 +654,10 @@ const char translationSend[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S "Надіслати повідомлення", // 28 - Vietnamese - "Gửi thông điệp" + "Gửi thông điệp", + + // 29 - Croatian + "Pošalji Poruku" }; // C:\Program Files (x86)\Steam\tenfoot\resource\localization\tenfoot_*.txt @@ -727,7 +748,10 @@ const char translationSteamOverlay[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_ "Оверлей Steam", // 28 - Vietnamese - "Lớp phủ Steam" + "Lớp phủ Steam", + + // 29 - Croatian + "Steam Overlay" }; const char translationUserPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -816,7 +840,10 @@ const char translationUserPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_B "Username: %s(%llu) playing %u", // 28 - Vietnamese - "Username: %s(%llu) playing %u" + "Username: %s(%llu) playing %u", + + // 29 - Croatian + "Igrač: %s(%llu) igra %u" }; const char translationRenderer[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -905,6 +932,9 @@ const char translationRenderer[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF "Renderer: %s", // 28 - Vietnamese + "Renderer: %s", + + // 29 - Croatian "Renderer: %s" }; @@ -994,7 +1024,10 @@ const char translationShowAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLAT "Show Achievements", // 28 - Vietnamese - "Show Achievements" + "Show Achievements", + + // 29 - Croatian + "Prikaži Postignuća" }; // C:\Program Files (x86)\Steam\resource\overlay_*.txt @@ -1085,7 +1118,10 @@ const char translationSettings[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF "Налаштування", // 28 - Vietnamese - "Thiết lập" + "Thiết lập", + + // 29 - Croatian + "Postavke" }; // C:\Program Files (x86)\Steam\resource\overlay_*.txt @@ -1176,7 +1212,11 @@ const char translationFriends[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFE "Друзі", // 28 - Vietnamese - "Bạn bè" + "Bạn bè", + + // 29 - Croatian + "Prijatelji" + }; const char translationAchievementWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1265,7 +1305,10 @@ const char translationAchievementWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLA "Achievement Window", // 28 - Vietnamese - "Achievement Window" + "Achievement Window", + + // 29 - Croatian + "Prozor Postignuća" }; const char translationListOfAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1354,7 +1397,10 @@ const char translationListOfAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSL "List of achievements", // 28 - Vietnamese - "List of achievements" + "List of achievements", + + // 29 - Croatian + "Popis postignuća" }; const char translationAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1443,7 +1489,10 @@ const char translationAchievements[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_ "Achievements", // 28 - Vietnamese - "Achievements" + "Achievements", + + // 29 - Croatian + "Postignuća" }; const char translationHiddenAchievement[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1532,7 +1581,10 @@ const char translationHiddenAchievement[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLA "hidden achievement", // 28 - Vietnamese - "hidden achievement" + "hidden achievement", + + // 29 - Croatian + "Sakrivena postignuća" }; const char translationAchievedOn[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1621,7 +1673,10 @@ const char translationAchievedOn[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BU "achieved on %s", // 28 - Vietnamese - "achieved on %s" + "achieved on %s", + + // 29 - Croatian + "postignuto %s" }; const char translationNotAchieved[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1710,7 +1765,10 @@ const char translationNotAchieved[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_B "not achieved", // 28 - Vietnamese - "not achieved" + "not achieved", + + // 29 - Croatian + "nije postignuto" }; const char translationGlobalSettingsWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1799,7 +1857,10 @@ const char translationGlobalSettingsWindow[TRANSLATION_NUMBER_OF_LANGUAGES][TRAN "Global Settings Window", // 28 - Vietnamese - "Global Settings Window" + "Global Settings Window", + + // 29 - Croatian + "Prozor Globalnih Postavki" }; const char translationGlobalSettingsWindowDescription[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1888,7 +1949,10 @@ const char translationGlobalSettingsWindowDescription[TRANSLATION_NUMBER_OF_LANG "These are global emulator settings and will apply to all games.", // 28 - Vietnamese - "These are global emulator settings and will apply to all games." + "These are global emulator settings and will apply to all games.", + + // 29 - Croatian + "Ovo su globalne postavke emulatora i primjenjuju se na sve igre." }; const char translationUsername[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -1977,7 +2041,10 @@ const char translationUsername[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF "Username:", // 28 - Vietnamese - "Username:" + "Username:", + + // 29 - Croatian + "Korisničko Ime:" }; const char translationLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2066,7 +2133,10 @@ const char translationLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFF "Language:", // 28 - Vietnamese - "Language:" + "Language:", + + // 29 - Croatian + "Jezik:" }; const char translationSelectedLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2155,7 +2225,10 @@ const char translationSelectedLanguage[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLAT "Selected Language: %s", // 28 - Vietnamese - "Selected Language: %s" + "Selected Language: %s", + + // 29 - Croatian + "Odabrani Jezik: %s" }; const char translationRestartTheGameToApply[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2244,7 +2317,10 @@ const char translationRestartTheGameToApply[TRANSLATION_NUMBER_OF_LANGUAGES][TRA "You may have to restart the game for these to apply.", // 28 - Vietnamese - "You may have to restart the game for these to apply." + "You may have to restart the game for these to apply.", + + // 29 - Croatian + "Možda ćete trebati ponovo pokrenuti igru." }; const char translationSave[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2333,7 +2409,10 @@ const char translationSave[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_S "Save", // 28 - Vietnamese - "Save" + "Save", + + // 29 - Croatian + "Spremi" }; const char translationWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2422,7 +2501,10 @@ const char translationWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFE "WARNING", // 28 - Vietnamese - "WARNING" + "WARNING", + + // 29 - Croatian + "UPOZORENJE" }; const char translationWarningWarningWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2511,7 +2593,10 @@ const char translationWarningWarningWarning[TRANSLATION_NUMBER_OF_LANGUAGES][TRA "WARNING WARNING WARNING", // 28 - Vietnamese - "WARNING WARNING WARNING" + "WARNING WARNING WARNING", + + // 29 - Croatian + "UPOZORENJE UPOZORENJE UPOZORENJE" }; const char translationWarningDescription1[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2600,7 +2685,10 @@ const char translationWarningDescription1[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS "Some steam_settings/force_*.txt files have been detected. Please delete them if you want this menu to work.", // 28 - Vietnamese - "Some steam_settings/force_*.txt files have been detected. Please delete them if you want this menu to work." + "Some steam_settings/force_*.txt files have been detected. Please delete them if you want this menu to work.", + + // 29 - Croatian + "Neke steam_settings/force_*.txt datoteke su otkrivene. Molimo da ih izbrišete ako želite da ovaj izbornik radi." }; const char translationWarningDescription2[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2689,7 +2777,10 @@ const char translationWarningDescription2[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS "AppID is 0, please create a steam_appid.txt with the right appid and restart the game.", // 28 - Vietnamese - "AppID is 0, please create a steam_appid.txt with the right appid and restart the game." + "AppID is 0, please create a steam_appid.txt with the right appid and restart the game.", + + // 29 - Croatian + "AppID je 0, molimo napravite steam_appid.txt sa točnim appid-em i ponovo pokrenite igru." }; const char translationWarningDescription3[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2778,7 +2869,10 @@ const char translationWarningDescription3[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS "local_save.txt detected, the emu is saving locally to the game folder. Please delete it if you don't want this.", // 28 - Vietnamese - "local_save.txt detected, the emu is saving locally to the game folder. Please delete it if you don't want this." + "local_save.txt detected, the emu is saving locally to the game folder. Please delete it if you don't want this.", + + // 29 - Croatian + "Datoteka local_save.txt je otkrivena u mapi igre. Molimo vas da je obiršete ako ne želite ovo." }; const char translationWarningDescription4[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2867,7 +2961,10 @@ const char translationWarningDescription4[TRANSLATION_NUMBER_OF_LANGUAGES][TRANS "Some steam_settings/force_*.txt files have been detected. You will not be able to save some settings.", // 28 - Vietnamese - "Some steam_settings/force_*.txt files have been detected. You will not be able to save some settings." + "Some steam_settings/force_*.txt files have been detected. You will not be able to save some settings.", + + // 29 - Croatian + "Neke steam_settings/force_*.txt datoteke su otkrivene. Možda nećete moći spremiti neke postavke." }; const char translationSteamOverlayURL[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -2956,7 +3053,10 @@ const char translationSteamOverlayURL[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATI "The game tried to get the steam overlay to open this url:", // 28 - Vietnamese - "The game tried to get the steam overlay to open this url:" + "The game tried to get the steam overlay to open this url:", + + // 29 - Croatian + "Igra je pokušala otvoriti ovaj URL pomoću steam overlaya:" }; // C:\Program Files (x86)\Steam\resource\vgui_*.txt @@ -3047,7 +3147,10 @@ const char translationClose[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_ "Закрити", // 28 - Vietnamese - "Đóng" + "Đóng", + + // 29 - Croatian + "Zatvori" }; const char translationPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFER_SIZE] = { @@ -3136,5 +3239,8 @@ const char translationPlaying[TRANSLATION_NUMBER_OF_LANGUAGES][TRANSLATION_BUFFE " playing ", // 28 - Vietnamese - " playing " + " playing ", + + // 29 - Croatian + " igra " };