ВНИМАНИЕ
Previev browser нужно обязательно поставить на NWjs
------
Для того, чтоб нам работать, надо скачать плагин JSON
Переходим по ссылке и жмём Download

Устанавливаем плагин
Если не знаете как, то урок можно посмотреть тут
Создаём проект в construct
Нужно обязательно добавить эти объекты:
*2 кнопки(update и addons folder)
*JSON
*NWjs
*list
*sprite
*textbox
*Function
У textbox ставим данные свойства:

Поздравляю! С подготовкой закончили
Переходим по ссылке и жмём Download

Устанавливаем плагин
Если не знаете как, то урок можно посмотреть тут
Создаём проект в construct
Нужно обязательно добавить эти объекты:
*2 кнопки(update и addons folder)
*JSON
*NWjs
*list
*sprite
*textbox
*Function
У textbox ставим данные свойства:

Поздравляю! С подготовкой закончили
------
Так-как я сейчас экспортировать ничего не собираюсь, то мы сами сделаем путь к нашей папке с аддонами
Приступим к программированию
Для начала, нам надо узнать у пользователя путь к нашей папке:

Код спрашивает у пользователя путь к папке с аддонами и записывает его в переменную для удобства
Теперь сделаем так, чтоб в List были все папки с аддонами при выборе папки, а так-же нажатии кнопки Update:

Поправка:

Создадим папку Mods на рабочем столе, а в ней Mod1 и Mod2
И при выборе папки Mods получается это:

Приступим к программированию
Для начала, нам надо узнать у пользователя путь к нашей папке:

Код спрашивает у пользователя путь к папке с аддонами и записывает его в переменную для удобства
Теперь сделаем так, чтоб в List были все папки с аддонами при выборе папки, а так-же нажатии кнопки Update:

Поправка:

Создадим папку Mods на рабочем столе, а в ней Mod1 и Mod2
И при выборе папки Mods получается это:

------
Для начала закинем в папку Mode1 несколько файлов
page.txt
page.json
page.png
page.txt
- Код: Выделить всё
Это тестовый текст
Это тестовый текст
page.json
- Код: Выделить всё
Пока ничего туда не пишем
page.png
- Код: Выделить всё
Любое изображение размером спрайта в вашем проекте
------
------
Все мы знаем, что textbox может изменяться по css,
Я не просто так добавил JSON, с помощью него мы изменим CSS textbox'а:
Для начала впишем в page.json данный код:
Я не просто так добавил JSON, с помощью него мы изменим CSS textbox'а:
Для начала впишем в page.json данный код:
- Код: Выделить всё
{
"TBcss": {
"font-size": "22pt",
"border-size": "0px"
}
}
JSON файлы устроены так:
название всегда пишется в скобках, а значение не обязательно.
Значение может быть данными несколькими типами данных:
string - пишется в скобках
number - пишется без скобок и поддерживает только цифры и знак "."
array - массив, или же множество переменных в одной, записывается так:
и object - почти то же самое, что и массив, но может иметь только измерение x. Записывается так:
В JSON файле обычно хранится множество переменных и их значений, но чтоб их разделять, после каждого значения, кроме последнего, нужно писать ",".
- Код: Выделить всё
"название":значение
название всегда пишется в скобках, а значение не обязательно.
Значение может быть данными несколькими типами данных:
string - пишется в скобках
number - пишется без скобок и поддерживает только цифры и знак "."
array - массив, или же множество переменных в одной, записывается так:
- Код: Выделить всё
"array":[12,22,40]
и object - почти то же самое, что и массив, но может иметь только измерение x. Записывается так:
- Код: Выделить всё
"object:{
"string":"yolo",
"number":12
}"
В JSON файле обычно хранится множество переменных и их значений, но чтоб их разделять, после каждого значения, кроме последнего, нужно писать ",".
------
------
Персонаж есть, платформа есть, теперь за логику!
Добавим кнопку для перехода на Layout в главном меню и отключим её. Ведь если её оставить включённой - то игрок сможет пойти играть при этом не загрузив уровень.
Теперь поправим наш главный event sheet:

Всё! Теперь он будет работать при выборе нового уровня!
Сделаем переход на игру при нажатии на кнопку:

Теперь приступаем к самому важному- работе аддона
Добавим кнопку для перехода на Layout в главном меню и отключим её. Ведь если её оставить включённой - то игрок сможет пойти играть при этом не загрузив уровень.
Теперь поправим наш главный event sheet:

Всё! Теперь он будет работать при выборе нового уровня!
Сделаем переход на игру при нажатии на кнопку:

Теперь приступаем к самому важному- работе аддона
------
Для начала я поправил json файл нашего аддона:
Теперь - генерация
Добавим данную логику в наш Game_ES(ES игрового поля):

Теперь объяснение:
Скрипт в начале игры проходит по переменной 'Map' в нашем json файле. В нём хранятся данные всех позиций для блоков по X и Y через запятую.
Чтоб разделить X и Y я использую функцию tokenat()
Так как на выходе мы получаем тип данных string- его нужно перевести в int. Это я проделал через функцию int()
- Код: Выделить всё
{
"TBcss": {
"font-size": "22pt",
"border-size": "0px"
},
"Map":{
"1":"32, 352",
"2":"96, 352",
"3":"160, 352",
"4":"32, 416",
"5":"96, 416",
"6":"160, 416"
}
}
Теперь - генерация
Добавим данную логику в наш Game_ES(ES игрового поля):

Теперь объяснение:
Скрипт в начале игры проходит по переменной 'Map' в нашем json файле. В нём хранятся данные всех позиций для блоков по X и Y через запятую.
Чтоб разделить X и Y я использую функцию tokenat()
Так как на выходе мы получаем тип данных string- его нужно перевести в int. Это я проделал через функцию int()
В итоге мы получаем это:


------
Вот мы и сделали поддержку модов и даже небольшую карту как аддон. Следующим делом которым я попытаюсь занять своё свободное время будет документация по mod.io - обширную платформу модов для ваших игр.
Данная платформа может вам заменить steam workshop если постараться.
Данный пост я официально закрываю. Попробуйте основываясь на данном уроке сделать поддержку других кадров, ширины, высоты и тп. Кто знает, может данный исходник послужит направлением для новой версии Gmod в 2D
Данная платформа может вам заменить steam workshop если постараться.
Данный пост я официально закрываю. Попробуйте основываясь на данном уроке сделать поддержку других кадров, ширины, высоты и тп. Кто знает, может данный исходник послужит направлением для новой версии Gmod в 2D