Factorio

Factorio

Not enough ratings
Как создать Маркет? [Гайд]
By OstinFCT and 3 collaborators
Гайд по созданию маркета: различные способы его реализации, как с использованием внутриигровых методов, так и с помощью сторонних инструментов. Подробное руководство по настройке и отладке маркета, а также разбор наиболее распространенных ошибок, допускаемых при его создании


[t.me]
2
2
2
   
Award
Favorite
Favorited
Unfavorite
Видео гайд для удобства
⠀Предисловие

В этой статье будет описаны два способа создания Маркета, он же Рынок.
Однако та информация что будет написана тут, будет очень кратким изложением того что есть в видео.
Для того что бы в полной мере понять как создавать маркет, и не ошибиться вам следует для начала посмотреть видео.
В нем я подробно и детально озвучивая все нюансы, того как это все это работает. Так же, как избежать тех или иных проблем в ходе создания Маркета, он же Рынок.
Приятного просмотра)]
⠀Что мы получим?
В игре уже давним давно, существует такая постройка как "Рынок", он же "Маркет".
Однако при его установке в игре, вы ничего не получите. Мало того, сама постройка является все го лишь болванкой и не работает та как надо.
К сожалению как то добавить туда предметы без использования манипуляций с кодом, или файлами игры, невозможно, однако это не так сложно как вам кажется.


На самом деле, заставить работать Марке/Рынок, не так уж и сложно, и после прочтения этого руководства, я попробую научиться вас, как же легко и быстро этого добиться что бы по итогу получить вот такой результат)

Способ создания Маркета [#1]
⠀Команда в чата
Первый способ будет крайне простым, для того что бы им воспользоваться нам надо будет воспользоваться кодом что будет идти ниже.
Этот код внутриигровой то есть его надо будет написать внутри игры.
Для этого запустите игру, и после того как вы войдете в мир, откройте консоль, и впишите туда команду что показана ниже.


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

https://www.youtube.com/watch?v=WqYaFouUpGY&t=2s

Эту часть нам трогать не надо, вообще. Тут все правильно и дополнительный взаимодействий эта часть кода не требует
/c local player = game.player local surface = player.surface local market_location = {x = player.position.x, y = player.position.y - 3} local market = surface.create_entity{name = "market", position = market_location, force = player.force


Эта часть будет основной, так как тут и прописываются основные команды для того, что бы покупать и продавать нудные предметы.
local items = { {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}},


  • "Предмет" - Место пример, мы вписываем внутриигровое имя предмета. Что это такое я объясняю в видео.
  • 1}} - Сюда мы списываем количество того предмета которого мы потратим на покупку другого предмета.
  • "Предмет" - Сюда мы записываем внутриигровое имя предмета которое мы получим после покупки.
  • count=1}}, - Количество предметов которое мы получим после покупки.

Эту часть мы так же не трогаем, тут все правильно. Оставляем как есть
for _, item in ipairs(items) do market.add_market_item(item) end


⠀Итог
После того как мы все это пропишем, мы копируем код, и вставляем его в консоль.
Будьте внимательны так как любая ошибка или неправильно поставленная запятая, может сломать код, и Маркет, Рынок, не поставиться.



Так же стоит понимать что, если вы поменяете местами предметы, то вы сможете уже покупать их, а не продавать. Для этого стоит в этой части кода:
local items = { {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}},

Первый "Предмет" вписать внутриигровое имя предмета например "repair-pack" а в вторую часть уже вписываем "coin". В итоге мы получим это:

⠀⠀Команда для создания Маркета
/c local player = game.player local surface = player.surface local market_location = {x = player.position.x, y = player.position.y - 3} local market = surface.create_entity{name = market, position = market_location, force = player.force} local items = { {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, {price = {{"Предмет", 1}}, offer = {type = "give-item", item = "Предмет", count=1}}, } for _, item in ipairs(items) do market.add_market_item(item) end


Способ создания Маркета [#2]
⠀Вариант с использование программы
Конечно первый вариант хорош тем что ты можешь достаточно просто поставить Рынок, однако в случае ошибки, вы не сможете его переделать.
Так же поставив 1 раз такой маркет, вы не сможет поставить его повторно, разве что сохранять куда то отдельно в блокнот.
По этому есть 2 способ, который с помощью 1 команды сможет быстро ставить Маркет в мире, и вы сможете перекидывать этот файл из сохранения в сохранение, и достаточно комфортно использовать уже созданный код, ранее.

Для этого нам понадобиться программа что может открывать файлы "LUA". Я как вариант могу посоветовать программу Notepad++, она простая и понятная, и что самое главное дружелюбная по отношению к новичку, который ранее не пользовался подобными програмами.

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

C:\Users\user\AppData\Roaming\Factorio\scenarios


Там открываем наш сценарий и ищем файл

control.lua


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



Теперь же прописываем все нужные предметы, и не забывает следить за точками, запятными, и скобками, ибо их отсутствие сразу крашнет сейв
⠀Как вызвать создание Маркета
Теперь после того как вы сохранили файл, для того что бы поставить Маркет\Рынок в мир, вам надо в консоле прописать команду.

В данном коде что показан ниже, это команда прописана вот в этой части кода:

commands.add_command("market0", 'Build a market.', spawn_market)


То есть сама команда выглядит так:

/market0


Вы так же можете поменять команду, для вашего удобства
⠀Продажа и Покупка
Так же не забывайте что поменяв предметы местами вы можете как покупать предметы, например за Монеты "coin", но так же и продавать.


Однако вы можете использовать и другие предметы, реализовав систему бартера.



Так же вы можете использовать несколько предметов, тем самым продавать или покупать предметы, айтемы, с помощью нескольких предметов.

⠀⠀Код для создания Маркета
--Название маркета: market0 function spawn_market(cmd) local surface = game.player.surface local player = game.player local market_location = {x = player.position.x, y = player.position.y} market_location.y = market_location.y - 3 --спавнит впереди игрока на 3 клетки local force = player.force local market = surface.create_entity{name="market", position=market_location, force=force} -- название объекта должно быть строкой -- Добавление товаров в маркет market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} -- замените на реальные предметы market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} market.add_market_item{price={{"coin", 111111}}, offer={type="give-item", item="Предмет", count=1}} end commands.add_command("market0", 'Build a market.', spawn_market)
⠀Таблица цен
Так же для удобства, я заранее создал целую таблицу что бы правильно прописать соотношения цен.
Сами цены были подобраны так, что бы соответствовать соотношению предметов друг к другу.
Таким образом номинал предмета, сопоставляется с другим предметом, в соотношении:
Покупка: 100%(предмет_продажи) = 100%(исходный_предмет) +5% (налог_на_покупку)
Продажа: 100%(предмет_продажи) = 100%(исходный_предмет) -10% (налог_на_прожаду)

Все эти показатели выставлялись через специальную программу которая была создана в процессе создания материала. Затем перенесена в таблицу "Microsoft Excel", для удобства.

Более детально про ценообразование, и как все это делалось, можно посмотреть в видео:
Телеграм группа: t.me/FCTostin
1 Comments
CJIABA 5 Aug, 2024 @ 11:49am 
Спасибо за такое руководства :selike: