Экранный словарь и переводчик Lookupper в Baldur's Gate 3
Пост получился большой, поэтому суть кратко: 3 года назад я хотел выучить английский, чтобы поступить в иностранный универ, а в итоге это привело меня к созданию специального метода изучения языка.
Этот пост про изучение английского, но не с нуля. А также это пост про программу Lookupper, которую я сделал специально, чтобы самому учить английский, играя в игры.
Программа может работать не только в играх, но и вообще в любом приложении. Но изначально я хотел с помощью нее изучать английский в играх. (И не испытывать чувство вины, когда играю, вместо того, чтобы готовиться к экзамену)
Предыстория
Несколько лет назад я всерьез так взялся за поступление в иностранный университет. Забрал документы из универа, написал заявление, и записался на сдачу экзамена по английскому языку TOEFL. Все было довольно просто, но вот с экзаменом возникли сложности. Сдав 20 пробных тестов TOEFL, я так и не мог ни разу получить проходные 90 баллов. Нужно было действовать срочно, ибо через 4 недели был запланирован настоящий экзамен. Так началось мое эпическое погружение в языковую срезу, дабы быстро бустануть английский до необходимого уровня.
Началось все с книжек, конечно. Я с детства люблю читать, но теперь мне предстояло полюбить читать на английском языке. Так, я начал качать книжки на свою читался Kindle теперь и на английском. Читать получалось раз в 5 медленнее чем на русском, но через неделю стало лучше, привык что-ли. Сильно выручала функция экранного словаря в Киндле, позволяющая получать значение неизвестных слов прямо в читалке.
Моя читалке Kindle с функцией экранного словаря
В то же самое время я очень залипал в игру Disco Elysium. Это было похоже на зависимость. Я не мог остановиться играть и хотелось пройти её на 100%. Хуже всего то, что играл вместо того, чтобы готовиться к экзамену. Именно тогда и пришла в голову идея программы, которая позже будет называться Lookupper. Мои мысли в тот момент были примерно такие: "В Disco Elysium же много текста. Можно сказать что это в каком-то роде книга. Так почему бы не переключить игру на английский и не учить язык?
Заметка для внимательного пикабушника. В Disco Elysium есть функция перевода сразу всего текста на одну кнопку, но в тот момент, когда я играл в игру, этой функции либо не было, либо я просто про нее не знал.
Вдохновившись функцией экранного словаря в Kindle, а также аналогичной функцией в Mac, которая называется Look up words in dictionary, я подумал: "Кто-то же наверняка сделал такой же экранный словарик, и прикрутил к нему OCR (оптическое распознавание символов) что словарик мог работать в играх?" Кажется очевидной идеей, не так ли? Как же я удивился что не нашел ничего подобного в интернете на тот момент. Это был шок. Я подумал что, возможно, такую программу невозможно сделать.
С этого момента я решил сделать такую программу. У меня уже был опыт программирования, но сперва нужно было убедиться, что такую программу возможно создать: 1. Проверил, можно ли распознавать текст в играх и как. 2. Проверил, можно ли вывести какое-нибудь всплывающее окошко поверх игры. 3. И, наконец, убедился, что смогу сделать интеграцию словарей такую, чтобы мне самому для изучения языка нравилось.
В итоге получилась такая программа. Я назвал ее Lookupper, от английского глагола look up, которому нет прямого перевода в русском языке, и который означает что-то вроде "быстро посмотреть информацию о чем-то".
Lookupper — условно-бесплатная программа. Однако, чтобы следовать методу в этой статье, достаточно бесплатной версии.
Как учить язык с помощью Lookupper
Нам понадобится: игра, которая поддерживает язык, который мы изучаем, и, собственно, сам Lookupper.
Запускаем игру, и переключаем язык игры на английский (или другой, который вы учите).
Запускаем Лукапер.
Встречая незнакомые слова — наводим на них курсор и наживаем клавиши CTRL+D (по-умолчанию) либо боковую кнопку мыши.
Читаем определение слова на английском языке, если всё равно не понятно — раскрываем спойлер с переводом.
Рекомендуемый способ учить английский с помощью Lookupper, на примере игры Disco Elysium. Перевод скрыт под спойлер — важная часть метода изучения языка
Это, собственно, и есть весь метод. Поначалу было тяжко, прохождение игры затягивалось, при этом быстро утомляя. Но где-то через пару недель стало намного проще. Стал больше текста понимать само собой, а лукапить только изредка и в совсем уж непонятных моментах (или когда устал).
Lookupper — это словарь наоборот
Традиционные компьютерные словари работают так — открываем приложение словаря, вводим туда слово и получаем словарную статью. Сейчас вместо словарей, проще открыть Яндекс и поискать неизвестное слово там.
Лукапер работет иначе. Вместо того, чтобы вручную искать слово, мы, не покидая текущего окна, получаем словарную статью прямо на месте.
Не переключаться на браузер чтобы получить значение слова — вот зачем нужен Лукапер.
В Лукапере есть 2 типа словарей:
Традиционные словари. Вы их знаете. Например, Толковый словарь Даля — это традиционный словарь. В Лукапере таких словарей 70, и они все работают без интернета. Надо только один раз их загрузить прямо внутри программы
ИИ словарь. Не знаю как вас, а меня бесит в традиционных словарях то, что приходятся каждый раз подбирать подходящее под контекст определение. Поэтому в Лукапере я сделал ИИ словарь, который дает определение слова сразу в текущем контексте. Очень удобно.
Традиционные словари в Lookupper
Фичи, и почему Lookupper это не очередной экранный переводчик
Программа создавалась прежде всего как экранный словарь для изучения языка, а не просто как переводчик. Постепенно, программа обросла дополнительными фишками именно для изучения языка:
Сохранение слов. Слова можно добавлять в личный словарик и экспортировать для запоминания в программы типа Anki.
Традиционные офлайн словари. В Лукапере на момент написания этой статьи 70 различных словарей, как толковых (например, Oxford English Dictionary) так и двуязычных (например, англо-русский словарь Мостицкого с аудио).
Аудиопроизношения. Убрал транскрипции (бесят меня со школы), и заменил их качественными аудиопроизношениями.
Автопауза в играх. Последняя функция, но не по значению. Позволяет ставить игру на паузу во время лукапа. Полезно чтобы успеть прочесть перевод во время катсцен (как, например, из Baldur's Gate 3 на самом первом скриншоте).
Но у Лукапера есть и проблема — порой программа не может распознать некоторые слова правильно, особенно если фон неоднороден. Этот аспект постоянно улучшается. Большая надежда на скорый выход новых ИИ-OCR моделей в Windows.
Функция сохранения и экспорта слов в Lookupper
Сравнение Lookupper с экранными переводчиками
Я попробовал практически все экранные переводчики, которые смог найти, включая китайские. У всех у них есть одно общее — они, как следует из названия, просто переводят текст.
У Лукапера же перевод — лишь вспомогательная функция, а не основа программы. Перевод в Лукапере — это палочка-выручалочка на случай, если словарей недостаточно.
Так, как я собаку съел на экранных переводчиках, то среди наших ребят порекомендую экранные переводчики AwsderEchoLang, ScreTran, Translumo, Ёлочка. Каждая из этих программ пример хорошего, бесплатного, отечественного софта. Если хотите, могу сделать обзор на каждую их них.
А среди зарубежного, это, конечно, DeepL переводчик. К сожалению, с недавнево времени он недоступен из России без специальной программы из трех букв, которая начинается на V и заканчивается на N. Кстати, Лукапер использует платную версию переводчика DeepL чтобы давать переводы.
Сравнение Lookupper с браузерными расширениями
Тут все просто: браузерные словари и переводчики ограничены браузером. Поэтому не получится поставить, например, язык Windows на английский и использовать такие расширения вне браузера. Лукапер же универсален: работает и в Windows, и в играх, и в браузерах (любых).
Но если нужен именно "Лукапер для браузера", рекомендую Definer. Делает тоже наш слоняра, и программа ооочень стильно выглядит и ей приятно пользоваться.
Заключение
Лукапер — это моя основная работа, другой работы у меня нет. В заключение оставлю только ссылки на загрузку Lookupper, а также попрошу вас поделиться своим мнением.
Энтузиасты успели заценить метод на S.T.A.L.K.E.R 2 и Cyberpunk 2077 — разница в производительности заметная, говорят тестировщики.
1. Открываем комп и переходим в раздел «Изоляция ядра» → находим и вырубаем параметр «Целостность памяти», который расходует до 30% производительности, но защищает ваше железо от вирусов.
На Windows 10 это делается так:
Параметры → Обновление и безопасность → Безопасность Windows → Безопасность устройства → Сведения об изоляции ядра → Отключите пункты «Целостность памяти»
На Windows 11:
Параметры → Конфиденциальность и защита → Безопасность Windows → Безопасность устройства → Сведения об изоляции ядра → Отключите пункты «Целостность памяти»
2. Далее переносим часть задач с CPU на GPU:
Пуск → Параметры → Система → Дисплей → Настройки графики → Даем разрешение и подрубаем галочку (см. 2 скрин)
3. Отключаем оверлей в Steam, который пожирает до 10% производительности:
Геймпасс в Roblox — это специальный пропуск, который открывает игрокам доступ к эксклюзивным возможностям. За робуксы вы получаете бонусы: секретные зоны, уникальные предметы или усиления для персонажа. Для разработчиков это инструмент монетизации, а процесс создания займет буквально несколько минут прямо на платформе.
В этом руководстве мы в редакции ggsel.net расскажем как оформить геймпасс в 2025 году, настроить продажи и автоматизировать выдачу привилегий. Мы разберем пошаговую инструкцию, покажем, где найти ID пропуска, и поделимся готовыми скриптами для интеграции.
Как создать геймпасс на ПК
1. Начните с авторизации Зайдите на официальный сайт Roblox → введите логин и пароль.
2. Откройте Creator Hub В верхней панели нажмите кнопку «Создать» (Create) — это ваш портал для управления проектами.
3. Выберите игру В разделе Creations (слева) или через Dashboard найдите свой проект. Даже пустой аккаунт имеет шаблонный проект — смело используйте его.
4. Проверьте доступ Убедитесь, что игра имеет статус Public. Если стоит Private, наведите курсор на проект → кликните «⋯» → выберите Make Public.
5. Перейдите к настройкам Откройте страницу проекта → в левом меню найдите «Монетизация» → «Пропуски» → «Создать пропуск».
6. Заполните параметры
Изображение: Загрузите квадратную картинку (макс. 512×512 px) в формате JPG/PNG. Центруйте ключевые элементы — Roblox обрежет ее в круг.
Название: Придумайте короткий заголовок (например, «VIP-доступ к арсеналу»).
Описание: Добавьте 2-3 строки о преимуществах (без запрещенных слов!).
7. Завершите создание Кликните «Создать пропуск» → дождитесь модерации (иконка может появиться через 5-15 минут).
Важно! Не закрывайте вкладку до сохранения изменений. Если картинка не загрузилась — обновите страницу или попробуйте другой файл.
Детали оформления
Название по умолчанию — это имя вашего файла. Лучше переименуйте его для узнаваемости.
Описание необязательно, но повышает конверсию. Пример: «+30% к урону, эксклюзивный меч и доступ в подземелье».
Проверьте превью — если изображение съехало, загрузите исправленную версию.
Как создать геймпасс на смартфоне
1. Запустите приложение Roblox Откройте его на iOS или Android → авторизуйтесь в аккаунте разработчика.
2. Перейдите в режим создания Тапните по «⋯» в правом нижнем углу → выберите Create из меню.
3. Откройте свой проект В левой панели нажмите Creations → найдите нужную игру в списке.
4. Сделайте игру публичной Если статус «Private», тапните по «⋯» в правом верхнем углу карточки → выберите Make Public.
5. Настройте пропуск На странице проекта:
Пролистайте до раздела Monetization → выберите Passes → Create a Pass.
Заполните данные (название, описание, загрузите изображение) — параметры такие же, как в десктопной версии.
Совет: Используйте мобильные графические редакторы (Canva, PicsArt) для быстрого создания иконки прямо на телефоне. Проверьте, чтобы логотип не обрезался по краям — предпросмотр доступен перед загрузкой.
Важно! После сохранения геймпасс появится в списке не сразу — иногда требуется до 30 минут на обработку. Не удаляйте приложение и не выходите из аккаунта до завершения процесса.
Настройка геймпасса: ID, монетизация и бонусы
Разберем ключевые этапы, чтобы ваш пропуск начал приносить доход и давал игрокам реальные преимущества.
1. Pass ID — где найти и зачем он нужен Это уникальный цифровой код вашего геймпасса. Как получить:
В разделе «Монетизация» → «Пропуски» найдите свой геймпасс.
Сохраните ID в заметках — он понадобится для всех скриптов.
2. Включите продажи Как установить цену и получать Robux:
В том же разделе «Пропуски» откройте нужный геймпас.
Перейдите во вкладку «Продажи» → переключите тумблер Item for Sale в активное положение.
Укажите стоимость. Помните: вы получите 70% от суммы, 30% забирает платформа.
3. Настройте бонусы Без скриптов игроки не получат привилегии — вот базовый код для проверки покупки:
local MarketplaceService = game:GetService("MarketplaceService") local Players = game:GetService("Players")
local PASS_ID = 123456789 — вставьте свой ID
Players.PlayerAdded:Connect(function(player) local hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, PASS_ID) if hasPass then — сюда добавьте код выдачи бонусов print(player.Name .. "активировал VIP-статус") end end)
Готовые идеи бонусов для геймпасса
Практические примеры скриптов, которые сделают ваш пропуск ценным. Комбинируйте несколько фишек — это повысит привлекательность подписки.
1. Секретная локация
Игроки проходят сквозь стены или получают доступ в закрытую зону.
if hasPass then local secretArea = game.Workspace:FindFirstChild("SecretArea") if secretArea then secretArea.CanCollide = false — отключаем столкновения secretArea.Transparency = 0.5 — делаем полупрозрачной end end
Можете добавить парящие частицы (ParticleEmitter) для визуального эффекта.
2. Бесконечная валюта
Мгновенная выдача крупной суммы при входе.
if hasPass then local leaderstats = player:FindFirstChild("leaderstats") if leaderstats then local money = leaderstats:FindFirstChild("Money") if money then money.Value = 999999 — или += для ежедневного бонуса end end end
Важно: Не ломайте экономику игры. Давайте разумные суммы.
3. Эксклюзивный артефакт
Выдайте уникальный меч или инструмент из ReplicatedStorage.
if hasPass then local specialItem = game.ReplicatedStorage:FindFirstChild("DragonSword") if specialItem then specialItem:Clone().Parent = player.Backpack end end
Настройте Tool.Enabled = false для остальных игроков.
4. Ускорение передвижения
Персонаж бегает быстрее обычного.
humanoid.WalkSpeed = 25 — стандартное значение 16
Можете добавить эффект скорости (Trail) на ноги персонажа.
Можете добавить восстановление здоровье каждые 10 секунд через цикл while wait(10) do.
6. VIP-команды в чате
Создайте эксклюзивные функции по ключевым словам.
player.Chatted:Connect(function(message) if message == "/fly" then — код активации полета end end)
Также можете добавить эффект крыльев при использовании команды.
7. Ежедневный бонус
Выдавайте валюту каждый реальный день.
coins.Value += 500 — сохраняйте дату последней выдачи в DataStore
Используйте DataStore для отслеживания времени.
8. Анимации премиум-класса
Загрузите уникальные движения из каталога.
local specialAnimation = Instance.new("Animation") specialAnimation.AnimationId = "rbxassetid://123456" — ваш ID local animTrack = humanoid:LoadAnimation(specialAnimation) animTrack:Play()
Где брать: Купите анимации в Creator Store или создайте в Blender.
9. Скины для интерфейса
Замените стандартные UI-элементы на премиальные.
local gui = player.PlayerGui:WaitForChild("ScreenGui") gui.BackgroundColor3 = Color3.fromRGB(255, 215, 0) — золотой фон
Используйте LocalScript для клиентской части.
10. Персонализированные скины
Особые текстуры для тела персонажа.
local MarketplaceService = game:GetService("MarketplaceService") local Players = game:GetService("Players")
local PASS_ID = 123456789 — ваш Pass ID
Players.PlayerAdded:Connect(function(player) local hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, PASS_ID)
if hasPass then local character = player.Character or player.CharacterAdded:Wait() local torso = character:FindFirstChild("UpperTorso") — используйте актуальные названия частей тела if torso then local vipDecal = Instance.new("Decal") vipDecal.Texture = "rbxassetid://ВАШ_ID" — найдите ID в библиотеке vipDecal.Name = "VIP_Skin" vipDecal.Parent = torso end end end)
Советы:
Добавьте свечение (SurfaceGui + Frame с эффектом UIGradient).
Создайте отдельную папку в ReplicatedStorage для всех текстур премиум-класса.
11. Звуковая идентификация
Уникальные звуки шагов или способностей.
local MarketplaceService = game:GetService("MarketplaceService") local Players = game:GetService("Players")
local PASS_ID = 123456789 local SOUND_ID = "rbxassetid://ВАШ_ID" — например, 5410086218 для Crab Rave
Players.PlayerAdded:Connect(function(player) local hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, PASS_ID)
if hasPass then local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:FindFirstChild("Humanoid")
if humanoid then humanoid.Running:Connect(function(speed) if speed > 0 then local sound = Instance.new("Sound") sound.SoundId = SOUND_ID sound.Parent = character.HumanoidRootPart sound:Play() game.Debris:AddItem(sound, 5) — автоматическое удаление через 5 сек end end) end end end)
Лайфхаки:
Используйте предзагруженные звуки через ContentProvider:PreloadAsyncдля минимизации лагов.
Добавьте проверку if not character:FindFirstChild("VIP_Sound") then, чтобы избежать наложения треков.
Для музыкальных инструментов (бумбоксов) используйте RemoteEvent для синхронизации с другими игроками.
Где брать контент:
Официальная аудиобиблиотека Roblox.
Бесплатные звуки на FreeSound (конвертируйте в .ogg перед загрузкой).
Важные нюансы:
Тестируйте все в Studio перед публикацией.
Не злоупотребляйте OP-бонусами — это отпугнет бесплатных игроков.
Обновляйте контент раз в 2-3 недели, чтобы подписчики не теряли интерес.
Пример комплексного подхода: Создайте VIP-остров с отдельным квестом, эксклюзивным лутом и увеличенным опытом. Добавьте туда NPC с диалогами — это усилит погружение.
Как оплатить геймпасс в Roblox с помощью ggsel
Геймпасс покупается за внутриигровую валюту — Робуксы. При ограничении прямых платежей для приобретения Robux игроки могут воспользоваться проверенным маркетплейсом ggsel с защитой от мошенничества. Платформа обеспечивает безопасность сделок за счет рейтинговой системы продавцов, верификации аккаунтов и блокировки средств до подтверждения выполнения услуги.
Перейдите на сайт ggsel. В поиске введите «Робуксы».
Отфильтруйте предложения по рекомендациям или цене.
Выберите понравившееся, изучив описание и отзывы.
Укажите нужное количество Робуксов для пополнения или выберите подарочную карту необходимого номинала.
Оплатите удобным способом (российской банковской картой, СБП, через электронный кошелек или другим).
После подтверждения оплаты ваш баланс в Roblox будет пополнен указанным в описании способом. Либо на экране появится код активации подарочной карты, также он придет на указанную ранее почту.
Переходите на ggsel.net — торговую площадку, где вы найдете игры для ПК и консолей, DLC, сможете пополнить баланс популярных игровых и неигровых сервисов, купить и продать игровой аккаунт. И все это — по выгодным ценам!
Как системный администратор, я очень часто сталкиваюсь с тем, что мне нужно оперативно узнать имя ПК, на котором залогинен определенный пользователь. Очень выручает bginfo, которая отображает нужную информацию прямо на фоне рабочего стола у пользователя, и в рамках телефонного звонка в ИТ-службу пользователь может назвать имя своей машины. Иногда эта политика не отрабатывает как надо.
У нас на предприятии кто-то еще задолго до моего прихода в институт написал утилитку, которая в паре с групповой политикой, собирающей данные о входах пользователей, кое-как могла дать нужную инфу. Но увы, кривость этой софтины зашкаливает.
Я написал своё приложение, которое даёт мне информацию о дате входа пользователей и имени ПК.
1. Нужно создать политику, которая при входах пользователей будет запускать скрипт, кладущий в общий файл лог о входе: имя пользователя, имя ПК, дата, время. Политику, теоретически, можно назначить в структуре домена повыше, рядом с Default Domain Policy
2. Правим конфиг, лежащий с каталоге с программой так, чтобы указать путь к лог-файлу, созданному в 1 пункте
3. Запускаем программу. При запуске она обращается к log-файлу, сортирует и группирует найденные данные так, чтобы в выпадающем списке показать несколько ПК напротив одного пользователя, если он логинился на несколько станций
Я с охотой делюсь софтинкой с любым желающим, подскажу как настроить и пользоваться:
Не ожидал вообще никакой реакции на эту программу, поэтому наличие комментариев удивило.
1. Я не программист, я открыл Visual Studio первый раз в жизни, чтобы сварганить себе эту программку. СЕБЕ.
2. Меня самого дико бесит гигантский размер файла, но это следствие моего требования об автономности программы. Можно собрать ее в 10-мб файл, но тогда она будет клянчить дотнет и тд при установке, а именно этого я и хотел избежать
3. Я не зашивал туда вирусы, я не умею этого. Каспер мой не ругается, кстати.
Последовав совету @apple.mary, сменил платформу разработки на .Net Framework 4.8.1, пересобрал проект. Теперь он 100 килобайт. Но требует установленный фрэймворк для работы!
Я тут приложение написал для заметок, потому что надоело сохранять всё в один чатик с самим собой, а потом искать в общем хаосе, который сложно назвать списком или каталогом.
💡Идея
Знакомо, когда натыкаешься на крутой фильм или игру, сохраняешь «на потом», а потом:
Не можешь вспомнить название («Та игра с синим мечом...»)
Тратишь кучу времени на выбор («Что бы такого глянуть вечером?»)
Забываешь, что планировал посмотреть
DropList решает эти проблемы:
📌 Единое хранилище для всех категорий
🏷️ Гибкая система статусов и рейтингов
🔍 Мгновенный поиск по коллекции
✨ Функции
🎥 Демонстрация
Поспрашивал друзей - оказалось, что многим хотелось бы какое-то такое приложение со списками к себе на ПК, поэтому недавно выложил в открытый доступ.