Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Собирайте грибы, готовьте и общайтесь. Экономический симулятор лесной фермы

Грибники и Кланы

Симуляторы, Стратегии, Фермы

Играть

Топ прошлой недели

  • Animalrescueed Animalrescueed 43 поста
  • XCVmind XCVmind 7 постов
  • tablepedia tablepedia 43 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
12
Galhaitham
Galhaitham
Genshin Impact
Серия Гайды

Инеффа⁠⁠

3 месяца назад
Инеффа
Показать полностью 1 1
[моё] Контент нейросетей Genshin Impact YouTube Арты нейросетей Гайд Видео Длиннопост
1
20
Galhaitham
Galhaitham
Genshin Impact
Серия Гайды

Ситлали⁠⁠

3 месяца назад
Показать полностью 2 1
[моё] Контент нейросетей Citlali (Genshin Impact) Genshin Impact YouTube Арты нейросетей Гайд Видео Длиннопост
0
3
Olek.Olegovich
Olek.Olegovich
Лига Разработчиков Видеоигр
Серия RPG Maker

RPG Maker MV/MZ - Добавление языковых локализаций в завершённый проект⁠⁠

3 месяца назад

Вступление

Я разработал плагин для языковых локализаций, здесь описание поподробнее. Постепенно буду добавлять в него функционал. Если вам нужна какая-то конкретная функция, напишите идею в теме плагина. Также обращу внимание, что в плагине есть функционал по экспорту языковых данных в Excel-таблицу и импорту из неё.

Важный совет. Если вы допускаете, что в вашей игре будет более одного языка (возможно, не сразу, но в будущем), лучше сразу разрабатывать с учётом локализаций. То есть нигде в редакторе не используйте захардкоженный текст, только теги из файлов локализации. Сначала можно прописать только один язык, потом по надобности добавлять другие. Тогда вам не придётся мучаться с экспортом текста из игры.

Тем не менее, иногда может потребоваться внедрить локализации в уже готовую игру.

Как-то раз я выполнил такой заказ для игры на RPG Maker MV. Вероятно, решение прокатит и на MZ. Если не сработает, напишите в этой теме.

Задача

  1. Экспортировать текст из игры в JSON.

  2. Сконвертировать JSON в XLSX и отправить получившуюся таблицу переводчику.

  3. Дождаться готового перевода в XLSX формате.

  4. Конвертировать новую таблицу в JSON и внедрить новый язык в проект.

Формат JSON поддерживает произвольную структуру данных. Объекты, массивы, любой уровень вложенности. При этом переводчик с JSON работать не хотел, нужно было ему обеспечить таблицу. Поэтому я решил для хранения данных локализации использовать один JSON-файл с плоским объектом. То есть был только один объект в корне файла, и каждое его свойство было текстовым. Никаких вложенных объектов.

Инструкция

  • Сначала нужно экспортировать текст из проекта. Я написал скрипт, который находит все диалоги (команда "Показать сообщение"), извлекает из них текст и сразу генерирует JSON-файл с нужной структурой. Вот он.

  • Этот скрипт написан на JS. Чтобы его исполнить, можно установить Node.js и запустить скрипт командой node export-localization.js

  • Можно также переписать скрипт на python, bash или другой язык и исполнить удобными вам инструментами. В принципе, скрипт несложный (даже примитивный).

  • В результате мы получим файл с таким содержимым:

{

"<тег>": "<реплика>"

}

  • Теперь забиваем в поисковик: "json to xlsx". Берём любой понравившийся сервис. Например, этот.

  • Скорее всего, мы получим таблицу с 2 строками и большим количеством столбцов. Переводчику будет неудобно работать с такой. Он ожидает 2 столбца: в одном теги, в другой - текст, который нужно перевести (переводчик либо будет редактировать этот столбец, либо добавит новый).

  • Если у вас получилось так, то просто транспонируйте получившуюся таблицу. Это можно сделать и в Esxcel, и в LibreOffice, и в Google Sheets. Не знаете, как? Поищите в интернете, это несложно (конкретная кнопка зависит от инструмента, поэтому тут не пишу, но она точно есть).

  • Отправляем таблицу переводчику, ждём перевода.

  • Теперь новый XLSX нужно конвертировать в JSON. Сначала транспонируем таблицу, чтобы у нас было 2 строки и множество столбцов.

  • Вбиваем в поисковик: "xlsx to json". Опять берём любой подходящий сервис, вроде этого. Конвертируем, получаем новый json-файл.

  • Переименовываем новый JSON-файл, как нам нужно ("en.json", "ru.json" и т.д.).

  • Вставляем в проект, добавляем язык в параметры плагина локализации (здесь конкретные действия зависят от используемого плагина).

