From 3e7186801d70e50a9135b897ef572076fe442cf4 Mon Sep 17 00:00:00 2001 From: Emma Miler <27428383+emma-miler@users.noreply.github.com> Date: Sun, 27 Mar 2022 00:45:23 +0100 Subject: Add mod code for updating state for discord RPC (#274) --- .../northstar_client_localisation_french.txt | 6 +- .../northstar_client_localisation_german.txt | 4 + .../northstar_client_localisation_italian.txt | 4 + .../northstar_client_localisation_japanese.txt | 267 +++++++++++++++- .../northstar_client_localisation_portuguese.txt | 4 + .../northstar_client_localisation_russian.txt | 246 +++++++++++++- .../northstar_client_localisation_tchinese.txt | 4 + Northstar.Client/mod/scripts/vscripts/chat.gnut | 12 +- .../mod/scripts/vscripts/state_client.nut | 48 +++ Northstar.Client/mod/scripts/vscripts/state_ui.nut | 29 ++ .../mod/scripts/vscripts/ui/menu_lobby.nut | 2 + .../mod/scripts/vscripts/ui/menu_main.nut | 16 +- .../scripts/vscripts/ui/menu_ns_serverbrowser.nut | 14 + .../mod/scripts/vscripts/ui/panel_mainmenu.nut | 7 +- .../mod/scripts/vscripts/ui/ui_vscript.gnut | 352 +++++++++++++++++++++ 15 files changed, 998 insertions(+), 17 deletions(-) create mode 100644 Northstar.Client/mod/scripts/vscripts/state_client.nut create mode 100644 Northstar.Client/mod/scripts/vscripts/state_ui.nut create mode 100644 Northstar.Client/mod/scripts/vscripts/ui/ui_vscript.gnut (limited to 'Northstar.Client/mod') diff --git a/Northstar.Client/mod/resource/northstar_client_localisation_french.txt b/Northstar.Client/mod/resource/northstar_client_localisation_french.txt index aabfcafb..8ad8b1c7 100644 --- a/Northstar.Client/mod/resource/northstar_client_localisation_french.txt +++ b/Northstar.Client/mod/resource/northstar_client_localisation_french.txt @@ -299,8 +299,12 @@ Choisissez Oui si vous êtes d'accord. Ce choix peut être modifié à tout inst "SHOW_ALL" "Tous" "SHOW_ONLY_ENABLED" "Mods activés" "SHOW_ONLY_DISABLED" "Mods désactivés" - + // Maps menu "HIDE_LOCKED" "Cacher les cartes verrouillées" + + // In-game chat + "HUD_CHAT_WHISPER_PREFIX" "[WHISPER]" + "HUD_CHAT_SERVER_PREFIX" "[SERVER]" } } diff --git a/Northstar.Client/mod/resource/northstar_client_localisation_german.txt b/Northstar.Client/mod/resource/northstar_client_localisation_german.txt index db66633d..2b5d2011 100644 --- a/Northstar.Client/mod/resource/northstar_client_localisation_german.txt +++ b/Northstar.Client/mod/resource/northstar_client_localisation_german.txt @@ -265,5 +265,9 @@ Drücke Ja, um zuzustimmen. Du kannst diese Entscheidung jederzeit im Modmenü "CONNECTING" "Verbinde..." "INGAME_PLAYERS" "Spieler: ^6BA6C400%s1" "TOTAL_SERVERS" "Server: ^C46C6C00%s1" + + // In-game chat + "HUD_CHAT_WHISPER_PREFIX" "[WHISPER]" + "HUD_CHAT_SERVER_PREFIX" "[SERVER]" } } diff --git a/Northstar.Client/mod/resource/northstar_client_localisation_italian.txt b/Northstar.Client/mod/resource/northstar_client_localisation_italian.txt index afc40cc2..897d2ba5 100644 --- a/Northstar.Client/mod/resource/northstar_client_localisation_italian.txt +++ b/Northstar.Client/mod/resource/northstar_client_localisation_italian.txt @@ -256,5 +256,9 @@ Premi Sì se sei d'accordo. Questa scelta può essere modificata in qualsiasi mo "INGAME_PLAYERS" "Players: ^6BA6C400%s1" "TOTAL_SERVERS" "Server: ^C46C6C00%s1" + + // In-game chat + "HUD_CHAT_WHISPER_PREFIX" "[WHISPER]" + "HUD_CHAT_SERVER_PREFIX" "[SERVER]" } } diff --git a/Northstar.Client/mod/resource/northstar_client_localisation_japanese.txt b/Northstar.Client/mod/resource/northstar_client_localisation_japanese.txt index d8760467..08772933 100644 --- a/Northstar.Client/mod/resource/northstar_client_localisation_japanese.txt +++ b/Northstar.Client/mod/resource/northstar_client_localisation_japanese.txt @@ -1 +1,266 @@ -"lang" { "Language" "japanese" "Tokens" { "MENU_LAUNCH_NORTHSTAR" "Northstarを起動" "MENU_TITLE_MODS" "Modの管理" "RELOAD_MODS" "Modをリロード" "MENU_MAIN_AUTHENTICATING" "認証中..." "MENU_MAIN_CONNECTING" "ローカルサーバーへの接続" "DIALOG_TITLE_INSTALLED_NORTHSTAR" "Northstarをインストールしていただきありがとうございます!" "AUTHENTICATION_AGREEMENT_DIALOG_TEXT" "Northstarが動作するために、Northstarのマスターサーバーで認証を行う必要があります。認証を行うとあなたのOriginトークンがNorthstarのマスターサーバーに送信されます。これは保存されたり、認証以外の用途に使用されることはありません。「はい」を押すと認証を開始します。これはModメニューでいつでも変更できます。" // 要議論: "認証への同意" は別のテキストに差し替える必要があるかも "BACK_AUTHENTICATION_AGREEMENT" "認証への同意" "AUTHENTICATION_AGREEMENT" "認証への同意" "AUTHENTICATION_AGREEMENT_RESTART" "変更を適用するには、一度Titanfall 2を再起動する必要があります。" "MENU_TITLE_SERVER_BROWSER" "サーバーブラウザー" "NS_SERVERBROWSER_NOSERVERS" "サーバーが見つかりませんでした。" "NS_SERVERBROWSER_WAITINGFORSERVERS" "サーバーを待っています..." "NS_SERVERBROWSER_CONNECTIONFAILED" "接続に失敗しました!" // 要議論 "NS_SERVERBROWSER_CONFIRMATIONJOIN" "'%s1'に参加してもよろしいですか?" "NS_SERVERBROWSER_JOIN" "'%s1'に参加しますか?" "NS_SERVERBROWSER_CONFIRMATIONJOIN_ISPASSWORDPROTECTED" "'%s1'に参加してもよろしいですか? \nこのサーバーはパスワードで保護されています。" "NS_SERVERBROWSER_CONNECTING" "マッチに接続中..." "REFRESH_SERVERS" "更新" "MENU_TITLE_CONNECT_PASSWORD" "パスワードで接続" "MENU_CONNECT_MENU_CONNECT" "接続" "PRIVATE_MATCH_PAGE_PREV" "前のページ" "PRIVATE_MATCH_PAGE_NEXT" "次のページ" "MENU_MATCH_SETTINGS" "マッチの設定" "MENU_MATCH_SETTINGS_SUBMENU" "%s1 の設定" "PRIVATE_MATCH_SINGLEPLAYER_LEVEL" "%s1 (シングルプレイヤー)" "PL_fra_hint" "1人きりの戦いに挑戦。敵を倒せば勝利だ。バッテリーを3個回収し、タイタンフォールを要請せよ。" // mode settings "MODE_SETTING_CATEGORY_PILOT" "パイロット" "MODE_SETTING_CATEGORY_TITAN" "タイタン" "MODE_SETTING_CATEGORY_RIFF" "エクストラ" "MODE_SETTING_CATEGORY_MATCH" "マッチ" // controls //要議論: "コンソールの表示/非表示"のままか、"コンソール表示のトグル"、それ以外への差し替え "TOGGLE_CONSOLE" "コンソールの表示/非表示" "classic_mp" "クラシックマルチ" "run_epilogue" "エピローグの有効化" "scorelimit" "スコア上限" "roundscorelimit" "スコア上限 (ラウンドベース)" // 要議論: "時間制限"のままか、"マッチ時間"、"タイム上限"、それ以外への差し替え "timelimit" "時間制限" "roundtimelimit" "時間制限 (ラウンドベース)" "pilot_health_multiplier" "ヘルス倍率" // 要議論: "リスポーン遅延" のままか、"リスポーンまでの時間"、それ以外への差し替え "respawn_delay" "リスポーン遅延" "boosts_enabled" "ブースト" // 長いのでなんとかしたい "earn_meter_pilot_overdrive" "ブーストメーターオーバードライブ" "earn_meter_pilot_multiplier" "ブーストメーター倍率" "earn_meter_titan_multiplier" "タイタンブーストメーター倍率" // 仮翻訳: "イージスアップグレード","無限ドームの状態","シールド再生" "aegis_upgrades" "イージスアップグレード" "infinite_doomed_state" "無限ドゥームの状態" "titan_shield_regen" "シールド再生" "riff_floorislava" "デッドリー・グラウンド" "featured_mode_all_holopilot" "華麗なる謀略" "featured_mode_all_grapple" "進撃のタイタンフォール" "featured_mode_all_phase" "異次元" "featured_mode_all_ticks" "辛口消耗戦" "featured_mode_tactikill" "戦術キル消耗戦" "featured_mode_amped_tacticals" "戦術強化" "featured_mode_rocket_arena" "ロケット・アリーナ" "featured_mode_shotguns_snipers" "危険武装" "iron_rules" "アイロンルール" "cp_amped_capture_points" "拠点増幅" "coliseum_loadouts_enabled" "コロシアムロードアウト" // northstar.custom localisation is just deciding not to work, so putting it here for now "PL_sbox" "サンドボックス" "PL_sbox_lobby" "サンドボックスロビー" "PL_sbox_desc" "サンドボックス" "PL_sbox_abbr" "SBOX" "GAMEMODE_SBOX" "Sandbox" "PL_gg" "ガン・ゲーム" "PL_gg_lobby" "ガン・ゲームロビー" "PL_gg_desc" "全ての銃でキルを取って勝利しろ。" "PL_gg_hint" "全ての銃でキルを取って勝利しろ。" "PL_gg_abbr" "GG" "GAMEMODE_GG" "ガン・ゲーム" "PL_tt" "タイタン・タグ" "PL_tt_lobby" "タイタン・タグロビー" "PL_tt_desc" "タイタンとしてポイントを稼げ。敵のタイタンを破壊し自分のタイタンを確保しろ。" "PL_tt_hint" "タイタンとしてポイントを稼げ。敵のタイタンを破壊し自分のタイタンを確保しろ。" "PL_tt_abbr" "TT" "GAMEMODE_TT" "タイタン・タグ" "PL_inf" "インフェクション" "PL_inf_lobby" "インフェクションロビー" "PL_inf_desc" "生き残りは死亡するとインフェクターになる。" "PL_inf_hint" "生き残りは死亡するとインフェクターになる。" "PL_inf_abbr" "INF" "GAMEMODE_INF" "インフェクション" "INFECTION_YOU_ARE_INFECTED" "お前はインフェクトされた!" "INFECTION_KILL_SURVIVORS" "残りの生存者をインフェクトしろ" "INFECTION_FIRST_INFECTED" "%s1 が最初のインフェクターだ!" "INFECTION_LAST_SURVIVOR" "%s1 が最後の生存者だ!" "INFECTION_KILL_LAST_SURVIVOR" "時間切れの前に最後の生存者をインフェクトしろ!" "INFECTION_YOU_ARE_LAST_SURVIVOR" "お前が最後の生き残りだ!" "INFECTION_SURVIVE_LAST_SURVIVOR" "生きろ" "PL_hs" "ハイド・アンド・シーク" "PL_hs_lobby" "ハイド・アンド・シークロビー" "PL_hs_desc" "ハイダーは隠れ、シーカーはハイダーを探せ!" "PL_hs_hint" "ハイダーは隠れ、シーカーはハイダーを探せ!" "PL_hs_abbr" "HS" "GAMEMODE_hs" "ハイド・アンド・シーク" "HIDEANDSEEK_YOU_ARE_SEEKER" "お前はシーカーになった" "HIDEANDSEEK_SEEKER_DESC" "ハイダーを探し、格闘でしとめろ。\n開始まで %s1 秒" "HIDEANDSEEK_YOU_ARE_HIDER" "お前はハイダーになった" "HIDEANDSEEK_HIDER_DESC" "シーカーから隠れろ" "HIDEANDSEEK_SEEKERS_INCOMING" "間もなくシーカー到来" "HIDEANDSEEK_DONT_GET_FOUND" "見つかるな!" "HIDEANDSEEK_GET_LAST_HIDER" "%s1 が最後のハイダーだ!" "HIDEANDSEEK_YOU_ARE_LAST_HIDER" "お前が最後のハイダーだ!" "HIDEANDSEEK_GOT_STIM" "興奮剤を得た!捕まるな!" "hideandseek_balance_teams" "オートバランス" "hideandseek_hiding_time" "隠れ時間" "GAMEMODE_fw" "フロンティア戦争" "PL_fw" "フロンティア戦争" "PL_fw_lobby" "フロンティア戦争ロビー" "PL_fw_desc" "敵のハーベスターを破壊し、自分のを守れ!" "PL_fw_abbr" "FW" "GAMEMODE_kr" "強化キルレース" "PL_kr" "強化キルレース" "PL_kr_lobby" "強化キルレースロビー" "PL_kr_desc" "旗を拾い、キルレースを開始しろ。キルでポイントを上げ、キルレースの時間を延ばせ。最高ポイント記録が一番高い者が勝利する" "PL_kr_hint" "旗を拾い、キルレースを開始しろ。キルでポイントを上げ、キルレースの時間を延ばせ。最高ポイント記録が一番高い者が勝利する" "PL_kr_abbr" "KR" "SCOREBOARD_KR_RECORD" "キルレース記録" "KR_NEW_RACER" "%s1 が新しいキルレーサーだ!" "KR_YOU_ARE_NEW_RACER" "お前が新しいキルレーサーだ!" "KR_YOU_SET_NEW_RECORD" "新キルレース記録だ!" "KR_FLAG_INCOMING" "間もなく旗出現" "KR_COLLECT_FLAG" "旗を確保しキルレーサーになれ!" "KR_ENEMY_KILLRACE_OVER" "%s1's のキルレースが終わった" "KR_YOUR_KILLRACE_OVER" "キルレース終了" "KR_YOUR_KILLRACE_SCORE" "キルレース記録は %s1" "GAMEMODE_fastball" "ファストボール" "PL_fastball" "ファストボール" "PL_fastball_lobby" "ファストボールロビー" "PL_fastball_desc" "ライブファイア。パネルをハックし、味方を蘇生できる" "PL_fastball_hint" "ライブファイア。パネルをハックし、味方を蘇生できる" "PL_fastball_abbr" "FB" "FASTBALL_PANEL_CAPTURED" "%s1 がパネル%s2を制圧した" "SCOREBOARD_FASTBALL_HACKS" "制圧パネル" "GAMEMODE_ctf_comp" "激化CTF" // mode settings "MODE_SETTING_CATEGORY_PROMODE" "Proモード" // 要議論: Apexなどでは"出血中"になるが、とりあえず"ダウン"で "MODE_SETTING_CATEGORY_BLEEDOUT" "パイロットのダウン" "custom_air_accel_pilot" "空中加速度" "promode_enable" "Proモードの武器" "fp_embark_enabled" "搭乗と処刑の一人称視点" "classic_rodeo" "クラシックロデオ" "oob_timer_enabled" "アウトオブバウンドタイマー" "riff_instagib" "インスタギブモード" "riff_player_bleedout" "パイロットのダウン" "player_bleedout_forceHolster" "ダウン状態では武器をしまう" "player_bleedout_forceDeathOnTeamBleedout" "チーム全員がダウンしたら死亡" // "ダウン状態の時間"は"ダウンから死亡までの時間" としたかったが長すぎるので断念 "player_bleedout_bleedoutTime" "ダウン状態の時間" "player_bleedout_firstAidTime" "応急処置に必要な時間" "player_bleedout_firstAidTimeSelf" "自己蘇生に必要な時間" "player_bleedout_firstAidHealPercent" "応急処置時のヘルス" "player_bleedout_aiBleedingPlayerMissChance" "ダウン時のAI命中率" // coop stuff "PL_sp_coop" "(UNFINISHED) Singleplayer Coop" "PL_sp_coop_lobby" "Singleplayer Coop Lobby" "PL_sp_coop_desc" "Play through the singleplayer campaign with friends" "PL_sp_coop_hint" "Play through the singleplayer campaign with friends" "PL_sp_coop_abbr" "SP" "SP_TRAINING" "パイロット・ガントレット" "SP_TRAINING_CLASSIC_DESC" "ラスティモーサ大尉の訓練シミュレーション。" "SP_CRASHSITE" "BT-7274" "SP_CRASHSITE_CLASSIC_DESC" "ジャック・クーパーがBT-7274に出会う。" "SP_SEWERS1" "血と錆び" "SP_SEWERS1_CLASSIC_DESC" "クーパーとBTは、アンダーソン少佐との合流を目指して出発する。" "SP_BOOMTOWN_START" "深淵へ" "SP_BOOMTOWN_START_CLASSIC_DESC" "近道で地下を進んだ2人に、予期せぬ事態が発生する。" "SP_HUB_TIMESHIFT" "結果と原因" "SP_HUB_TIMESHIFT_CLASSIC_DESC" "アンダーソン少佐の座標で奇妙な現象が確認された。" "SP_BEACON" "ビーコン" "SP_BEACON_CLASSIC_DESC" "クーパーとBTは生き残った艦隊にIMCの計画を伝えようと試みる。" "SP_TDAY" "火の試練" "SP_TDAY_CLASSIC_DESC" "アークを奪うための総力戦で、クーパーのタイタン操縦技術が試される。" "SP_S2S" "アーク" "SP_S2S_CLASSIC_DESC" "クーパーとBTはアークを求め、激しい追跡劇を繰り広げる。" "SP_SKYWAY_V1" "フォールド・ウェポン" "SP_SKYWAY_V1_CLASSIC_DESC" "BTとクーパーがクーベン・ブリスクに捕まってしまう。" // Better.Serverbrowser "SERVERS_COLUMN" "サーバー" "PLAYERS_COLUMN" "プレイヤー" "MAP_COLUMN" "マップ" "GAMEMODE_COLUMN" "ゲームモード" "LATENCY_COLUMN" "レイテンシー" "SEARCHBAR_LABEL" "検索:" "MAP_FILTER" "マップ" "GAMEMODE_FILTER" "ゲームモード" "HIDE_FULL_FILTER" "満員のサーバーを非表示" "HIDE_EMPTY_FILTER" "参加者のいないサーバーを非表示" "HIDE_PROT_FILTER" "保護されたサーバーを非表示" "SERVER_DESCRIPTION" "概要" "SERVER_MODS" "Mod" "CLEAR_FILTERS" "クリア" "JOIN_BUTTON" "参加" "SWITCH_YES" "はい" "SWITCH_NO" "いいえ" // 要変更: 使われるのはフィルターの表示のみなのでわかりやすさ重視で"全て" としたが、他に使用される箇所が今後できた場合は変更する必要がある "SWITCH_ANY" "全て" "CONNECTING" "接続中..." "INGAME_PLAYERS" "プレイヤー数: ^6BA6C400%s1" "TOTAL_SERVERS" "サーバー数: ^C46C6C00%s1" // Translation done by Zetryox and CYakigasi } } \ No newline at end of file +"lang" +{ + "Language" "japanese" + "Tokens" + { + "MENU_LAUNCH_NORTHSTAR" "Northstarを起動" + "MENU_TITLE_MODS" "Modの管理" + "RELOAD_MODS" "Modをリロード" + + "MENU_MAIN_AUTHENTICATING" "認証中..." + "MENU_MAIN_CONNECTING" "ローカルサーバーへの接続" + + "DIALOG_TITLE_INSTALLED_NORTHSTAR" "Northstarをインストールしていただきありがとうございます!" + "AUTHENTICATION_AGREEMENT_DIALOG_TEXT" "Northstarが動作するために、Northstarのマスターサーバーで認証を行う必要があります。認証を行うとあなたのOriginトークンがNorthstarのマスターサーバーに送信されます。これは保存されたり、認証以外の用途に使用されることはありません。「はい」を押すと認証を開始します。これはModメニューでいつでも変更できます。" + // 要議論: "認証への同意" は別のテキストに差し替える必要があるかも + "BACK_AUTHENTICATION_AGREEMENT" "認証への同意" + "AUTHENTICATION_AGREEMENT" "認証への同意" + "AUTHENTICATION_AGREEMENT_RESTART" "変更を適用するには、一度Titanfall 2を再起動する必要があります。" + + "MENU_TITLE_SERVER_BROWSER" "サーバーブラウザー" + "NS_SERVERBROWSER_NOSERVERS" "サーバーが見つかりませんでした。" + "NS_SERVERBROWSER_WAITINGFORSERVERS" "サーバーを待っています..." + "NS_SERVERBROWSER_CONNECTIONFAILED" "接続に失敗しました!" + // 要議論 + "NS_SERVERBROWSER_CONFIRMATIONJOIN" "'%s1'に参加してもよろしいですか?" + "NS_SERVERBROWSER_JOIN" "'%s1'に参加しますか?" + "NS_SERVERBROWSER_CONFIRMATIONJOIN_ISPASSWORDPROTECTED" "'%s1'に参加してもよろしいですか? \nこのサーバーはパスワードで保護されています。" + "NS_SERVERBROWSER_CONNECTING" "マッチに接続中..." + "REFRESH_SERVERS" "更新" + + "MENU_TITLE_CONNECT_PASSWORD" "パスワードで接続" + "MENU_CONNECT_MENU_CONNECT" "接続" + + "PRIVATE_MATCH_PAGE_PREV" "前のページ" + "PRIVATE_MATCH_PAGE_NEXT" "次のページ" + + "MENU_MATCH_SETTINGS" "マッチの設定" + "MENU_MATCH_SETTINGS_SUBMENU" "%s1 の設定" + + + "PRIVATE_MATCH_SINGLEPLAYER_LEVEL" "%s1 (シングルプレイヤー)" + + + "PL_fra_hint" "1人きりの戦いに挑戦。敵を倒せば勝利だ。バッテリーを3個回収し、タイタンフォールを要請せよ。" + + // mode settings + "MODE_SETTING_CATEGORY_PILOT" "パイロット" + "MODE_SETTING_CATEGORY_TITAN" "タイタン" + "MODE_SETTING_CATEGORY_RIFF" "エクストラ" + "MODE_SETTING_CATEGORY_MATCH" "マッチ" + + // controls + //要議論: "コンソールの表示/非表示"のままか、"コンソール表示のトグル"、それ以外への差し替え + "TOGGLE_CONSOLE" "コンソールの表示/非表示" + + "classic_mp" "クラシックマルチ" + "run_epilogue" "エピローグの有効化" + "scorelimit" "スコア上限" + "roundscorelimit" "スコア上限 (ラウンドベース)" + // 要議論: "時間制限"のままか、"マッチ時間"、"タイム上限"、それ以外への差し替え + "timelimit" "時間制限" + "roundtimelimit" "時間制限 (ラウンドベース)" + + "pilot_health_multiplier" "ヘルス倍率" + // 要議論: "リスポーン遅延" のままか、"リスポーンまでの時間"、それ以外への差し替え + "respawn_delay" "リスポーン遅延" + "boosts_enabled" "ブースト" + // 長いのでなんとかしたい + "earn_meter_pilot_overdrive" "ブーストメーターオーバードライブ" + "earn_meter_pilot_multiplier" "ブーストメーター倍率" + + "earn_meter_titan_multiplier" "タイタンブーストメーター倍率" + // 仮翻訳: "イージスアップグレード","無限ドームの状態","シールド再生" + "aegis_upgrades" "イージスアップグレード" + "infinite_doomed_state" "無限ドゥームの状態" + "titan_shield_regen" "シールド再生" + + "riff_floorislava" "デッドリー・グラウンド" + "featured_mode_all_holopilot" "華麗なる謀略" + "featured_mode_all_grapple" "進撃のタイタンフォール" + "featured_mode_all_phase" "異次元" + "featured_mode_all_ticks" "辛口消耗戦" + "featured_mode_tactikill" "戦術キル消耗戦" + "featured_mode_amped_tacticals" "戦術強化" + "featured_mode_rocket_arena" "ロケット・アリーナ" + "featured_mode_shotguns_snipers" "危険武装" + "iron_rules" "アイロンルール" + + "cp_amped_capture_points" "拠点増幅" + "coliseum_loadouts_enabled" "コロシアムロードアウト" + + // northstar.custom localisation is just deciding not to work, so putting it here for now + "PL_sbox" "サンドボックス" + "PL_sbox_lobby" "サンドボックスロビー" + "PL_sbox_desc" "サンドボックス" + "PL_sbox_abbr" "SBOX" + "GAMEMODE_SBOX" "Sandbox" + + "PL_gg" "ガン・ゲーム" + "PL_gg_lobby" "ガン・ゲームロビー" + "PL_gg_desc" "全ての銃でキルを取って勝利しろ。" + "PL_gg_hint" "全ての銃でキルを取って勝利しろ。" + "PL_gg_abbr" "GG" + "GAMEMODE_GG" "ガン・ゲーム" + + "PL_tt" "タイタン・タグ" + "PL_tt_lobby" "タイタン・タグロビー" + "PL_tt_desc" "タイタンとしてポイントを稼げ。敵のタイタンを破壊し自分のタイタンを確保しろ。" + "PL_tt_hint" "タイタンとしてポイントを稼げ。敵のタイタンを破壊し自分のタイタンを確保しろ。" + "PL_tt_abbr" "TT" + "GAMEMODE_TT" "タイタン・タグ" + + "PL_inf" "インフェクション" + "PL_inf_lobby" "インフェクションロビー" + "PL_inf_desc" "生き残りは死亡するとインフェクターになる。" + "PL_inf_hint" "生き残りは死亡するとインフェクターになる。" + "PL_inf_abbr" "INF" + + "GAMEMODE_INF" "インフェクション" + "INFECTION_YOU_ARE_INFECTED" "お前はインフェクトされた!" + "INFECTION_KILL_SURVIVORS" "残りの生存者をインフェクトしろ" + "INFECTION_FIRST_INFECTED" "%s1 が最初のインフェクターだ!" + "INFECTION_LAST_SURVIVOR" "%s1 が最後の生存者だ!" + "INFECTION_KILL_LAST_SURVIVOR" "時間切れの前に最後の生存者をインフェクトしろ!" + "INFECTION_YOU_ARE_LAST_SURVIVOR" "お前が最後の生き残りだ!" + "INFECTION_SURVIVE_LAST_SURVIVOR" "生きろ" + + "PL_hs" "ハイド・アンド・シーク" + "PL_hs_lobby" "ハイド・アンド・シークロビー" + "PL_hs_desc" "ハイダーは隠れ、シーカーはハイダーを探せ!" + "PL_hs_hint" "ハイダーは隠れ、シーカーはハイダーを探せ!" + "PL_hs_abbr" "HS" + "GAMEMODE_hs" "ハイド・アンド・シーク" + "HIDEANDSEEK_YOU_ARE_SEEKER" "お前はシーカーになった" + "HIDEANDSEEK_SEEKER_DESC" "ハイダーを探し、格闘でしとめろ。\n開始まで %s1 秒" + "HIDEANDSEEK_YOU_ARE_HIDER" "お前はハイダーになった" + "HIDEANDSEEK_HIDER_DESC" "シーカーから隠れろ" + "HIDEANDSEEK_SEEKERS_INCOMING" "間もなくシーカー到来" + "HIDEANDSEEK_DONT_GET_FOUND" "見つかるな!" + "HIDEANDSEEK_GET_LAST_HIDER" "%s1 が最後のハイダーだ!" + "HIDEANDSEEK_YOU_ARE_LAST_HIDER" "お前が最後のハイダーだ!" + "HIDEANDSEEK_GOT_STIM" "興奮剤を得た!捕まるな!" + "hideandseek_balance_teams" "オートバランス" + "hideandseek_hiding_time" "隠れ時間" + + "GAMEMODE_fw" "フロンティア戦争" + "PL_fw" "フロンティア戦争" + "PL_fw_lobby" "フロンティア戦争ロビー" + "PL_fw_desc" "敵のハーベスターを破壊し、自分のを守れ!" + "PL_fw_abbr" "FW" + + "GAMEMODE_kr" "強化キルレース" + "PL_kr" "強化キルレース" + "PL_kr_lobby" "強化キルレースロビー" + "PL_kr_desc" "旗を拾い、キルレースを開始しろ。キルでポイントを上げ、キルレースの時間を延ばせ。最高ポイント記録が一番高い者が勝利する" + "PL_kr_hint" "旗を拾い、キルレースを開始しろ。キルでポイントを上げ、キルレースの時間を延ばせ。最高ポイント記録が一番高い者が勝利する" + "PL_kr_abbr" "KR" + "SCOREBOARD_KR_RECORD" "キルレース記録" + "KR_NEW_RACER" "%s1 が新しいキルレーサーだ!" + "KR_YOU_ARE_NEW_RACER" "お前が新しいキルレーサーだ!" + "KR_YOU_SET_NEW_RECORD" "新キルレース記録だ!" + "KR_FLAG_INCOMING" "間もなく旗出現" + "KR_COLLECT_FLAG" "旗を確保しキルレーサーになれ!" + "KR_ENEMY_KILLRACE_OVER" "%s1's のキルレースが終わった" + "KR_YOUR_KILLRACE_OVER" "キルレース終了" + "KR_YOUR_KILLRACE_SCORE" "キルレース記録は %s1" + + "GAMEMODE_fastball" "ファストボール" + "PL_fastball" "ファストボール" + "PL_fastball_lobby" "ファストボールロビー" + "PL_fastball_desc" "ライブファイア。パネルをハックし、味方を蘇生できる" + "PL_fastball_hint" "ライブファイア。パネルをハックし、味方を蘇生できる" + "PL_fastball_abbr" "FB" + "FASTBALL_PANEL_CAPTURED" "%s1 がパネル%s2を制圧した" + "SCOREBOARD_FASTBALL_HACKS" "制圧パネル" + + "GAMEMODE_ctf_comp" "激化CTF" + + // mode settings + "MODE_SETTING_CATEGORY_PROMODE" "Proモード" + // 要議論: Apexなどでは"出血中"になるが、とりあえず"ダウン"で + "MODE_SETTING_CATEGORY_BLEEDOUT" "パイロットのダウン" + + "custom_air_accel_pilot" "空中加速度" + "promode_enable" "Proモードの武器" + "fp_embark_enabled" "搭乗と処刑の一人称視点" + "classic_rodeo" "クラシックロデオ" + "oob_timer_enabled" "アウトオブバウンドタイマー" + "riff_instagib" "インスタギブモード" + + "riff_player_bleedout" "パイロットのダウン" + "player_bleedout_forceHolster" "ダウン状態では武器をしまう" + "player_bleedout_forceDeathOnTeamBleedout" "チーム全員がダウンしたら死亡" + // "ダウン状態の時間"は"ダウンから死亡までの時間" としたかったが長すぎるので断念 + "player_bleedout_bleedoutTime" "ダウン状態の時間" + "player_bleedout_firstAidTime" "応急処置に必要な時間" + "player_bleedout_firstAidTimeSelf" "自己蘇生に必要な時間" + "player_bleedout_firstAidHealPercent" "応急処置時のヘルス" + "player_bleedout_aiBleedingPlayerMissChance" "ダウン時のAI命中率" + + // coop stuff + "PL_sp_coop" "(UNFINISHED) Singleplayer Coop" + "PL_sp_coop_lobby" "Singleplayer Coop Lobby" + "PL_sp_coop_desc" "Play through the singleplayer campaign with friends" + "PL_sp_coop_hint" "Play through the singleplayer campaign with friends" + "PL_sp_coop_abbr" "SP" + + "SP_TRAINING" "パイロット・ガントレット" + "SP_TRAINING_CLASSIC_DESC" "ラスティモーサ大尉の訓練シミュレーション。" + + "SP_CRASHSITE" "BT-7274" + "SP_CRASHSITE_CLASSIC_DESC" "ジャック・クーパーがBT-7274に出会う。" + + "SP_SEWERS1" "血と錆び" + "SP_SEWERS1_CLASSIC_DESC" "クーパーとBTは、アンダーソン少佐との合流を目指して出発する。" + + "SP_BOOMTOWN_START" "深淵へ" + "SP_BOOMTOWN_START_CLASSIC_DESC" "近道で地下を進んだ2人に、予期せぬ事態が発生する。" + + "SP_HUB_TIMESHIFT" "結果と原因" + "SP_HUB_TIMESHIFT_CLASSIC_DESC" "アンダーソン少佐の座標で奇妙な現象が確認された。" + + "SP_BEACON" "ビーコン" + "SP_BEACON_CLASSIC_DESC" "クーパーとBTは生き残った艦隊にIMCの計画を伝えようと試みる。" + + "SP_TDAY" "火の試練" + "SP_TDAY_CLASSIC_DESC" "アークを奪うための総力戦で、クーパーのタイタン操縦技術が試される。" + + "SP_S2S" "アーク" + "SP_S2S_CLASSIC_DESC" "クーパーとBTはアークを求め、激しい追跡劇を繰り広げる。" + + "SP_SKYWAY_V1" "フォールド・ウェポン" + "SP_SKYWAY_V1_CLASSIC_DESC" "BTとクーパーがクーベン・ブリスクに捕まってしまう。" + + // Better.Serverbrowser + "SERVERS_COLUMN" "サーバー" + "PLAYERS_COLUMN" "プレイヤー" + "MAP_COLUMN" "マップ" + "GAMEMODE_COLUMN" "ゲームモード" + "LATENCY_COLUMN" "レイテンシー" + "SEARCHBAR_LABEL" "検索:" + "MAP_FILTER" "マップ" + "GAMEMODE_FILTER" "ゲームモード" + "HIDE_FULL_FILTER" "満員のサーバーを非表示" + "HIDE_EMPTY_FILTER" "参加者のいないサーバーを非表示" + "HIDE_PROT_FILTER" "保護されたサーバーを非表示" + "SERVER_DESCRIPTION" "概要" + "SERVER_MODS" "Mod" + "CLEAR_FILTERS" "クリア" + "JOIN_BUTTON" "参加" + + "SWITCH_YES" "はい" + "SWITCH_NO" "いいえ" + // 要変更: 使われるのはフィルターの表示のみなのでわかりやすさ重視で"全て" としたが、他に使用される箇所が今後できた場合は変更する必要がある + "SWITCH_ANY" "全て" + + "CONNECTING" "接続中..." + "INGAME_PLAYERS" "プレイヤー数: ^6BA6C400%s1" + "TOTAL_SERVERS" "サーバー数: ^C46C6C00%s1" + // Translation done by Zetryox and CYakigasi + + // In-game chat + "HUD_CHAT_WHISPER_PREFIX" "[WHISPER]" + "HUD_CHAT_SERVER_PREFIX" "[SERVER]" + } +} diff --git a/Northstar.Client/mod/resource/northstar_client_localisation_portuguese.txt b/Northstar.Client/mod/resource/northstar_client_localisation_portuguese.txt index 43e167a6..6c3e0274 100644 --- a/Northstar.Client/mod/resource/northstar_client_localisation_portuguese.txt +++ b/Northstar.Client/mod/resource/northstar_client_localisation_portuguese.txt @@ -299,5 +299,9 @@ Clique em Sim se você concorda. Esta escolha pode ser alterada a qualquer momen "SHOW_ALL" "Todos" "SHOW_ONLY_ENABLED" "Apenas ativados" "SHOW_ONLY_DISABLED" "Apenas desativados" + + // In-game chat + "HUD_CHAT_WHISPER_PREFIX" "[WHISPER]" + "HUD_CHAT_SERVER_PREFIX" "[SERVER]" } } diff --git a/Northstar.Client/mod/resource/northstar_client_localisation_russian.txt b/Northstar.Client/mod/resource/northstar_client_localisation_russian.txt index af133a8e..5a1c1590 100644 --- a/Northstar.Client/mod/resource/northstar_client_localisation_russian.txt +++ b/Northstar.Client/mod/resource/northstar_client_localisation_russian.txt @@ -1 +1,245 @@ -"lang" { "Language" "russian" "Tokens" { "MENU_LAUNCH_NORTHSTAR" "Запустить Northstar" "MENU_TITLE_MODS" "Моды" "RELOAD_MODS" "Перезагрузить моды" "DIALOG_TITLE_INSTALLED_NORTHSTAR" "Спасибо за установку Northstar!" "AUTHENTICATION_AGREEMENT_DIALOG_TEXT" "Чтобы Northstar работал, ему необходимо авторизироваться через мастер-сервер Northstar. Это потребует отправку вашего токена Origin на мастер-сервер, он не будет сохранён на сервер или использован в других целях. Нажмите Да, если вы согласны с этим. Ваш выбор может быть изменён в меню модов в любое время." "BACK_AUTHENTICATION_AGREEMENT" "Соглашение с авторизацией" "AUTHENTICATION_AGREEMENT" "Соглашение с авторизацией" "AUTHENTICATION_AGREEMENT_RESTART" "Вам необходимо перезапустить Titanfall 2, чтобы этот выбор вступил в силу." "MENU_TITLE_SERVER_BROWSER" "Список серверов" "NS_SERVERBROWSER_NOSERVERS" "Серверов не найдено" "NS_SERVERBROWSER_WAITINGFORSERVERS" "Ожидание серверов..." "NS_SERVERBROWSER_CONNECTIONFAILED" "Соединение провалено!" "REFRESH_SERVERS" "Обновить" "MENU_TITLE_CONNECT_PASSWORD" "Подключиться с помощью пароля" "MENU_CONNECT_MENU_CONNECT" "Подключиться" "PRIVATE_MATCH_PAGE_PREV" "Предыдущая страница" "PRIVATE_MATCH_PAGE_NEXT" "Следующая страница" "MENU_MATCH_SETTINGS" "Настройки матча" "MENU_MATCH_SETTINGS_SUBMENU" "Настройки %s1" "PRIVATE_MATCH_SINGLEPLAYER_LEVEL" "%s1 (Одиночная игра)" // fra hint for private match menu, because fra only has PL_fra_desc in vanilla "PL_fra_hint" "Ты один. Уничтожь противников, чтобы победить. Собери 3 батареи для вызова титана." // mode settings "MODE_SETTING_CATEGORY_PILOT" "Пилот" "MODE_SETTING_CATEGORY_TITAN" "Титан" "MODE_SETTING_CATEGORY_RIFF" "Рифф" "MODE_SETTING_CATEGORY_MATCH" "Матч" "classic_mp" "Классический мультиплеер" "run_epilogue" "Запустить эпилог" "scorelimit" "Лимит очков" "roundscorelimit" "Лимит очков (по раундам)" "timelimit" "Лимит времени" "roundtimelimit" "Лимит времени (по раундам)" "pilot_health_multiplier" "Множитель здоровья" "respawn_delay" "Задержка возрождения" "boosts_enabled" "Усиления" "earn_meter_pilot_overdrive" "Перегрузка шкалы усиления" "earn_meter_pilot_multiplier" "Множитель шкалы усиления пилота" "earn_meter_titan_multiplier" "Множитель шкалы ядра титана" "aegis_upgrades" "Улучшения эгиды" "infinite_doomed_state" "Бесконечное обречённое состояние" "titan_shield_regen" "Регенерация щитов" "riff_floorislava" "Смертельная Земля" "featured_mode_all_holopilot" "Великий обманщик" "featured_mode_all_grapple" "Зацепщик" "featured_mode_all_phase" "Альтернативное пространство" "featured_mode_all_ticks" "Острый" "featured_mode_tactikill" "Тактический удар" "featured_mode_amped_tacticals" "Усиленные тактики" "featured_mode_rocket_arena" "Ракетная Арена" "featured_mode_shotguns_snipers" "Вооружён и опасен" "iron_rules" "Правила Железного Титана" "cp_amped_capture_points" "Усиленные точки опоры" "coliseum_loadouts_enabled" "Выгрузка коллизея" // northstar.custom localisation is just deciding not to work, so putting it here for now "PL_sbox" "Песочница" "PL_sbox_lobby" "Лобби песочницы" "PL_sbox_desc" "Как gmod, только хуже" "PL_sbox_abbr" "SBOX" "GAMEMODE_SBOX" "Песочница" "PL_gg" "Гонка вооружений" "PL_gg_lobby" "Лобби гонки вооружений" "PL_gg_desc" "Уничтожьте противника из всех видов оружия чтобы победить." "PL_gg_hint" "Уничтожьте противника из всех видов оружия чтобы победить." "PL_gg_abbr" "GG" "GAMEMODE_GG" "Гонка вооружений" "PL_tt" "Разборки Титанов" "PL_tt_lobby" "Лобби разборок титанов" "PL_tt_desc" "Зарабатывайте очки, пока вы находитесь в своём титане. Уничтожьте титана чтобы получить своего." "PL_tt_hint" "Зарабатывайте очки, пока вы находитесь в своём титане. Уничтожьте титана чтобы получить своего." "PL_tt_abbr" "TT" "GAMEMODE_TT" "Разборки титанов" "PL_inf" "Заражение" "PL_inf_lobby" "Лобби Заражения" "PL_inf_desc" "Переживите инфекцию. Выжившие становятся заражёнными при убийстве." "PL_inf_hint" "Переживите инфекцию. Выжившие становятся заражёнными при убийстве." "PL_inf_abbr" "INF" "GAMEMODE_INF" "Заражение" "INFECTION_YOU_ARE_INFECTED" "Вы были заражены!" "INFECTION_KILL_SURVIVORS" "Заразите всех оставшихся выживших." "INFECTION_FIRST_INFECTED" "%s1 был заражён первым." "INFECTION_LAST_SURVIVOR" "%s1 выжил последним!" "INFECTION_KILL_LAST_SURVIVOR" "Зарази их, пока время не вышло!" "INFECTION_YOU_ARE_LAST_SURVIVOR" "Вы последний выживший!" "INFECTION_SURVIVE_LAST_SURVIVOR" "Выживите." "PL_hs" "Прятки" "PL_hs_lobby" "Лобби пряток" "PL_hs_desc" "Игра со стандартными правилами пряток." "PL_hs_hint" "Игра со стандартными правилами пряток." "PL_hs_abbr" "HS" "GAMEMODE_hs" "Прятки" "HIDEANDSEEK_YOU_ARE_SEEKER" "ВЫ ИЩЕТЕ" "HIDEANDSEEK_SEEKER_DESC" "Найдите прячущихся и ударьте их.\nВы появитесь через %s1 секунд(у)" "HIDEANDSEEK_YOU_ARE_HIDER" "ВЫ ПРЯЧЕТЕСЬ" "HIDEANDSEEK_HIDER_DESC" "Спрятайтесь." "HIDEANDSEEK_SEEKERS_INCOMING" "ИЩУЩИЕ ВЫДВИГАЮТСЯ" "HIDEANDSEEK_DONT_GET_FOUND" "Не дайте себя найти!" "HIDEANDSEEK_GET_LAST_HIDER" "%s1 ПОСЛЕДНИЙ СПРЯТАВШИЙСЯ" "HIDEANDSEEK_YOU_ARE_LAST_HIDER" "ВЫ ПОСЛЕДНИЙ СПРЯТАВШИЙСЯ" "HIDEANDSEEK_GOT_STIM" "Вас остановили! Не попадитесь!" "hideandseek_balance_teams" "Автобаланс обеих сторон" "hideandseek_hiding_time" "Время спрятаться" // these are defined in r1_english but titan war is a shit name so i'm changing it to another one that was referenced in development "GAMEMODE_fw" "Пограничная война" "PL_fw" "Пограничная война" "PL_fw_lobby" "Лобби пограничной войны" "PL_fw_desc" "Уничтожьте харвестер противника и защитите свой" "PL_fw_abbr" "FW" "GAMEMODE_kr" "Усиленные гонки убийств" "PL_kr" "Усиленные гонки убийств" "PL_kr_lobby"Лобби усиленных гонок убийств" "PL_kr_desc" "Получайте убийства, чтобы увеличить продолжительность вашей гонки за убийствами. Соберите флаг, чтобы начать его. Установите рекорд убийств, чтобы победить." "PL_kr_hint" "Получайте убийства, чтобы увеличить продолжительность вашей гонки за убийствами. Соберите флаг, чтобы начать его. Установите рекорд убийств, чтобы победить." "PL_kr_abbr" "KR" "SCOREBOARD_KR_RECORD" "Рекорд убийств" "KR_NEW_RACER" "%s1 усиленный гонщик за убийства" "KR_YOU_ARE_NEW_RACER" "Вы усиленный гонщик за убийства" "KR_YOU_SET_NEW_RECORD" "Установите новый рекорд убийств!" "KR_FLAG_INCOMING" "Флаг прибывает" "KR_COLLECT_FLAG" "Возьмите его чтобы стать гонщиком за убиства!" "KR_ENEMY_KILLRACE_OVER" "Гонки убийств у %s1 закончились" "KR_YOUR_KILLRACE_OVER" "Ваши гонки убийств кончились" "KR_YOUR_KILLRACE_SCORE" "У вас %s1 убийств." "GAMEMODE_fastball" "Фастболл" "PL_fastball" "Фастболл" "PL_fastball_lobby" "Лобби фастболла" "PL_fastball_desc" "Перманентная смерть. Взломайте панели управления чтобы побеждать в раундах и возродить своих членов команды." "PL_fastball_hint" "Перманентная смерть. Взломайте панели управления чтобы побеждать в раундах и возродить своих членов команды." "PL_fastball_abbr" "FB" "FASTBALL_PANEL_CAPTURED" "%s1 захватил(а) панель %s2" "SCOREBOARD_FASTBALL_HACKS" "Панелей захвачено" "GAMEMODE_ctf_comp" "Соревновательное CTF" // mode settings "MODE_SETTING_CATEGORY_PROMODE" "Продвинутое оружие" "MODE_SETTING_CATEGORY_BLEEDOUT" "Кровотечение пилота" "custom_air_accel_pilot" "Ускорение в воздухе" "promode_enable" "Продвинутое оружие" "fp_embark_enabled" "Отправления/Казни от первого лица" "classic_rodeo" "Классическое родео" "oob_timer_enabled" "Таймер уничтожения за пределами карты" "riff_instagib" "Моментальная смерть при попадании" "riff_player_bleedout" "Кровотечение пилота" "player_bleedout_forceHolster" "Использовать оружие из кобуры при кровотечении" "player_bleedout_forceDeathOnTeamBleedout" "Смерть при кровотечении во всей команде" "player_bleedout_bleedoutTime" "Кремя кровотечения" "player_bleedout_firstAidTime" "Время оказания первой помощи" "player_bleedout_firstAidTimeSelf" "Время оказания помощи самому себе" "player_bleedout_firstAidHealPercent" "Процент здоровья после лечения" "player_bleedout_aiBleedingPlayerMissChance" "Шанс промаха ИИ при кровотечении" // coop stuff "PL_sp_coop" "(НЕ ЗАВЕРШЕНО) Кооператив кампании" "PL_sp_coop_lobby" "Лобби кооператива кампании" "PL_sp_coop_desc" "Сыграть в кампанию с друзьями" "PL_sp_coop_hint" "Сыграть в кампанию с друзьями" "PL_sp_coop_abbr" "SP" "SP_TRAINING" "Тренировачная полоса пилотов" "SP_TRAINING_CLASSIC_DESC" "Тренировачная имитация капитана Ластимозы." "SP_CRASHSITE" "БT-7274" "SP_CRASHSITE_CLASSIC_DESC" "Джек Купер встречает BT-7274." "SP_SEWERS1" "Кровь и Ржавчина" "SP_SEWERS1_CLASSIC_DESC" "Купер и БT выходят на встречу с Майором Андерсеном." "SP_BOOMTOWN_START" "В Бездну" "SP_BOOMTOWN_START_CLASSIC_DESC" "Подземная срезка приводит к неожиданным последствиям." "SP_HUB_TIMESHIFT" "Следствие и Причина" "SP_HUB_TIMESHIFT_CLASSIC_DESC" "Странный феномен был обнаружен на местополжении Майора Андерсена." "SP_BEACON" "Маяк" "SP_BEACON_CLASSIC_DESC" "Купер и БТ пытаются известить оставшийся флот о планах IMC." "SP_TDAY" "Испытание огнём" "SP_TDAY_CLASSIC_DESC" "Испытание навыков титана Купера в грандиозной битве за захват Ковчега." "SP_S2S" "Ковчег" "SP_S2S_CLASSIC_DESC" "Купер и БТ перемещаются по кораблям, преследуя Ковчег." "SP_SKYWAY_V1" "Сложенное оружие" "SP_SKYWAY_V1_CLASSIC_DESC" "БT и Купер были захвачены Кубеном Блиском." // Better.Serverbrowser "SERVERS_COLUMN" "Сервера" "PLAYERS_COLUMN" "Игроки" "MAP_COLUMN" "Карта" "GAMEMODE_COLUMN" "Режим игры" "LATENCY_COLUMN" "Задержка" "SEARCHBAR_LABEL" "Поиск:" "MAP_FILTER" "Карта" "GAMEMODE_FILTER" "Режим игры" "HIDE_FULL_FILTER" "Скрывать полные сервера" "HIDE_EMPTY_FILTER" "Скрывать пустые сервера" "HIDE_PROT_FILTER" "Скрывать закрытые сервера" "SERVER_DESCRIPTION" "Описание" "SERVER_MODS" "Моды" "CLEAR_FILTERS" "ОЧИСТИТЬ" "JOIN_BUTTON" "ПРИСОЕДИНИТЬСЯ" "SWITCH_YES" "Да" "SWITCH_NO" "Нет" "SWITCH_ANY" "Любой" "CONNECTING" "Соединение..." "INGAME_PLAYERS" "Игроков: ^6BA6C400%s1" "TOTAL_SERVERS" "Серверов: ^C46C6C00%s1" } } \ No newline at end of file +"lang" +{ + "Language" "russian" + "Tokens" + { + "MENU_LAUNCH_NORTHSTAR" "Запустить Northstar" + "MENU_TITLE_MODS" "Моды" + "RELOAD_MODS" "Перезагрузить моды" + + "DIALOG_TITLE_INSTALLED_NORTHSTAR" "Спасибо за установку Northstar!" + "AUTHENTICATION_AGREEMENT_DIALOG_TEXT" "Чтобы Northstar работал, ему необходимо авторизироваться через мастер-сервер Northstar. Это потребует отправку вашего токена Origin на мастер-сервер, он не будет сохранён на сервер или использован в других целях. +Нажмите Да, если вы согласны с этим. Ваш выбор может быть изменён в меню модов в любое время." + "BACK_AUTHENTICATION_AGREEMENT" "Соглашение с авторизацией" + "AUTHENTICATION_AGREEMENT" "Соглашение с авторизацией" + "AUTHENTICATION_AGREEMENT_RESTART" "Вам необходимо перезапустить Titanfall 2, чтобы этот выбор вступил в силу." + + "MENU_TITLE_SERVER_BROWSER" "Список серверов" + "NS_SERVERBROWSER_NOSERVERS" "Серверов не найдено" + "NS_SERVERBROWSER_WAITINGFORSERVERS" "Ожидание серверов..." + "NS_SERVERBROWSER_CONNECTIONFAILED" "Соединение провалено!" + "REFRESH_SERVERS" "Обновить" + + "MENU_TITLE_CONNECT_PASSWORD" "Подключиться с помощью пароля" + "MENU_CONNECT_MENU_CONNECT" "Подключиться" + + "PRIVATE_MATCH_PAGE_PREV" "Предыдущая страница" + "PRIVATE_MATCH_PAGE_NEXT" "Следующая страница" + + "MENU_MATCH_SETTINGS" "Настройки матча" + "MENU_MATCH_SETTINGS_SUBMENU" "Настройки %s1" + + "PRIVATE_MATCH_SINGLEPLAYER_LEVEL" "%s1 (Одиночная игра)" + + // fra hint for private match menu, because fra only has PL_fra_desc in vanilla + "PL_fra_hint" "Ты один. Уничтожь противников, чтобы победить. Собери 3 батареи для вызова титана." + + // mode settings + "MODE_SETTING_CATEGORY_PILOT" "Пилот" + "MODE_SETTING_CATEGORY_TITAN" "Титан" + "MODE_SETTING_CATEGORY_RIFF" "Рифф" + "MODE_SETTING_CATEGORY_MATCH" "Матч" + + "classic_mp" "Классический мультиплеер" + "run_epilogue" "Запустить эпилог" + "scorelimit" "Лимит очков" + "roundscorelimit" "Лимит очков (по раундам)" + "timelimit" "Лимит времени" + "roundtimelimit" "Лимит времени (по раундам)" + + "pilot_health_multiplier" "Множитель здоровья" + "respawn_delay" "Задержка возрождения" + "boosts_enabled" "Усиления" + "earn_meter_pilot_overdrive" "Перегрузка шкалы усиления" + "earn_meter_pilot_multiplier" "Множитель шкалы усиления пилота" + + "earn_meter_titan_multiplier" "Множитель шкалы ядра титана" + "aegis_upgrades" "Улучшения эгиды" + "infinite_doomed_state" "Бесконечное обречённое состояние" + "titan_shield_regen" "Регенерация щитов" + + "riff_floorislava" "Смертельная Земля" + "featured_mode_all_holopilot" "Великий обманщик" + "featured_mode_all_grapple" "Зацепщик" + "featured_mode_all_phase" "Альтернативное пространство" + "featured_mode_all_ticks" "Острый" + "featured_mode_tactikill" "Тактический удар" + "featured_mode_amped_tacticals" "Усиленные тактики" + "featured_mode_rocket_arena" "Ракетная Арена" + "featured_mode_shotguns_snipers" "Вооружён и опасен" + "iron_rules" "Правила Железного Титана" + + "cp_amped_capture_points" "Усиленные точки опоры" + "coliseum_loadouts_enabled" "Выгрузка коллизея" + + // northstar.custom localisation is just deciding not to work, so putting it here for now + "PL_sbox" "Песочница" + "PL_sbox_lobby" "Лобби песочницы" + "PL_sbox_desc" "Как gmod, только хуже" + "PL_sbox_abbr" "SBOX" + "GAMEMODE_SBOX" "Песочница" + + "PL_gg" "Гонка вооружений" + "PL_gg_lobby" "Лобби гонки вооружений" + "PL_gg_desc" "Уничтожьте противника из всех видов оружия чтобы победить." + "PL_gg_hint" "Уничтожьте противника из всех видов оружия чтобы победить." + "PL_gg_abbr" "GG" + "GAMEMODE_GG" "Гонка вооружений" + + "PL_tt" "Разборки Титанов" + "PL_tt_lobby" "Лобби разборок титанов" + "PL_tt_desc" "Зарабатывайте очки, пока вы находитесь в своём титане. Уничтожьте титана чтобы получить своего." + "PL_tt_hint" "Зарабатывайте очки, пока вы находитесь в своём титане. Уничтожьте титана чтобы получить своего." + "PL_tt_abbr" "TT" + "GAMEMODE_TT" "Разборки титанов" + + "PL_inf" "Заражение" + "PL_inf_lobby" "Лобби Заражения" + "PL_inf_desc" "Переживите инфекцию. Выжившие становятся заражёнными при убийстве." + "PL_inf_hint" "Переживите инфекцию. Выжившие становятся заражёнными при убийстве." + "PL_inf_abbr" "INF" + "GAMEMODE_INF" "Заражение" + "INFECTION_YOU_ARE_INFECTED" "Вы были заражены!" + "INFECTION_KILL_SURVIVORS" "Заразите всех оставшихся выживших." + "INFECTION_FIRST_INFECTED" "%s1 был заражён первым." + "INFECTION_LAST_SURVIVOR" "%s1 выжил последним!" + "INFECTION_KILL_LAST_SURVIVOR" "Зарази их, пока время не вышло!" + "INFECTION_YOU_ARE_LAST_SURVIVOR" "Вы последний выживший!" + "INFECTION_SURVIVE_LAST_SURVIVOR" "Выживите." + + "PL_hs" "Прятки" + "PL_hs_lobby" "Лобби пряток" + "PL_hs_desc" "Игра со стандартными правилами пряток." + "PL_hs_hint" "Игра со стандартными правилами пряток." + "PL_hs_abbr" "HS" + "GAMEMODE_hs" "Прятки" + "HIDEANDSEEK_YOU_ARE_SEEKER" "ВЫ ИЩЕТЕ" + "HIDEANDSEEK_SEEKER_DESC" "Найдите прячущихся и ударьте их.\nВы появитесь через %s1 секунд(у)" + "HIDEANDSEEK_YOU_ARE_HIDER" "ВЫ ПРЯЧЕТЕСЬ" + "HIDEANDSEEK_HIDER_DESC" "Спрятайтесь." + "HIDEANDSEEK_SEEKERS_INCOMING" "ИЩУЩИЕ ВЫДВИГАЮТСЯ" + "HIDEANDSEEK_DONT_GET_FOUND" "Не дайте себя найти!" + "HIDEANDSEEK_GET_LAST_HIDER" "%s1 ПОСЛЕДНИЙ СПРЯТАВШИЙСЯ" + "HIDEANDSEEK_YOU_ARE_LAST_HIDER" "ВЫ ПОСЛЕДНИЙ СПРЯТАВШИЙСЯ" + "HIDEANDSEEK_GOT_STIM" "Вас остановили! Не попадитесь!" + "hideandseek_balance_teams" "Автобаланс обеих сторон" + "hideandseek_hiding_time" "Время спрятаться" + + // these are defined in r1_english but titan war is a shit name so i'm changing it to another one that was referenced in development + "GAMEMODE_fw" "Пограничная война" + "PL_fw" "Пограничная война" + "PL_fw_lobby" "Лобби пограничной войны" + "PL_fw_desc" "Уничтожьте харвестер противника и защитите свой" + "PL_fw_abbr" "FW" + + "GAMEMODE_kr" "Усиленные гонки убийств" + "PL_kr" "Усиленные гонки убийств" + "PL_kr_lobby"Лобби усиленных гонок убийств" + "PL_kr_desc" "Получайте убийства, чтобы увеличить продолжительность вашей гонки за убийствами. Соберите флаг, чтобы начать его. Установите рекорд убийств, чтобы победить." + "PL_kr_hint" "Получайте убийства, чтобы увеличить продолжительность вашей гонки за убийствами. Соберите флаг, чтобы начать его. Установите рекорд убийств, чтобы победить." + "PL_kr_abbr" "KR" + "SCOREBOARD_KR_RECORD" "Рекорд убийств" + "KR_NEW_RACER" "%s1 усиленный гонщик за убийства" + "KR_YOU_ARE_NEW_RACER" "Вы усиленный гонщик за убийства" + "KR_YOU_SET_NEW_RECORD" "Установите новый рекорд убийств!" + "KR_FLAG_INCOMING" "Флаг прибывает" + "KR_COLLECT_FLAG" "Возьмите его чтобы стать гонщиком за убиства!" + "KR_ENEMY_KILLRACE_OVER" "Гонки убийств у %s1 закончились" + "KR_YOUR_KILLRACE_OVER" "Ваши гонки убийств кончились" + "KR_YOUR_KILLRACE_SCORE" "У вас %s1 убийств." + + "GAMEMODE_fastball" "Фастболл" + "PL_fastball" "Фастболл" + "PL_fastball_lobby" "Лобби фастболла" + "PL_fastball_desc" "Перманентная смерть. Взломайте панели управления чтобы побеждать в раундах и возродить своих членов команды." + "PL_fastball_hint" "Перманентная смерть. Взломайте панели управления чтобы побеждать в раундах и возродить своих членов команды." + "PL_fastball_abbr" "FB" + "FASTBALL_PANEL_CAPTURED" "%s1 захватил(а) панель %s2" + "SCOREBOARD_FASTBALL_HACKS" "Панелей захвачено" + + "GAMEMODE_ctf_comp" "Соревновательное CTF" + + // mode settings + "MODE_SETTING_CATEGORY_PROMODE" "Продвинутое оружие" + "MODE_SETTING_CATEGORY_BLEEDOUT" "Кровотечение пилота" + + "custom_air_accel_pilot" "Ускорение в воздухе" + "promode_enable" "Продвинутое оружие" + "fp_embark_enabled" "Отправления/Казни от первого лица" + "classic_rodeo" "Классическое родео" + "oob_timer_enabled" "Таймер уничтожения за пределами карты" + "riff_instagib" "Моментальная смерть при попадании" + + "riff_player_bleedout" "Кровотечение пилота" + "player_bleedout_forceHolster" "Использовать оружие из кобуры при кровотечении" + "player_bleedout_forceDeathOnTeamBleedout" "Смерть при кровотечении во всей команде" + "player_bleedout_bleedoutTime" "Кремя кровотечения" + "player_bleedout_firstAidTime" "Время оказания первой помощи" + "player_bleedout_firstAidTimeSelf" "Время оказания помощи самому себе" + "player_bleedout_firstAidHealPercent" "Процент здоровья после лечения" + "player_bleedout_aiBleedingPlayerMissChance" "Шанс промаха ИИ при кровотечении" + + // coop stuff + "PL_sp_coop" "(НЕ ЗАВЕРШЕНО) Кооператив кампании" + "PL_sp_coop_lobby" "Лобби кооператива кампании" + "PL_sp_coop_desc" "Сыграть в кампанию с друзьями" + "PL_sp_coop_hint" "Сыграть в кампанию с друзьями" + "PL_sp_coop_abbr" "SP" + + "SP_TRAINING" "Тренировачная полоса пилотов" + "SP_TRAINING_CLASSIC_DESC" "Тренировачная имитация капитана Ластимозы." + + "SP_CRASHSITE" "БT-7274" + "SP_CRASHSITE_CLASSIC_DESC" "Джек Купер встречает BT-7274." + + "SP_SEWERS1" "Кровь и Ржавчина" + "SP_SEWERS1_CLASSIC_DESC" "Купер и БT выходят на встречу с Майором Андерсеном." + + "SP_BOOMTOWN_START" "В Бездну" + "SP_BOOMTOWN_START_CLASSIC_DESC" "Подземная срезка приводит к неожиданным последствиям." + + "SP_HUB_TIMESHIFT" "Следствие и Причина" + "SP_HUB_TIMESHIFT_CLASSIC_DESC" "Странный феномен был обнаружен на местополжении Майора Андерсена." + + "SP_BEACON" "Маяк" + "SP_BEACON_CLASSIC_DESC" "Купер и БТ пытаются известить оставшийся флот о планах IMC." + + "SP_TDAY" "Испытание огнём" + "SP_TDAY_CLASSIC_DESC" "Испытание навыков титана Купера в грандиозной битве за захват Ковчега." + + "SP_S2S" "Ковчег" + "SP_S2S_CLASSIC_DESC" "Купер и БТ перемещаются по кораблям, преследуя Ковчег." + + "SP_SKYWAY_V1" "Сложенное оружие" + "SP_SKYWAY_V1_CLASSIC_DESC" "БT и Купер были захвачены Кубеном Блиском." + + // Better.Serverbrowser + "SERVERS_COLUMN" "Сервера" + "PLAYERS_COLUMN" "Игроки" + "MAP_COLUMN" "Карта" + "GAMEMODE_COLUMN" "Режим игры" + "LATENCY_COLUMN" "Задержка" + "SEARCHBAR_LABEL" "Поиск:" + "MAP_FILTER" "Карта" + "GAMEMODE_FILTER" "Режим игры" + "HIDE_FULL_FILTER" "Скрывать полные сервера" + "HIDE_EMPTY_FILTER" "Скрывать пустые сервера" + "HIDE_PROT_FILTER" "Скрывать закрытые сервера" + "SERVER_DESCRIPTION" "Описание" + "SERVER_MODS" "Моды" + "CLEAR_FILTERS" "ОЧИСТИТЬ" + "JOIN_BUTTON" "ПРИСОЕДИНИТЬСЯ" + + "SWITCH_YES" "Да" + "SWITCH_NO" "Нет" + "SWITCH_ANY" "Любой" + + "CONNECTING" "Соединение..." + "INGAME_PLAYERS" "Игроков: ^6BA6C400%s1" + "TOTAL_SERVERS" "Серверов: ^C46C6C00%s1" + + // In-game chat + "HUD_CHAT_WHISPER_PREFIX" "[WHISPER]" + "HUD_CHAT_SERVER_PREFIX" "[SERVER]" + } +} diff --git a/Northstar.Client/mod/resource/northstar_client_localisation_tchinese.txt b/Northstar.Client/mod/resource/northstar_client_localisation_tchinese.txt index 5cb53e2e..4981a0a8 100644 --- a/Northstar.Client/mod/resource/northstar_client_localisation_tchinese.txt +++ b/Northstar.Client/mod/resource/northstar_client_localisation_tchinese.txt @@ -306,5 +306,9 @@ // In-game chat "HUD_CHAT_WHISPER_PREFIX" "[悄悄話]" "HUD_CHAT_SERVER_PREFIX" "[伺服器]" + + // In-game chat + "HUD_CHAT_WHISPER_PREFIX" "[WHISPER]" + "HUD_CHAT_SERVER_PREFIX" "[SERVER]" } } diff --git a/Northstar.Client/mod/scripts/vscripts/chat.gnut b/Northstar.Client/mod/scripts/vscripts/chat.gnut index ce26434c..f5988bb7 100644 --- a/Northstar.Client/mod/scripts/vscripts/chat.gnut +++ b/Northstar.Client/mod/scripts/vscripts/chat.gnut @@ -1,18 +1,22 @@ untyped globalize_all_functions -void function Chat_NetworkWriteLine(string text) { +void function Chat_NetworkWriteLine(string text) +{ NSChatWriteLine(0, text) } -void function Chat_GameWriteLine(string text) { +void function Chat_GameWriteLine(string text) +{ NSChatWriteLine(1, text) } -void function Chat_NetworkWrite(string text) { +void function Chat_NetworkWrite(string text) +{ NSChatWrite(0, text) } -void function Chat_GameWrite(string text) { +void function Chat_GameWrite(string text) +{ NSChatWrite(1, text) } diff --git a/Northstar.Client/mod/scripts/vscripts/state_client.nut b/Northstar.Client/mod/scripts/vscripts/state_client.nut new file mode 100644 index 00000000..9ebcf006 --- /dev/null +++ b/Northstar.Client/mod/scripts/vscripts/state_client.nut @@ -0,0 +1,48 @@ +untyped + +int highestScore = 0 +int secondHighestScore = 0 +int ourScore = 0 + +globalize_all_functions + +void function OnPrematchStart() +{ + if (GetServerVar( "roundBased" )) + NSUpdateTimeInfo( level.nv.roundEndTime - Time() ) + else + NSUpdateTimeInfo( level.nv.gameEndTime - Time() ) +} + +void function NSUpdateGameStateClientStart() +{ + AddCallback_GameStateEnter( eGameState.Prematch, OnPrematchStart ) + thread NSUpdateGameStateLoopClient() + OnPrematchStart() +} + +void function NSUpdateGameStateLoopClient() +{ + while ( true ) + { + foreach ( player in GetPlayerArray() ) + { + if ( GameRules_GetTeamScore( player.GetTeam() ) >= highestScore ) + { + highestScore = GameRules_GetTeamScore( player.GetTeam() ) + } + else if ( GameRules_GetTeamScore( player.GetTeam() ) > secondHighestScore ) + { + secondHighestScore = GameRules_GetTeamScore( player.GetTeam() ) + } + } + if ( GetLocalClientPlayer() != null ) + { + ourScore = GameRules_GetTeamScore( GetLocalClientPlayer().GetTeam() ) + } + int limit = GetServerVar( "roundBased" ) ? GetCurrentPlaylistVarInt( "roundscorelimit", 0 ) : GetCurrentPlaylistVarInt( "scorelimit", 0 ) + NSUpdateGameStateClient( GetPlayerArray().len(), ourScore, secondHighestScore, highestScore, GetServerVar( "roundBased" ), limit ) + OnPrematchStart() + wait 1.0 + } +} \ No newline at end of file diff --git a/Northstar.Client/mod/scripts/vscripts/state_ui.nut b/Northstar.Client/mod/scripts/vscripts/state_ui.nut new file mode 100644 index 00000000..907e38fa --- /dev/null +++ b/Northstar.Client/mod/scripts/vscripts/state_ui.nut @@ -0,0 +1,29 @@ +untyped + +globalize_all_functions + +void function NSUpdateGameStateUIStart() +{ + thread NSUpdateGameStateLoopUI() +} + +void function NSUpdateGameStateLoopUI() +{ + while ( true ) + { + wait 1.0 + if ( uiGlobal.loadedLevel == "" ) + { + if ( uiGlobal.isLoading ) + NSSetLoading( true ) + else + { + NSSetLoading( false ) + NSUpdateGameStateUI( "", "", "", "", true, false ) + } + continue + } + NSSetLoading( false ) + NSUpdateGameStateUI( GetActiveLevel(), Localize( GetMapDisplayName( GetActiveLevel() ) ), GetConVarString( "mp_gamemode" ), Localize( GetPlaylistDisplayName( GetConVarString("mp_gamemode") ) ), IsFullyConnected(), false ) + } +} \ No newline at end of file diff --git a/Northstar.Client/mod/scripts/vscripts/ui/menu_lobby.nut b/Northstar.Client/mod/scripts/vscripts/ui/menu_lobby.nut index 3c868aab..938e0d3f 100644 --- a/Northstar.Client/mod/scripts/vscripts/ui/menu_lobby.nut +++ b/Northstar.Client/mod/scripts/vscripts/ui/menu_lobby.nut @@ -372,6 +372,8 @@ void function StartPrivateMatch( var button ) return ClientCommand( "StartPrivateMatchSearch" ) + NSSetLoading(true) + NSUpdateListenServer() } void function DoRoomInviteIfAllowed( var button ) diff --git a/Northstar.Client/mod/scripts/vscripts/ui/menu_main.nut b/Northstar.Client/mod/scripts/vscripts/ui/menu_main.nut index 87cba57e..b20699f9 100644 --- a/Northstar.Client/mod/scripts/vscripts/ui/menu_main.nut +++ b/Northstar.Client/mod/scripts/vscripts/ui/menu_main.nut @@ -72,7 +72,7 @@ void function OnMainMenu_Open() { Signal( uiGlobal.signalDummy, "EndOnMainMenu_Open" ) EndSignal( uiGlobal.signalDummy, "EndOnMainMenu_Open" ) - + SetConVarString( "communities_hostname", "" ) // disable communities due to crash exploits that are still possible through it UpdatePromoData() // On script restarts this gives us the last data until the new request is complete @@ -93,7 +93,7 @@ void function OnMainMenu_Open() ClientCommand( "map " + Dev_CommandLineParmValue( "+map" ) ) Dev_CommandLineRemoveParm( "+map" ) } - + // do agree to ns remote auth dialog if ( !GetConVarBool( "ns_has_agreed_to_send_token" ) ) NorthstarMasterServerAuthDialog() @@ -136,7 +136,7 @@ void function NorthstarMasterServerAuthDialog() { // todo: this should be in localisation DialogData dialogData - dialogData.header = "#DIALOG_TITLE_INSTALLED_NORTHSTAR" + dialogData.header = "#DIALOG_TITLE_INSTALLED_NORTHSTAR" dialogData.image = $"rui/menu/fd_menu/upgrade_northstar_chassis" dialogData.message = "#AUTHENTICATION_AGREEMENT_DIALOG_TEXT" AddDialogButton( dialogData, "#YES", NorthstarMasterServerAuthDialogAgree ) @@ -148,11 +148,11 @@ void function NorthstarMasterServerAuthDialogAgree() { int oldValue = GetConVarInt( "ns_has_agreed_to_send_token" ) SetConVarInt( "ns_has_agreed_to_send_token", NS_AGREED_TO_SEND_TOKEN ) - + if ( oldValue != 0 && oldValue != NS_AGREED_TO_SEND_TOKEN ) { DialogData dialogData - dialogData.header = "#DIALOG_TITLE_INSTALLED_NORTHSTAR" + dialogData.header = "#DIALOG_TITLE_INSTALLED_NORTHSTAR" dialogData.image = $"rui/menu/fd_menu/upgrade_northstar_chassis" dialogData.message = "#AUTHENTICATION_AGREEMENT_RESTART" AddDialogButton( dialogData, "#OK" ) @@ -164,11 +164,11 @@ void function NorthstarMasterServerAuthDialogDisagree() { int oldValue = GetConVarInt( "ns_has_agreed_to_send_token" ) SetConVarInt( "ns_has_agreed_to_send_token", NS_DISAGREED_TO_SEND_TOKEN ) - + if ( oldValue != 0 && oldValue != NS_DISAGREED_TO_SEND_TOKEN ) { DialogData dialogData - dialogData.header = "#DIALOG_TITLE_INSTALLED_NORTHSTAR" + dialogData.header = "#DIALOG_TITLE_INSTALLED_NORTHSTAR" dialogData.image = $"rui/menu/fd_menu/upgrade_northstar_chassis" dialogData.message = "#AUTHENTICATION_AGREEMENT_RESTART" AddDialogButton( dialogData, "#OK" ) @@ -670,4 +670,4 @@ void function UpdateTrialLabel() void function OpenSinglePlayerDevMenu( var button ) { AdvanceMenu( GetMenu( "SinglePlayerDevMenu" ) ) -} +} \ No newline at end of file diff --git a/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut b/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut index b294f57c..bd263f2b 100644 --- a/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut +++ b/Northstar.Client/mod/scripts/vscripts/ui/menu_ns_serverbrowser.nut @@ -970,6 +970,7 @@ void function ThreadedAuthAndConnectToServer( string password = "" ) return print( "trying to authenticate with server " + NSGetServerName( file.lastSelectedServer ) + " with password " + password ) + NSTryAuthWithServer( file.lastSelectedServer, password ) ToggleConnectingHUD( true ) @@ -988,6 +989,18 @@ void function ThreadedAuthAndConnectToServer( string password = "" ) } file.cancelConnection = false + NSSetLoading(true) + NSUpdateServerInfo( + NSGetServerID(file.lastSelectedServer), + NSGetServerName(file.lastSelectedServer), + password, + NSGetServerPlayerCount(file.lastSelectedServer), + NSGetServerMaxPlayerCount(file.lastSelectedServer), + NSGetServerMap(file.lastSelectedServer), + Localize(GetMapDisplayName(NSGetServerMap(file.lastSelectedServer))), + NSGetServerPlaylist(file.lastSelectedServer), + Localize(GetPlaylistDisplayName(NSGetServerPlaylist(file.lastSelectedServer))) + ) if ( NSWasAuthSuccessful() ) { @@ -1010,6 +1023,7 @@ void function ThreadedAuthAndConnectToServer( string password = "" ) // only actually reload if we need to since the uiscript reset on reload lags hard if ( modsChanged ) ReloadMods() + NSConnectToAuthedServer() } else diff --git a/Northstar.Client/mod/scripts/vscripts/ui/panel_mainmenu.nut b/Northstar.Client/mod/scripts/vscripts/ui/panel_mainmenu.nut index 65a8ca9b..fb4dfcd9 100644 --- a/Northstar.Client/mod/scripts/vscripts/ui/panel_mainmenu.nut +++ b/Northstar.Client/mod/scripts/vscripts/ui/panel_mainmenu.nut @@ -6,6 +6,8 @@ global function UpdatePromoData global function UICodeCallback_GetOnPartyServer global function UICodeCallback_MainMenuPromosUpdated +global bool isOnMainMenu = false + // defining this here because it's the only place it's used rn, custom const for a hook in launcher global const WEBBROWSER_FLAG_FORCEEXTERNAL = 1 << 1 // 2 @@ -526,6 +528,7 @@ void function OnPlayFDButton_Activate( var button ) // repurposed for launching if ( !Hud_IsLocked( button ) ) { SetConVarBool( "ns_is_modded_server", true ) + SetConVarString( "communities_hostname", "" ) // disable communities due to crash exploits that are still possible through it NSTryAuthWithLocalServer() thread TryAuthWithLocalServer() } @@ -552,12 +555,12 @@ void function TryAuthWithLocalServer() } WaitFrame() } - + if ( NSWasAuthSuccessful() ) { NSCompleteAuthWithLocalServer() } - + if ( GetConVarString( "mp_gamemode" ) == "solo" ) SetConVarString( "mp_gamemode", "tdm" ) diff --git a/Northstar.Client/mod/scripts/vscripts/ui/ui_vscript.gnut b/Northstar.Client/mod/scripts/vscripts/ui/ui_vscript.gnut new file mode 100644 index 00000000..63535bec --- /dev/null +++ b/Northstar.Client/mod/scripts/vscripts/ui/ui_vscript.gnut @@ -0,0 +1,352 @@ + +// Events for handlers +// UIE_CLICK +// UIE_GET_FOCUS +// UIE_LOSE_FOCUS + +global function UICodeCallback_UIInit +global function UICodeCallback_ControllerModeChanged +global function UICodeCallback_OnVideoOver +global function AddUICallback_OnLevelInit + +global struct TabDef +{ + var panel + string title +} + +global struct InputDef +{ + int input + string gamepadLabel + var vguiElem + string mouseLabel + bool functionref() conditionCheckFunc + bool lastConditionCheckResult + void functionref( var ) activateFunc + void functionref( InputDef ) updateFunc +} + +global struct DialogButtonData +{ + string label + void functionref() activateFunc + string focusMessage + bool startFocused +} + +global struct DialogFooterData +{ + string label + void functionref() activateFunc +} + +global struct DialogMessageRuiData +{ + string message = "" + vector style1Color = <1.0, 1.0, 1.0> + vector style2Color = <0.5, 0.5, 0.5> + vector style3Color = <0.5, 0.5, 0.5> + + float style1FontScale = 1.0 + float style2FontScale = 1.0 + float style3FontScale = 1.0 +} + +global struct DialogData +{ + var menu + string header + string message + DialogMessageRuiData &ruiMessage + array messageColor = [161, 161, 161, 255] + asset image + asset rightImage = $"" + bool forceChoice = false + bool noChoice = false + bool noChoiceWithNavigateBack = false + bool showSpinner = false + bool showPCBackButton = false + float inputDisableTime = 0 + table coloredButton + bool darkenBackground = false + bool useFullMessageHeight = false + + array buttonData + array footerData +} + +global struct MenuDef +{ + void functionref() initFunc + void functionref() openFunc + void functionref() closeFunc + void functionref() showFunc // TODO: Needs hooking up + void functionref() hideFunc // TODO: Needs hooking up + void functionref() thinkFunc + void functionref() navBackFunc + void functionref() tabChangedFunc + void functionref() inputModeChangedFunc + void functionref() entitlementsChangedFunc + + array footerData + table registeredInput + + bool hasTabs = false + array tabsData + int tabIndex = 0 + + bool isDialog = false + DialogData& dialogData + bool isDynamicHeight = false + + bool isPVEMenu = false + + var lastFocus // Only used for restoring submenu focus so far +} + +global struct PanelDef +{ + void functionref() initFunc + void functionref() showFunc + void functionref() hideFunc + + string tabTitle = "Default" + + array footerData + table registeredInput + + var defaultFocus +} + +global struct PieChartEntry +{ + string displayName + float numValue + array color = [127, 127, 127, 255] + float fracValue = 0.0 +} + +global struct PieChartData +{ + array entries + array labelColor = [46, 49, 51, 255] + bool timeBased = false + float sum = 0.0 +} + +global struct UIGlobals +{ + table menus = {} + array allMenus = [] + array menuStack + string loadingLevel = "" + string loadedLevel = "" + string previousLevel = "" + string previousPlaylist = "" + var activeMenu = null + bool lastMenuNavDirection = MENU_NAV_FORWARD + bool lobbyFromLoadingScreen = false + bool eventHandlersAdded = false + bool loadoutsInitialized = false + bool itemsInitialized = false + bool matchmaking = false + var dialogCloseCallback = null + table signalDummy = {} + float dialogInputEnableTime = 0.0 + bool lobbyMenusLeftOpen = false + bool playingMusic = false + var mainMenuFocus = null + int announcementVersionSeen = -1 + var lastCategoryFocus = null + + int pilotSpawnLoadoutIndex = -1 + int titanSpawnLoadoutIndex = -1 + + bool updatePilotSpawnLoadout = false + bool updateTitanSpawnLoadout = false + + string editingLoadoutType = "pilot" + string editingLoadoutProperty = "" + int editingLoadoutIndex = -1 + string editingItemRef = "" + int editingItemType = -1 + var editingSubitemRef = null + int editingSubitemType = -1 + var editingParentItemRef = null + int editingWeaponCategory = -1 + + int entitlementId = -1 + string testStoreWeaponRef // TODO: Remove when done testing + + bool EOGAutoAdvance = true + bool EOGOpenInLobby = false + string EOGChallengeFilter = "" + var eogCoopFocusedButton = null + var eogCoopSelectedButton = null + var eogScoreboardFocusedButton = null + bool eogNavigationButtonsRegistered = false + + table ui_ChallengeProgress = {} + + int decalScrollState = 0 + + bool isLobby + + var ConfirmMenuMessage + var ConfirmMenuErrorCode + array dialogButtonData + + bool updatingLobbyUI = false + + array buttonConfigs + array stickConfigs + + var playlistList + + table< string, array > eog_challengesToShow + table< string, array > eog_unlocks + + bool videoSettingsChanged = false + + bool playingVideo = false + bool playingCredits = false + + bool mapSupportsMenuModels = false + bool mapSupportsMenuModelsUpdated = false + bool interpolateCameraMoves = true + int activePresentationType = ePresentationType.INACTIVE + bool rotateCharacterInputRegistered = false + + table menuData + + table intVars + table boolVars + table varVars + table > varChangeFuncs + + array onLevelInitCallbacks + + bool tabButtonsRegistered = false + + table panels = {} + array allPanels + table panelData + + bool sp_showAlternateMissionLog = false + + int launching = eLaunching.FALSE + bool triedNucleusRegistration = false + int consoleSettingMenu = eConsoleSettingsMenu.FALSE + + bool updateCachedNewItems = true + + var menuToOpenFromPromoButton = null + + bool isLoading = false + +} + +global UIGlobals uiGlobal + +global const MAINMENU_MUSIC_DELAY = 4.0 + + +void function UICodeCallback_UIInit() +{ + ScriptCompilerTest() + + ShUtilityAll_Init() + LevelVarInit() + + VPKNotifyFile( "media/intro_captions.txt" ) + + UtilityUI_Init() + + Settings_Init() // UI script doesn't need everything in this, reorganize + GameModes_Init() + UIVars_Init() + + PassivesShared_Init() + ChallengesShared_Init() + ChallengesContent_Init() + XP_Init() + + MenuLobby_Init() + MenuPrivateMatch_Init() + + MenuGamepadLayout_Init() + MenuChallenges_Init() + MenuEOG_Init() + MenuUtility_Init() + MenuAdvocateLetter_Init() + MenuCredits_Init() + MenuMapSelect_Init() + + RegisterSignal( "LevelShutdown" ) + RegisterSignal( "CleanupInGameMenus" ) + RegisterSignal( "OnCloseLobbyMenu" ) + RegisterSignal( "OnCancelConnect" ) + RegisterSignal( "PlayVideoEnded" ) + RegisterSignal( "ActiveMenuChanged" ) + RegisterSignal( "LevelFinishedLoading") + RegisterSignal( "OpenErrorDialog" ) + RegisterSignal( "BoughtItem" ) + + thread UpdateClientMenuOpenState() + + InitGamepadConfigs() + Store_Init() + InitMenus() + + if ( !IsSingleplayer() ) + thread UpdateCachedLoadouts() // Needs to wait for persistent data to ready +} + +void function UICodeCallback_ControllerModeChanged( bool controllerModeEnabled ) +{ + //printt( "CONTROLLER! " + controllerModeEnabled + ", " + IsControllerModeActive() ) + + if ( uiGlobal.activeMenu == null ) + return + + if ( uiGlobal.menuData[ uiGlobal.activeMenu ].inputModeChangedFunc != null ) + thread uiGlobal.menuData[ uiGlobal.activeMenu ].inputModeChangedFunc() + + UpdateFooterOptions() + + if ( IsDialog( uiGlobal.activeMenu ) ) + UpdateDialogFooterVisibility( uiGlobal.activeMenu, controllerModeEnabled ) +} + +void function UICodeCallback_OnVideoOver() +{ + SetIntroViewed( true ) + + Signal( uiGlobal.signalDummy, "PlayVideoEnded" ) +} + +void function UpdateClientMenuOpenState() +{ + for ( ;; ) + { + WaitSignal( uiGlobal.signalDummy, "ActiveMenuChanged" ) + + if ( IsMultiplayer() && !IsLobby() ) + { + int newState = 0 + if ( IsDialogOnlyActiveMenu() ) + newState = 2 + else if ( uiGlobal.activeMenu != null) + newState = 1 + + RunMenuClientFunction( "SetMenuOpenState", newState ) + } + } +} + +void function AddUICallback_OnLevelInit( void functionref() callbackFunc ) +{ + Assert( !( uiGlobal.onLevelInitCallbacks.contains( callbackFunc ) ), "Already added " + string( callbackFunc ) + " with AddUICallback_OnLevelInit" ) + uiGlobal.onLevelInitCallbacks.append( callbackFunc ) +} -- cgit v1.2.3