Vitaro

[Гайд] mod.lua и strings.lua

6 сообщений в этой теме

 

В этом гайде я хочу описать как правильно оформлять ваши моды.

Все что я напишу не является необходимым для ваших модов, но добавит комфорта для конечного пользователя.
Если вы не проделаете действия, описанные ниже, то в интерфейсе игры он будет отображаться как "Устаревший формат мода". При этом он будет абсолютно работоспособен. Самое главное, чтобы в директории с модом содержалась папка res, без неё ничего не будет работать.

Самым важны в оформлении файлом является "mod.lua"
В нем указываются: имена авторов, версия, критичность добавления/удаления и т.д.
Все блоки прописываются на ваше усмотрение.
Формат используется такой:

function data()
return {
	info = {

	Ваши блоки

	},
	visible = true
}
end

visible = true  - делает ваш мод видимым или невидимым в списке модов. Актуально для создания сценариев игры (компаний). Возможные варианты: true или false.

И так перейдем к списку блоков:

minorVersion = 0 - дает номер версии мода, причем только после точки: 1.1, 1.2, 1.3 и т.д. Если хотите изменить первую цифру, то нужно в названии мода на конце приписать: "_2" и т.д. по возрастающей. К примеру "Trailers_2"

severityAdd = "NONE" - Возможные варианты: "CRITICAL" и "WARNING". Показывает маленькое окошко при добавлении мода в сохраненную игру.
При CRITICAL покажет:
critical_add.jpg
При WARNING:
Warning_add.jpg

severityRemove = "NONE" - Возможные варианты: "CRITICAL" и "WARNING". Также выскакивает окошко, но уже при удалении мода из списка в Сохраненной игре.
CRITICAL:
QIP Shot - Screen 965.jpg
WARNING:
QIP Shot - Screen 966.jpg

name = _("Имя мода") - Здесь пишется имя мода. Причем писать можно на разных языках. В таком случае о мультиязычности можно забыть. Если вы хотите перевести мод на другие языки - пишите на английском любой текст, он будет перехватываться в strings.lua. Имя будет высвечиваться в списке модов и на странице подписки в Steam

description = _("Описание мода") - Тоже самое что и с именем, но для описания мода.

tags = { "Europe", "Truck" } - Название тэгов. Актуально больше для площадки Steam. При загрузке туда, автоматом прописывает тэги для поиска и сортировки. Писать можете, что угодно. Учтите, что это все будет видно. Список для поиска можете посмотреть в Мастерской Steam справа.

authors - список авторов, их роль, а также их id на transportfever.net. Как я понимаю, разработчики не доделали интерфейс с модами, поэтому эту информацию вы не увидите нигде кроме самого файла mod.lua.
Что там планировалось изначально:
name = "Vitaro" - имя участника
role = "CREATOR" - его роль. Возможные варианты: "CREATOR", "CO_CREATOR", "TESTER"," BASED_ON" и "OTHER"
tfnetId = 27686 - id профиля на сайте transportfever.net
далее блоки не планировались авторами, но уже стало правилом хорошего тона их писать:
steamProfile = "Vitaro" - Имя профиля в Steam
text = "Произвольный текст" - Обычно пишется более подробная роль участника при создании мода.
В итоге все вместе имеет вот такой вид:

 

authors = {
	{
		name = "Vitaro",
		role = "CO_CREATOR",
		tfnetId = 27686,
		text = "Cargo, animation, integration of the game",
		steamProfile = "Vitaro",
	},
	{
		name = "Name",
		role = "CREATOR",
		tfnetId = 12345,
		text = "какой-нибудь текст",
		steamProfile = "Name_in_Steam",
	},
}

 

tfnetId = { 2704 } - id мода на сайте transportfever.net в меню Downloads

url = { "ссылка" } - ссылки на мод, могут указываться через запятую, но обязательно в кавычках

dependencies = { 2661 } - мод зависимости, в котором указывается id c transportfever.net

В итоге мы имеем вот такой вид файла:

 