Заключение

Возможно, это не лучший способ: придумывал его в спешке на коленке. Если у вас есть альтернативные идеи, прошу написать в этом треде.

Самое ценное в этой статье - скрипт на экспорт текста, обратите на него внимание. У DK есть инструмент, который извлекает весь текст из игры, но он не генерирует JSON-файл с нужной структурой и уникальными тегами (очень важно, чтобы теги были уникальными).

Надеюсь, мне удалось достаточно раскрыть тему, остались ли вопросы?

Показать полностью
[моё] Разработка Gamedev Программирование Javascript RPG Maker Плагин Текст Урок Статья Обучение Гайд Rpg maker mv
0
3
Olek.Olegovich
Olek.Olegovich
Лига Разработчиков Видеоигр
Серия RPG Maker

RPG Maker MV/MZ - Обработка нажатий на клавиатуру и мышь⁠⁠

3 месяца назад

Предисловие

Иногда при разработке механик или мини-игр хочется нестандартно обрабатывать нажатия на клавиши клавиатуры или мыши. Например, совершать игровое действие по нажатию на произвольную клавишу (стрельба, прыжок, лечение), управлять интерфейсом (открывать игровую карту, ещё какое-то меню) и много что ещё.

Существует несколько способов это делать.

Способ 0

Возможно, вам достаточно будет назначить стандартные действие на нестандартные клавиши. Например, сделать ходьбу по WASD. Для подобного достаточно расширить словарь Input.keyMapper, об этом подробнее в другом гайде.

Способ 1

Небольшая справка: событие - это сообщение, которое возникает при выполнении определённых условий. Например, если пользователь пошевелил мышь или тыкнул по клавише - в системе происходит соответствующее событие.

С помощью функции document.addEventListener(<событие, <функция>) можно назначить функции-обработчики на различные события.

Можно обрабатывать нажатие на клавишу:

document.addEventListener("keydown", keyDownHandler);

function keyDownHandler(event) {

if (Input.keyMapper[event.keyCode] == "ok") {

// Ваш код

}

};

"keydown" - это название события нажатия на клавишу клавиатуры. Внутри функции обработчика мы проверяем, не помечена ли нажатая клавиша, как "ok" в Input.keyMapper.

Однако мы можем действовать свободнее и сверять напрямую с числовым кодом клавиши:

document.addEventListener("keydown", keyDownHandler);

function keyDownHandler(event) {

// 70 - это код клавиши F

if (event.keyCode == 70) {

// Ваш код

}

};

Существуют различные события, которые можно обрабатывать в играх. Вот некоторые:

// Нажатие на клавишу клавиатуры:

document.addEventListener("keydown", keyDownHandler);

// Нажатие на клавишу мыши:

document.addEventListener("click", mouseClickHandler);

// Двойное нажатие на клавишу мыши:

document.addEventListener("dblclick", mouseDoubleClickHandler);

// Игрок пошевелил мышкой:

document.addEventListener("mousemove", keyDownHandler);

Давайте немного подробнее про использование мыши. Возможно, вам хочется различать клавиши мыши (да, можно тело функции-обработчика писать прямо при добавлении слушателя событию).

document.body.addEventListener("mousedown", event => {

if (event.button == 0) {

// Нажата левая кнопка

}

else if (event.button == 2) {

// Правая кнопка

}

else {

// Другая кнопка

}

}

Способ 2

В коде движка есть функции, которые обрабатывают нажатия на клавиши мыши (сюда же относится обработка сенсорного интерфейса).

Во-первых, в rmmz_core.js можно найти функции, которые делают примерно то, о чём я писал выше:

TouchInput._setupEventHandlers = function() {

const pf = { passive: false };

document.addEventListener("mousedown", this._onMouseDown.bind(this));

document.addEventListener("mousemove", this._onMouseMove.bind(this));

document.addEventListener("mouseup", this._onMouseUp.bind(this));

document.addEventListener("wheel", this._onWheel.bind(this), pf);

document.addEventListener("touchstart", this._onTouchStart.bind(this), pf);

document.addEventListener("touchmove", this._onTouchMove.bind(this), pf);

document.addEventListener("touchend", this._onTouchEnd.bind(this));

document.addEventListener("touchcancel", this._onTouchCancel.bind(this));

window.addEventListener("blur", this._onLostFocus.bind(this));

};

TouchInput._onMouseDown = function(event) {

if (event.button === 0) {

this._onLeftButtonDown(event);

} else if (event.button === 1) {

this._onMiddleButtonDown(event);

} else if (event.button === 2) {

this._onRightButtonDown(event);

}

};

Во вторых, мы можем расширить функционал функций, которые обрабатывают различные события. Для примера возьмём событие отмены с помощью сенсорного интерфейса (сюда же относится нажатие на правую клавишу мыши, если у вас мышь для праворуких):

const Origin_TouchInput_onCancel = TouchInput._onCancel;

TouchInput._onCancel = function(x, y) {

// Ваш код

Origin_TouchInput_onCancel.apply(this, [x, y])

};

Сначала вы выполняем код, после (что важно!) вызываем оригинальный метод. Можно ваш код выполнять после кода движка. Но обязательно вызывайте Origin_TouchInput_onCancel, иначе стандартная обработка нажатия движком не выполнится.

Ещё момент. Напрямую это не относится к тему, но может быть полезно.

$gameTemp.reserveCommonEvent(N);

С помощью этой функции можно вызвать общее событие. N - номер события в Базе данных проекта. К примеру, вы можете по нажатию на какую-то клавишу вызывать общее событие, где и описана ваша уникальная игровая логика.

Вот здесь демо-проект с реализацией такой идеи.

После запуска новой игры попробуйте нажать на F и ПКМ мыши.

Буду дополнять этот гайд по необходимости, пишите ваши предложения и замечания.

Каталог моих бесплатных плагинов для RPG Maker

Показать полностью
[моё] Разработка Gamedev Программирование Javascript RPG Maker Rpg maker mv Плагин Текст Урок Статья Обучение Гайд Длиннопост
0
9
Olek.Olegovich
Olek.Olegovich
Лига Разработчиков Видеоигр
Серия RPG Maker

RPG Maker MV/MZ - Управление по WASD⁠⁠

3 месяца назад

Добавить поддержку клавиш W, A, S, D клавиатуры легко в MV и MZ.

Для этого достаточно добавить в проект такой код:

(function () {

var replacedKeyMapper = {

87: 'up',

65: 'left',

83: 'down',

68: 'right',

69: 'pagedown',

};

for (code in replacedKeyMapper) {

Input.keyMapper[code] = replacedKeyMapper[code];

}

})();

Здесь мы также "перекинули" стандартный функционал клавиши W на E.

Вы можете скачать файл тут и добавить его в проект, как плагин.

У каждой клавиши есть числовой код. Представим, что в движке они помечаются маркерами. Например, стрелка вверх помечена маркером 'up'. Если игрок нажимает на эту стрелку, движок видит срабатывание маркера 'up' и обрабатывает это событие.

Маркеры задаются через словарь. Эта структура данных состоит из пар ключ-значение. Здесь ключ - числовой код клавиши, а значение - маркер. Все ключи уникальные, они не могут повторятся. Значения - могут.

Таким образом, несколько клавиш могут быть помечены одинаковым маркером. Это позволяет нам одновременно поддерживать движение как по стрелкам, так и по WASD.

При желании, вы можете добавлять свои пары ключ-значение в объект replacedKeyMapper из кода выше.

Вот код из файла движка rmmz_core.js:

Input.keyMapper = {

9: "tab", // tab

13: "ok", // enter

16: "shift", // shift

17: "control", // control

18: "control", // alt

27: "escape", // escape

32: "ok", // space

33: "pageup", // pageup

34: "pagedown", // pagedown

37: "left", // left arrow

38: "up", // up arrow

39: "right", // right arrow

40: "down", // down arrow

45: "escape", // insert

81: "pageup", // Q

87: "pagedown", // W

88: "escape", // X

90: "ok", // Z

96: "escape", // numpad 0

98: "down", // numpad 2

100: "left", // numpad 4

102: "right", // numpad 6

104: "up", // numpad 8

120: "debug" // F9

};

Здесь вы можете увидеть все доступные по умолчанию маркеры. Это полезно знать, если вы хотите добавить какой-то клавише маркер.

Есть аналогичный словарь для геймпада:

Input.gamepadMapper = {

0: "ok", // A

1: "cancel", // B

2: "shift", // X

3: "menu", // Y

4: "pageup", // LB

5: "pagedown", // RB

12: "up", // D-pad up

13: "down", // D-pad down

14: "left", // D-pad left

15: "right" // D-pad right

};

Можно также создать обработчик нажатий на клавиатуру и там смотреть на непосредственно код нажатой клавиши. Полезно, если у движка нет подходящего стандартного маркера. Но это уже для продвинутых пользователей ;) Пишите, если нужен гайд по этому.

Коды клавиш легко находятся в интернете. Можно смотреть их, к примеру, тут. Нужны DEC-коды (то есть десятичные).

Ещё важный совет. Не меняйте код движка, не редактируйте стандартные файлы. Мало того, что это запрещено правообладателем, это также неудобно и небезопасно. Что, если вы ошибётесь или захотите откатить изменения? JavaScript позволяет переопределять всё, что удобно. Поэтому для изменения кода движка используйте плагины.

Пишите ваши вопросы в этом треде, если остались.

Каталог моих бесплатных плагинов для RPG Maker

Показать полностью
[моё] Разработка Gamedev Программирование Javascript RPG Maker Rpg maker mv Плагин Текст Урок Статья Обучение Гайд
2
Naivenor
Naivenor

Гайд по Godox QR-P90: Сборка и разборка софтбокса и подготовка для Авиаперевозок⁠⁠

3 месяца назад

Софтбокс Godox QR-P90 — отличный выбор для фотографов, но его сборка и разборка требуют аккуратности. Вот подробная инструкция, чтобы всё прошло гладко! 😎


🛠️ Сборка софтбокса

  1. Вставьте спицы:

    • Возьмите каждую спицу и аккуратно вставьте её свободный конец в соответствующий паз на кольце.

    • Убедитесь, что спица сидит ровно.

  2. Защёлкивайте спицы:

    • Поднимайте каждую спицу вверх до щелчка — это фиксирует её в правильном положении.

    • 🚫 Не давите сильно! Механизм чувствительный.

    • 🔥 Лайфхак: фиксируйте по 2 противоположные спицы одновременно — так софтбокс собирается равномернее и быстрее.

  3. Проверка:

    • Убедитесь, что все 16 спиц защёлкнуты.

    • Натяните ткань софтбокса, чтобы проверить его форму.

✅ Готово! Ваш софтбокс готов к работе! 🎉


🔄 Разборка софтбокса (правильный способ)

🚨 Важно: не пытайтесь выдернуть спицы силой — это повредит механизм!

Для каждой спицы:

  1. Слегка приподнимите спицу (примерно на 1 см) одной рукой.

  2. Нажмите кнопку-фиксатор на кольце другой рукой.

  3. Аккуратно вытащите спицу.

💡 Метод “приподнять и нажать” — самый безопасный. Он сохранит защёлки и нервы! 😌


✈️ Полная разборка для авиаперевозки

Если нужно перевезти софтбокс в багаже (спицы в ручную кладь запрещены), следуйте этим шагам.
⚠️ Для пряморуких! Если не уверены, проще взять софтбокс в аренду на съёмке.

Что понадобится:

  • Крестовая отвёртка.

  • Терпение и аккуратность. 😅

Разборка:

  1. Полностью разберите софтбокс:

    • Извлеките все спицы (по методу выше).

    • Открутите крепёж speed ring’а с помощью отвёртки.

  2. Упакуйте детали:

    • Спицы и ткань сложите в чемодан.

    • Крепёж (болты, пружины) упакуйте в отдельные пакеты, чтобы не потерялись.

Сборка speed ring’а:

  1. Подготовка:

    • Разложите все детали в правильном порядке (спицы, кольца, пружины, болты).

  2. Крышка:

    • Закройте крышку speed ring’а.

    • Пружины слегка прижмите (не передавливайте!).

  3. Стяжка:

    • Соедините два круга болтами, подтяните их равномерно.

  4. Пружины:

    • Вставьте пружины на место.

    • Подтяните круги болтами ещё чуть плотнее.

  5. Проверка:

    • Убедитесь, что механизм работает плавно, без заеданий.

✅ Speed ring готов! Можно собирать софтбокс по инструкции выше.


💡 Полезные советы

  • Всегда проверяйте защёлки перед съёмкой — они должны быть надёжно зафиксированы.

  • Храните софтбокс в чехле, чтобы защитить ткань и спицы.

  • Если что-то не защёлкивается, не давите — перепроверьте положение спицы или кольца.

Эти простые шаги продлят жизнь вашему Godox QR-P90 и сэкономят кучу времени и нервов! 🚀


📌 Вопросы есть? Пишите в комментариях, разберёмся! 😊


1/12

Примеры в картинках

Показать полностью 12
[моё] Гайд Тестирование Научпоп
0
22
TECHLiveHACK
TECHLiveHACK

Чувак приобрел б/у автомобиль koda⁠⁠

3 месяца назад
Перейти к видео

Представьте себе, каково было его удивление, когда он увидел, что бывший владелец «прикрутил» компьютерную мышку к механизму стеклоподъёмника.

👌 — Не гений, а просто типичный айтишник.

Источник

Показать полностью
Telegram (ссылка) Гайд Авто IT IT юмор Программист Skoda Юмор Ремонт авто Автосервис Видео Вертикальное видео Короткие видео
4
ggsel.net
ggsel.net

Как пополнить индийский PlayStation Network в 2025 — простейший гайд⁠⁠

3 месяца назад

Если вы хотите сэкономить на играх и подписках в 2025 году, индийский аккаунт PSN станет вашим спасением. Цены здесь существенно ниже, чем в других регионах — именно поэтому тысячи геймеров уже перешли на аккаунты этого региона. Подписки PS Plus, новинки, внутриигровые покупки — все это обойдется вам дешевле. Звучит заманчиво? Безусловно. Но есть важный момент: пополнить баланс с российской карты напрямую не получится.

Однако проверенные способы пополнения все же существуют. В этой статье мы в редакции ggsel.net расскажем как пополнять индийский аккаунт PlayStation Store в 2025 году без лишних сложностей.

Способ 1: Иностранная банковская карта

Если у вас есть доступ к зарубежной карте (мультивалютной или выпущенной в Индии), это идеальное решение. Такой вариант позволяет моментально оплачивать игры, подписки PS Plus и другие покупки в индийском PS Store — без кодов и дополнительных действий.

Как это работает:
Авторизуйтесь в аккаунте, перейдите в настройки магазина и добавьте карту. После ввода реквизитов и подтверждения вы сможете совершать покупки напрямую. Метод стабилен, но подходит в основном тем, кто живет за границей или имеет доступ к картам с поддержкой INR.

Важно: российские карты, к сожалению, не работают в индийском регионе.

Способ 2: Подарочные карты PSN на ggsel

Для тех, кто хочет пополнить баланс без сложностей, подарочные карты — оптимальное решение. Сервисы вроде маркетплейса ggsel позволяют купить цифровой код за несколько минут, даже если у вас нет доступа к иностранным картам.

Как это работает:

  1. Откройте сайт ggsel и введите в поиске «PSN».

  2. Перейдите в категорию «Карты пополнения», затем в раздел «Индия».

  3. Выберите понравившееся предложение на основе цены, рейтинга продавца и отзывов других покупателей.

  4. Внимательно прочитайте описание выбранного товара.

  5. Укажите нужный номинал карты (500, 1000, 2000 INR или другую сумму».

  6. Оплатите покупку через СБП, электронный кошелек или российскую карту.

  7. Получите код на экране и на почту.

  8. Войдите в PS Store через индийский аккаунт, выберите «Redeem Code» и введите полученный ключ. Средства поступят на счет.

Плюсы метода:

  • Не требует передачи логина и пароля от аккаунта.

  • Подходит для пользователей из России, Украины и СНГ.

  • Средства зачисляются моментально после активации кода.

Этот способ исключает риски блокировки и подойдет тем, кто ценит простоту и безопасность.

Способ 3: Помощь друзей за рубежом

Если среди ваших знакомых есть те, кто проживает в Индии или имеет доступ к местным платежным сервисам, их помощь станет отличным решением. Этот проверенный метод работает, когда есть надежный человек, готовый поддержать.

Как воспользоваться:

  1. Покупка подарочной карты — друг приобретает PS Store India Card в местном магазине и пересылает вам цифровой код.

  2. Прямая оплата — доверенное лицо может войти в ваш аккаунт (с вашего разрешения) и совершить покупку, используя свою карту.

  3. Подарок из своего аккаунта — если вы не против, друг дарит нужную игру или подписку напрямую через свой профиль.


Переходите на ggsel.net — торговую площадку, где вы найдете игры для ПК и консолей, DLC, сможете пополнить баланс популярных игровых и неигровых сервисов, купить и продать игровой аккаунт. И все это — по выгодным ценам!

Реклама ИП «Суханов Д.Ф.», ИНН: 290132412356

Показать полностью 4
Сервис Видеоигра Игры Геймеры Гайд Покупка Инструкция Пополнение Playstation PSN Индия Блоги компаний Длиннопост
1
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии