diff --git a/include/courtroom.h b/include/courtroom.h index 6132ed9c3..a4bacc228 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -109,7 +109,6 @@ class Courtroom : public QMainWindow { if (arup_locks.size() > place) arup_locks[place] = value; } - list_areas(); } void character_loading_finished(); @@ -460,6 +459,14 @@ class Courtroom : public QMainWindow { QString current_background = "default"; QString current_side = ""; + QBrush free_brush; + QBrush lfp_brush; + QBrush casing_brush; + QBrush recess_brush; + QBrush rp_brush; + QBrush gaming_brush; + QBrush locked_brush; + AOMusicPlayer *music_player; AOSfxPlayer *sfx_player; AOSfxPlayer *objection_player; diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index 3b0af42f4..9347436f1 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -6,97 +6,99 @@ Disconnected from server. - Соединение с сервером прервано. + Соединение с сервером разорвано. Error connecting to master server. Will try again in %1 seconds. - Ошибка соединения с главным сервером. Попытка пересоединения будет через %1 с. + Ошибка соединения с главным сервером. Повторная попытка соединения через %1 с. There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. - Произошла ошибка соединения с главным сервером. -Пожалуйста, проверьте ваши Интернет-соединение, настройки браундмауэра, и попробуйте перезайти. + Не удалось соединиться с главным сервером. +Мы используем несколько главных серверов для того, чтобы сократить время простоя, но клиент перепробовал все возможные варианты и не смог подключиться ни к одному из серверов. +Пожалуйста, проверьте ваши настройки браундмауэра и соединение с Интернетом попробуйте перезайти. Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. - Устаревшая версия! У вас установлена %1 + Устаревшая версия! У вас установлена версия %1 Проследуйте на сайт aceattorneyonline.com для обновления. You have been exiled from AO. Have a nice day. - Из AO вас отправили в жизнь. -Хорошего дня. + Вас изгнали из AO. +Всего хорошего. - + Attorney Online 2 Attorney Online 2 - + Loading Загрузка - + Loading evidence: %1/%2 - Загрузка вещдоков: + Загрузка улик: %1/%2 - - + + Loading music: %1/%2 Загрузка музыки: %1/%2 - - + + Loading chars: %1/%2 Загрузка персонажей: %1/%2 - + You have been kicked from the server. Reason: %1 Вас выпнули с сервера. Причина: %1 - + You have been banned from the server. Reason: %1 - + Вы были забанены на сервере. +Причина: %1 - + You are banned on this server. Reason: %1 - Вас отправили в баню. + Вы забанены на этом сервере. Причина: %1 You have been kicked from the server. Reason: - Вас выпнули с сервера. + Вас выпнули с сервера. Причина: You are banned on this server. Reason: - Вас отправили в баню. + Вы забанены на этом сервере. Причина: @@ -105,37 +107,37 @@ Reason: Case Announcer - Материалы дела + Объявление о проведении заседания Case title: - Название: + Название дела: Defense needed - Сторона защиты + Нужна защита Prosecution needed - Сторона обвинения + Нужно обвинение Judge needed - Без судьи никак + Нужен судья Jurors needed - Суд присяжных + Нужны присяжные Stenographer needed - Нужен стенографист? + Нужен стенографист @@ -158,27 +160,29 @@ Reason: Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - Устанавливает внешний вид игры. Может понадобиться перезайти на сервер. + Определяет внешний вид игры. Для применения новой темы может понадобиться перезайти на сервер. Log goes downwards: - Портянку вниз: + История чата идёт вниз: If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - Отметьте галочку, если хотите, чтобы сообщения в игровом чате отображались снизу, а не сверху. + Показывать новые сообщения в игровом чате снизу (как в ООС-чате), а не сверху (как в AO1). Log length: - Длина игрового чата: + Размер истории игрового чата: The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - Количество сообщений, максимально хранимых в игровом чате. Значение, равное 0 или меньше, будет расценено как снятие такого ограничения. + Максимальное количество сообщений, сохраняемых в игровом чате. +При превышении лимита старые сообщения будут удаляться. +Поставьте 0 или отрицательное значение, чтобы снять ограничение. @@ -188,17 +192,18 @@ Reason: Your OOC name will be automatically set to this value when you join a server. - Псевдоним, используемый при соединении с сервером. В основном, его видно в чате сервера. + Псевдоним по умолчанию для ООС-чата. Custom shownames: - Произвольные имена: + Пользовательские имена: Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - Отображать произвольные имена персонажей, установленные самими игроками. + Задать значение по умолчанию для настройки отображения пользовательских имён, +которая определяет возможность показа в игровом чате имён персонажей, установленных самими игроками. @@ -208,7 +213,7 @@ Reason: If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - Отображать перечень серверов от главного сервера, указанного здесь, когда не удалось соединиться с первичным ГС. + Если клиент не сможет соединиться с встроенным главным сервером (ГС), он проверит адреса из этого списка. @@ -218,7 +223,7 @@ Reason: Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры. + Показывать в Discord сервер, на котором вы играете, вашего персонажа и продолжительность игры. @@ -228,282 +233,303 @@ Reason: Sets the language if you don't want to use your system language. - + Изменяет язык интерфейса программы, если вы не хотите использовать язык системы. - Keep current setting - + - сохранить текущие настройки - + Allow Screenshake: - + Встряска экрана: - + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. - + Разрешить показ встрясок экрана. Отключите, если вы страдаете от светочувствительности и/или припадков. - + Allow Effects: - + Визуальные эффекты: - + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. - + Разрешить показ визуальных эффектов. Отключите, если вы страдаете от светочувствительности и/или припадков. - + Network Frame Effects: - + Эффекты по сети: - + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. - + Разрешить отправку звуков, эффектов вспышек и встряски экрана по сети в соответствии с char.ini. +Работает только на серверах, поддерживающих данную функцию. - + Colors in IC Log: - + Цвета в истории чата: - + Use the markup colors in the server IC chatlog. - + Отображать цвета в истории игрового чата. - + Sticky Sounds: - + Закрепить звуки: - + Turn this on to prevent the sound dropdown from clearing the sound after playing it. - + Не сбрасывать выбранные настройки звука после его воспроизведения. - + Sticky Effects: - + Закрепить эффекты: - + Turn this on to prevent the effects dropdown from clearing the effect after playing it. - + Не сбрасывать выбранные настройки эффекта после его воспроизведения. - + Sticky Preanims: - + Закрепить пред. анимации: - + Turn this on to prevent preanimation checkbox from clearing after playing the emote. - + Не сбрасывать настройки пред. анимации после её воспроизведения. + + + + Custom Chatboxes: + Пользовательские подложки: - + + Turn this on to allow characters to define their own custom chat box designs. + Отображать дизайны подложек, заданные персонажами. + + + Callwords Позывные - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - <html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html> + <html><head/><body>Введите на отдельных строках свои позывные. Если кто-то в чате напишет их, вы услышите звуковой сигнал. Регистр символов не учитывается.<br>Не оставляйте в конце строк пробелы, иначе вы будете получать оповещения о каждом пробеле в чате.</body></html> - + Audio Аудио - + Audio device: Устройство воспроизведения: - + Sets the audio device for all sounds. - Куда вещать звук из игры. + Укажите устройство вывода всего аудио игры. - + Music: Музыка: - + Sets the music's default volume. Громкость музыки по умолчанию. - + SFX: Звук. эффекты: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - Громкость звуковых эффектов по умолчанию. + Громкость звуковых эффектов по умолчанию. В категорию эффектов также входят возгласы. - + Blips: Сигналы: - + Sets the volume of the blips, the talking sound effects. Громкость сигналов, заменяющих голос, по умолчанию. - + Blip rate: - Пер. сигналов: + Частота сигналов: - + Sets the delay between playing the blip sounds. - Период между сигналами, заменяющими голос, по умолчанию. + Задержка по умолчанию между сигналами, заменяющими голос. - + Play a blip sound "once per every X symbols", where X is the blip rate. - + Проигрывать сигнал "каждые Х символов", где Х - частота. - + Blank blips: Пустые сигналы: - + If true, the game will play a blip sound even when a space is 'being said'. Проигрывать сигналы даже для пробелов. - + Enable Looping SFX: - + Повтор звук. эффектов: - + If true, the game will allow looping sound effects to play on preanimations. - + Разрешить воспроизведение зацикленных звуковых эффектов во время предварительной анимации. - + Kill Music On Objection: - + Тишина при протесте: - + If true, AO2 will stop the music for you when you or someone else does 'Objection!'. - + Останавливать музыку, когда кто-нибудь кричит "Objection!". - + Casing - Заседание + Заседания - + This server supports case alerts. - Этот сервер поддерживает объявление заседания. + Этот сервер поддерживает объявления заседаний. - + This server does not support case alerts. - Этот сервер не поддерживает объявление заседания. + Этот сервер не поддерживает объявления заседаний. - + Pretty self-explanatory. - Весьма доходчиво. + Дополнительные пояснения не требуются. - + Casing: - Новое дело: + Заседания: - + If checked, you will get alerts about case announcements. - При заведении дела вы получите уведомление. + Вы получите уведомление, когда будет объявлено заседание. - + Defense: Защита: - + If checked, you will get alerts about case announcements if a defense spot is open. - При заведении дела, в котором нужна сторона защиты, вы получите уведомление. + Вы получите уведомление при объявлении дела, в котором нужна сторона защиты. - + Prosecution: Обвинение: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. - При заведении дела, в котором нужна сторона обвинения, вы получите уведомление. + Вы получите уведомление при объявлении дела, в котором нужна сторона обвинения. - + Judge: Судья: - + If checked, you will get alerts about case announcements if the judge spot is open. - При заведении дела, в котором нужен судья, вы получите уведомление. + Вы получите уведомление при объявлении дела, в котором нужен судья. - + Juror: - Присяжный: + Присяжные: - + If checked, you will get alerts about case announcements if a juror spot is open. - При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление. + Вы получите уведомление при объявлении дела, в котором нужны присяжные заседатели. - + Stenographer: Стенографист: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - При заведении дела, в котором нужна стенография, вы получите уведомление. + Вы получите уведомление при объявлении дела, в котором нужна стенография. - + CM: ПД: - + If checked, you will appear amongst the potential CMs on the server. - Отметьте, если вы хотите состоять в числе производителей дел. + Отметьте, если хотите состоять в числе возможных производителей дел (ПД). - + Hosting cases: - ПД акт.: + Проведение дел: - + If you're a CM, enter what cases you are willing to host. - Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой. + Если вы производитель дел (ПД), укажите, какими делами вы хотите заниматься. + + + + Automatic Logging: + Авт. сохранение истории: + + + + If checked, all logs will be automatically written in the /logs folder. + Автоматически сохранять всю историю чатов в папке /logs. @@ -516,7 +542,7 @@ Reason: Spectator - Наблюдатель + Зритель @@ -527,7 +553,7 @@ Reason: Passworded - Ограничен паролем + Защищён паролем @@ -535,7 +561,7 @@ Reason: Занят - + Generating chars: %1/%2 Генерация персонажей: @@ -544,7 +570,7 @@ Reason: Generating chars: - Генерация персонажей: + Генерация персонажей: @@ -565,17 +591,17 @@ Reason: Pre - Пред. + Flip - Разв. + Guard - Охрана + @@ -584,73 +610,73 @@ Reason: - + Casing - Дело + Shownames - Произв. имена + No Interrupt - Говорить сразу + White - Белый + Белый Green - Зелëный + Зелëный Red - Красный + Красный Orange - Оранжевый + Оранжевый Blue - Синий + Синий Yellow - Жëлтый + Жëлтый This does nothing, but there you go. - В общем-то, это ни на что не влияет... + В общем-то, это ни на что не влияет... - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: %1 - Укажите имя файла с делом (без расширения) для загрузки. Убедитесь, что оно расположено в папке `base/cases`. -Были найдены: %1 + Укажите имя файла с делом (без расширения) для загрузки. Убедитесь, что он расположен в папке `base/cases`, и что это правильно отформатированный файл .ini. +Вы можете загрузить следующие дела: %1 - + Case made by %1. - Дело завëл игрок: %1. + Автор дела: %1. - + Navigate to %1 for the CM doc. - Перейдите к %1 для получения материалов дела. + Откройте %1 для получения материалов дела. - + Your case "%1" was loaded! - Дело под кодовым названием "%1" готово! + Ваше дело "%1" было загружено! - - + + Server Сервер @@ -660,582 +686,600 @@ Cases you can load: %1 - + Hold It! - - - + + + When this is turned on, your next in-character message will be a shout! - + Когда эта опция включена, ваше следующее сообщение в игровом чате будет с возгласом! - + Objection! - + Take That! - + Toggle between server chat and global AO2 chat. - + Переключатель между чатом сервера и общим чатом AO2. - - - - + + + + This will display the animation in the viewport as soon as it is pressed. - + Показать анимацию в игровом чате сразу после нажатия. - + Guilty! - + Виновен! - + Bring up the Character Select Screen and change your character. - + Перейти на экран выбора и сменить персонажа. - + Refresh the theme and update all of the ui elements to match. - + Перезагрузить тему и обновить все элементы интерфейса. - + Request the attention of the current server's moderator. - + Привлечь внимание модератора сервера. - + Allows you to change various aspects of the client. - + Изменить параметры работы программы. - + An interface to help you announce a case (you have to be a CM first to be able to announce cases) - + Открыть окно, которое позволит вам объявить о деле +(для этого нужно быть производителем дел (ПД)) - + Switch between Areas and Music lists - + Переключатель между списками музыки и локаций - + Play a single-shot animation as defined by the emote when checked. - + Показать разовую анимацию, соответствующую выбранной эмоции. - + If preanim is checked, display the input text immediately as the animation plays concurrently. - + Если включена предварительная анимация: вывести текст, не дожидаясь окончания предварительной анимации. - + Mirror your character's emotes when checked. - + Отразить анимации персонажа по горизонтали. - + Add text to your last spoken message when checked. - + Добавлять текст к своему последнему сообщению. - + Do not listen to mod calls when checked, preventing them from playing sounds or focusing attention on the window. - + Заглушить вызовы модератора: вы не будете получать звуковые оповещения, а игра не будет привлекать к себе внимание. - + Lets you receive case alerts when enabled. (You can set your preferences in the Settings!) - + Получать уведомления о заседаниях. +(См. подробнее в меню опций) - + Display customized shownames for all users when checked. - + Показывать пользовательские имена для всех. - + Custom Shout! - + Пользовательский возглас! - + This will display the custom character-defined animation in the viewport as soon as it is pressed. To make one, your character's folder must contain custom.[webp/apng/gif/png] and custom.[wav/ogg/opus] sound effect - + Показать в игровом чате анимацию, уникальную для персонажа, сразу после нажатия. +Для добавления такой анимации поместите в папку персонажа свои изображения +в формате webp/apng/gif/png и звук в формате wav/ogg/opus - + Play realization sound and animation in the viewport on the next spoken message when checked. - + Показать вспышку и воспроизвести звук озарения во время вывода следующей реплики. - + Shake the screen on next spoken message when checked. - + Потрясти экран во время вывода следующей реплики. - + Display the list of character folders you wish to mute. - + Выбрать персонажей, которых нужно игнорировать. - - + + Increase the health bar. - + Поощрить. - - + + Decrease the health bar. - + Оштрафовать. - + Change the text color of the spoken message. You can also select a part of your currently typed message and use the dropdown to change its color! - + Изменить цвет текста сообщения. +Вы также можете выделить часть текста и изменить только её цвет в выпадающем меню. - + Back to Lobby Назад в лобби - - - + + + has played a song - + включил(а) композицию - + You will now pair up with %1 if they also choose your character in return. - + Вы встанете рядом с %1, если он(а) выберет вашего персонажа. Rainbow - Радужный + Радужный Pink - Розовый + Розовый Cyan - Голубой + Голубой - + % offset % сдвига - + To front - + Вперёд - + To behind - + Назад - + Select a character you wish to pair with. - + Выберите персонажа, с которым хотите встать рядом. - + Change the percentage offset of your character's position from the center of the screen. - + Изменить процент сдвига вашего персонажа относительно центра экрана. - + Change the order of appearance for your character. - + Переместить вашего персонажа вперёд или назад относительно партнёра. - + Display the list of characters to pair with. - + Показать список персонажей, с которыми можно встать рядом. - + Oops, you're muted! - + О нет, вас заглушили! - + Set your character's emote to play on your next message. - + Выберите эмоцию для отображения при выводе вашего следующего сообщения. - + Set your character's supplementary background. - + Установить фон для вашего персонажа. - + Set an 'iniswap', or an alternative character folder to refer to from your current character. Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/iniswaps.ini - + Включить т.н. подмену ini – альтернативную папку персонажа, к которой будет обращаться текущий персонаж. +Введите имя персонажа и нажмите Enter; нажмите [X], чтобы удалить. +Изменения сохраняются по следующему пути: base/characters/<имя_персонажа>/iniswaps.ini - - + + Remove the currently selected iniswap from the list and return to the original character folder. - + Удалить выбранного для подмены ini персонажа и вернуться к папке изначально выбранного персонажа. - + Set a sound effect to play on your next 'Preanim'. Leaving it on Default will use the emote-defined sound (if any). Edit by typing and pressing Enter, [X] to remove. This saves to your base/characters/<charname>/soundlist.ini - + Выберите звук, который нужно воспроизвести со следующей пред. анимацией. +Если выбрано "по умолчанию", вы услышите звук, заданный пред. анимацией (если он есть). +Выберите или введите название звука и нажмите Enter; нажмите [X], чтобы удалить. +Изменения сохраняются по следующему пути: base/characters/<имя_персонажа>/soundlist.ini - + Choose an effect to play on your next spoken message. The effects are defined in your theme/effects/effects.ini. Your character can define custom effects by char.ini [Options] category, effects = 'miscname' where it referes to misc/<miscname>/effects.ini to read the effects. - + Выберите эффект, который нужно воспроизвести с вашим следующим сообщением. +Эффекты определяются файлом theme/effects/effects.ini. Ваш персонаж может задать собственные эффекты +в категории [Options] файла char.ini, effects = 'название', что отсылает к файлу misc/<название>/effects.ini. - + Music - Музыка + - + Sfx - Звук. эффекты + - + Blips - Сигналы + - + Change character - + Reload theme - + Call mod - + Settings - Настройки + - + A/M - + Л/М - + Preanim - + Return back to the server list. - + Вернуться к списку серверов. - + Become a spectator. You won't be able to interact with the in-character screen. - + Зайти в качестве зрителя. Вы не сможете взаимодействовать с игровым чатом. - + You were granted the Disable Modcalls button. - + Вам дали кнопку выключения вызова модератора. - - + + CLIENT - + КЛИЕНТ - + You have been banned. - + Вас забанили. You were granted the Guard button. - Теперь у вас есть кнопка "Охрана". + Теперь у вас есть кнопка "Охрана". - + You opened the settings menu. - Вы открыли меню настроек. + Вы открыли меню опций. You will now pair up with - Вы встанете парой с персонажем по имени + Вы встанете парой с персонажем по имени if they also choose your character in return. - (если он выберет вас в ответ). + (если он выберет вас в ответ). - + You are no longer paired with anyone. - Теперь вы не стоите в парах. + Вы больше не стоите рядом ни с кем. - + Are you sure you typed that well? The char ID could not be recognised. - Кажется, вам нужно поменять запрос: такой идентификатор персонажа не был найден. + Убедитесь в правильности введённой информации: персонаж с таким ID не найден. - + You have set your offset to Вы установили сдвиг персонажа на - + Your offset must be between -100% and 100%! Сдвиг персонажа должен быть между -100% и 100%! - + That offset does not look like one. Неверный сдвиг персонажа. - + You switched your music and area list. - Вы переключили перечень зон и музыки. + Вы переключили списки локаций и музыки. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - Из-за того, что вы включили не поддержимаемые сервером возможности, он может не принять ваши сообщения. + Из-за того, что вы включили не поддерживаемые сервером возможности, он может не принять ваши сообщения. - + Your pre-animations interrupt again. - Персонаж будет говорить только после анимации. + Персонаж будет говорить только после предварительной анимации. - + Your pre-animations will not interrupt text. - Персонаж будет говорить и во время анимации. + Предварительные анимации не будут прерывать вывод текста. - + Couldn't open chatlog.txt to write into. - Не могу открыть `chatlog.txt` для записи лога. + Невозможно открыть `chatlog.txt` для записи. - + The IC chatlog has been saved. - Лог игрового чата сохранëн. + История игрового чата сохранена. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`, которую мы для вас создали. + Файл с делом не найден. Если найдёте, положите его в папку `base/cases/`, которую мы для вас создали. - + Too many arguments to load a case! You only need one filename, without extension. Введите имя файла без расширения. - - - - + + + + UNKNOWN - + н/д - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - Папка `base/cases/` отсутствует! + Папка `base/cases/` отсутствует. - + You need to give a filename to save (extension not needed) and the courtroom status! - Введите имя файла (без расширения) и предоставьте статус зоны. + Введите имя файла (без расширения) и укажите статус зала суда. - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! - Убедитесь, что имя файла не содержит расширение. + Убедитесь, что имя файла указано без расширения. - + Succesfully saved, edit doc and cmdoc link on the ini! - Сохранение прошло успешно! + Сохранение прошло успешно. Ссылки на документы можно редактировать в ini. - + Master Мастер - + + Play Random Song + Включить случайную композицию + + + Expand All Categories - + Развернуть все категории - + Collapse All Categories - + Свернуть все категории - + Fade Out Previous - + Постепенное затухание предыдущей композиции - + Fade In - + Постепенное нарастание - + Synchronize - + Синхронизировать - + Default - + по умолчанию - + Reason: Причина: - + Call Moderator - Позвать модератора + Вызов модератора - - + + Error Ошибка - + You must provide a reason. Укажите причину. - + The message is too long. - Слишком длинный текст. + Слишком длинное сообщение. Choose... - Выбрать... + Выбрать... Present this piece of evidence to everyone on your next spoken message - + Показать эту улику всем присутствующим вместе с вашим следующим сообщением. Save evidence to an .ini file. - + Сохранить улику в файл .ini. Load evidence from an .ini file. - + Загрузить улику из файла .ini. Destroy this piece of evidence - + Уничтожить эту улику. Choose.. - + Выбрать... Close the evidence display/editing overlay. You will be prompted if there's any unsaved changes. - + Закрыть окно редактирования улики. +Если вы не сохранили изменения, вы увидите диалоговое окно. Save any changes made to this piece of evidence and send them to server. - + Сохранить все изменения, внесённые в улику, и отправить её на сервер. Double-click to edit. Press [X] to update your changes. - + Редактирование по двойному клику. Нажмите [X] для обновления. Bring up the Evidence screen. - + Открыть окно управления уликами. Switch evidence to private inventory. - + Перейти к своему списку. Switch evidence to global inventory. - + Перейти к общему списку. Transfer evidence to private inventory. - + Перенести улику в свой список. Transfer evidence to global inventory. - + Перенести улику в общий список. The piece of evidence you've been editing has changed. - + В улику, которую вы редактировали, были внесены изменения. Do you wish to keep your changes? - + Хотите сохранить внесённые изменения? @@ -1243,7 +1287,10 @@ You will be prompted if there's any unsaved changes. Image: %2 Description: %3 - + Название: %1 +Изображение: %2 +Описание: +%3 @@ -1255,7 +1302,7 @@ Description: Double-click to edit... - + Редактирование по двойному клику... @@ -1265,43 +1312,43 @@ Description: Evidence has been modified. - + Улика была изменена. Do you want to save your changes? - + Хотите сохранить внесённые изменения? Current evidence is global. Click to switch to private. - + Вы видите общий список улик. Нажмите здесь для просмотра своих улик. Current evidence is private. Click to switch to global. - + Вы видите свой список улик. Нажмите здесь для просмотра общих улик. "%1" has been transferred. - + Улика "%1" была перенесена. - + Save Inventory - + Сохранить список улик - - + + Ini Files (*.ini) - + Файлы ini (*.ini) - + Open Inventory - + Загрузить список улик @@ -1314,7 +1361,7 @@ Description: Search - Поиск + Поиск @@ -1325,8 +1372,8 @@ Description: It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - Не похоже, что ваш клиент установлен правильно. -Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`? + Кажется, ваш клиент неправильно настроен. +Вы точно скачали все ресурсы отсюда tiny.cc/getao, включая огромную папку `base`? @@ -1336,12 +1383,12 @@ Did you download all resources correctly from tiny.cc/getao, including the large Settings - Настройки + Опции Allows you to change various aspects of the client. - + Изменить параметры работы программы. @@ -1354,29 +1401,29 @@ Did you download all resources correctly from tiny.cc/getao, including the large Отмена - - <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>2.8 Major Release development:</b><br>Crystalwarrior, Iamgoofball<p><b>2.8 Quality Assurance:</b><br>WillDean, Captain N, Mr M, Riel, Seimmet, Fury McFlurry,CedricDewitt, Chewable Tablets, Fantos, Futugaze,Geck, Minx, Pandae, Sierra, CrazyJC, CaseyMayCazy,GreenBowers, Robotic Overlord, Veritas, Gin-Gi<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy, the AO2 community, server hosts, game masters,case makers, content creators and players! - + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Client development:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>QA testing:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Special thanks:</b><br>CrazyJC (2.8 release director) and MaximumVolty (2.8 release promotion); Remy, Hibiki, court-records.net (sprites); Qubrick (webAO); Rue (website); Draxirch (UI design); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, and FanatSors (AO1); server hosts, game masters, case makers, content creators, and the whole AO2 community!<p>The Attorney Online networked visual novel project is copyright (c) 2016-2020 Attorney Online developers. Open-source licenses apply. All other assets are the property of their respective owners.<p>Running on Qt version %2 with the %3 audio engine.<p>Built on %4 + <h2>Attorney Online %1</h2>Симулятор драмы в зале суда<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основная разработка:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter, Crystalwarrior, Iamgoofball<p><b>Разработка клиента:</b><br>Cents02, in1tiate, raidensnake, windrammer<p><b>Тестирование:</b><br>CaseyCazy, CedricDewitt, Chewable Tablets, CrazyJC, Fantos, Fury McFlurry, Geck, Gin-Gi, Jamania, Minx, Pandae, Robotic Overlord, Shadowlions (aka Shali), Sierra, SomeGuy, Veritas, Wiso<p><b>Благодарности:</b><br>CrazyJC (директор по выпуску версии 2.8) и MaximumVolty (продвижение версии 2.8); Remy, Hibiki, court-records.net (спрайты); Qubrick (webAO); Rue (вебсайт); Draxirch (дизайн интерфейса); Lewdton and Argoneus (tsuserver); Fiercy, Noevain, Cronnicossy, и FanatSors (AO1); держатели серверов, ГМ, ПД, создатели контента, и всё сообщество AO2!<p>Проект сетевой визуальной новеллы Attorney Online (c) 2016-2020 разработчики Attorney Online. Применяется лицензия на открытое ПО. Все прочие файлы являются собственностью их владельцев.<p>Работает на Qt версии %2 с аудио-движком %3.<p>Сборка от %4 - + About - + О программе <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Online: %1/%2 Онлайн: %1/%2 - + Offline - Вне сети + Не в сети @@ -1386,12 +1433,12 @@ Did you download all resources correctly from tiny.cc/getao, including the large UNKNOWN - + н/д - + has played a song: - + включил(а) композицию: @@ -1409,7 +1456,7 @@ Did you download all resources correctly from tiny.cc/getao, including the large Notice - На заметку + Уведомление diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 3f723974d..3b3f69916 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -636,6 +636,7 @@ void Courtroom::set_widgets() } ui_music_display->play("music_display"); + ui_music_display->set_play_once(false); if (is_ao2_bg) { set_size_and_pos(ui_ic_chat_message, "ao2_ic_chat_message"); @@ -934,6 +935,14 @@ void Courtroom::set_widgets() ui_spectator->setToolTip(tr("Become a spectator. You won't be able to " "interact with the in-character screen.")); + free_brush = *new QBrush(ao_app->get_color("area_free_color", "courtroom_design.ini")); + lfp_brush = *new QBrush(ao_app->get_color("area_lfp_color", "courtroom_design.ini")); + casing_brush = *new QBrush(ao_app->get_color("area_casing_color", "courtroom_design.ini")); + recess_brush = *new QBrush(ao_app->get_color("area_recess_color", "courtroom_design.ini")); + rp_brush = *new QBrush(ao_app->get_color("area_rp_color", "courtroom_design.ini")); + gaming_brush = *new QBrush(ao_app->get_color("area_gaming_color", "courtroom_design.ini")); + locked_brush = *new QBrush(ao_app->get_color("area_locked_color", "courtroom_design.ini")); + refresh_evidence(); } @@ -975,7 +984,7 @@ void Courtroom::set_font(QWidget *widget, QString class_name, } } bool bold = ao_app->get_design_element(p_identifier + "_bold", design_file, p_char) == - 1; // is the font bold or not? + "1"; // is the font bold or not? bool antialias = ao_app->get_design_element(p_identifier + "_sharp", design_file, p_char) != "1"; // is the font anti-aliased or not? @@ -1237,6 +1246,8 @@ void Courtroom::update_character(int p_cid) current_char = f_char; current_side = ao_app->get_char_side(current_char); + set_text_color_dropdown(); + current_emote_page = 0; current_emote = 0; @@ -1433,15 +1444,6 @@ void Courtroom::list_areas() ui_area_list->clear(); // ui_music_search->setText(""); - QString f_file = "courtroom_design.ini"; - - QBrush free_brush(ao_app->get_color("area_free_color", f_file)); - QBrush lfp_brush(ao_app->get_color("area_lfp_color", f_file)); - QBrush casing_brush(ao_app->get_color("area_casing_color", f_file)); - QBrush recess_brush(ao_app->get_color("area_recess_color", f_file)); - QBrush rp_brush(ao_app->get_color("area_rp_color", f_file)); - QBrush gaming_brush(ao_app->get_color("area_gaming_color", f_file)); - QBrush locked_brush(ao_app->get_color("area_locked_color", f_file)); int n_listed_areas = 0; @@ -1856,12 +1858,20 @@ void Courtroom::handle_chatmessage(QStringList *p_contents) log_maximum_blocks > 0) { ic_chatlog_history.removeFirst(); } - - append_ic_text(m_chatmessage[MESSAGE], f_displayname, "", m_chatmessage[TEXT_COLOR].toInt()); - + QString f_char = m_chatmessage[CHAR_NAME]; QString f_custom_theme = ao_app->get_char_shouts(f_char); + // Load the colors in case it's using a custom chatbox with custom colors. + // Or reload the default ones in case it's not using custom colors + color_rgb_list.clear(); + for (int c = 0; c < max_colors; ++c) { + QColor color = ao_app->get_chat_color("c" + QString::number(c), f_char); + color_rgb_list.append(color); + } + + append_ic_text(m_chatmessage[MESSAGE], f_showname, "", m_chatmessage[TEXT_COLOR].toInt()); + // if an objection is used if (objection_mod <= 4 && objection_mod >= 1) { switch (objection_mod) { @@ -2884,6 +2894,12 @@ void Courtroom::chat_tick() next_character_is_not_special = false; } + // Keep the speed at bay. + if (current_display_speed < 0) + current_display_speed = 0; + else if (current_display_speed > 6) + current_display_speed = 6; + if ((message_display_speed[current_display_speed] <= 0 && tick_pos < f_message.size() - 1) || formatting_char) { @@ -2912,12 +2928,6 @@ void Courtroom::chat_tick() ui_vp_message->ensureCursorVisible(); - // Keep the speed at bay. - if (current_display_speed < 0) - current_display_speed = 0; - else if (current_display_speed > 6) - current_display_speed = 6; - // Blip player and real tick pos ticker if (!formatting_char && (f_character != ' ' || blank_blip)) { if (blip_ticker % blip_rate == 0) { diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index b543cfb55..fd7453ee9 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -676,6 +676,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->arup_modify(arup_type, n_element - 1, f_contents.at(n_element)); } + w_courtroom->list_areas(); } } else if (header == "IL") { diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 39754f39e..45dd34f6d 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -435,7 +435,7 @@ QString AOApplication::get_tagged_stylesheet(QString target_tag, QString p_file) QString AOApplication::get_chat_markdown(QString p_identifier, QString p_chat) { - QString design_ini_path = get_base_path() + "misc/" + p_chat + "/config.ini"; + QString design_ini_path = get_base_path() + "misc/" + get_chat(p_chat) + "/config.ini"; QString default_path = get_base_path() + "misc/default/config.ini"; QString f_result = read_design_ini(p_identifier, design_ini_path); @@ -449,9 +449,9 @@ QColor AOApplication::get_chat_color(QString p_identifier, QString p_chat) { QColor return_color(255, 255, 255); - QString design_ini_path = get_base_path() + "misc/" + p_chat + "/config.ini"; + QString design_ini_path = get_base_path() + "misc/" + get_chat(p_chat) + "/config.ini"; QString default_path = get_base_path() + "misc/default/config.ini"; - QString f_result = read_design_ini("c" + p_identifier, design_ini_path); + QString f_result = read_design_ini(p_identifier, design_ini_path); if (f_result == "") { f_result = read_design_ini(p_identifier, default_path); @@ -908,6 +908,11 @@ QString AOApplication::get_effect_sound(QString fx_name, QString p_char) f_result = read_design_ini(fx_name, default_path); } } + + if(fx_name == "realization"){ + f_result = get_custom_realization(p_char); + } + return f_result; }