function data()
  return {
	info = {
		minorVersion = 0,
		severityAdd = "NONE",
		severityRemove = "NONE", 
		name = _("Имя мода"),
		description = _("Описание мода"),
		tags = { "Europe", "Truck" },
		authors = {
			{
				name = "Vitaro",
				role = "CO_CREATOR",
				tfnetId = 27686,
				text = "Cargo, animation, integration of the game",
				steamProfile = "Vitaro",
			},
			{
				name = "Name",
				role = "CREATOR",
				tfnetId = 12345,
				text = "какой-нибудь текст",
				steamProfile = "Name_in_Steam",
			},
		}
		tfnetId = { 2704 },
		url = { "ссылка" },
		dependencies = { 2661 }
	},
	visible = true
  }
end

 

На этом с mod.lua мы закончили. Более подробные функции я описывать не буду, они мало кому нужны. Лучше задавайте вопросы ниже на форуме.

 

Strings.lua

Этот файл служит для перевода вашего мода на различные языки
Формат кода такой:

function data()
задание переменных
	return {
		en = {
		перевод переменных на анлийский язык
		},
		ru = {
		перевод переменных на русский язык
		},
	}
end	

Количество языков не ограничено. Английский писать не обязательно, если вы нормально пропишите все в "задание переменных", но это не всегда удобно.
К примеру, чтобы 100 раз не писать ссылку на сайт можно сделать вот так. Имя переменной можно писать произвольное, я выбрал "site":

site = 'http://transport-games.ru'

А потом просто в блоках перевода писать:

"какой-то текст на любом языке"..site..

Вот тут-то как раз и желательно писать английский отдельным блоком.

Задание переменных идет без квадратных скобок, а вот в блоках перевода они уже требуются. К примеру:

function data()
trucks = можно писать все что угодно, английский блок локализации перехватит
	return {
		en = {
		[trucks] = "40 tons truck",
		},
		ru = {
		[trucks] = "40-ка тонный грузовик",
		},
	}
end	

Если вы перехватываете текст из mod.lua или других источников. То задание переменных писать не обязательно. Главное чтобы текст в этих файлах был в кавычках.
Возьмем наш пример указанный выше - name = _("Имя мода")
конечно текст надо писать на английском, но для примера сойдет:
 

function data()
	return {
		en = {
			["имя мода"] = "название на английском",
		},
		ru = {	
			["имя мода"] = "название на русском",
		}
	}
end

Я же в своих модах пишу переменные в этих файлах без кавычек name = _(Name_mode), поэтому использую "задание переменных". Так проще отследить где что находится, ну поиграться можно с переводом и переменными. Хотя, подозреваю, что разработчики не задумывали такую функцию, тем не менее она работает.

Если вам необходимо использовать переход на новую строку, к примеру для достаточно длинного описания, можете использовать "\n"
в коде переход на новую строку, не переносит текст в описании, при условии что вы не используете квадратные скобки. Но в таком случае можно забыть про переменные, такие как "site..", указанные выше.
Для удобства и лучшего восприятия в коде можно переходить на новую строку. Для этого у вас есть два варианта, один со квадратными скобками, который сохраняет форматирование в конечном варианте:

ru = {
	[trucks] = [[
		текст, текст
		текст, текст
		текст
		]],
}

Второй при помощи кавычек. В данном случае в конечно виде текст будет идти сплошной строкой:

ru = {
	[trucks] =  "текст",
		    "текст",
}

Если вы файле перевода пишите название мода и его описание, то Steam автоматом подхватит текст отсюда и высветит на своей странице на всех языках, которые указаны в strins.lua. Это важно учитывать при обновлении модов, если ваш текст на веб-странице отличается от описания в файле перевода. Текст в стиме просто пропадет.

Для примера я закину файл локализации для корабля:
strings.zip
Описание там заранее отформатировано под площадку Steam. Главное - не забывайте про кавычки и запятые.

4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день! А можно ли перевести на русский уже скачанный мод?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@ganymed67 можно

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я просто попробовал у меня не получилось:blink:

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@ganymed67 ну вы хоть покажите что вы делаете, мыж не телепаты =)

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

доброе время суток! вы меня извините! я особо ни чего и не делал! Думал просто скачал, переименовал и все! Но после этого его ни где не видно становиться! Вот и все! Извините за беспокойство!

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу