Vitaro

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

6 posts in this topic

 

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

Все что я напишу не является необходимым для ваших модов, но добавит комфорта для конечного пользователя.
Если вы не проделаете действия, описанные ниже, то в интерфейсе игры он будет отображаться как "Устаревший формат мода". При этом он будет абсолютно работоспособен. Самое главное, чтобы в директории с модом содержалась папка 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

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

@ganymed67 можно

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

1

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.