mtsr version

This commit is contained in:
Aleksandr Avdeev 2024-10-24 17:00:53 +03:00
parent d053a2c467
commit d63f61b5d1
48 changed files with 5133 additions and 119 deletions

View File

@ -0,0 +1,142 @@
# textdomain: hyperloop
### booking.lua ###
Station data is corrupted. Please rebuild the station!=Данные станции повреждены. Пожалуйста, постройте станцию заново!
Station is still blocked. Please try again in a few seconds!=Станция ещё заблокирована. Пожалуйста, попробуйте через несколько секунд!
### booking_node.lua ###
Please enter the station name to@nwhich this booking machine belongs.=Пожалуйста, введите название станции к@nкоторой относится эта билетная касса.
Station name=Название станции
Additional station information=Дополнительная информация о станции
Station has already a booking machine!=У станции уже есть билетная касса!
Invalid station name!=Недопустимое имя станции!
Hyperloop Booking Machine=Билетная касса Гиперпетли
### booking_node.lua ###
### elevator.lua ###
Select your destination=Выберите пункт назначения
### booking_node.lua ###
### migrate.lua ###
<unknown>=<неизвестное>
### deco.lua ###
Hyperloop Promo Poster =Промо-плакат Гиперпетли
Hyperloop Station Sign=Вывеска станции Гиперпетли
Hyperloop Station Sign Right=Вывеска - вправо станция Гиперпетли
Hyperloop Station Sign Left=Вывеска - влево станция Гиперпетли
### door.lua ###
The Booking Machine for this station is missing!=У этой станции отсутствует билетная касса!
Hyperloop Door Top=Верх двери Гиперпетли
Hyperloop Door Bottom=Низ двери Гиперпетли
### elevator.lua ###
Hyperloop Elevator Shaft=Шахта лифта Гиперпетли
Destination=Назначение
Floor=Этаж
(current position)=(текущее положение)
Hyperloop Elevator=Лифт Гиперпетли
Please insert floor name=Пожалуйста, введите название этажа
Floor name=Название этажа
Base=База
### elevator.lua ###
### wifi.lua ###
Save=Сохранить
### junction.lua ###
Station connected with =Станция соединена с
Junction connected with =Развязка соединена с
Hyperloop Junction Block=Блок - развязка Гиперпетли
Hyperloop Pillar=Колонна Гиперпетли
### junction.lua ###
### migrate.lua ###
Junction=Развязка
### lcd.lua ###
Hyperloop Display=Дисплей Гиперпетли
### map.lua ###
Dist.=Расстояние
Station/Junction=Станция/Развязка
Position=Положение
Owner=Владелец
Conn. with=Соедин. с
Close=Закрыт
Hyperloop Station Book=Реестр станций Гиперпетли
### migrate.lua ###
Hyperloop Legacy Tube=Трубка наследования Гиперпетли
unknown=неизвестно
### recipes.lua ###
### station.lua ###
Hypersteel Ingot=Слиток гиперстали
### seat.lua ###
[Hyperloop] No booking entered!=[Hyperloop] Не введен билет!
Hyperloop Pod Seat=Сиденье кабины Гиперпетли
### station.lua ###
Station completed. Now place the Booking Machine!=Станция готова! Теперь разместите билетную кассу!
Area is protected!=Территория защищена!
Not enough space to build the station!=Недостаточно места для строительства станции!
Hyperloop Station Pod Builder=Возводитель кабины станции Гиперпетли
Hyperloop Pod Shell=Ячейка кабины Гиперпетли
Blue Wool=Голубая шерсть
Glass=Стекло
Not enough inventory items to build the station!=Недостаточно предметов в инвентаре для строительства станции!
Destroy Station=Разобрать станцию
Build Station=Построить станцию
Hyperloop Station Block=Блок станции Гиперпетли
Station=Станция
### tube.lua ###
Junction at =Развязка у
Station '=Станция '
Station at =Станция у
Open end at =Открытый конец у
There is no station/junction on this level. =На этом уровне нет станции/развязки.
Do you really want to start a new network?!=Вы действительно хотите начать новую сеть?!
Hyperloop Tube=Труба Гиперпетли
### tubecrowbar.lua ###
[Hyperloop] Error: Tube is too long!=[Hyperloop] Ошибка: Труба слишком длинная!
[Crowbar Help]@n=[Помощь ломика]@n
left: remove node@n= влево: удалить ноду@n
right: repair tube/shaft line@n= вправо: починить трубу/линию шахты@n
You don't have the necessary privs!=У вас нет нужных привилегий!
Hyperloop Tube Crowbar=Ломик трубы Гиперпетли
Rights to remove tube nodes by means of the crowbar=Права на удаление нод трубы посредством ломика
Repair via WorldEdit placed Hyperloop tubes by reusing WorldEdit pos1/pos2=Почините с помощью WorldEdit трубы Гиперпетли, используя повторно pos1/pos2
### waypoint.lua ###
Hyperloop Waypoint=Дорожная метка Гиперпетли
### wifi.lua ###
Enter channel string=Введите строку канала
Hyperloop WiFi Tube=WiFi-труба Гиперпетли

View File

@ -0,0 +1,61 @@
# textdomain: minecart
Station name=Название станции
Waiting time/sec=Время ожидания, сек.
connected to=соединена с
Not connected!=Нет соединения!
Minecart Railway Buffer=Железнодорожный буфер вагонетки
Summary=Резюме
1. Place your rails and build a route with two endpoints. Junctions are allowed as long as each route has its own start and endpoint.=1. Размещайте рельсы и постройте маршрут с двумя концами. Развязки допускаются, если у каждого маршрута есть свой начальный и конечный пункты.
2. Place a Railway Buffer at both endpoints (buffers are always needed, they store the route and timing information).=1. Разместите Железнодорожный буфер вагонетки на каждом конце маршрута (буферы нужны всегда, в них хранится информация о маршруте и времени).
3. Give both Railway Buffers unique station names, like Oxford and Cambridge.=Дайте каждому буферу уникальное название станции, например Оксфорд и Кембридж.
4. Place a Minecart at a buffer and give it a cart number (1..999)=Поместите вагонетку возле буфера и присвойте ей номер (1...999)
5. Drive from buffer to buffer in both directions using the Minecart(!) to record the routes (use 'right-left' keys to control the Minecart).=Проедьте от буфера до буфера в обе стороны на Вагонетке(!), чтобы записать маршрут (используйте клавиши влево-вправо для управления вагонеткой).
6. Punch the buffers to check the connection data (e.g. 'Oxford: connected to Cambridge').=Ударьте буферы, чтобы проверить сведения о соединении (например 'Оксфорд: соединен с Кембриджем').
7. Optional: Configure the Minecart waiting time in both buffers. The Minecart will then start automatically after the configured time.=Опционально: Настойте вагонетке время ожидания на каждом буфере. Вагонетка отъедет автоматически по прошествии указанного времени.
8. Optional: Protect your rail network with the Protection Landmarks (one Landmark at least every 16 nodes/meters).=Опционально: Защитите свою железную дорогу Защитными Вешками (минимум одна вешка на каждый 16 нод/метров).
9. Place a Minecart in front of the buffer and check whether it starts after the configured time.=Поставьте вагонетку перед буфером и проверьте как она стартует про прошествии установленного времени.
10. Check the cart state via the chat command: /mycart <num>@n '<num>' is the cart number=Проверяйте состояние вагонетки командой чата: /mycart <num>@n '<num>' - это номер вагонетки.
11. Drop items into the Minecart and punch the cart to start it.=Кладите предметы в вагонетку и ударьте её, чтобы поехала.
12. Dig the cart with 'sneak+click' (as usual). The items will be drop down.=Выкапывайте из вагонетки Красться+клик (как обычно). Предметы выпадут.
13. To retrieve lost carts, use the chat command: /stopcart <num>=Чтобы вернуть потерянные вагонетки, используйте команду чата: /stopcart <num>
Primary used to transport items. You can drop items into the Minecart and punch the cart to get started. Sneak+click the cart to get cart and items back=Первоначально используется для перевозки предметов. Предметы можно бросать в вагонетку и ударять её чтобы поехала. Красться+клик на вагонетку, чтобы взять её и предметы.
Used as buffer on both rail ends. Needed to be able to record the cart routes=Используется как буфер на обоих концах рельсов. Необходимо для записи маршрутов вагонетки.
Protect your rails with the Landmarks (one Landmark at least every 16 blocks near the rail)=Защитите свои рельсы Вешками (минимум 1 вешка на 16 блоков возле рельс)
Used to load/unload Minecart. The Hopper can push/pull items to/from chests and drop/pickup items to/from Minecarts. To unload a Minecart place the hopper below the rail. To load the Minecart, place the hopper right next to the Minecart.=Используется для загрузки/разгрузки вагонетки. Хоппер может толкать/тянуть предметы из сундуков/в сундуки и ронять/подбирать предметы в вагонетку/из вагонетки. Чтобы разгрузить вагонетку, поместите хоппер ниже рельс. Чтобы загрузить вагонетку, разместите хоппер рядом с вагонеткой.
Minecart=Вагонетка
Minecart, the lean railway transportation automation system=Вагонетка, опорная система железнодорожного транспорта
Minecart Cart=Вагонетка
Minecart Speed Signs=Указатели скорости вагонетки
If several carts are running on one route,@nit can happen that a buffer position is already occupied and one cart therefore stops earlier.@nIn this case, the cart pusher is used to push the cart towards the buffer again.@nThis block must be placed under the rail at a distance of 2 m in front of the buffer.=Если на маршруте несколько вагонеток,@nто место возле буфера может быть занято и тогда одна из вагонеток остановится раньше.@nДля этого случая Толкатель нужен чтобы подтолкнуть вагонетку в сторону буфера.@nЭтот блок должен быть размещён под рельсами на расстоянии 2 м спереди от буфера.
Limit the cart speed with speed limit signs.@n@nAs before, the speed of the carts is also influenced by power rails.@nBrake rails are irrelevant, the cart does not brake here.@nThe maximum speed is 8 m/s. This assumes a ratio of power rails@nto normal rails of 1 to 4 on a flat section of rail. A rail section is a@nseries of rail nodes without a change of direction. After every curve / kink,@nthe speed for the next section of the route is newly determined,@ntaking into account the swing of the cart. This means that a cart can@nroll over short rail sections without power rails.@n@nIn order to additionally brake the cart at certain points@n(at switches or in front of a buffer), speed limit signs can be placed@non the track. With these signs the speed can be reduced to 4, 2, or 1 m / s.@nThe "No speed limit" sign can be used to remove the speed limit.@n@nThe speed limit signs must be placed next to the track so that they can@nbe read from the cart. This allows different speeds in each direction of travel.=Ограничьте скорость вагонетки ограничительными указателями.@n@nКак и раньше, на скорость вагонетки также влияет мощьность рельс.@nТормозящие рельсы не принимаются во внимание, здесь вагонетка не затормозит.@nМаксимальная скорость 8 м/с. Здесь устанавливается коэффициент мощности рельс@nк нормальным рельсам от 1 до 4 на плоской части пути. Секция пути - это последовательность нод-рельсов без изменения направления. После каждого изгиба,@nскорость для следующей секции пути выставляется заново,@nс учётом раскачки вагонетки. Это значит, что вагонетка может@прокатиться недолгую секцию пути без силовых рельс.@n@nЧтобы дополнительно притормозить вагонетку на отдельных точках@n(на переключателях или перед буфером), можно ставить указатели ограничения скорости@nна пути. Знаками можно снизить скорость до 4, 2 или 1 м/с.@nУказатель "Без ограничения скорости" можно использовать, чтобы снять ограничения.@n@nУказатели ограничения скорости должны быть размещены рядом с путями так, чтобы их было@nвидно с вагонетки. Так достигается разная скорость на каждом направлении путешествия.
Minecart Hopper=Хоппер
Minecart (Sneak+Click to pick up)=Вагонетка (Красться+клик чтобы взять)
Output cart state and position, or a list of carts, if no cart number is given.=Выдается состояние и положение вагонетки, или список вагонеток, если номер на задан.
List of carts=Список вагонеток
Stop and return/drop a missing/running cart.=Остановить и вернуть/бросить потерянную/движущуюся вагонетку.
Cart=Вагонетка
dropped=сброшено
is not existing!=не существует"
Enter cart number=Введите номер вагонетки
Save=Сохранить
[minecart] Area is protected!=[minecart] Территория защищена!
Allow to dig/place rails in Minecart Landmark areas=Позволяет выкапывать/размещать рельсы в зоне действия Железнодорожных Вешек.
Minecart Landmark=Железнодорожная Вешка
Cart Pusher=Толкатель
left=лево
right=право
straight=прямо
Recording=Запись
speed=скорость
next junction=следующая развязка
Travel time=Время в пути
[minecart] Recording canceled!=[minecart] Запись прервана"
[minecart] Route stored!=[minecart] Маршрут сохранён!
[minecart] Speed @= %u m/s, Time @= %u s, Route length @= %u m=[minecart] Скорость @= %u м/с, время @= %u с, длина маршрута @= %u м=
[minecart] Your route is too short to record!=[minecart] Ваш маршрут слишком короткий для записи!
Speed "1"=Скорость "1"
Speed "2"=Скорость "2"
Speed "4"=Скорость "4"
No speed limit=Без ограничения скорости
Cart List=Список вагонеток
Cart Terminal=Вокзал

View File

@ -14,7 +14,7 @@
local MP = minetest.get_modpath("minecart") local MP = minetest.get_modpath("minecart")
if not minetest.get_modpath("techage") and --[[if not minetest.get_modpath("techage") and
minetest.get_modpath("doclib") then minetest.get_modpath("doclib") then
minetest.register_node("minecart:manual", { minetest.register_node("minecart:manual", {
@ -119,7 +119,7 @@ if not minetest.get_modpath("techage") and
output = "minecart:manual", output = "minecart:manual",
recipe = {"minecart:handbuch"}, recipe = {"minecart:handbuch"},
}) })
end end]]--
minetest.register_on_mods_loaded(function() minetest.register_on_mods_loaded(function()
if minetest.get_modpath("techage") then if minetest.get_modpath("techage") then
@ -129,6 +129,8 @@ minetest.register_on_mods_loaded(function()
doclib.add_to_manual("techage", "EN", content) doclib.add_to_manual("techage", "EN", content)
local content = dofile(MP.."/manual_DE.lua") local content = dofile(MP.."/manual_DE.lua")
doclib.add_to_manual("techage", "DE", content) doclib.add_to_manual("techage", "DE", content)
local content = dofile(MP.."/manual_RU.lua")
doclib.add_to_manual("techage", "RU", content)
elseif minetest.get_modpath("doclib") then elseif minetest.get_modpath("doclib") then
@ -145,5 +147,9 @@ minetest.register_on_mods_loaded(function()
local content = dofile(MP.."/manual_DE.lua") local content = dofile(MP.."/manual_DE.lua")
doclib.add_to_manual("minecart", "DE", content) doclib.add_to_manual("minecart", "DE", content)
doclib.create_manual("minecart", "RU", settings)
local content = dofile(MP.."/manual_RU.lua")
doclib.add_to_manual("minecart", "RU", content)
end end
end) end)

118
minecart/manual_RU.lua Normal file
View File

@ -0,0 +1,118 @@
return {
titles = {
"1,Шахтная тележка",
"2,Краткое руководство по эксплуатации",
"2,Блоки Minecart",
"3,Тележка",
"3,Буфер",
"3,Ориентир",
"3,Бункер",
"3,Толкатель тележек",
"3,Знаки ограничения скорости",
"2,Команды чата",
"2,Онлайн-руководство",
},
texts = {
"Мод Minecart имеет свои собственные тележки (называемые Minecart) в дополнение к стандартным тележкам.\n"..
"Minecart используются для автоматизированной транспортировки предметов по частным и общественным железнодорожным сетям.\n"..
"Основные возможности:\n"..
"\n"..
" - Перевозка предметов от станции к станции\n"..
" - Тележки могут проезжать через незагруженные участки (только обе станции должны быть загружены)\n"..
" - Автоматизированная погрузка/разгрузка вагонов Minecarts с помощью бункера Minecart Hopper\n"..
" - Рельсы могут быть защищены с помощью ориентиров\n"..
"\n"..
"Если доступен мод Techage\\, то:\n"..
"\n"..
" - Доступны две дополнительные тележки для перевозки предметов и жидкостей\n"..
" - Тележки можно загружать/разгружать с помощью толкателей и насосов Techage\n"..
"\n"..
"Вы можете:\n"..
"\n"..
" - Войти в тележку\\, щелкнув правой кнопкой мыши\n"..
" - Покинуть тележку с помощью прыжка или щелчка правой кнопкой мыши\n"..
" - Толкать/запускать тележку левым щелчком мыши.\n"..
"\n"..
"Но тележки имеют своего владельца\\, и вы не можете запускать\\, останавливать или удалять чужие тележки.\n"..
"Тележки можно запускать только в буфере. Если тележка остановится по дороге\\, удалите ее и поставьте на место в буфере.\n"..
"\n"..
"\n"..
"\n",
" - Разместите рельсы и постройте маршрут с двумя конечными точками.\nПересечения разрешены\\, если у каждого маршрута есть своя начальная и конечная точка.\n"..
" - Разместите железнодорожный буфер в обеих конечных точках (буферы всегда нужны\\,\nв них хранится информация о маршруте и времени).\n"..
" - Дайте обоим железнодорожным буферам уникальные названия станций\\, например Оксфорд и Кембридж.\n"..
" - Поместите тележку в буфер и присвойте ей номер (1..999).\n"..
" - Проедьте от буфера к буферу в обоих направлениях\\, используя Minecart(!)\\, чтобы\nзаписать маршруты (используйте клавиши \"вправо-влево\" для управления Minecart).\n"..
" - Пробейте буферы\\, чтобы проверить данные о соединениях.\n(например\\, \"Оксфорд: соединен с Кембриджем\").\n"..
" - Дополнительно: Настройте время ожидания Minecart в обоих буферах.\nMinecart будет автоматически запускаться по истечении заданного времени.\n"..
" - Поместите тележку перед буфером и проверьте\\, запускается ли она\nпо истечении заданного времени.\n"..
" - Бросьте предметы в тележку и ударьте по ней\\, чтобы запустить ее.\n"..
" - Откопайте тележку с помощью 'sneak+click' (как обычно). Предметы будут падать вниз.\n"..
"\n"..
"\n"..
"\n",
"\n"..
"\n",
"Используется для транспортировки предметов. Вы можете положить предметы в тележку и ударить по ней\\, чтобы начать движение. \n"..
"Нажмите на тележку\\, чтобы вернуть тележку и предметы обратно.\n"..
"\n"..
"\n"..
"\n",
"Используется в качестве буфера на обоих концах рельс. Необходим для записи маршрутов тележек.\n"..
"\n"..
"\n"..
"\n",
"Защитите свои рельсы с помощью ориентиров (по одному ориентиру не реже\\, чем через каждые 16 блоков рядом с рельсами.\n"..
"\n"..
"\n"..
"\n",
"Используется для загрузки/разгрузки тележки. Бункер может толкать/тянуть предметы в/из сундуков\n"..
"и сбрасывать/поднимать предметы в/из тележки. Чтобы разгрузить тележку\\, поместите бункер \n"..
"под рельсы. Чтобы загрузить тележку\\, поместите бункер прямо рядом с тележкой.\n"..
"\n"..
"\n"..
"\n",
"Если несколько тележек движутся по одному маршруту\\, может случиться так\\, что буферная позиция уже занята\\, и поэтому одна тележка останавливается раньше.\n"..
"В этом случае толкатель тележки используется для того\\, чтобы снова подтолкнуть тележку к буферу.\n"..
"Этот блок должен быть размещен под рельсом на расстоянии 2 м перед буфером.\n"..
"\n"..
"\n"..
"\n",
"Ограничьте скорость тележки с помощью знаков ограничения скорости.\n"..
"\n"..
"\n"..
"\n",
" - Команда '/mycart <num>' для вывода состояния и местоположения тележки\n"..
" - Команда '/stopcart <num>' для возврата потерянных тележек\n"..
"\n",
"Полное руководство доступно онлайн.\n"..
"Смотрите: https://github.com/joe7575/minecart/wiki\n"..
"\n",
},
images = {
"minecart_manual_image.png",
"minecart_manual_image.png",
"minecart:cart",
"minecart:cart",
"minecart:buffer",
"minecart:landmark",
"minecart:hopper",
"minecart:cart_pusher",
"minecart:speed2",
"",
"",
},
plans = {
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
}
}

112
minecart/manual_RU.md Normal file
View File

@ -0,0 +1,112 @@
# Шахтная тележка
Мод Minecart имеет свои собственные тележки (называемые Minecart) в дополнение к стандартным тележкам.
Minecart используются для автоматизированной транспортировки предметов по частным и общественным железнодорожным сетям.
Основные возможности:
- Перевозка предметов от станции к станции
- Тележки могут проезжать через незагруженные участки (только обе станции должны быть загружены)
- Автоматизированная погрузка/разгрузка вагонов Minecarts с помощью бункера Minecart Hopper
- Рельсы могут быть защищены с помощью ориентиров
Если доступен мод Techage, то:
- Доступны две дополнительные тележки для перевозки предметов и жидкостей
- Тележки можно загружать/разгружать с помощью толкателей и насосов Techage
Вы можете:
- Войти в тележку, щелкнув правой кнопкой мыши
- Покинуть тележку с помощью прыжка или щелчка правой кнопкой мыши
- Толкать/запускать тележку левым щелчком мыши.
Но тележки имеют своего владельца, и вы не можете запускать, останавливать или удалять чужие тележки.
Тележки можно запускать только в буфере. Если тележка остановится по дороге, удалите ее и поставьте на место в буфере.
[minecart_manual_image.png|image]
## Краткое руководство по эксплуатации
1. Разместите рельсы и постройте маршрут с двумя конечными точками.
Пересечения разрешены, если у каждого маршрута есть своя начальная и конечная точка.
2. Разместите железнодорожный буфер в обеих конечных точках (буферы всегда нужны,
в них хранится информация о маршруте и времени).
3. Дайте обоим железнодорожным буферам уникальные названия станций, например Оксфорд и Кембридж.
4. Поместите минитележку в буфер и присвойте ей номер (1..999).
5. Проедьте от буфера к буферу в обоих направлениях, используя Minecart(!), чтобы
записать маршруты (используйте клавиши "вправо-влево" для управления Minecart).
6. Пробейте буферы, чтобы проверить данные о соединениях.
(например, "Оксфорд: соединен с Кембриджем").
7. Дополнительно: Настройте время ожидания Minecart в обоих буферах.
Minecart будет автоматически запускаться по истечении заданного времени.
9. Поместите минитележку перед буфером и проверьте, запускается ли она
по истечении заданного времени.
10. Бросьте предметы в мини-тележку и ударьте по ней, чтобы запустить ее.
11. Откопайте тележку с помощью 'sneak+click' (как обычно). Предметы будут падать вниз.
[minecart_manual_image.png|image]
## Блоки Minecart
[minecart:cart|image]
### Тележка
Используется для транспортировки предметов. Вы можете положить предметы в минитележку и ударить по ней, чтобы начать движение.
Нажмите на тележку, чтобы вернуть тележку и предметы обратно.
[minecart:cart|image]
### Буфер
Используется в качестве буфера на обоих концах рельс. Необходим для записи маршрутов тележек.
[minecart:buffer|image]
### Ориентир
Защитите свои рельсы с помощью ориентиров (по одному ориентиру не реже, чем через каждые 16 блоков рядом с рельсами.
[minecart:landmark|image]
### Бункер
Используется для загрузки/разгрузки минитележки. Бункер может толкать/тянуть предметы в/из сундуков
и сбрасывать/поднимать предметы в/из минитележки. Чтобы разгрузить минитележку, поместите бункер
под рельсы. Чтобы загрузить минитележку, поместите бункер прямо рядом с минитележкой.
[minecart:hopper|image]
### Толкатель тележек
Если несколько тележек движутся по одному маршруту, может случиться так, что буферная позиция уже занята, и поэтому одна тележка останавливается раньше.
В этом случае толкатель тележки используется для того, чтобы снова подтолкнуть тележку к буферу.
Этот блок должен быть размещен под рельсом на расстоянии 2 м перед буфером.
[minecart:cart_pusher|image]
### Знаки ограничения скорости
Ограничьте скорость тележки с помощью знаков ограничения скорости.
[minecart:speed2|image]
## Команды чата
- Команда `/mycart <num>` для вывода состояния и местоположения тележки
- Команда `/stopcart <num>` для возврата потерянных тележек
## Онлайн-руководство
Полное руководство доступно онлайн.
Смотрите: https://github.com/joe7575/minecart/wiki

View File

@ -199,3 +199,7 @@ m2l.gen_lua_file("./manual_EN.lua")
m2l = MarkdownToLua() m2l = MarkdownToLua()
m2l.parse_md_file("./manual_DE.md") m2l.parse_md_file("./manual_DE.md")
m2l.gen_lua_file("./manual_DE.lua") m2l.gen_lua_file("./manual_DE.lua")
m2l = MarkdownToLua()
m2l.parse_md_file("./manual_RU.md")
m2l.gen_lua_file("./manual_RU.lua")

View File

@ -289,6 +289,7 @@ minetest.register_chatcommand("stopcart", {
params = "<cart-num>", params = "<cart-num>",
description = S("Stop and return/drop a missing/running cart."), description = S("Stop and return/drop a missing/running cart."),
func = function(owner, param) func = function(owner, param)
if player~=nil then
local userID = tonumber(param) local userID = tonumber(param)
local player_pos = minetest.get_player_by_name(owner):get_pos() local player_pos = minetest.get_player_by_name(owner):get_pos()
if userID then if userID then
@ -321,6 +322,7 @@ minetest.register_chatcommand("stopcart", {
return false return false
end end
end end
end
}) })
function minecart.cmnd_cart_state(name, userID) function minecart.cmnd_cart_state(name, userID)

View File

@ -21,6 +21,8 @@ if minetest.global_exists("techage") then
doclib.add_to_manual("techage", "EN", content) doclib.add_to_manual("techage", "EN", content)
local content = dofile(MP.."/manual_DE.lua") local content = dofile(MP.."/manual_DE.lua")
doclib.add_to_manual("techage", "DE", content) doclib.add_to_manual("techage", "DE", content)
local content = dofile(MP.."/manual_RU.lua")
doclib.add_to_manual("techage", "RU", content)
elseif minetest.global_exists("doclib") then elseif minetest.global_exists("doclib") then

590
signs_bot/manual_RU.lua Normal file
View File

@ -0,0 +1,590 @@
return {
titles = {
"1,Управляемый бот",
"2,Первые шаги",
"2,Знаки",
"2,Датчики и приводы",
"2,Инструмент подключения датчиков",
"2,Инвентарь",
"2,Узлы / Блоки",
"3,Бокс бота",
"3,Заслонка бота",
"3,Дубликатор знаков",
"3,Датчик ботов",
"3,Датчик узла",
"3,Датчик урожая",
"3,Сундук бота",
"3,Таймер бота",
"3,Блок управления ботом",
"3,Расширитель датчиков",
"3,Сигнал И",
"3,Задержка сигнала",
"3,Знак 'farming'",
"3,Знак 'pattern'",
"3,Знак 'copy3x3x3'",
"3,Знак 'flowers'",
"3,Знак 'aspen'",
"3,Знак 'command'",
"3,Знак \"turn right\"",
"3,Знак \"turn left\"",
"3,Знак \"take item\"",
"3,Знак \"add item\"",
"3,Знак \"stop\"",
"3,Знак \"add to cart\" (minecart)",
"3,Знак \"взять из тележки\" (minecart)",
"3,Знак \"take water\" (xdecor)",
"3,Знак 'cook soup' (xdecor)",
"2,Команды бота",
"3,Techage специальные команды",
"3,Команды управления потоком",
"3,Дополнительные команды перехода",
"3,Управление потоком Примеры",
"4,Пример с функцией в начале:",
"4,Пример с функцией в конце:",
},
texts = {
"Робот\\, управляемый знаками.\n"..
"\n"..
"В сети: https://github.com/joe7575/signs_bot/blob/master/manual_EN.md\n"..
"\n"..
"\n"..
"\n",
"После того как вы разместили бокс с управляемым роботом\\, вы можете запустить бота \n"..
"с помощью кнопки 'On' в меню бокса. Если бот сразу же вернется в свою коробку\\,\n"..
"вам нужно будет сначала зарядить его электрической энергией (techage).\n"..
"Затем бот бежит прямо вперед\\, пока не достигнет препятствия\n"..
"(ступенька с двумя или более блоками вверх или вниз или знак).\n"..
"\n"..
"Управлять ботом можно только с помощью знаков\\, которые расположены на его пути.\n"..
"\n"..
"Если бот первым достигнет знака\\, он выполнит команды\\, указанные на нем.\n"..
"Если первой командой на знаке будет\\, например\\, 'turn_around'\\, бот повернет и пойдет обратно.\n"..
"В этом случае бот снова дойдет до своего ящика и выключится.\n"..
"\n"..
"Если бот первым достигнет препятствия\\, он остановится или\\, если есть возможность\\, \n"..
"выполнит следующие команды\\, начиная с последнего знака.\n"..
"\n"..
"У бота есть инвентарь с 6 стеками для знаков и 8 стеками для других предметов \n"..
"(которые размещаются/добываются ботом). Этот инвентарь имитирует внутренний инвентарь. \n"..
"Это означает\\, что вы будете иметь доступ к инвентарю только в том случае\\, \n"..
"если бот выключен (\"сидит\" в своем боксе).\n"..
"\n"..
"Также есть следующие блоки:\n"..
"\n"..
" - Датчики: Они могут посылать сигнал на исполнительный механизм\\, если подключены к нему.\n"..
" - Актуаторы: Они выполняют действие\\, когда получают сигнал от датчика.\n"..
"\n"..
"\n"..
"\n",
"Вы управляете направлением движения бота с помощью знаков \"turn left\" и\n"..
"\"turn right\" (знаки со стрелкой). Бот может преодолевать ступеньки\n"..
"(один блок вверх/вниз). Но есть и команды\\, позволяющие перемещать бота вверх и вниз.\n"..
"\n"..
"Не обязательно отмечать путь обратно к коробке. С помощью команды 'turn_off'\n"..
"бот выключится и вернется в свой бокс из любого положения. То же самое касается\n"..
"если вы выключите бота через меню бокса. Если бот достигнет знака в неправильном\n"..
"направлении (сзади или сбоку)\\, то знак будет проигнорирован.\n"..
"Бот просто перешагнет через знак.\n"..
"\n"..
"Все предопределенные знаки имеют меню со списком команд бота. Эти знаки \n"..
"не могут быть изменены\\, но вы можете создавать и программировать свои собственные знаки. \n"..
"Для этого нужно использовать знак \"command\". В этом знаке есть поле для редактирования команд \n"..
"и страница помощи со всеми доступными командами. На странице помощи есть кнопка копирования \n"..
"чтобы упростить программирование.\n"..
"\n"..
"Также для ваших собственных знаков важно знать: После выполнения последней\n"..
"команды знака\\, бот возвращается к своему поведению по умолчанию и бежит в\n"..
"выбранном направлении.\n"..
"\n"..
"Стандартным заданием для бота является перемещение предметов из одного сундука в другой сундук\n"..
"(или узел с сундуком\\, похожим на инвентарь). Это можно сделать с помощью двух знаков\n"..
"'взять предмет' и 'добавить предмет'. Эти знаки должны быть размещены над узлами сундуков.\n"..
"\n"..
"\n"..
"\n",
"В дополнение к знакам бот может управляться с помощью датчиков. \n"..
"Датчики\\, такие как датчик бота\\, имеют два состояния: включено и выключено. \n"..
"Если датчик бота обнаруживает бота он переключится в состояние \"включено\" \n"..
"и пошлёт сигнал подключённому блоку\\, называемому исполнительным механизмом.\n"..
"\n"..
"Датчиками являются:\n"..
"\n"..
" - Датчик бота: Посылает сигнал\\, когда мимо проезжает робот.\n"..
" - Датчик узла: Посылает сигнал\\, когда обнаруживает любой (новый) узел.\n"..
" - Датчик урожая: Посылает сигнал\\, когда\\, например\\, пшеница полностью выросла\n"..
" - Сундук бота: Посылает сигнал в зависимости от состояния сундука (пустой\\, полный)\n"..
"\n"..
"Приводы:\n"..
"\n"..
" - Знаки Bot Box: Может выключать и включать бота\n"..
" - Блок управления: Может использоваться для смены знака\\, чтобы управлять ботом.\n"..
"\n"..
"Датчики должны быть соединены (спарены) с исполнительными механизмами. Для этого используется\n"..
"\"Инструмент подключения датчиков\".\n"..
"\n"..
"\n"..
"\n",
"Чтобы отправить сигнал от датчика к приводу\\, датчик должен быть соединен\n"..
"(сопряжен) с исполнительным механизмом. Чтобы соединить датчик и исполнительный механизм\\, \n"..
"необходимо использовать инструмент Sensor Connection Tool. Просто нажмите инструментом на оба блока\\, и \n"..
"датчик будет соединен с исполнительным механизмом. Об успешном подключении сигнализирует звук ping/pong.\n"..
"\n"..
"Прежде чем соединить датчик с приводом\\, убедитесь\\, что привод находится в\n"..
"требуемом состоянии. Например: Если вы хотите запустить бота с помощью датчика\\, подключите\n"..
"датчик с блоком бота\\, когда бот находится в состоянии \"включено\". В противном случае \n"..
"сигнал датчика остановит Бота\\, вместо того чтобы запустить его.\n"..
"\n"..
"\n"..
"\n",
"Следующее относится ко всем командам\\, которые помещают предметы/элементы в инвентарь бота\\, например:\n"..
"\n"..
" - 'take_item <num> <slot>'\n"..
" - 'pickup_items <slot>'\n"..
" - 'trash_sign <slot>'\n"..
" - 'harvest <slot>'\n"..
" - 'dig_front <slot> <lvl>'\n"..
"\n"..
"Если в команде не был указан слот или слот 0 (случай A)\\, то все 8 слотов инвентаря бота\n"..
"проверяются один за другим. Если был указан слот (случай B)\\,\n"..
"проверяется только этот слот. \n"..
"В обоих случаях действует следующее: \n"..
"\n"..
"Если слот предварительно сконфигурирован и соответствует предмету\\, или если слот не сконфигурирован\n"..
"и пуст\\, или только частично заполнен типом добавляемого элемента\\, \n"..
"то элемент(ы) будет(ут) добавлен(ы).\n"..
"Если не все предметы могут быть добавлены\\, то в случае A пробуются оставшиеся слоты. \n"..
"Все\\, что не удалось добавить в инвентарь\\, вернется обратно или будет сброшено.\n"..
"\n"..
"Сказанное ниже относится ко всем командам\\, которые используются для взятия предметов из инвентаря бота\\, например:\n"..
"\n"..
" - 'add_item <num> <slot>'.\n"..
"\n"..
"Не имеет значения\\, настроен слот или нет. Бот берет первый стек\n"..
"который он может найти в своем инвентаре\\, и пытается его использовать. Если указан слот\\,\n"..
"он берет только его\\, если слот не указан\\, он проверяет все слоты по очереди\n"..
"если слот не указан\\, то проверяет все слоты по очереди\\, начиная со слота 1\\, пока не найдет что-нибудь. Если найденное число\n"..
"меньше запрошенного\\, он пытается взять остаток из любого другого слота.\n"..
"\n"..
"\n"..
"\n",
"",
"Бокс - это корпус бота. Разместите бокс и запустите бота с помощью кнопки\n"..
"'On'. Если установлен мод techage\\, боту требуется электричество.\n"..
"Бот выходит из коробки с правой стороны. Он не запустится\\, если эта позиция заблокирована.\n"..
"\n"..
"Чтобы остановить и удалить бота\\, нажмите кнопку \"Off\".\n"..
"Инвентарь коробки имитирует инвентарь бота.\n"..
"Вы не сможете получить доступ к инвентарю\\, если бот запущен.\n"..
"Бот может носить с собой до 8 стаков и 6 знаков.\n"..
"\n"..
"\n"..
"\n",
"Заслонка - это простой блок\\, используемый в качестве двери для бота. Поместите заслонку в любую стену\\,\n"..
"и бот будет автоматически открывать и закрывать заслонку\\, проходя через нее.\n"..
"\n"..
"\n"..
"\n",
"Дубликатор можно использовать для создания копий знаков:\n"..
"\n"..
" - Положите один знак 'cmnd'\\, который будет использоваться в качестве шаблона\\, в инвентарь 'Template'.\n"..
" - Добавьте один или несколько 'blank signs' в инвентарь 'In'.\n"..
" - Возьмите копии из инвентаря 'Output'.\n"..
"\n"..
"В качестве шаблона можно также использовать написанные книги \\[default:book_written\\].\n"..
"Уже написанные знаки тоже можно использовать в качестве входных.\n"..
"\n"..
"\n"..
"\n",
"Датчик ботов обнаруживает любого бота и посылает сигнал\\, если бот находится поблизости.\n"..
"Радиус действия датчика - один узел/метр\". Направление датчика не имеет значения.\n"..
"\n"..
"\n"..
"\n",
"Датчик узлов посылает циклические сигналы\\, когда обнаруживает\\, что узлы появились\n"..
"или исчезновения\\, но должен быть настроен соответствующим образом. Действительными узлами являются все виды\n"..
"блоки и растения. Радиус действия датчика - 3 узла/метра в одном направлении.\n"..
"У датчика есть активная сторона (красная)\\, которая должна указывать на наблюдаемую область.\n"..
"\n"..
"\n"..
"\n",
"Датчик сельскохозяйственных культур посылает циклические сигналы\\, когда\\, например\\, пшеница полностью выросла.\n"..
"Радиус действия датчика составляет один узел/метр. Датчик имеет активную сторону (красную)\\, которая\n"..
"должна быть направлена на культуру/поле.\n"..
"\n"..
"\n"..
"\n",
"Сундук бота - это специальный сундук с функцией датчика. Он посылает сигнал\n"..
"в зависимости от состояния сундука. Возможные состояния: 'empty'\\, 'not empty'\\, 'almost full'\n"..
"\n"..
"Типичный вариант использования - выключить бота\\, когда сундук почти полон или пуст.\n"..
"\n"..
"\n"..
"\n",
"Это особый вид датчиков. Может быть запрограммирован на время в секундах\\,\n"..
"например\\, для циклического запуска бота.\n"..
"\n"..
"\n"..
"\n",
"Блок управления ботом используется для управления ботом с помощью знаков. Блок может быть\n"..
"загружено до 4 различных знаков и может быть запрограммировано с помощью датчиков.\n"..
"\n"..
"Чтобы загрузить блок\\, поместите знак на красную сторону блока и нажмите на блок.\n"..
"Знак исчезает / перемещается в инвентарь блока.\n"..
"Эту операцию можно повторить 3 раза.\n"..
"\n"..
"Используйте инструмент подключения\\, чтобы соединить до 4 датчиков с блоком управления ботом.\n"..
"\n"..
"\n"..
"\n",
"С помощью расширителя датчиков сигналы датчиков можно передавать на несколько исполнительных механизмов.\n"..
"Поместите один или несколько удлинителей рядом с датчиком и соедините каждый удлинитель с одним\n"..
"одним исполнительным механизмом с помощью инструмента подключения.\n"..
"\n"..
"\n"..
"\n",
"Сигнал посылается\\, если получены все входные сигналы.\n"..
"\n"..
"\n"..
"\n",
"Сигналы пересылаются с задержкой. Последующие сигналы ставятся в очередь. \n"..
"Время задержки может быть настроено.\n"..
"\n"..
"\n"..
"\n",
"Используется для сбора урожая и засева поля 3x3. Поместите знак перед полем.\n"..
"Используемое семя должно находиться в первом слоте инвентаря бота.\n"..
"Когда бот закончит\\, он повернется и пойдет обратно.\n"..
"\n"..
"\n"..
"\n",
"Используется для создания копии куба 3x3x3. Поместите знак перед деталью\n"..
"который нужно скопировать. Используйте знак копирования\\, чтобы сделать копию этой детали на другом\n"..
"месте. Бот должен сначала добраться до знака детали\\, а затем до знака копии.\n"..
"\n"..
"Используется для создания копии куба 3x3x3. Поместите щит перед блоками\n"..
"которые нужно скопировать. Используйте знак копирования\\, чтобы сделать копию этих блоков в другом\n"..
"месте. Сначала бот должен обработать знак \"pattern\"\\, только после этого он может\n"..
"направить его к знаку копирования.\n"..
"\n"..
"\n"..
"\n",
"Используется для создания копии куба 3x3x3. Поместите знак перед тем местом\\, где вы хотите\n"..
"чтобы была сделана копия. См. также знак \"шаблон\".\n"..
"\n"..
"\n"..
"\n",
"Используется для срезания цветов на поле 3x3. Поместите знак перед полем.\n"..
"По окончании бот поворачивается.\n"..
"\n"..
"\n"..
"\n",
"Используется для заготовки ствола осины или сосны.\n"..
"\n"..
" - Поместите знак перед деревом.\n"..
" - Поставьте сундук справа от знака.\n"..
" - Положите в сундук стопку грязи (минимум 10 предметов).\n"..
" - Предварительно настройте слот 1 инвентаря бота на грязь\n"..
" - Заранее настройте слот 2 инвентаря бота с саженцами\n"..
"\n"..
"\n"..
"\n",
"Знак 'command' может быть запрограммирован игроком. Поместите знак перед собой\n"..
"перед собой и используйте меню узла\\, чтобы запрограммировать последовательность команд бота.\n"..
"В меню есть поле для редактирования команд и страница помощи со всеми\n"..
"доступными командами. На странице помощи есть кнопка копирования\\, чтобы упростить программирование.\n"..
"\n"..
"\n"..
"\n",
"Бот поворачивает направо\\, когда обнаруживает перед собой этот знак.\n"..
"\n"..
"\n"..
"\n",
"Бот поворачивает налево\\, когда обнаруживает этот знак перед собой.\n"..
"\n"..
"\n"..
"\n",
"Бот берет предметы из сундука перед собой\\, а затем поворачивается.\n"..
"Этот знак должен быть помещен на верхнюю часть сундука.\n"..
"\n"..
"\n"..
"\n",
"Бот кладет предметы в стоящий перед ним сундук\\, а затем разворачивается.\n"..
"Этот знак должен быть размещен поверх сундука.\n"..
"\n"..
"\n"..
"\n",
"Бот будет останавливаться перед этим знаком до тех пор\\, пока знак не будет убран или\n"..
"пока бот не будет выключен.\n"..
"\n"..
"\n"..
"\n",
"Бот кладет товары в стоящую перед ним мини-тележку\\, толкает тележку\\, а затем разворачивается\n"..
"разворачивается. Этот знак должен быть размещен на рельсе в конечном положении тележки.\n"..
"\n"..
"\n"..
"\n",
"Бот берет предметы из стоящей перед ним мини-тележки\\, толкает тележку и затем\n"..
"поворачивается. Этот знак должен быть размещен на рельсе в конечном положении тележки.\n"..
"\n"..
"\n"..
"\n",
"Используется для набирания воды в ведро. Поместите знак на берегу\\, перед бассейном с неподвижной водой. \n"..
"\n"..
"Предметы в слотах:\n"..
"\n"..
" 1 - пустое ведро\n"..
"\n"..
"В результате в выбранном слоте инвентаря появится одно ведро с водой. По окончании\\,\n"..
"бот поворачивается.\n"..
"\n"..
"\n"..
"\n",
"Используется для приготовления овощного супа в котелке. Котелок должен быть пустым и находиться\n"..
"над легковоспламеняющимися материалами. Поместите знак перед казаном с одним полем\n"..
"чтобы предотвратить возгорание деревянной вывески.\n"..
"\n"..
"Предметы в слотах:\n"..
"\n"..
" 1 - ведро с водой\"\n"..
" 2 - овощ № 1 (например\\, помидор)\n"..
" 3 - овощ № 2 (например\\, морковь)\n"..
" 4 - пустая миска (из модов farming или xdecor).\n"..
"\n"..
" В результате в выбранном слоте инвентаря окажется одна миска с овощным супом.\n"..
"Закончив\\, бот разворачивается.\n"..
"\n"..
"\n"..
"\n",
"Все команды также описаны в виде помощи в узле \"Команда знака\".\n"..
"Все блоки или знаки\\, которые устанавливаются\\, берутся из инвентаря бота.\n"..
"Все удаленные блоки или знаки будут добавлены обратно в инвентарь бота.\n"..
"'<слот>' - это всегда внутренний стек инвентаря бота (1..8).\n"..
"\n"..
" move <steps> - перейти на один или несколько шагов вперед\n"..
" cond_move - перейти к ближайшему препятствию или знаку\n"..
" turn_left - повернуть налево\n"..
" turn_right - повернуть направо\n"..
" turn_around - повернуться\n"..
" backward - сделать шаг назад\n"..
" turn_off - выключить робота / вернуться в коробку\n"..
" pause <sec> - подождать одну или несколько секунд\n"..
" move_up - двигаться вверх (не более 2 раз)\n"..
" move_down - двигаться вниз\n"..
" fall_down - упасть в яму/пропасть (до 10 блоков)\n"..
" take_item <num> <slot> - взять один или несколько предметов из ящика\n"..
" add_item <num> <slot> - положить один или несколько предметов в ящик\n"..
" add_fuel <num> <slot> - положить топливо в печь\n"..
" place_front <slot> <lvl> - поместить блок перед ботом\n"..
" place_left <slot> <lvl> - поместить блок слева от бота\n"..
" place_right <slot> <lvl> - поместить блок справа от бота\n"..
" place_below <slot> - поднять робота и поместить блок под него\n"..
" place_above <slot> - установить блок над роботом\n"..
" dig_front <slot> <lvl> - убрать блок перед роботом\n"..
" dig_left <slot> <lvl> - удалить блок слева\n"..
" dig_right <slot> <lvl> - удалить блок справа\n"..
" dig_below <slot> - удалить блок под роботом\n"..
" dig_above <slot> - удалить блок над роботом\n"..
" rotate_item <lvl> <шаги> - повернуть блок перед роботом\n"..
" set_param2 <lvl> <param2> - установить параметр2 блока перед роботом\n"..
" place_sign <slot> - установить знак\n"..
" place_sign_behind <slot> - поставить знак позади робота\n"..
" dig_sign <slot> - удалить знак\n"..
" trash_sign <slot> - удалить знак\\, очистить данные и добавить в инвентарь.\n"..
" stop - бот остановится\\, пока не будет убран щит\n"..
" pickup_items <slot> - забрать предметы (в поле 3x3)\n"..
" drop_items <num> <slot> - сбросить предметы\n"..
" harvest - собирать урожай на поле 3x3 (фермерство)\n"..
" cutting - срезать цветы на поле 3x3\n"..
" sow_seed <слот> - увидеть/посадить поле 3x3\n"..
" plant_sapling <слот> - посадить саженец перед роботом\n"..
" pattern - сохранить свойства блока за знаком (куб 3x3x3) в качестве шаблона\n"..
" copy <size> - сделать копию сохраненного шаблона размером 3x3x3\n"..
" punch_cart - сбить тележку с шахтой\n"..
" add_compost <slot> - положить 2 листа в компостную бочку\n"..
" take_compost <slot> - взять компостный элемент из бочки\n"..
" print <text> - Вывести сообщение чата для отладки\n"..
" take_water <slot> - Взять воду из пустого ведра\n"..
" fill_cauldron <slot> - Наполнить котел xdecor для супа\n"..
" take_soup <slot> - Взять кипящий суп в пустую миску из котла\n"..
" flame_on - Развести огонь\n"..
" flame_off - Погасить огонь\n"..
"\n"..
"\n"..
"\n",
" ignite - Зажечь угольную зажигалку techage\n"..
" low_batt <percent> - Выключить бот\\, если заряд батареи ниже \n"..
" заданного значения в процентах (1..99)\n"..
" jump_low_batt <percent> <label> - Переход к <ярлыку>\\, если заряд батареи ниже\n"..
" заданного значения в процентах (1..99)\n"..
" (см. раздел \"Команды управления потоком\".)\n"..
" send_cmnd <receiver> <command> - Отправка команды techage на заданный узел. \n"..
" Получатель адресуется по номеру узла.\n"..
" Для команд\\, состоящих из двух или более слов\\, \n"..
" используйте символ '*' вместо пробелов\\, например: \n"..
" send_cmnd 3465 pull*default:dirt*2\n"..
"\n"..
"\n"..
"\n",
" -- команда перехода\\, <label> - слово из символов a-z или A-Z\n"..
" jump <label>\n"..
" \n"..
" -- метка перехода / начало функции\n"..
" <label>:\n"..
" \n"..
" -- возврат из функции\n"..
" return\n"..
" \n"..
" -- начало блока цикла\\, <num> - число 1..999\n"..
" repeat <num>\n"..
" \n"..
" -- конец блока цикла\n"..
" end\n"..
" \n"..
" -- вызов функции (с возвратом через команду 'return')\n"..
" call <label>\n"..
"\n"..
"\n"..
"\n",
" -- Проверьте\\, есть ли в сундуке <num> предметов\\, как в узле.\n"..
" -- Если нет\\, перейдите к <метке>.\n"..
" -- <slot> - это слот инвентаря бота (1..8)\n"..
" -- укажите элемент\\, или 0 для любого элемента.\n"..
" jump_check_item <num> <slot> <label>\n"..
" \n"..
" -- См. раздел \"Специальные команды Techage\".\n"..
" jump_low_batt <percent> <label>\n"..
"\n"..
"\n"..
"\n",
"",
" -- перейти к метке 'main'\n"..
" jump main\n"..
" \n"..
" -- начальная точка функции с именем 'foo'\n"..
" foo:\n"..
" cmnd ...\n"..
" cmnd ...\n"..
" -- конец 'foo'. Перейти назад\n"..
" return\n"..
" \n"..
" -- основная программа\n"..
" main:\n"..
" cmnd ...\n"..
" -- повторите все команды до 'end' 10 раз\n"..
" repeat 10\n"..
" cmnd ...\n"..
" -- вызвать подфункцию 'foo'\n"..
" call foo\n"..
" cmnd ...\n"..
" -- конец цикла 'repeat'\n"..
" end\n"..
" -- конец программы\n"..
" exit\n"..
"\n",
" cmnd ...\n"..
" -- повторите все команды до 'end' 10 раз\n"..
" repeat 10\n"..
" cmnd ...\n"..
" -- вызвать подфункцию 'foo'\n"..
" call foo\n"..
" cmnd ...\n"..
" -- конец цикла 'repeat'\n"..
" end\n"..
" -- конец программы\n"..
" exit\n"..
" \n"..
" -- начальная точка функции с именем'foo'\n"..
" foo:\n"..
" cmnd ...\n"..
" cmnd ...\n"..
" -- конец 'foo'. Перейти назад\n"..
" return\n"..
"\n",
},
images = {
"signs_bot_bot_inv.png",
"signs_bot_bot_inv.png",
"signs_bot_sign_left.png",
"signs_bot_sensor_crop_inv.png",
"signs_bot_tool.png",
"signs_bot:box",
"",
"signs_bot:box",
"signs_bot:bot_flap",
"signs_bot:duplicator",
"signs_bot:bot_sensor",
"signs_bot:node_sensor",
"signs_bot:crop_sensor",
"signs_bot:chest",
"signs_bot:timer",
"signs_bot:changer1",
"signs_bot:sensor_extender",
"signs_bot:and1",
"signs_bot:delayer",
"signs_bot:farming",
"signs_bot:pattern",
"signs_bot:copy3x3x3",
"signs_bot:flowers",
"signs_bot:aspen",
"signs_bot:sign_cmnd",
"signs_bot:sign_right",
"signs_bot:sign_left",
"signs_bot:sign_take",
"signs_bot:sign_add",
"signs_bot:sign_stop",
"signs_bot:sign_add_cart",
"signs_bot:sign_take_cart",
"signs_bot:water",
"signs_bot:soup",
"signs_bot_bot_inv.png",
"signs_bot_bot_inv.png",
"signs_bot_bot_inv.png",
"signs_bot_bot_inv.png",
"",
"",
"",
},
plans = {
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
}
}

542
signs_bot/manual_RU.md Normal file
View File

@ -0,0 +1,542 @@
# Управляемый бот
Робот, управляемый знаками.
В сети: https://github.com/joe7575/signs_bot/blob/master/manual_EN.md
[signs_bot_bot_inv.png|image]
## Первые шаги
После того как вы разместили бокс с управляемым роботом, вы можете запустить бота
с помощью кнопки 'On' в меню бокса. Если бот сразу же вернется в свою коробку,
вам нужно будет сначала зарядить его электрической энергией (techage).
Затем бот бежит прямо вперед, пока не достигнет препятствия
(ступенька с двумя или более блоками вверх или вниз или знак).
Управлять ботом можно только с помощью знаков, которые расположены на его пути.
Если бот первым достигнет знака, он выполнит команды, указанные на нем.
Если первой командой на знаке будет, например, 'turn_around', бот повернет и пойдет обратно.
В этом случае бот снова дойдет до своего ящика и выключится.
Если бот первым достигнет препятствия, он остановится или, если есть возможность,
выполнит следующие команды, начиная с последнего знака.
У бота есть инвентарь с 6 стеками для знаков и 8 стеками для других предметов
(которые размещаются/добываются ботом). Этот инвентарь имитирует внутренний инвентарь.
Это означает, что вы будете иметь доступ к инвентарю только в том случае,
если бот выключен ("сидит" в своем боксе).
Также есть следующие блоки:
- Датчики: Они могут посылать сигнал на исполнительный механизм, если подключены к нему.
- Актуаторы: Они выполняют действие, когда получают сигнал от датчика.
[signs_bot_bot_inv.png|image]
## Знаки
Вы управляете направлением движения бота с помощью знаков "turn left" и
"turn right" (знаки со стрелкой). Бот может преодолевать ступеньки
(один блок вверх/вниз). Но есть и команды, позволяющие перемещать бота вверх и вниз.
Не обязательно отмечать путь обратно к коробке. С помощью команды 'turn_off'
бот выключится и вернется в свой бокс из любого положения. То же самое касается
если вы выключите бота через меню бокса. Если бот достигнет знака в неправильном
направлении (сзади или сбоку), то знак будет проигнорирован.
Бот просто перешагнет через знак.
Все предопределенные знаки имеют меню со списком команд бота. Эти знаки
не могут быть изменены, но вы можете создавать и программировать свои собственные знаки.
Для этого нужно использовать знак "command". В этом знаке есть поле для редактирования команд
и страница помощи со всеми доступными командами. На странице помощи есть кнопка копирования
чтобы упростить программирование.
Также для ваших собственных знаков важно знать: После выполнения последней
команды знака, бот возвращается к своему поведению по умолчанию и бежит в
выбранном направлении.
Стандартным заданием для бота является перемещение предметов из одного сундука в другой сундук
(или узел с сундуком, похожим на инвентарь). Это можно сделать с помощью двух знаков
'взять предмет' и 'добавить предмет'. Эти знаки должны быть размещены над узлами сундуков.
[signs_bot_sign_left.png|image]
## Датчики и приводы
В дополнение к знакам бот может управляться с помощью датчиков.
Датчики, такие как датчик бота, имеют два состояния: включено и выключено.
Если датчик бота обнаруживает бота он переключится в состояние "включено"
и пошлёт сигнал подключённому блоку, называемому исполнительным механизмом.
Датчиками являются:
- Датчик бота: Посылает сигнал, когда мимо проезжает робот.
- Датчик узла: Посылает сигнал, когда обнаруживает любой (новый) узел.
- Датчик урожая: Посылает сигнал, когда, например, пшеница полностью выросла
- Сундук бота: Посылает сигнал в зависимости от состояния сундука (пустой, полный)
Приводы:
- Знаки Bot Box: Может выключать и включать бота
- Блок управления: Может использоваться для смены знака, чтобы управлять ботом.
Датчики должны быть соединены (спарены) с исполнительными механизмами. Для этого используется
"Инструмент подключения датчиков".
[signs_bot_sensor_crop_inv.png|image]
## Инструмент подключения датчиков
Чтобы отправить сигнал от датчика к приводу, датчик должен быть соединен
(сопряжен) с исполнительным механизмом. Чтобы соединить датчик и исполнительный механизм,
необходимо использовать инструмент Sensor Connection Tool. Просто нажмите инструментом на оба блока, и
датчик будет соединен с исполнительным механизмом. Об успешном подключении сигнализирует звук ping/pong.
Прежде чем соединить датчик с приводом, убедитесь, что привод находится в
требуемом состоянии. Например: Если вы хотите запустить бота с помощью датчика, подключите
датчик с блоком бота, когда бот находится в состоянии "включено". В противном случае
сигнал датчика остановит Бота, вместо того чтобы запустить его.
[signs_bot_tool.png|image]
## Инвентарь
Следующее относится ко всем командам, которые помещают предметы/элементы в инвентарь бота, например:
- `take_item <num> <slot>`
- `pickup_items <slot>`
- `trash_sign <slot>`
- `harvest <slot>`
- `dig_front <slot> <lvl>`
Если в команде не был указан слот или слот 0 (случай A), то все 8 слотов инвентаря бота
проверяются один за другим. Если был указан слот (случай B),
проверяется только этот слот.
В обоих случаях действует следующее:
Если слот предварительно сконфигурирован и соответствует предмету, или если слот не сконфигурирован
и пуст, или только частично заполнен типом добавляемого элемента,
то элемент(ы) будет(ут) добавлен(ы).
Если не все предметы могут быть добавлены, то в случае A пробуются оставшиеся слоты.
Все, что не удалось добавить в инвентарь, вернется обратно или будет сброшено.
Сказанное ниже относится ко всем командам, которые используются для взятия предметов из инвентаря бота, например:
- `add_item <num> <slot>`.
Не имеет значения, настроен слот или нет. Бот берет первый стек
который он может найти в своем инвентаре, и пытается его использовать. Если указан слот,
он берет только его, если слот не указан, он проверяет все слоты по очереди
если слот не указан, то проверяет все слоты по очереди, начиная со слота 1, пока не найдет что-нибудь. Если найденное число
меньше запрошенного, он пытается взять остаток из любого другого слота.
[signs_bot:box|image]
## Узлы / Блоки
### Бокс бота
Бокс - это корпус бота. Разместите бокс и запустите бота с помощью кнопки
'On'. Если установлен мод techage, боту требуется электричество.
Бот выходит из коробки с правой стороны. Он не запустится, если эта позиция заблокирована.
Чтобы остановить и удалить бота, нажмите кнопку "Off".
Инвентарь коробки имитирует инвентарь бота.
Вы не сможете получить доступ к инвентарю, если бот запущен.
Бот может носить с собой до 8 стаков и 6 знаков.
[signs_bot:box|image]
### Заслонка бота
Заслонка - это простой блок, используемый в качестве двери для бота. Поместите заслонку в любую стену,
и бот будет автоматически открывать и закрывать заслонку, проходя через нее.
[signs_bot:bot_flap|image]
### Дубликатор знаков
Дубликатор можно использовать для создания копий знаков:
1. Положите один знак 'cmnd', который будет использоваться в качестве шаблона, в инвентарь 'Template'.
2. Добавьте один или несколько 'blank signs' в инвентарь 'In'.
3. Возьмите копии из инвентаря 'Output'.
В качестве шаблона можно также использовать написанные книги [default:book_written].
Уже написанные знаки тоже можно использовать в качестве входных.
[signs_bot:duplicator|image]
### Датчик ботов
Датчик ботов обнаруживает любого бота и посылает сигнал, если бот находится поблизости.
Радиус действия датчика - один узел/метр". Направление датчика не имеет значения.
[signs_bot:bot_sensor|image]
### Датчик узла
Датчик узлов посылает циклические сигналы, когда обнаруживает, что узлы появились
или исчезновения, но должен быть настроен соответствующим образом. Действительными узлами являются все виды
блоки и растения. Радиус действия датчика - 3 узла/метра в одном направлении.
У датчика есть активная сторона (красная), которая должна указывать на наблюдаемую область.
[signs_bot:node_sensor|image]
### Датчик урожая
Датчик сельскохозяйственных культур посылает циклические сигналы, когда, например, пшеница полностью выросла.
Радиус действия датчика составляет один узел/метр. Датчик имеет активную сторону (красную), которая
должна быть направлена на культуру/поле.
[signs_bot:crop_sensor|image]
### Сундук бота
Сундук бота - это специальный сундук с функцией датчика. Он посылает сигнал
в зависимости от состояния сундука. Возможные состояния: 'empty', 'not empty', 'almost full'
Типичный вариант использования - выключить бота, когда сундук почти полон или пуст.
[signs_bot:chest|image]
### Таймер бота
Это особый вид датчиков. Может быть запрограммирован на время в секундах,
например, для циклического запуска бота.
[signs_bot:timer|image]
### Блок управления ботом
Блок управления ботом используется для управления ботом с помощью знаков. Блок может быть
загружено до 4 различных знаков и может быть запрограммировано с помощью датчиков.
Чтобы загрузить блок, поместите знак на красную сторону блока и нажмите на блок.
Знак исчезает / перемещается в инвентарь блока.
Эту операцию можно повторить 3 раза.
Используйте инструмент подключения, чтобы соединить до 4 датчиков с блоком управления ботом.
[signs_bot:changer1|image]
### Расширитель датчиков
С помощью расширителя датчиков сигналы датчиков можно передавать на несколько исполнительных механизмов.
Поместите один или несколько удлинителей рядом с датчиком и соедините каждый удлинитель с одним
одним исполнительным механизмом с помощью инструмента подключения.
[signs_bot:sensor_extender|image]
### Сигнал И
Сигнал посылается, если получены все входные сигналы.
[signs_bot:and1|image]
### Задержка сигнала
Сигналы пересылаются с задержкой. Последующие сигналы ставятся в очередь.
Время задержки может быть настроено.
[signs_bot:delayer|image]
### Знак 'farming'
Используется для сбора урожая и засева поля 3x3. Поместите знак перед полем.
Используемое семя должно находиться в первом слоте инвентаря бота.
Когда бот закончит, он повернется и пойдет обратно.
[signs_bot:farming|image]
### Знак 'pattern'
Используется для создания копии куба 3x3x3. Поместите знак перед деталью
который нужно скопировать. Используйте знак копирования, чтобы сделать копию этой детали на другом
месте. Бот должен сначала добраться до знака детали, а затем до знака копии.
Используется для создания копии куба 3x3x3. Поместите щит перед блоками
которые нужно скопировать. Используйте знак копирования, чтобы сделать копию этих блоков в другом
месте. Сначала бот должен обработать знак "pattern", только после этого он может
направить его к знаку копирования.
[signs_bot:pattern|image]
### Знак 'copy3x3x3'
Используется для создания копии куба 3x3x3. Поместите знак перед тем местом, где вы хотите
чтобы была сделана копия. См. также знак "шаблон".
[signs_bot:copy3x3x3|image]
### Знак 'flowers'
Используется для срезания цветов на поле 3x3. Поместите знак перед полем.
По окончании бот поворачивается.
[signs_bot:flowers|image]
### Знак 'aspen'
Используется для заготовки ствола осины или сосны.
- Поместите знак перед деревом.
- Поставьте сундук справа от знака.
- Положите в сундук стопку грязи (минимум 10 предметов).
- Предварительно настройте слот 1 инвентаря бота на грязь
- Заранее настройте слот 2 инвентаря бота с саженцами
[signs_bot:aspen|image]
### Знак 'command'
Знак 'command' может быть запрограммирован игроком. Поместите знак перед собой
перед собой и используйте меню узла, чтобы запрограммировать последовательность команд бота.
В меню есть поле для редактирования команд и страница помощи со всеми
доступными командами. На странице помощи есть кнопка копирования, чтобы упростить программирование.
[signs_bot:sign_cmnd|image]
### Знак "turn right"
Бот поворачивает направо, когда обнаруживает перед собой этот знак.
[signs_bot:sign_right|image]
### Знак "turn left"
Бот поворачивает налево, когда обнаруживает этот знак перед собой.
[signs_bot:sign_left|image]
### Знак "take item"
Бот берет предметы из сундука перед собой, а затем поворачивается.
Этот знак должен быть помещен на верхнюю часть сундука.
[signs_bot:sign_take|image]
### Знак "add item"
Бот кладет предметы в стоящий перед ним сундук, а затем разворачивается.
Этот знак должен быть размещен поверх сундука.
[signs_bot:sign_add|image]
### Знак "stop"
Бот будет останавливаться перед этим знаком до тех пор, пока знак не будет убран или
пока бот не будет выключен.
[signs_bot:sign_stop|image]
### Знак "add to cart" (minecart)
Бот кладет товары в стоящую перед ним мини-тележку, толкает тележку, а затем разворачивается
разворачивается. Этот знак должен быть размещен на рельсе в конечном положении тележки.
[signs_bot:sign_add_cart|image]
### Знак "взять из тележки" (minecart)
Бот берет предметы из стоящей перед ним мини-тележки, толкает тележку и затем
поворачивается. Этот знак должен быть размещен на рельсе в конечном положении тележки.
[signs_bot:sign_take_cart|image]
### Знак "take water" (xdecor)
Используется для набирания воды в ведро. Поместите знак на берегу, перед бассейном с неподвижной водой.
Предметы в слотах:
1 - пустое ведро
В результате в выбранном слоте инвентаря появится одно ведро с водой. По окончании,
бот поворачивается.
[signs_bot:water|image]
### Знак 'cook soup' (xdecor)
Используется для приготовления овощного супа в котелке. Котелок должен быть пустым и находиться
над легковоспламеняющимися материалами. Поместите знак перед казаном с одним полем
чтобы предотвратить возгорание деревянной вывески.
Предметы в слотах:
1 - ведро с водой"
2 - овощ № 1 (например, помидор)
3 - овощ № 2 (например, морковь)
4 - пустая миска (из модов farming или xdecor).
В результате в выбранном слоте инвентаря окажется одна миска с овощным супом.
Закончив, бот разворачивается.
[signs_bot:soup|image]
## Команды бота
Все команды также описаны в виде помощи в узле "Команда знака".
Все блоки или знаки, которые устанавливаются, берутся из инвентаря бота.
Все удаленные блоки или знаки будут добавлены обратно в инвентарь бота.
'<слот>' - это всегда внутренний стек инвентаря бота (1..8).
move <steps> - перейти на один или несколько шагов вперед
cond_move - перейти к ближайшему препятствию или знаку
turn_left - повернуть налево
turn_right - повернуть направо
turn_around - повернуться
backward - сделать шаг назад
turn_off - выключить робота / вернуться в коробку
pause <sec> - подождать одну или несколько секунд
move_up - двигаться вверх (не более 2 раз)
move_down - двигаться вниз
fall_down - упасть в яму/пропасть (до 10 блоков)
take_item <num> <slot> - взять один или несколько предметов из ящика
add_item <num> <slot> - положить один или несколько предметов в ящик
add_fuel <num> <slot> - положить топливо в печь
place_front <slot> <lvl> - поместить блок перед ботом
place_left <slot> <lvl> - поместить блок слева от бота
place_right <slot> <lvl> - поместить блок справа от бота
place_below <slot> - поднять робота и поместить блок под него
place_above <slot> - установить блок над роботом
dig_front <slot> <lvl> - убрать блок перед роботом
dig_left <slot> <lvl> - удалить блок слева
dig_right <slot> <lvl> - удалить блок справа
dig_below <slot> - удалить блок под роботом
dig_above <slot> - удалить блок над роботом
rotate_item <lvl> <шаги> - повернуть блок перед роботом
set_param2 <lvl> <param2> - установить параметр2 блока перед роботом
place_sign <slot> - установить знак
place_sign_behind <slot> - поставить знак позади робота
dig_sign <slot> - удалить знак
trash_sign <slot> - удалить знак, очистить данные и добавить в инвентарь.
stop - бот остановится, пока не будет убран щит
pickup_items <slot> - забрать предметы (в поле 3x3)
drop_items <num> <slot> - сбросить предметы
harvest - собирать урожай на поле 3x3 (фермерство)
cutting - срезать цветы на поле 3x3
sow_seed <слот> - увидеть/посадить поле 3x3
plant_sapling <слот> - посадить саженец перед роботом
pattern - сохранить свойства блока за знаком (куб 3x3x3) в качестве шаблона
copy <size> - сделать копию сохраненного шаблона размером 3x3x3
punch_cart - сбить тележку с шахтой
add_compost <slot> - положить 2 листа в компостную бочку
take_compost <slot> - взять компостный элемент из бочки
print <text> - Вывести сообщение чата для отладки
take_water <slot> - Взять воду из пустого ведра
fill_cauldron <slot> - Наполнить котел xdecor для супа
take_soup <slot> - Взять кипящий суп в пустую миску из котла
flame_on - Развести огонь
flame_off - Погасить огонь
[signs_bot_bot_inv.png|image]
### Techage специальные команды
ignite - Зажечь угольную зажигалку techage
low_batt <percent> - Выключить бот, если заряд батареи ниже
заданного значения в процентах (1..99)
jump_low_batt <percent> <label> - Переход к <ярлыку>, если заряд батареи ниже
заданного значения в процентах (1..99)
(см. раздел "Команды управления потоком".)
send_cmnd <receiver> <command> - Отправка команды techage на заданный узел.
Получатель адресуется по номеру узла.
Для команд, состоящих из двух или более слов,
используйте символ '*' вместо пробелов, например:
send_cmnd 3465 pull*default:dirt*2
[signs_bot_bot_inv.png|image]
### Команды управления потоком
-- команда перехода, <label> - слово из символов a-z или A-Z
jump <label>
-- метка перехода / начало функции
<label>:
-- возврат из функции
return
-- начало блока цикла, <num> - число 1..999
repeat <num>
-- конец блока цикла
end
-- вызов функции (с возвратом через команду 'return')
call <label>
[signs_bot_bot_inv.png|image]
### Дополнительные команды перехода
-- Проверьте, есть ли в сундуке <num> предметов, как в узле.
-- Если нет, перейдите к <метке>.
-- <slot> - это слот инвентаря бота (1..8)
-- укажите элемент, или 0 для любого элемента.
jump_check_item <num> <slot> <label>
-- См. раздел "Специальные команды Techage".
jump_low_batt <percent> <label>
[signs_bot_bot_inv.png|image]
### Управление потоком Примеры
#### Пример с функцией в начале:
-- перейти к метке 'main'
jump main
-- начальная точка функции с именем 'foo'
foo:
cmnd ...
cmnd ...
-- конец 'foo'. Перейти назад
return
-- основная программа
main:
cmnd ...
-- повторите все команды до 'end' 10 раз
repeat 10
cmnd ...
-- вызвать подфункцию 'foo'
call foo
cmnd ...
-- конец цикла 'repeat'
end
-- конец программы
exit
#### Пример с функцией в конце:
cmnd ...
-- повторите все команды до 'end' 10 раз
repeat 10
cmnd ...
-- вызвать подфункцию 'foo'
call foo
cmnd ...
-- конец цикла 'repeat'
end
-- конец программы
exit
-- начальная точка функции с именем'foo'
foo:
cmnd ...
cmnd ...
-- конец 'foo'. Перейти назад
return

View File

@ -199,3 +199,7 @@ m2l.gen_lua_file("./manual_EN.lua")
m2l = MarkdownToLua() m2l = MarkdownToLua()
m2l.parse_md_file("./manual_DE.md") m2l.parse_md_file("./manual_DE.md")
m2l.gen_lua_file("./manual_DE.lua") m2l.gen_lua_file("./manual_DE.lua")
m2l = MarkdownToLua()
m2l.parse_md_file("./manual_RU.md")
m2l.gen_lua_file("./manual_RU.lua")

View File

@ -26,6 +26,7 @@ dofile(MP.."/matrix_screen/main.lua") -- Matrix Screen
dofile(MP.."/manual_DE.lua") -- Techage Manual DE dofile(MP.."/manual_DE.lua") -- Techage Manual DE
dofile(MP.."/manual_EN.lua") -- Techage Manual EN dofile(MP.."/manual_EN.lua") -- Techage Manual EN
dofile(MP.."/manual_RU.lua") -- Techage Manual RU
techage.add_manual_items({ta4_addons_touchscreen = "ta4_addons_touchscreen_inventory.png"}) techage.add_manual_items({ta4_addons_touchscreen = "ta4_addons_touchscreen_inventory.png"})

95
ta4_addons/manual_RU.lua Normal file
View File

@ -0,0 +1,95 @@
techage.add_to_manual('RU', {
"1,Дополнения к TA4",
"2,Сенсорный экран",
"3,Поддерживаемые элементы и их свойства",
"3,Пример",
"2,Матричный экран",
}, {
"В настоящее время доступны следующие расширения для TA4:\n"..
"\n"..
" - Сенсорный экран\n"..
"\n",
"\n"..
"\n"..
"Сенсорный экран может использоваться как обычный дисплей TA4.\n"..
"Кроме того\\, он поддерживает следующие команды\\, которые позволяют создавать форму\\, открываемую щелчком правой кнопкой мыши по сенсорному экрану:\n"..
"\n"..
" - add_content: Пытается добавить элемент в форму сенсорного экрана. Принимает определение элемента в качестве полезной нагрузки. При успешном выполнении возвращает ID только что созданного элемента.\n"..
" - update_content: Пытается изменить уже существующий элемент формы сенсорного экрана. Принимает определение элемента с дополнительным полем id\\, которое можно использовать для выбора элемента\\, который нужно обновить. При успешном выполнении возвращает true.\n"..
" - remove_content: Пытается удалить существующий элемент из формы сенсорного экрана. Принимает хранилище в качестве полезной нагрузки. Единственным полем в этом хранилище должно быть поле id. При успешном выполнении возвращает true.\n"..
" - private: Делает сенсорный экран частным. Форму могут отправлять только игроки с доступом к защите.\n"..
" - public: Делает сенсорный экран общедоступным. Все игроки могут отправлять форму.\n"..
"\n"..
"Определение элемента представляет собой структуру данных хранилища. Вы можете установить тип элемента в поле \"type\" этого хранилища.\n"..
"Вы можете устанавливать свойства элемента в качестве дополнительных полей в этом хранилище.\n"..
"Всегда предоставляются более или менее разумные значения по умолчанию для этих дополнительных свойств\\,\n"..
"но настоятельно рекомендуется всегда предоставлять значения самостоятельно\\, поскольку значения по умолчанию не задокументированы и могут измениться.\n"..
"\n"..
"При отправке формы в контроллер возвращается хранилище в качестве сообщения.\n"..
"Поля\\, доступные в обратных вызовах Minetest on_receive_fields\\, устанавливаются в этом хранилище.\n"..
"Поле \"_sent_by\" содержит имя отправителя.\n"..
"Вы можете получить доступ к этому хранилищу\\, используя функцию $get_msg(true) контроллера Lua.\n"..
"Пожалуйста\\, не забудьте о \"true\" в качестве первого параметра\\; в противном случае вы получите доступ только к строковому представлению сообщения.\n"..
"\n"..
"Форма отображается с использованием формы версии 3 (включены реальные координаты)\\, поэтому используйте последнюю версию клиента Minetest.\n"..
"\n"..
"Когда кто-то открывает сенсорный экран\\, сообщение будет отправлено контроллеру.\n"..
"Это сообщение содержит хранилище\\, в котором поле \"_touchscreen_opened_by\" устанавливается в соответствующее имя игрока.\n"..
"\n",
"\n"..
"\n"..
"Обратите внимание: Этот список может быть изменен.\n"..
"\n"..
"button: x\\, y\\, w\\, h\\, name\\, label\n"..
"label: x\\, y\\, label\n"..
"image: x\\, y\\, w\\, h\\, texture_name\n"..
"animated_image: x\\, y\\, w\\, h\\, name\\, texture_name\\, frame_count\\, frame_duration\\, frame_start\n"..
"item_image: x\\, y\\, w\\, h\\, item_name\n"..
"pwdfield: x\\, y\\, w\\, h\\, name\\, label\n"..
"field: x\\, y\\, w\\, h\\, name\\, label\\, default\n"..
"field_close_on_enter: name\\, close_on_enter\n"..
"textarea: x\\, y\\, w\\, h\\, name\\, label\\, default\n"..
"image_button: x\\, y\\, w\\, h\\, texture_name\\, name\\, label\n"..
"item_image_button: x\\, y\\, w\\, h\\, item_name\\, name\\, label\n"..
"button_exit: x\\, y\\, w\\, h\\, name\\, label\n"..
"image_button_exit: x\\, y\\, w\\, h\\, texture_name\\, name\\, label\n"..
"box: x\\, y\\, w\\, h\\, color\n"..
"checkbox: x\\, y\\, name\\, label\\, selected\n"..
"\n"..
"Для получения дополнительной информации о значении этих элементов рекомендуется обратиться к файлу lua_api.txt в документации Minetest.\n"..
"\n",
"\n"..
"\n"..
"*Init:*\n"..
"\n"..
" $events(true)\n$loopcycle(0)\n\nTOUCHSCREEN_NUM = 338\n\ncounter = 1\n\n$send_cmnd(TOUCHSCREEN_NUM\\, \"remove_content\")\n\nres = $send_cmnd(TOUCHSCREEN_NUM\\, \"add_content\"\\, Store(\"type\"\\, \"button\"\\, \"w\"\\, 5\\, \"label\"\\, counter))\nres2 = $send_cmnd(TOUCHSCREEN_NUM\\, \"add_content\"\\, Store(\"type\"\\, \"button\"\\, \"w\"\\, 5\\, \"y\"\\, 2\\, \"label\"\\, counter))\n\n$print(\"ID: \"..res)\n"..
"\n"..
"*Loop:*\n"..
"\n"..
" local num\\,msg = $get_msg(true)\n\nif num == tostring(TOUCHSCREEN_NUM) and msg.next then\n for k\\,v in msg.next() do\n if k == \"button\" then\n counter = counter + 1\n $print(res)\n $send_cmnd(TOUCHSCREEN_NUM\\, \"update_content\"\\, Store(\"type\"\\, \"button\"\\, \"w\"\\, \"5\"\\, \"label\"\\, counter\\, \"id\"\\, res))\n if counter > 10 then\n $send_cmnd(TOUCHSCREEN_NUM\\, \"remove_content\"\\, Store(\"id\"\\, res2))\n else\n $send_cmnd(TOUCHSCREEN_NUM\\, \"update_content\"\\, Store(\"type\"\\, \"button\"\\, \"w\"\\, \"5\"\\, \"y\"\\, 2\\, \"label\"\\, counter\\, \"id\"\\, res2))\n end\n end\n $print(k..\": \"..v)\n $display(TOUCHSCREEN_NUM\\, 0\\, k)\n $display(TOUCHSCREEN_NUM\\, 0\\, v)\n end\nend\n"..
"\n",
"\n"..
"\n"..
"Экран Matrix имеет разрешение 16x16 пикселей.\n"..
"Доступны различные палитры с 64 цветами каждая.\n"..
"\n"..
"Для программирования экрана вы можете отправить строку\\, закодированную в формате base64\\, в качестве данных для команды \"pixels\".\n"..
"Эта строка должна содержать 256 символов. Каждый символ соответствует одному пикселю\\, построчно от верхнего левого угла до нижнего правого угла.\n"..
"\n"..
"Рекомендуется использовать программу TA4 Matrix Screen Programmer для удобного создания таких строк.\n"..
"\n"..
"Палитру цветов можно изменить с помощью команды \"palette\".\n"..
"\n",
}, {
"",
"ta4_addons_touchscreen",
"ta4_addons_touchscreen",
"ta4_addons_touchscreen",
"ta4_addons_matrix_screen",
}, {
"",
"",
"",
"",
"",
})

117
ta4_addons/manual_RU.md Normal file
View File

@ -0,0 +1,117 @@
# Дополнения к TA4
В настоящее время доступны следующие расширения для TA4:
- Сенсорный экран
## Сенсорный экран
[ta4_addons_touchscreen|image]
Сенсорный экран может использоваться как обычный дисплей TA4.
Кроме того, он поддерживает следующие команды, которые позволяют создавать форму, открываемую щелчком правой кнопкой мыши по сенсорному экрану:
- add_content: Пытается добавить элемент в форму сенсорного экрана. Принимает определение элемента в качестве полезной нагрузки. При успешном выполнении возвращает ID только что созданного элемента.
- update_content: Пытается изменить уже существующий элемент формы сенсорного экрана. Принимает определение элемента с дополнительным полем id, которое можно использовать для выбора элемента, который нужно обновить. При успешном выполнении возвращает true.
- remove_content: Пытается удалить существующий элемент из формы сенсорного экрана. Принимает хранилище в качестве полезной нагрузки. Единственным полем в этом хранилище должно быть поле id. При успешном выполнении возвращает true.
- private: Делает сенсорный экран частным. Форму могут отправлять только игроки с доступом к защите.
- public: Делает сенсорный экран общедоступным. Все игроки могут отправлять форму.
Определение элемента представляет собой структуру данных хранилища. Вы можете установить тип элемента в поле "type" этого хранилища.
Вы можете устанавливать свойства элемента в качестве дополнительных полей в этом хранилище.
Всегда предоставляются более или менее разумные значения по умолчанию для этих дополнительных свойств,
но настоятельно рекомендуется всегда предоставлять значения самостоятельно, поскольку значения по умолчанию не задокументированы и могут измениться.
При отправке формы в контроллер возвращается хранилище в качестве сообщения.
Поля, доступные в обратных вызовах Minetest on_receive_fields, устанавливаются в этом хранилище.
Поле "_sent_by" содержит имя отправителя.
Вы можете получить доступ к этому хранилищу, используя функцию $get_msg(true) контроллера Lua.
Пожалуйста, не забудьте о "true" в качестве первого параметра; в противном случае вы получите доступ только к строковому представлению сообщения.
Форма отображается с использованием формы версии 3 (включены реальные координаты), поэтому используйте последнюю версию клиента Minetest.
Когда кто-то открывает сенсорный экран, сообщение будет отправлено контроллеру.
Это сообщение содержит хранилище, в котором поле "_touchscreen_opened_by" устанавливается в соответствующее имя игрока.
### Поддерживаемые элементы и их свойства
[ta4_addons_touchscreen|image]
Обратите внимание: Этот список может быть изменен.
button: x, y, w, h, name, label
label: x, y, label
image: x, y, w, h, texture_name
animated_image: x, y, w, h, name, texture_name, frame_count, frame_duration, frame_start
item_image: x, y, w, h, item_name
pwdfield: x, y, w, h, name, label
field: x, y, w, h, name, label, default
field_close_on_enter: name, close_on_enter
textarea: x, y, w, h, name, label, default
image_button: x, y, w, h, texture_name, name, label
item_image_button: x, y, w, h, item_name, name, label
button_exit: x, y, w, h, name, label
image_button_exit: x, y, w, h, texture_name, name, label
box: x, y, w, h, color
checkbox: x, y, name, label, selected
Для получения дополнительной информации о значении этих элементов рекомендуется обратиться к файлу lua_api.txt в документации Minetest.
### Пример
[ta4_addons_touchscreen|image]
**Init:**
```lua
$events(true)
$loopcycle(0)
TOUCHSCREEN_NUM = 338
counter = 1
$send_cmnd(TOUCHSCREEN_NUM, "remove_content")
res = $send_cmnd(TOUCHSCREEN_NUM, "add_content", Store("type", "button", "w", 5, "label", counter))
res2 = $send_cmnd(TOUCHSCREEN_NUM, "add_content", Store("type", "button", "w", 5, "y", 2, "label", counter))
$print("ID: "..res)
```
**Loop:**
```lua
local num,msg = $get_msg(true)
if num == tostring(TOUCHSCREEN_NUM) and msg.next then
for k,v in msg.next() do
if k == "button" then
counter = counter + 1
$print(res)
$send_cmnd(TOUCHSCREEN_NUM, "update_content", Store("type", "button", "w", "5", "label", counter, "id", res))
if counter > 10 then
$send_cmnd(TOUCHSCREEN_NUM, "remove_content", Store("id", res2))
else
$send_cmnd(TOUCHSCREEN_NUM, "update_content", Store("type", "button", "w", "5", "y", 2, "label", counter, "id", res2))
end
end
$print(k..": "..v)
$display(TOUCHSCREEN_NUM, 0, k)
$display(TOUCHSCREEN_NUM, 0, v)
end
end
```
## Матричный экран
[ta4_addons_matrix_screen|image]
Экран Matrix имеет разрешение 16x16 пикселей.
Доступны различные палитры с 64 цветами каждая.
Для программирования экрана вы можете отправить строку, закодированную в формате base64, в качестве данных для команды "pixels".
Эта строка должна содержать 256 символов. Каждый символ соответствует одному пикселю, построчно от верхнего левого угла до нижнего правого угла.
Рекомендуется использовать программу TA4 Matrix Screen Programmer для удобного создания таких строк.
Палитру цветов можно изменить с помощью команды "palette".

View File

@ -550,6 +550,7 @@ minetest.register_craft({
dofile(minetest.get_modpath("ta4_jetpack") .. "/manual_DE.lua") dofile(minetest.get_modpath("ta4_jetpack") .. "/manual_DE.lua")
dofile(minetest.get_modpath("ta4_jetpack") .. "/manual_EN.lua") dofile(minetest.get_modpath("ta4_jetpack") .. "/manual_EN.lua")
dofile(minetest.get_modpath("ta4_jetpack") .. "/manual_RU.lua")
techage.add_manual_items({ techage.add_manual_items({
ta4_jetpack = "ta4_jetpack.png", ta4_jetpack = "ta4_jetpack.png",

View File

@ -0,0 +1,13 @@
# textdomain: ta4_jetpack
You are too heavy: Check your bags!=Вы слишко много весите: Проверьте свои сумки!
You are too heavy: Check your crafting menu!=Вы слишко много весите: Проверьте меню крафта!
You are too heavy: Check your inventory!=Вы слишко много весите: Проверьте инвентарь!
You may not transport @1 with a jetpack!=Нельзя перевозить @1 на джетпаке!
[Jetpack] You don't have your jetpack on your back!=[Jetpack] У вас на спине нет джетпака!
[Jetpack]=[Jetpack]
[Jetpack] Your tank is empty!=[Jetpack] Ваш бак пуст!
Use the controller (left click) to fill the tank with hydrogen=Используйте контроллер (левый клик) чтобы заполнить бак водородом
TA4 Jetpack Controller On=ТА4 контроллер джетпака ВКЛ
TA4 Jetpack Controller Off=ТА4 контроллер джетпака ВЫКЛ
TA4 Jetpack=ТА4 джетпак
Jetpack Training Mat=Тренировочный мат для джетпака

35
ta4_jetpack/manual_RU.lua Normal file
View File

@ -0,0 +1,35 @@
techage.add_to_manual('RU', {
"1,TA4 Реактивный ранец",
"2,Инструкции",
"2,Важно знать",
}, {
"Реактивный ранец вдохновлен реактивным ранцем от spirit689 (https://github.com/spirit689/jetpack)\n"..
"и исторической игрой Lunar Lander.\n"..
"\n"..
"\n"..
"\n",
" - Создайте TA4 Реактивный ранец, Реактивный контроллер и Тренировочный коврик\n"..
" - Используйте слот брони (3d_armor) в меню инвентаря, чтобы пристегнуть Реактивный ранец на спину\n"..
" - Что-бы заправить реактивный ранец, возьмите контроллер и щелкните им, левой кнопкой мыши по цистерне с водородом\n"..
" - Включите контроллер, щелкнув правой кнопкой мыши, и проверьте уровень топлива в баке (маленькая цветная полоска под значком контроллера)\n"..
" - Используйте пробел для активации Реактивного ранца и клавиши WASD для управления направлением\n"..
" - Перед первым полетом рекомендуется провести несколько тренировочных взлетов и посадок на Тренировочном коврике\n(Реактивный ранец немного упрямый, для удержания его в воздухе требуется некоторая практика)\n"..
"\n"..
"\n"..
"\n",
" - 12 единиц водорода достаточно для полета продолжительностью 6 минут\n"..
" - Максимум 99 предметов в вашем инвентаре разрешено, включая контроллер.\nИначе вы будете слишком тяжелыми :-)\n"..
" - Реактивный ранец также изнашивается и может использоваться примерно для 10 полетов\n"..
" - Во время полета всегда держите контроллер в руках, иначе он выключится :)\n"..
"\n"..
"\n"..
"\n",
}, {
"ta4_jetpack",
"ta4_jetpack_controller",
"ta4_jetpack_controller",
}, {
"",
"",
"",
})

30
ta4_jetpack/manual_RU.md Normal file
View File

@ -0,0 +1,30 @@
# TA4 Jetpack
The Jetpack is inspired by the jetpack from spirit689 (https://github.com/spirit689/jetpack)
and by the historical game Lunar Lander.
[ta4_jetpack|image]
## Instructions
- Craft TA4 Jetpack, Jetpack Controller and Training Mat
- Use the armor extension (3d_armor) of the player menu to strap the Jetpack on your back
- You can refuel the jetpack by left-clicking with the controller on a TA3/TA4 tank previously charged with hydrogen
- Turn the controller on by right-click and check the fuel tank level (the small colored bar below the controller icon)
- Use the space bar to activate the Jetpack and the WASD keys to control the direction
- Before your first flight you should do some training starts and landings on the Training Mat
(The Jetpack is a bit stubborn, it takes some practice to keep the JetPack in the air)
[ta4_jetpack_controller|image]
## Important to know
- 12 units of hydrogen are sufficient for a flight of 6 minutes
- Maximum 99 items in your inventory are allowed including the controller.
Otherwise you would be too heavy :-)
- The Jetpack also wears out and can be used for approximately 10 flights
- Always hold the controller tight during the flight, otherwise it will switch off :)
[ta4_jetpack_controller|image]

View File

@ -0,0 +1,5 @@
# textdomain: ta4_paraglider
Paraglider=Параплан
First jump from a hill and then use the paraglider=Сначала прыгните с холма, а затем воспользуйтесь парапланом.
##### not used anymore #####

View File

@ -7,11 +7,12 @@ local M = minetest.get_meta
local MP = minetest.get_modpath("techage") local MP = minetest.get_modpath("techage")
local settings = { local settings = {
symbol_item = "techage:construction_board", symbol_item = "techage:construction_board_EN",
} }
doclib.create_manual("techage", "DE", settings) doclib.create_manual("techage", "DE", settings)
doclib.create_manual("techage", "EN", settings) doclib.create_manual("techage", "EN", settings)
doclib.create_manual("techage", "RU", settings)
local content local content
content = dofile(MP.."/doc/manual_DE.lua") content = dofile(MP.."/doc/manual_DE.lua")
@ -40,6 +41,18 @@ doclib.add_to_manual("techage", "EN", content)
content = dofile(MP.."/doc/manual_ta5_EN.lua") content = dofile(MP.."/doc/manual_ta5_EN.lua")
doclib.add_to_manual("techage", "EN", content) doclib.add_to_manual("techage", "EN", content)
content = dofile(MP.."/doc/manual_RU.lua")
doclib.add_to_manual("techage", "RU", content)
content = dofile(MP.."/doc/manual_ta1_RU.lua")
doclib.add_to_manual("techage", "RU", content)
content = dofile(MP.."/doc/manual_ta2_RU.lua")
doclib.add_to_manual("techage", "RU", content)
content = dofile(MP.."/doc/manual_ta3_RU.lua")
doclib.add_to_manual("techage", "RU", content)
content = dofile(MP.."/doc/manual_ta4_RU.lua")
doclib.add_to_manual("techage", "RU", content)
content = dofile(MP.."/doc/manual_ta5_RU.lua")
doclib.add_to_manual("techage", "RU", content)
local board_box = { local board_box = {
type = "wallmounted", type = "wallmounted",
@ -48,8 +61,8 @@ local board_box = {
minetest.register_node("techage:construction_board", { minetest.register_node("techage:construction_board", {
description = "TA Konstruktionsplan (DE)", description = "TA Konstruktionsplan (DE)",
inventory_image = 'techage_constr_plan_inv.png', inventory_image = 'techage_constr_plan_inv_de.png',
tiles = {"techage_constr_plan.png"}, tiles = {"techage_constr_plan_de.png"},
drawtype = "nodebox", drawtype = "nodebox",
node_box = board_box, node_box = board_box,
selection_box = board_box, selection_box = board_box,
@ -124,6 +137,45 @@ minetest.register_craft({
}, },
}) })
minetest.register_node("techage:construction_board_RU", {
description = "TA Construction Board (RU)",
inventory_image = 'techage_constr_plan_inv_ru.png',
tiles = {"techage_constr_plan_ru.png"},
drawtype = "nodebox",
node_box = board_box,
selection_box = board_box,
after_place_node = function(pos, placer, itemstack)
M(pos):set_string("infotext", "План строительства ТА (RU)")
M(pos):set_string("formspec", doclib.formspec(pos, "techage", "RU"))
end,
on_receive_fields = function(pos, formname, fields, player)
local player_name = player:get_player_name()
if minetest.is_protected(pos, player_name) then
return
end
M(pos):set_string("formspec", doclib.formspec(pos, "techage", "RU", fields))
end,
paramtype2 = "wallmounted",
paramtype = "light",
use_texture_alpha = techage.CLIP,
sunlight_propagates = true,
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({
output = "techage:construction_board_RU",
recipe = {
{"default:paper", "default:paper", "default:paper"},
{"default:paper", "default:paper", "default:paper"},
{"default:paper", "default:paper", "default:paper"},
},
})
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "techage:construction_board_EN", output = "techage:construction_board_EN",
@ -132,10 +184,16 @@ minetest.register_craft({
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "techage:construction_board", output = "techage:construction_board_RU",
recipe = { "techage:construction_board_EN" }, recipe = { "techage:construction_board_EN" },
}) })
minetest.register_craft({
type = "shapeless",
output = "techage:construction_board",
recipe = {"techage:construction_board_RU"},
})
-- --
-- Legacy API functions -- Legacy API functions
@ -149,6 +207,7 @@ function techage.add_manual_items(table_with_items)
for name, image in pairs(table_with_items) do for name, image in pairs(table_with_items) do
doclib.add_manual_image("techage", "EN", name, image) doclib.add_manual_image("techage", "EN", name, image)
doclib.add_manual_image("techage", "DE", name, image) doclib.add_manual_image("techage", "DE", name, image)
doclib.add_manual_image("techage", "RU", name, image)
end end
end end
@ -156,5 +215,6 @@ function techage.add_manual_plans(table_with_plans)
for name, plan in pairs(table_with_plans) do for name, plan in pairs(table_with_plans) do
doclib.add_manual_plan("techage", "EN", name, plan) doclib.add_manual_plan("techage", "EN", name, plan)
doclib.add_manual_plan("techage", "DE", name, plan) doclib.add_manual_plan("techage", "DE", name, plan)
doclib.add_manual_plan("techage", "RU", name, plan)
end end
end end

View File

@ -228,4 +228,5 @@ local items = {
for name, image in pairs(items) do for name, image in pairs(items) do
doclib.add_manual_image("techage", "DE", name, image) doclib.add_manual_image("techage", "DE", name, image)
doclib.add_manual_image("techage", "EN", name, image) doclib.add_manual_image("techage", "EN", name, image)
doclib.add_manual_image("techage", "RU", name, image)
end end

144
techage/doc/manual_RU.lua Normal file
View File

@ -0,0 +1,144 @@
return {
titles = {
"1,Tech Age Mod",
"2,Подсказки",
"2,Изменения по сравнению с версией 1.0",
"3,Советы по переключению",
"2,Руды и минералы",
"3,Меридий",
"3,Усмий",
"3,Баборий",
"3,Нефть",
"3,Боксит",
"3,Базальт",
"2,History",
},
texts = {
"Tech Age - это технологический мод с 5 стадиями развития:\n"..
"\n"..
"TA1: Железный век\n"..
"Используйте инструменты и приспособления\\, такие как угольные горелки\\, угольные горелки\\, гравийные сита\\, молоты и бункеры\\, чтобы добывать и обрабатывать необходимые руды и металлы.\n"..
"\n"..
"TA2: Паровой век\n"..
"Постройте паровой двигатель с ведущими осями и используйте его для работы своих первых машин по переработке руды.\n"..
"\n"..
"TA3: Нефтяной век\n"..
"Найдите и добывайте нефть\\, постройте железные дороги для транспортировки нефти. Электростанция дает необходимое электричество для ваших машин. Электрический свет освещает ваши промышленные предприятия.\n"..
"\n"..
"TA4: Настоящее время\n"..
"Возобновляемые источники энергии\\, такие как ветер\\, солнце и биотопливо\\, помогают вам покинуть нефтяной век. С помощью современных технологий и умных машин вы отправляетесь в будущее.\n"..
"\n"..
"TA5: Будущее\n"..
"Машины\\, преодолевающие пространство и время\\, новые источники энергии и другие достижения определяют вашу жизнь.\n"..
"\n"..
"Примечание: Нажав на знак \"плюс\"\\, вы попадаете в подразделы этого руководства.\n"..
"\n"..
"\n"..
"\n",
"Эта документация доступна как \"в игре\" (план строительства блоков)\\, так и на GitHub в виде MD-файлов.\n"..
"\n"..
" - Ссылка: https://github.com/joe7575/techage/wiki\n"..
"\n"..
"Строительные планы (схемы) для постройки машин и картинки доступны только в игре.\n"..
"\n"..
"В Tech Age вам придется начинать все сначала. Вы можете создавать блоки TA2 только с помощью предметов из TA1\\, для TA3 вам нужны результаты из TA2 и т.д.\n"..
"\n"..
"В TA2 машины работают только с приводными осями.\n"..
"\n"..
"В TA3 машины работают от электричества и имеют коммуникационный интерфейс для дистанционного управления.\n"..
"\n"..
"TA4 добавляет больше источников энергии\\, но также и более сложные логистические задачи (линии электропередач\\, транспортировка изделий).\n"..
"\n",
"С версии 1.0 (07/17/2021) изменилось следующее:\n"..
"\n"..
" - Изменился алгоритм расчета распределения энергии. Это делает системы хранения энергии более важными. Они компенсируют колебания\\, что важно для больших сетей с несколькими генераторами.\n"..
" - По этой причине TA2 обзавелась собственным накопителем энергии.\n"..
" - Аккумуляторные блоки из TA3 также служат в качестве накопителей энергии. Их функциональность была соответствующим образом адаптирована.\n"..
" - Система хранения TA4 была пересмотрена. Теплообменник получил новый номер\\, поскольку его функциональность была перенесена с нижнего на средний блок. Если они управлялись дистанционно\\, номер узла должен быть адаптирован. Генераторы больше не имеют собственного меню\\, а включаются/выключаются только через теплообменник. Теплообменник и генератор теперь должны быть подключены к одной сети!\n"..
" - Несколько электросетей теперь могут быть соединены через трансформаторные блоки TA4.\n"..
" - Также появился блок счетчиков электроэнергии TA4 для подсетей.\n"..
" - Как минимум один блок аккумуляторов или система хранения в каждой сети\n"..
"\n",
"Многие другие блоки получили незначительные изменения. Поэтому возможно\\, что машины или системы не будут запускаться сразу после переключения. В случае неполадок помогут следующие советы:\n"..
"\n"..
" - выключите и снова включите машины\n"..
" - снимите блок силовых кабелей и установите его на место\n"..
" - полностью снимите блок и установите его на место\n"..
"\n",
"Techage добавляет в игру несколько новых предметов:\n"..
"\n"..
" - Меридий - сплав для производства светящихся инструментов в TA1\n"..
" - Усмий - руда\\, которая добывается в TA2 и необходима для TA3\n"..
" - Бабориум - металл\\, необходимый для рецептов в TA3\n"..
" - Нефть - необходима в TA3\n"..
" - Боксит - алюминиевая руда\\, которая необходима в TA4 для производства алюминия\n"..
" - Базальт - возникает при соприкосновении воды и лав\n"..
"\n",
"Меридий - это сплав стали и кристаллов мезекона. Слитки меридиума можно изготовить с помощью угольной горелки из стали и кристаллов мезекона. Меридий светится в темноте. Инструменты из меридиума также светятся и поэтому очень полезны при подземной добыче.\n"..
"\n"..
"\n"..
"\n",
"Усмий встречается только в виде самородков и может быть получен только при промывке гравия с помощью системы промывки гравия TA2/TA3.\n"..
"\n"..
"\n"..
"\n",
"Барборий можно получить только при подземной добыче. Это вещество можно найти только на глубине от -250 до -340 метров.\n"..
"\n"..
"Бабориум можно переплавить только в промышленной печи TA3.\n"..
"\n"..
"\n"..
"\n",
"Нефть можно найти только с помощью Исследователя и добыть с помощью соответствующих машин TA3. См. TA3.\n"..
"\n"..
"\n"..
"\n",
"Боксит можно добыть только в подземной шахте. Боксит можно найти только в камне на высоте от -50 до -500 метров.\n"..
"Он необходим для производства алюминия\\, который в основном используется в TA4.\n"..
"\n"..
"\n"..
"\n",
"Базальт образуется только при соединении лавы и воды.\n"..
"Лучше всего создать систему\\, в которой лава и вода будут течь вместе.\n"..
"Базальт образуется там\\, где встречаются обе жидкости.\n"..
"Вы можете создать автоматический генератор базальта с помощью Sign Bot.\n"..
"\n"..
"\n"..
"\n",
" - 28.09.2019: Solar system added\n"..
" - 05.10.2019: Data on the solar system and description of the inverter and the power terminal changed\n"..
" - 18.11.2019: Chapter for ores\\, reactor\\, aluminum\\, silo\\, bauxite\\, furnace heating\\, gravel washing system added\n"..
" - 22.02.2020: corrections and chapters on the update\n"..
" - 29.02.2020: ICTA controller added and further corrections\n"..
" - 14.03.2020 Lua controller added and further corrections\n"..
" - 22.03.2020 More TA4 blocks added\n"..
"\n",
},
images = {
"techage_ta4",
"",
"",
"",
"",
"meridium",
"usmium",
"baborium",
"oil",
"bauxite",
"basalt",
"",
},
plans = {
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
}
}

View File

@ -0,0 +1,170 @@
return {
titles = {
"1,TA1: Эпоха железа",
"2,Углевыжигательная куча (древесноугольная печь)",
"2,Плавильная печь",
"2,Водяная мельница",
"3,TA1 мельница",
"3,TA1 шлюзовой затвор",
"3,TA1 шлюзовой рычаг",
"3,TA1 яблоневая доска",
"3,TA1 яблоневая мельничная доска",
"2,Руды и инструменты",
"3,Молот",
"3,Гравийное сито",
"3,Хоппер",
"3,Просеивание гравия и хоппер",
"3,Меридий",
},
texts = {
"TA1 - про добычу необходимейших руд и изготовление древесного угля простейшими инструментами и оборудованием\\, чтобы ТА2 машины можно было построить и запустить.\n"..
"\n"..
"Конечно\\, для Эпохи железа потребуется также железо и не только сталь\\, как в ванильной \"Minetest Game\". В результате\\, некоторые рецепты были изменены, и теперь сперва нужно произвести железо, а сталь - позже.\n"..
"\n"..
"Долговечность инструментов зависит от эпохи и поэтому не соответствует оригинальной игре Майнтест.\n"..
"Долговечность / прочность топора\\, например:\n"..
"\n"..
" - Бронза: 20\n"..
" - Сталь: 30\n"..
"\n"..
"\n"..
"\n",
"Для изготовления древесного угля потребуется Углевыжигательная Куча. Древесный уголь используется в плавильной печи\\, но также\\, например\\, в TA2 для парового двигателя.\n"..
"\n"..
"Для жжения угля понадобится:\n"..
"\n"..
" - блок-поджигатель ('techage:lighter')\n"..
" - 26 деревянный блоков досок, составленных в кучу. Тип дерева не важен.\n"..
" - Земля для покрытия кучи дерева.\n"..
" - Огниво (техническое наименование: 'fire:flint_and_steel') чтобы зажечь блок-поджигатель\n"..
"\n"..
"Инструкция по строительству (см. также чертёж):\n"..
"\n"..
" - Соорудите площадку из земли 5х5\n"..
" - Поставьте 7 досок вокруг поджигателя но оставьте отверстие для доступа к поджигателю\n"..
" - Постройте ещё 2 слоя досок вверх\\, формируя деревянный куб 3х3х3\n"..
" - Покройте всё слоем земли, формируя земляной куб 5х5х5\\, но оставьте отверстие для доступа к поджигателю\n"..
" - Воспламените поджигатель и немедленно закройте отверстие блоком досок и блоком земли.\n"..
" - Если всё сделано верно\\, углесжигательная куча начнёт пускать дым вверх через несколько секунд\n"..
" - Вскрывайте кучу только тогда, когда дым исчезнет! (примерно 20 минут)\n"..
"\n"..
"Теперь можно забрать 9 блоков древесного угля и заполнить Кучу снова.\n"..
"\n"..
"\n"..
"\n",
"Плавильная печь понадобится\\, например\\, чтобы выплавлять железо и другие руды в плавильном тигеле. Для разных рецептов требуется разная температура. Чем выше плавильная башня\\, тем горячее пламя. Высота 11 блоков приемлема для всех рецептов\\, однако и потребляет больше всего древесного угля.\n"..
"\n"..
"Инструкция по строительству (см. также чертёж):\n"..
"\n"..
" - Соорудите каменную башню (булыжник) с основанием 3х3 высотой 7-11 блоков.\n"..
" - Оставьте отверстие внизу с одной стороны.\n"..
" - Поместите поджигатель в отверстие.\n"..
" - Заполните башню древесным углем до краёв, сбрасывая древесный уголь сверху в шахту.\n"..
" - Воспламените поджигатель через отверстие.\n"..
" - Установите плавильный тигель наверху башни\n(на один блок выше пламени)\n"..
" - Чтобы временно прервать горение\\, закройте отверстие блоком земли\\, например.\n"..
"\n"..
"У плавильного тигеля есть своё меню рецептов и инвентарь, куда помещать руды.\n"..
"\n"..
"\n"..
"\n",
"Мельница используется для перемалывания пшеницы и других зёрен в муку, затем муку испекают в печи для получения хлеба.\n"..
"Мельница крутится силой воды. Для этого\\, к мельнице нужно подвести водный поток каналом.\n"..
"Поток воды и мельничное колесо можно контролировать шлюзом. Шлюз состоит из шлюзового замка и шлюзового рычага.\n"..
"\n"..
"Картинка справа (кликните на \"Plan\") иллюстрирует устройство мельницы. \n"..
"\n"..
"\n"..
"\n",
"Мельница используется для перемалывания пшеницы и других зёрен в муку, затем муку испекают в печи для получения хлеба. Мельница должна быть соединена с мельничным колесом посредством ТА1 оси. Мощности мельничного колеса хватает только для одной мельницы.\n"..
"\n"..
"Автоматизировать мельницу можно Железнодорожным хоппером\\, так что мука\\, например\\, будет перевозиться от мельницы до печи для дальнейшей выпечки.\n"..
"\n"..
"\n"..
"\n",
"Шлюзовой затвор нужно размещать непосредственно рядом с водоёмом или в потоке, на том же уровне что и поверхность воды.\n"..
"Когда шлюзовой затвор открыт\\, вода стекает вниз. Эта вода напирает на мельничное колесо.\\, и крутит мельницу.\n"..
"\n"..
"\n"..
"\n",
"TA1 шлюзовой рычаг размещается на шлюзовом затворе. Затвор можно открывать рычагом (правый клик).\n"..
"\n"..
"\n"..
"\n",
"Блок любого типа дерева для строительства мельничного водоканала. Впрочем\\, можно использовать любой другой материал.\n"..
"\n"..
"\n"..
"\n",
"Блок любого типа дерева для строительства мельничного водоканала. Этот блок оптимально подходит для соединения.\n"..
"со столбами деревянного забора, для строительства опор канала.\n"..
"\n"..
"\n"..
"\n",
"TA1 содержит собственные инструменты, такие как молот и гравийное сито\\, но также можно использовать Железнодорожный хоппер.\n"..
"\n"..
"\n"..
"\n",
"TA1 молот используется для разбивания/выкапывания камня\\, а также для раздробления булыжника в гравий. Молот доступен в разных исполнениях с разными свойствами: бронза\\, сталь\\, латунь и алмаз.\n"..
"\n"..
"\n"..
"\n",
"Руды можно высеивать из гравия через гравийное сито. Для этого\\, кликайте гравием на сито. Просеянный гравий и руды выпадут снизу.\n"..
"\n"..
"Чтобы не стоять возле сита часами\\, процесс можно автоматизировать хоппером.\n"..
"\n"..
"\n"..
"\n",
"Хоппер из мода \"Minecart\" (Вагонетка) задуман для погрузки-разгрузки вагонеток. Хоппер втягивает предметы сверху от себя и выгружает направо от себя. Так\\, располагая хоппер\\, обращайте внимание на направление выгрузки.\n"..
"\n"..
"Хоппер также может вытягивать предметы из коробок (сундуков)\\, при условии что коробка расположена рядом или над хоппером.\n"..
"\n"..
"Хоппер также может помещать предметы в коробки, при условии что коробка расположена рядом с хоппером.\n"..
"\n"..
"\n"..
"\n",
"С помощью двух коробок\\, двух хопперов и гравийного сита\\, процесс просеивания может быть автоматизирован. Чертёж справа иллюстрирует механизм.\n"..
"\n"..
"Убедитесь, что коробки \"chest_locked\"\\ (защищённые), иначе кто-нибудь похитит ценные руды из верхней коробки.\n"..
"\n"..
"\n"..
"\n",
"TA1 отркрывает собственный сплав - меридий. Меридиевые слитки изготавливаются в плавильном тигеле из стали и месекон кристаллов. Меридий светится в темноте. Меридиевые инструменты тоже светятся, становясь хорошей поддержкой в подземных раскопках.\n"..
"\n"..
"\n"..
"\n",
},
images = {
"techage_ta1",
"",
"",
"",
"",
"ta1_sluice",
"ta1_sluice_handle",
"ta1_board1",
"ta1_board2",
"ta1_gravelsieve",
"hammer",
"ta1_gravelsieve",
"ta1_hopper",
"",
"meridium",
},
plans = {
"",
"coalpile",
"coalburner",
"watermill1",
"watermill2",
"",
"",
"",
"",
"",
"",
"",
"",
"hoppersieve",
"",
}
}

View File

@ -0,0 +1,308 @@
return {
titles = {
"1,TA2: Эпоха пара",
"2,Паровой двигатель",
"3,TA2 Топка",
"3,TA2 Котел",
"3,TA2 Поршень",
"3,TA2 Маховик",
"3,TA2 Паровые трубы",
"3,TA2 Приводная ось / TA2 редуктор",
"3,TA2 Энергогенератор",
"2,TA2 Энергохранилище",
"3,TA2 Лебедка",
"3,TA2 Ящик-груз",
"3,TA2 Муфта",
"2,Двигаем и сортируем предметы",
"3,ТА труба",
"3,Трубосборник",
"3,TA2 Толкатель",
"3,TA2 Распределитель",
"2,Промывание гравия",
"3,TA2 Гравийная мойка",
"2,Копаем камень\\, дробим и просеиваем",
"3,TA2 Карьер",
"3,TA2 Дробилка",
"3,TA2 Гравийное сито",
"2,Производим предметы",
"3,TA2 Автокрафтер",
"3,TA2 Электронная фабрика",
"2,Другие блоки",
"3,TA2 Заборник жидкостей",
"3,TA2 Защищенный сундук",
"3,ТА Загрузочный блок",
},
texts = {
"TA2 - про сооружение и запуск первых рудоперерабатывающих машин. Некоторые машины приводятся в движение приводными осями. Для этого\\, нужно построить паровой двигатель и разогреть его углем или древесным углем.\n"..
"\n"..
"В TA2 ещё есть гравийная мойка, которая применяется для намывания редких руд, в частности усмиевых самородков. Эти самородки понадобятся в будущих рецептах.\n"..
"\n"..
"\n"..
"\n",
"Паровой двигатель состоит из нескольких блоков и должен быть собран так, как показано на чертеже справа. Понадобятся блоки ТА2 Топка\\, TA2 котёл навершие\\, TA2 котёл основание\\, TA2 поршень\\, TA2 маховик и паровые трубы.\n"..
"\n"..
"Кроме того\\, приводные оси и редуктор(ы) необходимы для изменения направления. Маховик должен быть соединен со всеми машинами, которые требуют привода от осей.\n"..
"\n"..
"Всегда обращайте внимание на направление ориентации блока, который размещаете:\n"..
"\n"..
" - Поршень слева\\, маховик справа\n"..
" - Подключайте паровые трубы в местах, где есть соответствующее отверстие\n"..
" - Приводная ось к маховику только справа\n"..
" - Для всех машин\\, приводная ось может быть присоединена к любой стороне\\, не занятой другой функцией\\, такой как отверстия ВХОД (IN) и ВЫХОД (OUT) у дробилки и сита.\n"..
"\n"..
"Котёл должен быть заполнен водой. Наливайте до 10 вёдер.\n"..
"Топка должна быть заполнена углём или древесным углём.\n"..
"Когда вода достаточно нагрелась (градусник наверху)\\, паровой двигатель начнет вращать маховик.\n"..
"\n"..
"Мощность парового двигателя 25 кю (ku, kilo unit, условных килоединиц)\\, он может питать несколько машин одновременно.\n"..
"\n"..
"\n"..
"\n",
"Часть парового двигателя.\n"..
"\n"..
"Топка должна быть заполнена углём или древесным углём. Время горения зависит от мощности, вырабатываемой паровым двигателем. Уголь горит 32 с, древесный уголь 86 с при полной нагрузке.\n"..
"\n"..
"\n"..
"\n",
"Часть парового двигателя. Должен быть заполнен водой. Кликать на котёл ведром с водой. Если вода закончится или температура упадёт слишком низко\\, паровой двигатель отключится.\n"..
"\n"..
"\n"..
"\n",
"Часть парового двигателя.\n"..
"\n"..
"\n"..
"\n",
"Приводная часть парового двигателя. Маховик должен быть соединен с машинами через приводные оси.\n"..
"\n"..
"\n"..
"\n",
"Часть парового двигателя. Котел должен быть соединен с поршнем посредством паровых труб. Паровая труба не может иметь ответвлений\\, максимальная длина 12 м (блоков).\n"..
"\n"..
"\n"..
"\n",
"Приводные оси нужны для передачи мощности от парового двигателя к остальным машинам. Максимальная длина приводной оси 10 блоков. С помощью ТА2 редукторов\\, можно увеличивать расстояния\\, а также организовать ветвления и повороты.\n"..
"\n"..
"\n"..
"\n",
"TA2 Электрогенератор требуется для активации ламп или других потребителей на паровом двигателе. ТА2 Электрогенератор должен быть присоединен к приводной оси с одной стороны, тогда он выдаёт электричество с другой стороны.\n"..
"\n"..
"Если Электрогенератор не получает достаточно мощности\\, он переходит в состояние ошибки и должен быть повторно активирован правым кликом.\n"..
"\n"..
"Электрогенератор потребляет максимум 25 кю с приводной оси и выдаёт на другой стороне максимум 24 кю в виде электричества. Одна кю потребляется на преобразование.\n"..
"\n"..
"\n"..
"\n",
"Для более крупных систем с несколькими паровыми двигателями или множеством машин\\, рекомендуется энергохранилище. Энергохранилище в ТА2 работает от позиционной энергии. Для этого\\, балласт (камни\\, гравий\\, песок) подтягивается вверх в сундуке кабельной лебёдкой. Если в осевой сети избыток энергии\\, сундук тянется вверх. Если потребление энергии превышает возможости парового двигателя\\, хранилище выпускает энергию, и грузовой сундук движется вниз. \n"..
"Энергохранилище состоит из нескольких блоков и собирается как показано на чертеже справа. \n"..
"Чтобы получить максимальную ёмкость хранения\\, сундук должен быть польностью заполнен грузом, а мачта вместе с двумя редукторами должна быть 12 блоков в высоту. Меньшие конструкции допускаются.\n"..
"\n"..
"\n"..
"\n",
"Лебедка должна быть подключена к редуктору и может поглощать избыточную энергию и, таким образом, подтягивать ящик-груз вверх. \n"..
"При сборке лебедки\\ убедитесь, что стрелка в верхней части блока указывает на редуктор.\n"..
"Максимальная длина веревки составляет 10 блоков. \n"..
"\n"..
"\n"..
"\n",
"Этот сундук должен быть размещён под лебедкой на расстоянии до 10 блоков и заполнен булыжником,\\, гравием или песком. Если минимальный вес стака (99+ штук) достигнут и имеется избыточная энергия\\, коробка автоматически присоединится к лебедке тросом и будет утянута вверх. \n"..
"\n"..
"\n"..
"\n",
"С помощью муфты\\ можно отделить оси и машины от накопителя энергии. Это означает, что оси после сцепления останавливаются, а системы машин могут быть восстановлены. При сборке сцепления\\ убедитесь, что стрелка на верхней части блока направлена на накопитель энергии.\n"..
"\n"..
"\n"..
"\n",
"Для транспортировки предметов от одного пункта переработки к другому\\, использудтся толкатели и трубы. См. план.\n"..
"\n"..
"\n"..
"\n",
"Две машины можно соединить толкателем и трубой. У труб нет ответвлений. Максимальная длина 200 м (блоков).\n"..
"\n"..
"Альтернативно\\, трубы можно размещать с применением клавиши Shift. Это позволитs\\, например\\, уложить трубы параллельно без их случайного соединения.\n"..
"\n"..
"Пропускная способность трубы неограниченна, ограничение имеет только толкатель.\n"..
"\n"..
"\n"..
"\n",
"Несколько труб можно собрать в одну посредством концентратора. Стрелкой обозначено направление, в котором будут передаваться предметы.\n"..
"\n"..
"\n"..
"\n",
"Толкатель способен вынимать предметы из сундуков или из машине и толкать их в другие сундуки или машины. Иными словами\\, между двумя блоками с инвентарем должен один и только один толкатель. Несколько толкателей в ряд поставить нельзя.\n"..
"В обратном направлении\\, однако\\, толькатель проницаем для предметов\\, так что сундук может заполняться через трубу и в то же время обучен (чё?).\n"..
"\n"..
"Толкатель переходит в режим \"standby\" ожидания, если нет предметов для толкания. Если выход заблокирован или инвентарь получателя переполнен\\, толкатель переходит в состояние \"blocked\" заблокирован. Толкатель автоматически выходит из обоих состояний через несколько секунд после изменения обстановки.\n"..
"\n"..
"Перерабатывающая мощность ТА2 толкателя составляет 2 предмета каждые 2 с.\n"..
"\n"..
"\n"..
"\n",
"Распределитель может передавать предметы из своего инвентаря, сортируя их по направлениям, до 4 направлений. Для этого\\, распределитель нужно соответственно сконфигурировать.\n"..
"\n"..
"У распределителя в меню 4 фильтра разных цветов.\\, соответствующих 4 выходам. Если выход будет использоваться\\, соответствующий фильтр нужно активировать галочкой \"on\". Все предметы, на которые этот фильтр настроен, двинутся через начначенный выход. Если фильтр активирован без назначенных предметов\\, мы говорим о несконфигурированном \"unconfigured\"\\, открытом выходе.\n"..
"\n"..
"*Внимание: Распределитель является толкателем на своих выходных сторонах. Поэтому\\, никогда не вытягивайте предметы из распределителя толкателем!*\n"..
"\n"..
"Для несконфигурированного выхода есть два режима работы:\n"..
"\n"..
"1) Выпускать все предметы, которые не могут выйти через другие стороны\\, даже если они заблокированы.\n"..
"\n"..
"2) Выпускать только те предметы, которые не были сконфигурированы для какого-либо из остальных фильтров.\n"..
"\n"..
"В первом случае\\, все предметы всегда пересылаются и распределитель не наполняется. Во втором случае\\, предметы удерживаются и распределитель может переполниться и заблокироваться.\n"..
"\n"..
"Операционный режим устанавливается галочкой в \"blocking mode\".\n"..
"\n"..
"Производительность ТА2 распределителя составляет 4 штуки каждые 2 секунды\\, он пытается распределить 4 штуки в открытые выходы.\n"..
"\n"..
"Если один предмет сконфигурирован несколько раз в один фильтр\\, то соответственно увеличится долгосрочный темп распределения.\n"..
"\n"..
"Обратите вннимание: распределение это вероятностный процесс. Это значит, что темп распределения соблюдается не в точности\\, но сохраняется при длительной работе.\n"..
"\n"..
"Максимальный размер стека в фильтре - 12\\; в сумме\\, можно сконфигурировать не более 36 позиций.\n"..
"\n"..
"\n"..
"\n",
"Гравийная мойка это достаточно сложная машина предназначенная для вымывания усмиевых самородоков из просеянного гравия. ТА2 мойка с осевым приводом\\, хопром\\, сундуком и текущей водой требуются для запуска.\n"..
"\n"..
"Структура слева направо (также см. план):\n"..
"\n"..
" - Блок земли\\, сверху него источник воды\\, с трех сторон окружен блоками, например стекла\n"..
" - следом гравийная мойка\\, по желанию с трубными соединениями для поступления и удаления гравия\n"..
" - затем хопер с сундуком\n"..
"\n"..
"Вся конструкция окружена блоками стекла\\, так что вода течет над мойкой и хопром и вымытые самородки собираются в хопер.\n"..
"\n"..
"\n"..
"\n",
"Гравийнай мойка вымывает усмий и медь из гравия который был ранее просеян\\, предполагая что это обеспечивается водными потоком.\n"..
"\n"..
"Правильную работоспособность мойки можно проверить палками, помещенными в инвентарь мойки. Они должны поочередно вымываться и собираться в хопер.\n"..
"\n"..
"Производительность гравийной мойки 1 гравий каждые 2 секунды. Потребление энергии 2 ku.\n"..
"\n"..
"\n"..
"\n",
"Дробление\\, перемалывание и просеивание булыжника применяется для извлечения руд. Просеянный гравий также может быть использован в других процессах. Карьер\\, дробилка и сито требуют привода и поэтому ставятся поблизости от парового двигателя.\n"..
"\n"..
"\n"..
"\n",
"Карьер используют для извлечения камней и иных материалов из-под земли. Карьер копает шахту размером 5х5 блоков. Глубину можно настраивать.\n"..
"Производительность карьера 1 блок каждые 4 секунды. Потребляет 10 ku энергии. Максимальная глубина 20 метров. Для больших глубин переходите к ТА3 / ТА4.\n"..
"\n"..
"\n"..
"\n",
"Дробилка может дробить различные породы\\, а также дерево и некторые другие предметы.\n"..
"Производительность 1 штука каждые 4 секунды. Потребление 4 ku.\n"..
"\n"..
"\n"..
"\n",
"Гравийное сито может просеивать гравий для извлечения руд. На выходе также образуется просеянный гравий \"sieved gravel\"\\, который можно просеивать повторно.\n"..
"Производительность гравийного сита 1 штука каждые 4 секунды. Потребление 3 ku.\n"..
"\n"..
"\n"..
"\n",
"ТА2 машины могут не только извлекать руды\\, но также и производить объекты.\n"..
"\n",
"Автокрафтер используется для автоматического производства изделий. Все что игрок может создать на решетке крафта \"Crafting Grid\" может быть выполнено автокрафтером. Для этого\\, рецепт нужно ввести в меню автокрафтера и вложить нужные ингредиенты.\n"..
"\n"..
"Ингредиенты и произведенные изделия можно транспортировать внутрь и наружу автокрафтера через трубы и толкатели.\n"..
"\n"..
"Производительность автокрафтера 1 предмет каждые 4 секунды. Потребление 4 ku.\n"..
"\n"..
"\n"..
"\n",
"Электронная фабрика это отдельная машина которая используется только для производства радиоламп. Радиолампы требуются для ТА3 машин и блоков.\n"..
"\n"..
"Производительность электронной фабрики 1 радиолампа каждые 6 секунд. Потребление 8 ku.\n"..
"\n"..
"\n"..
"\n",
"",
"Некоторые рецепты требуют воды. Такие рецепты также могут быть обработаны автокрафтером\\, вода должна поступать в ведрах. Для этого нужен водозаборник. В него нужно поместить пустые ведра, а его - в воду.\n"..
"\n"..
"Производительность водозаборника 1 ведро каждые 8 секунд. Потребление 3 ku.\n"..
"\n"..
"\n"..
"\n",
"Защищенный сундук могут использовать только игроки с правами строительства на этой территории\\, т.е. с правами привата. Неважно, кто поставил сундук.\n"..
"\n"..
"\n"..
"\n",
"Майнтест делит карту на блоки - так называемые чанки. Это кубы с гранью 16 блоков. Такой чанк всегда загружается сервером целиком\\, но загружаются только блоки вокруг игрока, примерно 2-3 чанка во всех направлениях. В направлении взгляда игрока\\, загружается больше чанков. Только эта часть мира активна и только в ней растения растут и машины работают.\n"..
"\n"..
"Блоком принудительной загрузки (БПЗ) вы можете заставить чанк, в котором размещен такой блок, оставаться активным все время пока вы находитесь на сервере. Если все ваши фермы и фабрики покрыты БлокамиПЗ\\, всё работает непрерывно.\n"..
"\n"..
"Блоки карты - чанки предопределены в своих координатах\\, например (0\\,0\\,0) до (15\\,15\\,15)\\, или (16\\,16\\,16) до (31\\,31\\,31).\n"..
"БлокПЗ можно ставить в любом месте чанка\\, тогда как положение чанка всегда неизменно.\n"..
"\n"..
"\n"..
"\n",
},
images = {
"techage_ta2",
"",
"ta2_firebox",
"ta2_boiler",
"ta2_cylinder",
"ta2_flywheel",
"ta2_steampipe",
"ta2_driveaxle",
"ta2_generator",
"",
"ta2_winch",
"ta2_weight_chest",
"techage:ta2_clutch_off",
"",
"tube",
"concentrator",
"ta2_pusher",
"ta2_distributor",
"",
"ta2_rinser",
"ta2_grinder",
"ta2_quarry",
"ta2_grinder",
"ta2_gravelsieve",
"",
"ta2_autocrafter",
"ta2_electronicfab",
"",
"ta2_liquidsampler",
"ta2_chest",
"ta2_forceload",
},
plans = {
"",
"steamengine",
"",
"",
"",
"",
"",
"",
"",
"ta2_storage",
"",
"",
"",
"itemtransport",
"",
"",
"",
"",
"gravelrinser",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
}
}

View File

@ -0,0 +1,931 @@
return {
titles = {
"1,TA3: Эпоха нефти",
"2,Угольная электростанция / Нефтяная электростанция",
"3,TA3 топка электростанции",
"3,TA3 нефтяная топка электростанции",
"3,TA3 котел основание / навершие",
"3,TA3 турбина",
"3,TA3 генератор",
"3,TA3 охладитель",
"2,Электрический ток",
"3,Значимость хранилищ энергии",
"3,TA Электрический кабель",
"3,TA Электрическая распред.коробка",
"3,TA Электролиния",
"3,TA Электростолб",
"3,TA Электростолб навершие",
"3,TA Электростолб навершие 2",
"3,TA Электрический переключатель",
"3,TA Электрический переключатель малый",
"3,TA Электрощиток",
"3,TA3 Малый электрогенератор",
"3,TA3 Батарейный пакет",
"3,TA3 Электотерминал",
"3,TA3 Электромотор",
"2,TA3 Промышленная печь",
"3,TA3 Нефтяная печная топка",
"3,TA3 Печь навершие",
"3,TA3 Нагнетатель",
"2,Жидкости",
"3,TA3 Цистерна",
"3,TA3 Насос",
"3,TA Жидкостный нагнетатель",
"3,TA4 Труба",
"3,TA3 Трубно-стеновой проходной блок",
"3,TA Клапана",
"2,Нефтедобыча",
"3,TA3 Нефтеразведчик",
"3,TA3 Нефтяная буровая вышка",
"3,TA3 Скважинный насос",
"3,TA3 Буровая труба",
"3,Нефтяная цистерна",
"2,Транспортировка нефти",
"3,Транспортировка нефти железнодорожными цистернами",
"3,Транспортировка нефти бочками на вагонетках",
"3,Железнодорожная цистерна",
"3,Вагонетки-сундуки",
"2,Нефтепереработка",
"3,Ректификационная колонна",
"4,Ребойлер",
"2,Логика / Блоки-переключатели",
"3,TA3 Кнопка / Переключатель",
"3,TA3 Command Converter",
"3,TA3 Flip-Flop",
"3,TA3 Логический блок",
"3,TA3 Повторитель",
"3,TA3 Секвенсер",
"3,TA3 Таймер",
"3,TA3 Терминал",
"3,ТА цветная лампа",
"3,Блоки дверей/ворот",
"3,TA3 контроллер дверей",
"3,TA3 контроллер дверей II",
"3,TA3 Звуковой блок",
"3,TA3 Преобразователь месекон",
"2,Датчики",
"3,TA3 Датчик",
"3,TA3 Определитель вагонетки",
"3,TA3 Определитель блока",
"3,TA3 Определитель игрока",
"3,TA3 Определитель света",
"2,TA3 Машины",
"3,TA3 Толкатель",
"3,TA3 Распределитель",
"3,TA3 Автокрафтер",
"3,TA3 Электронная фабрика",
"3,TA3 Карьер",
"3,TA3 Гравийное сито",
"3,TA3 Гравийная мойка",
"3,TA3 Дробилка",
"3,TA3 Внедритель",
"2,Инструменты",
"3,ТА инфо-инструмент",
"3,ТА программатор",
"3,ТА шпатель / Шпатель",
"3,TA3 буротрубный ключ",
"3,ТА отвертка",
"3,TechAge Монтажный инструмент",
},
texts = {
"В ТА3 происходит замещение паровых машин более мощными машинами с электроприводом.\n"..
"\n"..
"Для этого\\, нужно построить угольную электростанции и генераторы. Постепенно вы обнаружите, что потребности в электроэнергии могут быть покрыты только электростанциями на нефтепродуктах. Отправляемся на поиски нефти. Буровые вышки и нефтяные насосы выдадут нефть. Железные дороги будут использованы для доставки нефти на электростанции.\n"..
"\n"..
"Индустриальная эпоха в разгаре.\n"..
"\n"..
"\n"..
"\n",
"Угольная электростанция состоит из нескольких блоков и собирается как показано на чертеже справа. Требуемые блоки: ТА3 топка электростанции\\, TA3 навершие котла\\, TA3 основа котла\\, TA3 турбина\\, TA3 генератор и TA3 теплообменник.\n"..
"\n"..
"Котел нужно заполнить водой в количестве до 10 ведер. Клик левой кнопкой мыши ведром на котел.\n"..
"Топку нужно заполнить углем или ТА древесным углем. Прим. переводчика: Древесный уголь из других модов не подходит!\n"..
"Как только вода вскипит\\, генератор можно запускать.\n"..
"\n"..
"Альтернативная топка\\, которой заменить угольную - нефтяная.\n"..
"Нефть можно подавать в топку с помощью насоса и нефтяной трубы.\n"..
"\n"..
"Электростанция выдает мощность до 80 ku.\n"..
"\n"..
"\n"..
"\n",
"Часть электростанции.\n"..
"Топку нужно заполнить углем или ТА древесным углем. Длительность горения зависит от мощности потребителей электростанции. Уголь сгорает 20 секунд, древесный уголь 60 секунд под полной нагрузкой. Под частичной загрузкой пропорционально дольше (50% нагрузка = вдвое дольше).\n"..
"\n"..
"\n"..
"\n",
"Часть электростанции.\n"..
"\n"..
"Нефтяная топка может быть наполнена сырой нефтью\\, печным топливом\\, нафтой или бензином. Длительность горения зависит от мощности потребителей электростанции. Под полной нагрузкой\\, сырая нефть сгорает 15 секунд\\, печное топливо 20 секунд\\, нафта 22 секунды и бензин 25 секунд\n"..
"\n"..
"Под частичной загрузкой пропорционально дольше (50% нагрузка = вдвое дольше).\n"..
"\n"..
"Нефтяная топка вмещает только 50 единиц топлива. Поэтому рекомендуется дополнительный топливный бак и насос.\n"..
"\n"..
"\n"..
"\n",
"Часть электростанции. Нужно заполнять водой. Если воды больше нет или температура снизилась\\, электростанция отключится.\n"..
"\n"..
"Расход воды в котле TA3 намного меньше, чем в паровом двигателе, благодаря замкнутому паровому контуру.\n"..
"В паровом двигателе\\, часть воды теряется в виде пара при каждом ходе поршня.\n"..
"\n"..
"\n"..
"\n",
"Турбина - часть электростанции. Должна быть размещена рядом с генератором и соединена с котлом и теплообменником паровыми трубами, как показано на чертеже.\n"..
"\n"..
"\n"..
"\n",
"Генератор использутся для выработки электричества. Должен быть соединен с машинами-потребителями электропроводами и электрораспределительными коробками.\n"..
"\n"..
"\n"..
"\n",
"Нужен для охлаждения пара выходящего из турбины. Должен быть присоединен к котлу и к турбине паровыми трубами, как показано на чертеже.\n"..
"\n"..
"\n"..
"\n",
"В ТА3 (и ТА4) машины приводятся в движение электричеством. Для этого\\, машины\\, хранилища\\, и генераторы должны быть соединены силовыми кабелями.\n"..
"В ТА3 есть 2 типа силовых кабелей:\n"..
"\n"..
" - Изолированные кабели (ТА силовые кабели) для местной проводки на этажах зданий. Эти кабели можно прятать внутрь строительных блоков - заштукатуривать \"plastered\" шпателем.\n"..
" - Магистральные линии (ТА силовые линии) для уличной проводки на дальние дистанции. Эти кабели защищены и не могут быть удалены другими игроками.\n"..
"\n"..
"Несколько потребителей\\, хранилищ\\, и генераторов могут работать совместно в силовой сети. Сети настраиваются распределительными коробками.\n"..
"Если поступает недостаточно электричества\\, потребители начинают отключаться.\n"..
"В такой ситуации\\, важно понимать принцип действия Блока принудительной загрузки\\, поскольку генераторы\\, например\\, поставляют электричество только когда чанк их размещения загружен. Загрузку можно гарантировать размещением БлокаПЗ.\n"..
"\n"..
"In TA4 there is also a cable for the solar system.\n"..
"\n"..
"\n"..
"\n",
"Storage systems in the power grid fulfill two tasks:\n"..
"\n"..
" - To cope with peaks in demand: All generators always deliver just as much power as is needed. However\\, if consumers are switched on/off or there are fluctuations in demand for other reasons\\, consumers can fail for a short time. To prevent this\\, there should always be at least one battery block in every network. This serves as a buffer and compensates for these fluctuations in the seconds range.\n"..
" - To store regenerative energy: Solar and wind are not available 24 hours a day. So that the power supply does not fail when no electricity is produced\\, one or more storage systems must be installed in the network. Alternatively\\, the gaps can also be bridged with oil/coal electricity.\n"..
"\n"..
"A storage system indicates its capacity in kud\\, i.e. ku per day. For example\\, a storage system with 100 kud delivers 100 ku for one game day\\, or 10 ku for 10 game days.\n"..
"\n"..
"All TA3/TA4 energy sources have adjustable charging characteristics. By default this is set to \"80% - 100%\". This means that when the storage system is 80% full\\, the output is reduced further and further until it switches off completely at 100%. If electricity is required in the network\\, 100% will never be reached\\, since the power of the generator has at some point dropped to the electricity demand in the network and the storage system is no longer charged\\, but only the consumers are served.\n"..
"\n"..
"This has several advantages:\n"..
"\n"..
" - The charging characteristics are adjustable. This means\\, for example\\, that oil/coal energy sources can be reduced at 60% and regenerative energy sources only at 80%. This means that oil/coal is only burned if there are not enough renewable energy sources available.\n"..
" - Several energy sources can be operated in parallel and are loaded almost evenly\\, because all energy sources work\\, for example\\, up to 80% of the storage system's charging capacity at their full capacity and then reduce their capacity at the same time.\n"..
" - All storage systems in a network form a large buffer. The charging capacity and the filling level of the entire storage system can always be read in percent on every storage system\\, but also on the electricity terminal.\n"..
"\n"..
" \n"..
"\n",
"For local wiring in the floor or in buildings.\n"..
"Branches can be realized using junction boxes. The maximum cable length between machines or junction boxes is 1000 m. A maximum of 1000 nodes can be connected in a power network. All blocks with power connection\\, including junction boxes\\, count as nodes.\n"..
"\n"..
"Since the power cables are not automatically protected\\, the land lines (TA power line) are recommended for longer distances.\n"..
"\n"..
"Power cables can be plastered with the trowel so they can be hidden in the wall or in the floor. All stone\\, clay and other blocks without \"intelligence\" can be used as plastering material. Dirt does not work because dirt can be converted to grass or the like\\, which would destroy the line.\n"..
"\n"..
"For plastering\\, the cable must be clicked on with the trowel. The material with which the cable is to be plastered must be on the far left in the player inventory.\n"..
"The cables can be made visible again by clicking on the block with the trowel.\n"..
"\n"..
"In addition to cables\\, the TA junction box and the TA power switch box can also be plastered.\n"..
"\n"..
"\n"..
"\n",
"With the junction box\\, electricity can be distributed in up to 6 directions. Junction boxes can also be plastered (hidden) with a trowel and made visible again.\n"..
"\n"..
"\n"..
"\n",
"With the TA power line and the electricity poles\\, reasonably realistic overhead lines can be realized. The power pole heads also serve to protect the power line (protection). A pole must be set every 16 m or less. The protection only applies to the power line and the poles\\, however\\, all other blocks in this area are not protected.\n"..
"\n"..
"\n"..
"\n",
"Used to build electricity poles. Is protected from destruction by the electricity pole head and can only be removed by the owner.\n"..
"\n"..
"\n"..
"\n",
"Has up to four arms and thus allows electricity to be distributed in up to 6 directions.\n"..
"The electricity pole head protects power lines and poles within a radius of 8 m.\n"..
"\n"..
"\n"..
"\n",
"This electricity pole head has two fixed arms and is used for the overhead lines. However\\, it can also transmit current downwards and upwards.\n"..
"The electricity pole head protects power lines and poles within a radius of 8 m.\n"..
"\n"..
"\n"..
"\n",
"The switch can be used to switch the power on and off. To do this\\, the switch must be placed on a power switch box. The power switch box must be connected to the power cable on both sides.\n"..
"\n"..
"\n"..
"\n",
"The switch can be used to switch the power on and off. To do this\\, the switch must be placed on a power switch box. The power switch box must be connected to the power cable on both sides.\n"..
"\n"..
"\n"..
"\n",
"see TA power switch.\n"..
"\n"..
"\n"..
"\n",
"The small power generator runs on gasoline and can be used for small consumers with up to 12 ku. Gasoline burns for 150 s under full load. Correspondingly longer under partial load (50% load = double time).\n"..
"\n"..
"The power generator can only hold 50 units of gasoline. An additional tank and a pump are therefore advisable.\n"..
"\n"..
"\n"..
"\n",
"The accu block (rechargeable battery) is used to store excess energy and automatically delivers power in the event of a power failure (if available).\n"..
"Several accu blocks together form a TA3 energy storage system. Each accu block has a display for the charging state and for the stored load.\n"..
"The values for the entire network are always displayed here. The stored load is displayed in \"kud\" or \"ku-days\" (analogous to kWh) 5 kud thus corresponds\\, for example\\, to 5 ku for a game day (20 min) or 1 ku for 5 game days.\n"..
"\n"..
"A accu block has 3.33 kud\n"..
"\n"..
"\n"..
"\n",
"The power terminal must be connected to the power grid. It shows data from the power grid.\n"..
"\n"..
"The most important figures are displayed in the upper half:\n"..
"\n"..
" - current/maximum generator power\n"..
" - current power consumption of all consumers\n"..
" - current charging current in/from the storage system\n"..
" - Current state of charge of the storage system in percent\n"..
"\n"..
"The number of network blocks is output in the lower half.\n"..
"\n"..
"Additional data on the generators and storage systems can be queried via the \"console\" tab.\n"..
"\n"..
"\n"..
"\n",
"The TA3 Electric Motor is required in order to be able to operate TA2 machines via the power grid. The TA3 Electric Motor converts electricity into axle power.\n"..
"If the electric motor is not supplied with sufficient power\\, it goes into an fault state and must be reactivated with a right-click.\n"..
"\n"..
"The electric motor takes max. 40 ku of electricity and provides on the other side max. 39 ku as axle power. So he consumes one ku for the conversion.\n"..
"\n"..
"\n"..
"\n",
"The TA3 industrial furnace serves as a supplement to normal furnaces. This means that all goods can be produced with \"cooking\" recipes\\, even in an industrial furnace. But there are also special recipes that can only be made in an industrial furnace.\n"..
"The industrial furnace has its own menu for recipe selection. Depending on the goods in the industrial furnace inventory on the left\\, the output product can be selected on the right.\n"..
"\n"..
"The industrial furnace requires electricity (for the booster) and fuel oil / gasoline for the burner. The industrial furnace must be assembled as shown in the plan on the right.\n"..
"\n"..
"See also TA4 heater.\n"..
"\n"..
"\n"..
"\n",
"Is part of the TA3 industrial furnace.\n"..
"\n"..
"The oil burner can be operated with crude oil\\, fuel oil\\, naphtha or gasoline. The burning time is 64 s for crude oil\\, 80 s for fuel oil\\, 90 s for naphtha and 100 s for gasoline.\n"..
"\n"..
"The oil burner can only hold 50 units of fuel. An additional tank and a pump are therefore advisable.\n"..
"\n"..
"\n"..
"\n",
"Is part of the TA3 industrial furnace. See TA3 industrial furnace.\n"..
"\n"..
"\n"..
"\n",
"Is part of the TA3 industrial furnace. See TA3 industrial furnace.\n"..
"\n"..
"\n"..
"\n",
"Liquids such as water or oil can only be pumped through the special pipes and stored in tanks. As with water\\, there are containers (canisters\\, barrels) in which the liquid can be stored and transported.\n"..
"\n"..
"It is also possible to connect several tanks using the yellow pipes and connectors. However\\, the tanks must have the same content and there must always be at least one yellow pipe between the tank\\, pump and distributor pipe.\n"..
"\n"..
"E.g. It is not possible to connect two tanks directly to a distributor pipe.\n"..
"\n"..
"The liquid filler is used to transfer liquids from containers to tanks. The plan shows how canisters or barrels with liquids are pushed into a liquid filler via pushers. The container is emptied in the liquid filler and the liquid is led down into the tank.\n"..
"\n"..
"The liquid filler can also be placed under a tank to empty the tank.\n"..
"\n"..
"\n"..
"\n",
"Liquids can be stored in a tank. A tank can be filled or emptied using a pump. To do this\\, the pump must be connected to the tank via a pipe (yellow pipes).\n"..
"\n"..
"A tank can also be filled or emptied manually by clicking on the tank with a full or empty liquid container (barrel\\, canister). It should be noted that barrels can only be completely filled or emptied. If\\, for example\\, there are less than 10 units in the tank\\, this remainder must be removed with canisters or pumped empty.\n"..
"\n"..
"A TA3 tank can hold 1000 units or 100 barrels of liquid.\n"..
"\n"..
"\n"..
"\n",
"The pump can be used to pump liquids from tanks or containers to other tanks or containers. The pump direction (arrow) must be observed for the pump. The yellow lines and connectors also make it possible to arrange several tanks on each side of the pump. However\\, the tanks must have the same content.\n"..
"\n"..
"The TA3 pump pumps 4 units of liquid every two seconds.\n"..
"\n"..
"Note 1: The pump must not be placed directly next to the tank. There must always be at least a piece of yellow pipe between them.\n"..
"\n"..
"\n"..
"\n",
"The liquid filler is used to transfer liquids between containers and tanks.\n"..
"\n"..
" - If the liquid filler is placed under a tank and empty barrels are put into the liquid filler with a pusher or by hand\\, the contents of the tank are transferred to the barrels and the barrels can be removed from the outlet\n"..
" - If the liquid filler is placed on a tank and if full containers are put into the liquid filler with a pusher or by hand\\, the content is transferred to the tank and the empty containers can be removed on the exit side\n"..
"\n"..
"It should be noted that barrels can only be completely filled or emptied. If\\, for example\\, there are less than 10 units in the tank\\, this remainder must be removed with canisters or pumped empty.\n"..
"\n"..
"\n"..
"\n",
"The yellow pipes are used for the transmission of gas and liquids.\n"..
"The maximum pipe length is 100 m.\n"..
"\n"..
"\n"..
"\n",
"The blocks serve as wall openings for tubes\\, so that no holes remain open.\n"..
"\n"..
"\n"..
"\n",
"There is a valve for the yellow pipes\\, which can be opened and closed with a click of the mouse.\n"..
"The valve can also be controlled via on/off commands.\n"..
"\n"..
"\n"..
"\n",
"In order to run your generators and stoves with oil\\, you must first look for oil and build a derrick and then extract the oil.\n"..
"TA3 oil explorer\\, TA3 oil drilling box and TA3 pump jack are used for this.\n"..
"\n"..
"\n"..
"\n",
"You can search for oil with the oil explorer. To do this\\, place the block on the floor and right-click to start the search. The oil explorer can be used above ground and underground at all depths.\n"..
"The chat output shows you the depth to which oil was searched and how much oil (petroleum) was found.\n"..
"You can click the block multiple times to search for oil in deeper areas. Oil fields range in size from 4\\,000 to 20\\,000 items.\n"..
"\n"..
"If the search was unsuccessful\\, you have to move the block approx. 16 m further.\n"..
"The oil explorer always searches for oil in the whole map block and below\\, in which it was set. A new search in the same map block (16x16 field) therefore makes no sense.\n"..
"\n"..
"If oil is found\\, the location for the derrick is displayed. You have to erect the derrick within the area shown\\, it is best to mark the spot with a sign and protect the entire area against foreign players.\n"..
"\n"..
"Don't give up looking for oil too quickly. If you're unlucky\\, it can take a long time to find an oil well.\n"..
"It also makes no sense to search an area that another player has already searched. The chance of finding oil anywhere is the same for all players.\n"..
"\n"..
"The oil explorer can always be used to search for oil.\n"..
"\n"..
"\n"..
"\n",
"The oil drill box must be placed in the position indicated by the oil explorer. Drilling for oil elsewhere is pointless.\n"..
"If the button on the oil drilling box is clicked\\, the derrick is erected above the box. This takes a few seconds.\n"..
"The oil drilling box has 4 sides\\, at IN the drill pipe has to be delivered via pusher and at OUT the drilling material has to be removed. The oil drilling box must be supplied with power via one of the other two sides.\n"..
"\n"..
"The oil drilling box drills to the oil field (1 meter in 16 s) and requires 16 ku of electricity.\n"..
"Once the oil field has been reached\\, the derrick can be dismantled and the box removed.\n"..
"\n"..
"\n"..
"\n",
"The oil pump (pump-jack) must now be placed in the place of the oil drilling box. The oil pump also requires electricity (16 ku) and supplies one unit of oil every 8 s. The oil must be collected in a tank. To do this\\, the oil pump must be connected to the tank via yellow pipes.\n"..
"Once all the oil has been pumped out\\, the oil pump can also be removed.\n"..
"\n"..
"\n"..
"\n",
"The drill pipe is required for drilling. As many drill pipe items are required as the depth specified for the oil field. The drill pipe is useless after drilling\\, but it also cannot be dismantled and remains in the ground. However\\, there is a tool to remove the drill pipe blocks (-> Tools -> TA3 drill pipe pliers).\n"..
"\n"..
"\n"..
"\n",
"The oil tank is the large version of the TA3 tank (see liquids -> TA3 tank).\n"..
"\n"..
"The large tank can hold 4000 units of oil\\, but also any other type of liquid.\n"..
"\n"..
"\n"..
"\n",
"",
"Tank carts can be used to transport oil from the oil well to the oil processing plant. A tank cart can be filled or emptied directly using pumps. In both cases\\, the yellow pipes must be connected to the tank cart from above.\n"..
"\n"..
"The following steps are necessary:\n"..
"\n"..
" - Place the tank cart in front of the rail bumper block. The bumper block must not yet be programmed with a time so that the tank cart does not start automatically\n"..
" - Connect the tank cart to the pump using yellow pipes\n"..
" - Switch on the pump\n"..
" - Program the bumper with a time (10 - 20 s)\n"..
"\n"..
"This sequence must be observed on both sides (fill / empty).\n"..
"\n"..
"\n"..
"\n",
"Canisters and barrels can be loaded into the Minecarts. To do this\\, the oil must first be transferred to barrels. The oil barrels can be pushed directly into the Minecart with a pusher and tubes (see map). The empty barrels\\, which come back from the unloading station by Minecart\\, can be unloaded using a hopper\\, which is placed under the rail at the stop.\n"..
"\n"..
"It is not possible with the hopper to both *unload the empty barrels and load the full barrels at a stop*. The hopper immediately unloads the full barrels. It is therefore advisable to set up 2 stations on the loading and unloading side and then program the Minecart accordingly using a recording run.\n"..
"\n"..
"The plan shows how the oil can be pumped into a tank and filled into barrels via a liquid filler and loaded into Minecarts.\n"..
"\n"..
"For the Minecarts to start again automatically\\, the bumper blocks must be configured with the station name and waiting time. 5 s are sufficient for unloading. However\\, since the pushers always go into standby for several seconds when there is no Minecart\\, a time of 15 or more seconds must be entered for loading.\n"..
"\n"..
"\n"..
"\n",
"The tank truck is used to transport liquids. Like tanks\\, it can be filled with pumps or emptied. In both cases\\, the yellow tube must be connected to the tank truck from above.\n"..
"\n"..
"200 units fit in the tank truck.\n"..
"\n"..
"\n"..
"\n",
"The chest cart is used to transport items. Like chests\\, it can be filled or emptied using a pusher.\n"..
"\n"..
"4 stacks fit in the chest cart.\n"..
"\n"..
"\n"..
"\n",
"Oil is a mixture of substances and consists of many components. The oil can be broken down into its main components such as bitumen\\, fuel oil\\, naphtha\\, gasoline and propane gas via a distillation tower.\n"..
"Further processing to end products takes place in the chemical reactor.\n"..
"\n"..
"\n"..
"\n",
"The distillation tower must be set up as in the plan at the top right.\n"..
"The bitumen is drained off via the base block. The exit is on the back of the base block (note the direction of the arrow).\n"..
"The \"distillation tower\" blocks with the numbers: 1\\, 2\\, 3\\, 2\\, 3\\, 2\\, 3\\, 4 are placed on this basic block\n"..
"Fuel oil\\, naphtha and gasoline are drained from the openings from bottom to top. The propane gas is caught at the top.\n"..
"All openings on the tower must be connected to tanks.\n"..
"The reboiler must be connected to the \"distillation tower 1\" block.\n"..
"\n"..
"The reboiler needs electricity (not shown in the plan)!\n"..
"\n"..
"\n"..
"\n",
"The reboiler heats the oil to approx. 400 ° C. It largely evaporates and is fed into the distillation tower for cooling.\n"..
"\n"..
"The reboiler requires 14 units of electricity and produces one unit of bitumen\\, fuel oil\\, naphtha\\, gasoline and propane every 16 s.\n"..
"To do this\\, the reboiler must be supplied with oil via a pump.\n"..
"\n"..
"\n"..
"\n",
"In addition to the tubes for goods transport\\, as well as the gas and power pipes\\, there is also a wireless communication level through which blocks can exchange data with each other. No lines have to be drawn for this\\, the connection between transmitter and receiver is only made via the block number. \n"..
"\n"..
"*Info:* A block number is a unique number that is generated by Techage when many Techage blocks are placed. The block number is used for addressing during communication between Techage controllers and machines. All blocks that can participate in this communication show the block number as info text if you fix the block with the mouse cursor.\n"..
"\n"..
"Which commands a block supports can be read out and displayed with the TechAge Info Tool (wrench).\n"..
"The simplest commands supported by almost all blocks are:\n"..
"\n"..
" - 'on' - to turn on block / machine / lamp\n"..
" - 'off' - to turn off the block / machine / lamp\n"..
"\n"..
"With the help of the TA3 Terminal\\, these commands can be tried out very easily. Suppose a signal lamp is number 123.\n"..
"Then with:\n"..
"\n"..
" cmd 123 on\n"..
"\n"..
"the lamp can be turned on and with:\n"..
"\n"..
" cmd 123 off\n"..
"\n"..
"the lamp can be turned off again. These commands must be entered in the input field of the TA3 terminal.\n"..
"\n"..
"Commands such as 'on' and'off' are sent to the recipient without a response coming back. These commands can therefore be sent to several receivers at the same time\\, for example with a push button / switch\\, if several numbers are entered in the input field.\n"..
"\n"..
"A command like 'state' requests the status of a block. The block then sends its status back. This type of confirmed command can only be sent to one recipient at a time.\n"..
"This command can also be tested with the TA3 terminal on a pusher\\, for example:\n"..
"\n"..
" cmd 123 state\n"..
"\n"..
"Possible responses from the pusher are:\n"..
"\n"..
" - 'running' -> I'm working\n"..
" - 'stopped' -> switched off\n"..
" - 'standby' -> nothing to do because source inventory is empty\n"..
" - 'blocked' -> can't do anything because target inventory is full\n"..
"\n"..
"This status and other information is also output when the wrench is clicked on the block.\n"..
"\n"..
"\n"..
"\n",
"The button/switch sends 'on' / 'off' commands to the blocks that have been configured via the numbers.\n"..
"The button/switch can be configured as a button or a switch. If it is configured as a button\\, the time between the 'on' and 'off' commands can be set. With the operating mode \"on button\" only an 'on' and no 'off' command is sent.\n"..
"\n"..
"The checkbox \"public\" can be used to set whether the button can be used by everyone (set) or only by the owner himself (not set).\n"..
"\n"..
"Note: With the programmer\\, block numbers can be easily collected and configured.\n"..
"\n"..
"\n"..
"\n",
"With the TA3 command converter\\, 'on' / 'off' commands can be converted into other commands\\, and forwarding can be prevented or delayed.\n"..
"The number of the target block or the numbers of the target blocks\\, the commands to be sent and the delay times in seconds must be entered. If no command is entered\\, nothing is sent.\n"..
"\n"..
"The numbers can also be programmed using the Techage programmer.\n"..
"\n"..
"\n"..
"\n",
"The TA3 flip-flop changes its state with each received 'on' command. Received 'off' commands are ignored. Depending on the status change\\, 'on' / 'off' commands are sent alternately. The number of the target block or the numbers of the target blocks must be entered. The numbers can also be programmed using the Techage programmer.\n"..
"\n"..
"For example\\, lamps can be switched on and off with the help of buttons.\n"..
"\n"..
"\n"..
"\n",
"The TA3 logic block can be programmed in such a way that one or more input commands are linked to one output command and sent. This block can therefore replace various logic elements such as AND\\, OR\\, NOT\\, XOR etc. \n"..
"Input commands for the logic block are 'on' /'off' commands.\n"..
"Input commands are referenced via the number\\, e.g. '1234' for the command from the sender with the number 1234. \n"..
"The same applies to output commands.\n"..
"\n"..
"A rule is structured as follows: \n"..
"\n"..
" <output> = on/off if <input-expression> is true\n"..
"\n"..
"'<output>' is the block number to which the command should be sent.\n"..
"'<input-expression>' is a boolean expression where input numbers are evaluated.\n"..
"\n"..
"*Examples for the input expression*\n"..
"\n"..
"Negate signal (NOT):\n"..
"\n"..
" 1234 == off\n"..
"\n"..
"Logical AND:\n"..
"\n"..
" 1234 == on and 2345 == on\n"..
"\n"..
"Logical OR:\n"..
"\n"..
" 1234 == on or 2345 == on\n"..
"\n"..
"The following operators are allowed: 'and' 'or' 'on' 'off' 'me' '==' '~=' '(' ')'\n"..
"\n"..
"If the expression is true\\, a command is sent to the block with the '<output>' number. \n"..
"Up to four rules can be defined\\, whereby all rules are always checked when a command is received. \n"..
"The internal processing time for all commands is 100 ms. \n"..
"\n"..
"Your own node number can be referenced using the keyword 'me'. This makes it possible for the block to send itself a command (flip-flop function). \n"..
"\n"..
"The blocking time defines a pause after a command\\, during which the logic block does not accept any further external commands. Commands received during the blocking period are thus discarded. The blocking time can be defined in seconds. \n"..
"\n"..
"\n"..
"\n",
"The repeater sends the received signal to all configured numbers.\n"..
"This can make sense\\, for example\\, if you want to control many blocks at the same time. The repeater can be configured with the programmer\\, which is not possible with all blocks.\n"..
"\n"..
"\n"..
"\n",
"The sequencer can send a series of 'on' / 'off' commands\\, whereby the interval between the commands must be specified in seconds. You can use it to make a lamp blink\\, for example.\n"..
"Up to 8 commands can be configured\\, each with target block number and pending the next command.\n"..
"The sequencer repeats the commands endlessly when \"Run endless\" is set.\n"..
"If nothing is selected\\, only the specified time in seconds is waited for.\n"..
"\n"..
"\n"..
"\n",
"The timer can send commands time-controlled. The time\\, the target number(s) and the command itself can be specified for each command line. This means that lamps can be switched on in the evening and switched off again in the morning.\n"..
"\n"..
"\n"..
"\n",
"The terminal is primarily used to test the command interface of other blocks (see \"Logic / switching blocks\").\n"..
"You can also assign commands to keys and use the terminal productively.\n"..
"\n"..
" set <button-num> <button-text> <command>\n"..
"\n"..
"With 'set 1 ON cmd 123 on'\\, for example\\, user key 1 can be programmed with the command 'cmd 123 on'. If the key is pressed\\, the command is sent and the response is output on the screen.\n"..
"\n"..
"The terminal has the following local commands:\n"..
"\n"..
" - 'clear' clear screen\n"..
" - 'help' output a help page\n"..
" - 'pub' switch to public mode\n"..
" - 'priv' switch to private mode\n"..
"\n"..
"In private mode\\, the terminal can only be used by players who can build at this location\\, i.e. who have protection rights.\n"..
"\n"..
"In public mode\\, all players can use the preconfigured keys.\n"..
"\n"..
"\n"..
"\n",
"The signal lamp can be switched on or off with the 'on' / 'off' command. This lamp does not need electricity and can be colored with the airbrush tool from the mod Unified Dyes\" and via Lua/Beduino commands.\n"..
"\n"..
"With the chat command '/ta_color' the color palette with the values for the Lua/Beduino commands is displayed and with '/ta_send color <num>' the color can be changed.\n"..
"\n"..
"\n"..
"\n",
"With these blocks you can realize doors and gates that can be opened via commands (blocks disappear) and closed again. One door controller is required for each gate or door.\n"..
"\n"..
"The appearance of the blocks can be adjusted via the block menu.\n"..
"This makes it possible to realize secret doors that only open for certain players (with the help of the player detector).\n"..
"\n"..
"\n"..
"\n",
"The door controller is used to control the TA3 door/gate blocks. With the door controller\\, the numbers of the door/gate blocks must be entered. If an 'on' / 'off' command is sent to the door controller\\, this opens/closes the door or gate.\n"..
"\n"..
"\n"..
"\n",
"The Door Controller II can remove and set all types of blocks. To teach in the Door Controller II\\, the \"Record\" button must be pressed. Then all blocks that should be part of the door / gate must be clicked. Then the \"Done\" button must be pressed. Up to 16 blocks can be selected. The removed blocks are saved in the controller's inventory. The function of the controller can be tested manually using the \"Remove\" or \"Set\" buttons. If an 'on' /'off' command is sent to the Door Controller II\\, it removes or sets the blocks as well.\n"..
"\n"..
"With '$send_cmnd(node_number\\, \"exchange\"\\, 2)' individual blocks can be set\\, removed or replaced by other blocks from the inventory. \n"..
"\n"..
"With '$send_cmnd(node_number\\, \"set\"\\, 2)' a block from the inventory can be set explicitly\\, as long as the inventory slot is not empty.\n"..
"\n"..
"A block can be removed again with '$send_cmnd(node_number\\, \"dig\"\\, 2)' if the inventory slot is empty. \n"..
"\n"..
"The name of the set block is returned with '$send_cmnd(node_number\\, \"get\"\\, 2)'.\n"..
"\n"..
"The slot number of the inventory (1 .. 16) must be passed as payload in all three cases.\n"..
"\n"..
"This can also be used to simulate extendable stairs and the like. \n"..
"\n"..
"\n"..
"\n",
"Different sounds can be played with the sound block. All sounds of the Mods Techage\\, Signs Bot\\, Hyperloop\\, Unified Inventory\\, TA4 Jetpack and Minetest Game are available.\n"..
"\n"..
"The sounds can be selected and played via the menu and via command.\n"..
"\n"..
" - Command 'on' to play a sound\n"..
" - Command 'sound <idx>' to select a sound via the index\n"..
" - Command 'gain <volume>' to adjust the volume via the '<volume>' value (1 to 5).\n"..
"\n"..
"\n"..
"\n",
"The Mesecons converter is used to convert Techage on/off commands into Mesecons signals and vice versa.\n"..
"To do this\\, one or more node numbers must be entered and the converter with Mesecons blocks\n"..
"has to be connected via Mesecons cables. The Mesecons converter can also be configured with the programmer.\n"..
"The Mesecons converter accepts up to 5 commands per second\\; it switches itself off at higher loads.\n"..
"\n"..
"*This node only exists if the mod mesecons is active!*\n"..
"\n"..
"\n"..
"\n",
"Detectors scan their surroundings and send an 'on' command when the search is recognized.\n"..
"\n"..
"\n"..
"\n",
"The detector is a special tube block that detects when items are passed on through the tube. To do this\\, it must be connected to tubes on both sides. If items are pushed into the detector with a pusher\\, they are automatically passed on.\n"..
"It sends an 'on' when an item is recognized\\, followed by an 'off' a second later.\n"..
"Then further commands are blocked for 8 seconds.\n"..
"The waiting time and the items that should trigger a command can be configured using the open-ended wrench menu. \n"..
"\n"..
"\n"..
"\n",
"The cart detector sends an 'on' command if it has recognized a cart (Minecart) directly in front of it. In addition\\, the detector can also restart the cart when an 'on' command is received.\n"..
"\n"..
"The detector can also be programmed with its own number. In this case\\, he pushes all the wagons that stop near him (one block in all directions).\n"..
"\n"..
"\n"..
"\n",
"The node detector sends an 'on' command if it detects that nodes (blocks) appear or disappear in front of it\\, but must be configured accordingly. After switching the detector back to the standard state (gray block)\\, an 'off' command is sent. Valid blocks are all types of blocks and plants\\, but not animals or players. The sensor range is 3 blocks / meter in the direction of the arrow.\n"..
"\n"..
"\n"..
"\n",
"The player detector sends an 'on' command if it detects a player within 4 m of the block. If the player leaves the area again\\, an 'off' command is sent.\n"..
"If the search should be limited to specific players\\, these player names can also be entered.\n"..
"\n"..
"\n"..
"\n",
"The light detector sends an 'on' command if the light level of the block above exceeds a certain level\\, which can be set through the right-click menu.\n"..
"If you have a TA4 Lua Controller\\, you can get the exact light level with $get_cmd(num\\, 'light_level')\n"..
"\n"..
"\n"..
"\n",
"TA3 has the same machines as TA2\\, only these are more powerful and require electricity instead of axis drive.\n"..
"Therefore\\, only the different technical data are given below.\n"..
"\n"..
"\n"..
"\n",
"The function corresponds to that of TA2.\n"..
"The processing power is 6 items every 2 s.\n"..
"\n"..
"\n"..
"\n",
"The function of the TA3 distributor corresponds to that of TA2.\n"..
"The processing power is 12 items every 4 s.\n"..
"\n"..
"\n"..
"\n",
"The function corresponds to that of TA2.\n"..
"The processing power is 2 items every 4 s. The autocrafter requires 6 ku of electricity.\n"..
"\n"..
"\n"..
"\n",
"The function corresponds to that of TA2\\, only TA4 WLAN chips are produced here.\n"..
"The processing power is one chip every 6 s. The block requires 12 ku of electricity for this.\n"..
"\n"..
"\n"..
"\n",
"The function corresponds to that of TA2.\n"..
"The maximum depth is 40 meters. The quarry requires 12 ku of electricity.\n"..
"\n"..
"\n"..
"\n",
"The function corresponds to that of TA2.\n"..
"The processing power is 2 items every 4 s. The block requires 4 ku of electricity.\n"..
"\n"..
"\n"..
"\n",
"The function corresponds to that of TA2.\n"..
"The probability is also the same as for TA2. The block also requires 3 ku of electricity.\n"..
"But in contrast to TA2\\, the status of the TA3 block can be read (controller)\n"..
"\n"..
"\n"..
"\n",
"The function corresponds to that of TA2.\n"..
"The processing power is 2 items every 4 s. The block requires 6 ku of electricity.\n"..
"\n"..
"\n"..
"\n",
"The injector is a TA3 pusher with special properties. It has a menu for configuration. Up to 8 items can be configured here. He only takes these items from a chest to pass them on to machines with recipes (autocrafter\\, industrial furnace and electronic fab).\n"..
"\n"..
"When passing on\\, only one position in the inventory is used in the target machine. If\\, for example\\, only the first three entries are configured in the injector\\, only the first three storage locations in the machine's inventory are used. So that an overflow in the machine inventory is prevented.\n"..
"\n"..
"The injector can also be switched to \"pull mode\". Then he only pulls items out of the chest from the positions that are defined in the configuration of the injector. In this case\\, item type and position must match. This allows to empty specific inventory entries of a chest. \n"..
"\n"..
"The processing power is up to 8 times one item every 4 seconds.\n"..
"\n"..
"\n"..
"\n",
"",
"The Techage Info Tool (open-ended wrench) has several functions. It shows the time\\, position\\, temperature and biome when an unknown block is clicked on.\n"..
"If you click on a TechAge block with command interface\\, all available data will be shown (see also \"Logic / switching blocks\").\n"..
"\n"..
"With Shift + right click an extended menu can be opened for some blocks. Depending on the block\\, further data can be called up or special settings can be made here. In the case of a generator\\, for example\\, the charging curve/switch-off can be programmed. \n"..
"\n"..
"\n"..
"\n",
"With the programmer\\, block numbers can be collected from several blocks with a right click and written into a block like a button / switch with a left click.\n"..
"If you click in the air\\, the internal memory is deleted.\n"..
"\n"..
"\n"..
"\n",
"The trowel is used for plastering power cables. See also \"TA power cable\".\n"..
"\n"..
"\n"..
"\n",
"This tool can be used to remove the drill pipe blocks if\\, for example\\, a tunnel is to pass through there.\n"..
"\n"..
"\n"..
"\n",
"The Techage Screwdriver serves as a replacement for the normal screwdriver. It has the following functions:\n"..
"\n"..
" - Left click: turn the block to the left\n"..
" - Right click: turn the visible side of the block upwards\n"..
" - Shift + left click: save the alignment of the clicked block\n"..
" - Shift + right click: apply the saved alignment to the clicked block\n"..
"\n"..
" \n"..
"\n",
"The TechAge Assembly Tool is used to remove and reposition Techage blocks without these blocks losing their block number or being assigned a new number when setting. This is helpful\\, for example\\, for quarries\\, as they often have to be moved.\n"..
"\n"..
" - Left button: Remove a block\n"..
" - Right button: Set a block\n"..
"\n"..
"The block that was previously removed with the assembly tool and is to be placed again must be on the far left of the player inventory.\n"..
"\n"..
"\n"..
"\n",
},
images = {
"techage_ta3",
"",
"ta3_firebox",
"ta3_oilbox",
"ta3_boiler",
"ta3_turbine",
"ta3_generator",
"ta3_cooler",
"ta3_powerswitch",
"power_reduction",
"ta3_powercable",
"ta3_powerjunction",
"ta3_powerline",
"ta3_powerpole",
"ta3_powerpole4",
"ta3_powerpole2",
"ta3_powerswitch",
"ta3_powerswitchsmall",
"ta3_powerswitchbox",
"ta3_tinygenerator",
"ta3_akkublock",
"ta3_powerterminal",
"ta3_motor",
"",
"ta3_furnacefirebox",
"ta3_furnace",
"ta3_booster",
"",
"ta3_tank",
"ta3_pump",
"ta3_filler",
"ta3_pipe",
"ta3_pipe_wall_entry",
"ta3_valve",
"techage_ta3",
"ta3_oilexplorer",
"ta3_drillbox",
"ta3_pumpjack",
"ta3_drillbit",
"oiltank",
"",
"",
"",
"",
"",
"techage_ta31",
"",
"reboiler",
"ta3_logic",
"ta3_button",
"ta3_command_converter",
"ta3_flipflop",
"ta3_logic",
"ta3_repeater",
"ta3_sequencer",
"ta3_timer",
"ta3_terminal",
"ta3_colorlamp",
"ta3_doorblock",
"ta3_doorcontroller",
"ta3_doorcontroller",
"ta3_soundblock",
"ta3_mesecons_converter",
"ta3_nodedetector",
"ta3_detector",
"ta3_cartdetector",
"ta3_nodedetector",
"ta3_playerdetector",
"ta3_lightdetector",
"ta3_grinder",
"ta3_pusher",
"ta3_distributor",
"ta3_autocrafter",
"ta3_electronicfab",
"ta3_quarry",
"ta3_gravelsieve",
"ta3_gravelrinser",
"ta3_grinder",
"ta3_injector",
"",
"ta3_end_wrench",
"ta3_programmer",
"ta3_trowel",
"ta3_drill_pipe_wrench",
"ta3_screwdriver",
"techage:assembly_tool",
},
plans = {
"",
"coalpowerstation",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"ta3_furnace",
"",
"",
"",
"ta3_tank",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"ta3_loading",
"",
"",
"",
"ta3_distiller",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,214 @@
return {
titles = {
"1,TA5: Future",
"2,Energy Sources",
"3,TA5 Fusion Reactor",
"4,TA5 Fusion Reactor Magnet",
"4,TA5 Pump",
"4,TA5 Heat Exchanger",
"4,TA5 Fusion Reactor Controller",
"4,TA5 Fusion Reactor Shell",
"4,TA5 Fusion Reactor Core",
"2,Energy Storage",
"3,TA5 Hybrid Storage (planned)",
"2,Logic blocks",
"2,Transport and Traffic",
"3,TA5 Flight Controller",
"3,TA5 Hyperloop Chest",
"3,TA5 Hyperloop Tank",
"2,Teleport Blocks",
"3,TA5 Teleport Block Items",
"3,TA5 Teleport Block Liquids",
"3,Hyperloop Teleport Blocks (planned)",
"2,More TA5 Blocks/Items",
"3,TA5 Container (planned)",
"3,TA5 AI Chip",
"3,TA5 AI Chip II",
},
texts = {
"Machines to overcome space and time\\, new sources of energy and other achievements shape your life.\n"..
"\n"..
"Experience points are required for the manufacture and use of TA5 machines and blocks. These can only be worked out using the collider from TA4.\n"..
"\n"..
"\n"..
"\n",
"",
"Nuclear fusion means the fusing of two atomic nuclei. Depending on the reaction\\, large amounts of energy can be released. Nuclear fusions\\, in which energy is released\\, take place in the form of chain reactions. They are the source of the energy of the stars\\, including our sun\\, for example. A fusion reactor converts the energy released during controlled nuclear fusion into electricity.\n"..
"\n"..
"*How do fusion reactors work?*\n"..
"\n"..
"A fusion reactor works according to the classic principle of a thermal power plant: water is heated and drives a steam turbine\\, whose kinetic energy is converted into electricity by a generator.\n"..
"\n"..
"A fusion power plant initially requires a large amount of energy\\, since a plasma has to be generated. \"Plasma\" is the name given to the fourth state of matter\\, after solid\\, liquid and gaseous. This requires a lot of electricity. Only through this extreme concentration of energy does the fusion reaction ignite and the heat given off is used to generate electricity via the heat exchanger. The generator then delivers 800 ku of electricity.\n"..
"\n"..
"The plan on the right shows a section through the fusion reactor.\n"..
"\n"..
"60 experience points are required to operate the fusion reactor. The fusion reactor must be built entirely in a forceload block area.\n"..
"\n"..
"\n"..
"\n",
"A total of 60 TA5 Fusion Reactor Magnets are required to set up the fusion reactor. These form the ring in which the plasma forms. The TA5 Fusion Reactor Magnets requires power and has two ports for cooling.\n"..
"\n"..
"There are two types of magnets\\, so all sides of the magnet that face the plasma ring can also be protected with a heat shield.\n"..
"\n"..
"With the corner magnets on the inside of the ring\\, one connection side is covered (power or cooling) and can therefore not be connected. This is technically not feasible and therefore has no influence on the function of the fusion reactor. \n"..
"\n"..
"\n"..
"\n",
"The pump is required to fill the cooling circuit with isobutane. About 350 units of isobutane are required.\n"..
"\n"..
"Note: The TA5 pump can only be used to fill the cooling circuit\\, pumping out the coolant is not possible. Therefore\\, the pump should not be switched on until the magnets are correctly placed and all power and cooling lines are connected.\n"..
"\n"..
"\n"..
"\n",
"The TA5 Heat Exchanger is required to convert the heat generated in the fusion reactor first to steam and then to electricity. The Heat Exchanger itself requires 5 ku electricity. The structure is similar to the Heat Exchanger of the energy store from TA4.\n"..
"\n"..
"Note: The TA5 Heat Exchanger has two connections (blue and green) for the cooling circuit. The heat exchanger and all magnets must be connected to form a cooling circuit via the green and blue pipes.\n"..
"\n"..
"The cooling circuit can be checked for completeness using the start button on the heat exchanger\\, even if no coolant has yet been filled in.\n"..
"\n"..
"\n"..
"\n",
"The fusion reactor is switched on via the TA5 Fusion Reactor Controller. The cooling/Heat Exchanger must be switched on first and then the controller. It takes about 2 minutes for the reactor to start up and supply electricity. The fusion reactor and thus the controller requires 400 ku of electricity to maintain the plasma.\n"..
"\n"..
"\n"..
"\n",
"The entire reactor must be surrounded by a shell that absorbs the enormous pressure that the magnets exert on the plasma and protects the environment from radiation. Without this shell\\, the reactor cannot be started. With the TechAge Trowel\\, power cables and cooling pipes of the fusion reactor can also be integrated into the shell.\n"..
"\n"..
"\n"..
"\n",
"The core must sit in the center of the reactor. See illustration under \"TA5 Fusion Reactor\". The TechAge Trowel is also required for this.\n"..
"\n"..
"\n"..
"\n",
"",
"",
"",
"",
"The TA5 Flight Controller is similar to the TA4 Move Controller. In contrast to the TA4 Move Controller\\, several movements can be combined into one flight route. This flight route can be defined in the input field using several x\\,y\\,z entries (one movement per line). The flight route is checked and saved via \"Save\". In the event of an error\\, an error message is issued.\n"..
"\n"..
"With the \"Test\" button\\, the flight route with the absolute coordinates is output for checking in the chat.\n"..
"\n"..
"The maximum distance for the entire flight distance is 1500 m. Up to 32 blocks can be trained.\n"..
"\n"..
"The use of the TA5 Flight Controller requires 40 experience points.\n"..
"\n"..
"*Teleport mode*\n"..
"\n"..
"If the 'Teleport Mode' is enabled\\, a player can also be moved without blocks. To do this\\, the start position must be configured using the \"Record\" button. Only one position can be configured here. The player to be moved must be in that position.\n"..
"\n"..
"\n"..
"\n",
"The TA5 Hyperloop Chest allows objects to be transported over a Hyperloop network.\n"..
"\n"..
"The TA5 Hyperloop Chest has to be placed on a Hyperloop Junction. The chest has a special menu\\, with which you can pair two chests. Things that are in the chest are teleported to the remote station. The chest can also be filled/emptied with a pusher.\n"..
"\n"..
"For pairing you first have to enter a name for the chest on one side\\, then you can select this name for the other chest and thus connect the two blocks.\n"..
"\n"..
"The use of the TA5 Hyperloop Chest requires 15 experience points.\n"..
"\n"..
"\n"..
"\n",
"The TA5 Hyperloop Tank allows liquids to be transported over a Hyperloop network.\n"..
"\n"..
"The TA5 Hyperloop Tank has to be placed on a Hyperloop Junction.The tank has a special menu\\, with which you can pair two tanks. Liquids in the tank will be teleported to the remote station. The tank can also be filled/emptied with a pump.\n"..
"\n"..
"For pairing you first have to enter a name for the tank on one side\\, then you can select this name for the other tank and thus connect the two blocks.\n"..
"\n"..
"The use of the TA5 Hyperloop Tank requires 15 experience points.\n"..
"\n"..
"\n"..
"\n",
"Teleport blocks allow things to be transferred between two teleport blocks without the need for a pipe or tube in between. To pair the blocks\\, you first have to enter a name for the block on one side\\, then you can select this name for the other block and thus connect the two blocks. Pairing can only be carried out by one player (player name is checked) and must be completed before the server is restarted. Otherwise the pairing data will be lost.\n"..
"\n"..
"The map on the right shows how the blocks can be used. \n"..
"\n"..
"\n"..
"\n",
"These teleport blocks allow the transfer of items and thus replace a tube. Distances of up to 500 blocks can be bridged.\n"..
"\n"..
"Each Teleport blocks requires 12 ku of electricity.\n"..
"\n"..
"30 experience points are required to use the teleport blocks. \n"..
"\n"..
"\n"..
"\n",
"These teleport blocks allow the transfer of liquids and thus replace a pipe. Distances of up to 500 blocks can be bridged.\n"..
"\n"..
"Each Teleport blocks requires 12 ku of electricity.\n"..
"\n"..
"30 experience points are required to use the teleport blocks. \n"..
"\n"..
"\n"..
"\n",
"The Hyperloop Teleport Blocks allow the construction of a Hyperloop network without Hyperloop tubes.\n"..
"\n"..
"The use of the Hyperloop Teleport Blocks requires 60 experience points.\n"..
"\n",
"",
"The TA5 container allows Techage systems to be packed and unpacked at another location.\n"..
"\n"..
"80 experience points are required to use the TA5 container.\n"..
"\n",
"The TA5 AI Chip is partly required for the production of TA5 blocks. The TA5 AI Chip can only be manufactured at the TA4 Electronics Fab. This requires 10 experience points.\n"..
"\n"..
"\n"..
"\n",
"The TA5 AI Chip II is required to build the TA5 Fusion Reactor. The TA5 AI Chip II can only be manufactured at the TA4 Electronics Fab. This requires 25 experience points.\n"..
"\n"..
"\n"..
"\n",
},
images = {
"techage_ta5",
"",
"",
"ta5_magnet",
"ta5_pump",
"",
"ta5_fr_controller",
"ta5_fr_shell",
"ta5_fr_nucleus",
"",
"",
"",
"",
"ta5_flycontroller",
"ta5_chest",
"ta5_tank",
"",
"ta5_tele_tube",
"ta5_tele_pipe",
"",
"",
"",
"ta5_aichip",
"ta5_aichip2",
},
plans = {
"",
"",
"ta5_fusion_reactor",
"",
"",
"ta5_heatexchanger",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"ta5_teleport",
"",
"",
"",
"",
"",
"",
"",
}
}

View File

@ -603,4 +603,5 @@ for name, plan in pairs(plans) do
local plan2 = reformat(plan) local plan2 = reformat(plan)
doclib.add_manual_plan("techage", "EN", name, plan2) doclib.add_manual_plan("techage", "EN", name, plan2)
doclib.add_manual_plan("techage", "DE", name, plan2) doclib.add_manual_plan("techage", "DE", name, plan2)
doclib.add_manual_plan("techage", "RU", name, plan2)
end end

View File

@ -0,0 +1,137 @@
# Tech Age Mod
Tech Age - это технологический мод с 5 стадиями развития:
TA1: Железный век
Используйте инструменты и приспособления, такие как угольные горелки, угольные горелки, гравийные сита, молоты и бункеры, чтобы добывать и обрабатывать необходимые руды и металлы.
TA2: Паровой век
Постройте паровой двигатель с ведущими осями и используйте его для работы своих первых машин по переработке руды.
TA3: Нефтяной век
Найдите и добывайте нефть, постройте железные дороги для транспортировки нефти. Электростанция дает необходимое электричество для ваших машин. Электрический свет освещает ваши промышленные предприятия.
TA4: Настоящее время
Возобновляемые источники энергии, такие как ветер, солнце и биотопливо, помогают вам покинуть нефтяной век. С помощью современных технологий и умных машин вы отправляетесь в будущее.
TA5: Будущее
Машины, преодолевающие пространство и время, новые источники энергии и другие достижения определяют вашу жизнь.
Примечание: Нажав на знак "плюс", вы попадаете в подразделы этого руководства.
[techage_ta4|image]
## Подсказки
Эта документация доступна как "в игре" (план строительства блоков), так и на GitHub в виде MD-файлов.
- Ссылка: https://github.com/joe7575/techage/wiki
Строительные планы (схемы) для постройки машин и картинки доступны только в игре.
В Tech Age вам придется начинать все сначала. Вы можете создавать блоки TA2 только с помощью предметов из TA1, для TA3 вам нужны результаты из TA2 и т.д.
В TA2 машины работают только с приводными осями.
В TA3 машины работают от электричества и имеют коммуникационный интерфейс для дистанционного управления.
TA4 добавляет больше источников энергии, но также и более сложные логистические задачи (линии электропередач, транспортировка изделий).
## Изменения по сравнению с версией 1.0
С версии 1.0 (07/17/2021) изменилось следующее:
- Изменился алгоритм расчета распределения энергии. Это делает системы хранения энергии более важными. Они компенсируют колебания, что важно для больших сетей с несколькими генераторами.
- По этой причине TA2 обзавелась собственным накопителем энергии.
- Аккумуляторные блоки из TA3 также служат в качестве накопителей энергии. Их функциональность была соответствующим образом адаптирована.
- Система хранения TA4 была пересмотрена. Теплообменник получил новый номер, поскольку его функциональность была перенесена с нижнего на средний блок. Если они управлялись дистанционно, номер узла должен быть адаптирован. Генераторы больше не имеют собственного меню, а включаются/выключаются только через теплообменник. Теплообменник и генератор теперь должны быть подключены к одной сети!
- Несколько электросетей теперь могут быть соединены через трансформаторные блоки TA4.
- Также появился блок счетчиков электроэнергии TA4 для подсетей.
- Как минимум один блок аккумуляторов или система хранения в каждой сети
### Советы по переключению
Многие другие блоки получили незначительные изменения. Поэтому возможно, что машины или системы не будут запускаться сразу после переключения. В случае неполадок помогут следующие советы:
- выключите и снова включите машины
- снимите блок силовых кабелей и установите его на место
- полностью снимите блок и установите его на место
## Руды и минералы
Techage добавляет в игру несколько новых предметов:
- Меридий - сплав для производства светящихся инструментов в TA1
- Усмий - руда, которая добывается в TA2 и необходима для TA3
- Бабориум - металл, необходимый для рецептов в TA3
- Нефть - необходима в TA3
- Боксит - алюминиевая руда, которая необходима в TA4 для производства алюминия
- Базальт - возникает при соприкосновении воды и лав
### Меридий
Меридий - это сплав стали и кристаллов мезекона. Слитки меридиума можно изготовить с помощью угольной горелки из стали и кристаллов мезекона. Меридий светится в темноте. Инструменты из меридиума также светятся и поэтому очень полезны при подземной добыче.
[meridium|image]
### Усмий
Усмий встречается только в виде самородков и может быть получен только при промывке гравия с помощью системы промывки гравия TA2/TA3.
[usmium|image]
### Баборий
Барборий можно получить только при подземной добыче. Это вещество можно найти только на глубине от -250 до -340 метров.
Бабориум можно переплавить только в промышленной печи TA3.
[baborium|image]
### Нефть
Нефть можно найти только с помощью Исследователя и добыть с помощью соответствующих машин TA3. См. TA3.
[oil|image]
### Боксит
Боксит можно добыть только в подземной шахте. Боксит можно найти только в камне на высоте от -50 до -500 метров.
Он необходим для производства алюминия, который в основном используется в TA4.
[bauxite|image]
### Базальт
Базальт образуется только при соединении лавы и воды.
Лучше всего создать систему, в которой лава и вода будут течь вместе.
Базальт образуется там, где встречаются обе жидкости.
Вы можете создать автоматический генератор базальта с помощью Sign Bot.
[basalt|image]
## History
- 28.09.2019: Solar system added
- 05.10.2019: Data on the solar system and description of the inverter and the power terminal changed
- 18.11.2019: Chapter for ores, reactor, aluminum, silo, bauxite, furnace heating, gravel washing system added
- 22.02.2020: corrections and chapters on the update
- 29.02.2020: ICTA controller added and further corrections
- 14.03.2020 Lua controller added and further corrections
- 22.03.2020 More TA4 blocks added

View File

@ -196,6 +196,10 @@ m2l = MarkdownToLua()
m2l.parse_md_file("./manual_DE.md") m2l.parse_md_file("./manual_DE.md")
m2l.gen_lua_file("../doc/manual_DE.lua") m2l.gen_lua_file("../doc/manual_DE.lua")
m2l = MarkdownToLua()
m2l.parse_md_file("./manual_RU.md")
m2l.gen_lua_file("../doc/manual_RU.lua")
m2l = MarkdownToLua() m2l = MarkdownToLua()
m2l.parse_md_file("./manual_ta1_DE.md") m2l.parse_md_file("./manual_ta1_DE.md")
m2l.gen_lua_file("../doc/manual_ta1_DE.lua") m2l.gen_lua_file("../doc/manual_ta1_DE.lua")

Binary file not shown.

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

View File

@ -0,0 +1,22 @@
# textdomain: techpack_stairway
### init.lua ###
TechPack Bridge 1=TechPack мост 1
TechPack Bridge 2=TechPack мост 2
TechPack Bridge 3=TechPack мост 3
TechPack Bridge 4=TechPack мост 4
TechPack Grating=TechPack решётка
TechPack Handrail 1=TechPack перила 1
TechPack Handrail 2=TechPack перила 2
TechPack Handrail 3=TechPack перила 3
TechPack Handrail 4=TechPack перила 4
TechPack Ladder 1=TechPack лестница 1
TechPack Ladder 2=TechPack лестница 2
TechPack Ladder 3=TechPack лестница 3
TechPack Ladder 4=TechPack лестница 4
TechPack Lattice=TechPack сетка
TechPack Lattice Slope=TechPack сетка наклон
TechPack Stairway=TechPack ступени

View File

@ -0,0 +1,16 @@
# textdomain: towercrane
Area is protected.=Территория защищена.
Tower Crane Mast Ctrl On=Башенный кран контроль мачты ВКЛ
Switch crane on/off=Переключить кран ВКЛ/ВЫКЛ
Tower Crane Mast Ctrl Off=Башенный кран контроль мачты ВЫКЛ
Construction area size=Размер стройплощадки
Build=Строить
Owner=Владелец
Crane size=Размер крана
Area is protected or too less space for the crane!=Территория защищена или недостаточно места для крана!
Invalid input!=Недопустимый ввод!
Tower Crane Base=Башенный кран база
Tower Crane Balance=Башенный кран балансир
Tower Crane Mast=Башенный кран мачта
Tower Crane Arm=Башенный кран рычаг
Tower Crane Arm2=Башенный кран рычаг2

View File

@ -0,0 +1,8 @@
# textdomain: tubelib2
Not connected!=Не соединено!
Paired with @1=Сопряжено с @1
Connected to @1=Соединено с @1
Maximum length reached!=Достигнута максимальная длина!
Pairing is missing=Отсутствует пара
Connection to a tube is missing!=Отсутствует соединение с трубой!
Pairing is missing (@1)=Отсутствует пара (@1)

2
unified_inventory/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*~

View File

@ -10,6 +10,7 @@ read_globals = {
string = {fields = {"split", "trim"}}, string = {fields = {"split", "trim"}},
table = {fields = {"copy", "getn"}}, table = {fields = {"copy", "getn"}},
"dump",
"minetest", "vector", "minetest", "vector",
"ItemStack", "datastorage", "ItemStack", "datastorage",

View File

@ -51,6 +51,7 @@ minetest.after(0.01, function()
end end
end end
end end
table.sort(ui.items_list) table.sort(ui.items_list)
ui.items_list_size = #ui.items_list ui.items_list_size = #ui.items_list
print("Unified Inventory. Inventory size: "..ui.items_list_size) print("Unified Inventory. Inventory size: "..ui.items_list_size)
@ -183,6 +184,37 @@ minetest.after(0.01, function()
ui.crafts_for.recipe[outputitemname] = new_recipe_list ui.crafts_for.recipe[outputitemname] = new_recipe_list
end end
-- Remove unknown items from all categories
local total_removed = 0
for cat_name, cat_def in pairs(ui.registered_category_items) do
for itemname, _ in pairs(cat_def) do
local idef = minetest.registered_items[itemname]
if not idef then
total_removed = total_removed + 1
--[[
-- For analysis
minetest.log("warning", "[unified_inventory] Removed item '"
.. itemname .. "' from category '" .. cat_name
.. "'. Reason: item not registered")
]]
cat_def[itemname] = nil
elseif not ui.is_itemdef_listable(idef) then
total_removed = total_removed + 1
--[[
-- For analysis
minetest.log("warning", "[unified_inventory] Removed item '"
.. itemname .. "' from category '" .. cat_name
.. "'. Reason: item is in 'not_in_creative_inventory' group")
]]
cat_def[itemname] = nil
end
end
end
if total_removed > 0 then
minetest.log("info", "[unified_inventory] Removed " .. total_removed ..
" items from the categories.")
end
for _, callback in ipairs(ui.initialized_callbacks) do for _, callback in ipairs(ui.initialized_callbacks) do
callback() callback()
end end

View File

@ -115,6 +115,11 @@ function unified_inventory.set_category_index(category_name, index)
update_category_list() update_category_list()
end end
function unified_inventory.add_category_item(category_name, item) function unified_inventory.add_category_item(category_name, item)
if type(item) ~= "string" then
minetest.log("warning", "[unified_inventory] Cannot register category item: " .. dump(item))
return
end
ensure_category_exists(category_name) ensure_category_exists(category_name)
unified_inventory.registered_category_items[category_name][item] = true unified_inventory.registered_category_items[category_name][item] = true
end end

View File

@ -1,4 +1,5 @@
local S = minetest.get_translator("unified_inventory") local S = minetest.get_translator("unified_inventory")
local ui = unified_inventory
unified_inventory.register_category('plants', { unified_inventory.register_category('plants', {
symbol = "flowers:tulip", symbol = "flowers:tulip",
@ -25,10 +26,7 @@ unified_inventory.register_category('lighting', {
label = S("Lighting") label = S("Lighting")
}) })
local function register_automatic_categorization()
if unified_inventory.automatic_categorization then
minetest.register_on_mods_loaded(function()
-- Add biome nodes to environment category -- Add biome nodes to environment category
for _,def in pairs(minetest.registered_biomes) do for _,def in pairs(minetest.registered_biomes) do
local env_nodes = { local env_nodes = {
@ -41,18 +39,33 @@ if unified_inventory.automatic_categorization then
end end
end end
-- Add minable ores to minerals and everything else (pockets of stone & sand variations) to environment -- Preparation for ore registration: find all possible drops (digging)
for _,item in pairs(minetest.registered_ores) do local possible_node_dig_drops = {
if item.ore_type == "scatter" then -- ["default:stone_with_coal"] = { "default:coal_lump", "mymod:raregem" }
local drop = minetest.registered_nodes[item.ore].drop -- Ores may be contained multiple times, depending on drop chances.
if drop and drop ~= "" then }
unified_inventory.add_category_item('minerals', item.ore) for itemname, recipes in pairs(ui.crafts_for.usage) do
unified_inventory.add_category_item('minerals', drop) for _, recipe in ipairs(recipes) do
else if recipe.type == "digging" or recipe.type == "digging_chance" then
unified_inventory.add_category_item('environment', item.ore) if not possible_node_dig_drops[itemname] then
possible_node_dig_drops[itemname] = {}
end end
local stack = ItemStack(recipe.output)
table.insert(possible_node_dig_drops[itemname], stack:get_name())
end
end
end
-- Add minable ores to minerals and everything else (pockets of stone & sand variations) to environment
for _, odef in pairs(minetest.registered_ores) do
local drops = possible_node_dig_drops[odef.ore]
if drops and odef.ore_type == "scatter" then
ui.add_category_item('minerals', odef.ore)
-- Register all possible drops as "minerals"
ui.add_category_items('minerals', drops)
possible_node_dig_drops[odef.ore] = {} -- mask as handled
else else
unified_inventory.add_category_item('environment', item.ore) ui.add_category_item('environment', odef.ore)
end end
end end
@ -87,9 +100,13 @@ if unified_inventory.automatic_categorization then
end end
end end
end end
end)
end end
if ui.automatic_categorization then
ui.register_on_initialized(register_automatic_categorization)
end
-- [[ -- [[
unified_inventory.add_category_items('plants', { unified_inventory.add_category_items('plants', {
"default:dry_grass_5", "default:dry_grass_5",
@ -256,23 +273,6 @@ unified_inventory.add_category_items('minerals', {
"default:coal_lump", "default:coal_lump",
"default:bronzeblock", "default:bronzeblock",
"default:goldblock", "default:goldblock",
"stairs:slab_bronzeblock",
"stairs:slab_copperblock",
"stairs:slab_steelblock",
"stairs:slab_tinblock",
"stairs:stair_bronzeblock",
"stairs:stair_copperblock",
"stairs:stair_inner_bronzeblock",
"stairs:stair_inner_copperblock",
"stairs:stair_inner_steelblock",
"stairs:stair_inner_tinblock",
"stairs:stair_outer_bronzeblock",
"stairs:stair_outer_copperblock",
"stairs:stair_outer_steelblock",
"stairs:stair_outer_tinblock",
"stairs:stair_steelblock",
"stairs:stair_tinblock",
}) })
unified_inventory.add_category_items('building', { unified_inventory.add_category_items('building', {

View File

@ -53,8 +53,9 @@ unified_inventory = {
standard_background = "bgcolor[#0000]background9[0,0;1,1;ui_formbg_9_sliced.png;true;16]", standard_background = "bgcolor[#0000]background9[0,0;1,1;ui_formbg_9_sliced.png;true;16]",
hide_disabled_buttons = minetest.settings:get_bool("unified_inventory_hide_disabled_buttons", false), hide_disabled_buttons = minetest.settings:get_bool("unified_inventory_hide_disabled_buttons", false),
hide_uncraftable_items = minetest.settings:get_bool("unified_inventory_hide_uncraftable_items", false),
version = 4 version = 5
} }
local ui = unified_inventory local ui = unified_inventory

View File

@ -270,8 +270,8 @@ local function formspec_add_item_browser(player, formspec, ui_peruser)
button_name, minetest.formspec_escape(tooltip) button_name, minetest.formspec_escape(tooltip)
) )
n = n + 2 n = n + 2
list_index = list_index + 1
end end
list_index = list_index + 1
end end
end end
formspec[n] = "style[page_number;content_offset=0]" formspec[n] = "style[page_number;content_offset=0]"
@ -349,12 +349,29 @@ function ui.apply_filter(player, filter, search_dir)
end end
local player_name = player:get_player_name() local player_name = player:get_player_name()
-- Whether to show uncraftable items
local fprefilter = function(_)
return true
end
if ui.hide_uncraftable_items and not ui.is_creative(player_name) then
fprefilter = function(name)
return ui.get_recipe_list(name)
end
end
local registered_items = minetest.registered_items
local lfilter = string.lower(filter) local lfilter = string.lower(filter)
local ffilter local ffilter
if lfilter:sub(1, 6) == "group:" then if lfilter:sub(1, 6) == "group:" then
-- Group filter: all groups of the item must match -- Group filter: all groups of the item must match
local groups = lfilter:sub(7):split(",") local groups = lfilter:sub(7):split(",")
ffilter = function(name, def) ffilter = function(name)
local def = registered_items[name]
if not def then
return false
end
for _, group in ipairs(groups) do for _, group in ipairs(groups) do
if not def.groups[group] if not def.groups[group]
or def.groups[group] <= 0 then or def.groups[group] <= 0 then
@ -368,7 +385,12 @@ function ui.apply_filter(player, filter, search_dir)
local player_info = minetest.get_player_information(player_name) local player_info = minetest.get_player_information(player_name)
local lang = player_info and player_info.lang_code or "" local lang = player_info and player_info.lang_code or ""
ffilter = function(name, def) ffilter = function(name)
local def = registered_items[name]
if not def then
return false
end
local lname = string.lower(name) local lname = string.lower(name)
local ldesc = string.lower(def.description) local ldesc = string.lower(def.description)
local llocaldesc = minetest.get_translated_string local llocaldesc = minetest.get_translated_string
@ -378,32 +400,29 @@ function ui.apply_filter(player, filter, search_dir)
end end
end end
local is_itemdef_listable = ui.is_itemdef_listable
local filtered_items = {} local filtered_items = {}
local category = ui.current_category[player_name] or 'all' local category = ui.current_category[player_name] or 'all'
if category == 'all' then if category == 'all' then
for name, def in pairs(minetest.registered_items) do for _, name in ipairs(ui.items_list) do
if is_itemdef_listable(def) if fprefilter(name) and ffilter(name) then
and ffilter(name, def) then
table.insert(filtered_items, name) table.insert(filtered_items, name)
end end
end end
elseif category == 'uncategorized' then elseif category == 'uncategorized' then
for name, def in pairs(minetest.registered_items) do for _, name in ipairs(ui.items_list) do
if is_itemdef_listable(def) if not ui.find_category(name)
and not ui.find_category(name) and fprefilter(name)
and ffilter(name, def) then and ffilter(name) then
table.insert(filtered_items, name) table.insert(filtered_items, name)
end end
end end
else else
-- Any other category is selected -- Any other category is selected
for name, exists in pairs(ui.registered_category_items[category]) do for name, exists in pairs(ui.registered_category_items[category]) do
local def = minetest.registered_items[name] if exists
if exists and def and fprefilter(name)
and is_itemdef_listable(def) and ffilter(name) then
and ffilter(name, def) then
table.insert(filtered_items, name) table.insert(filtered_items, name)
end end
end end

View File

@ -215,7 +215,7 @@ local function stack_image_button(x, y, w, h, buttonname_prefix, item)
local group_name = name:sub(7) local group_name = name:sub(7)
local group_item = ui.get_group_item(group_name) local group_item = ui.get_group_item(group_name)
show_is_group = not group_item.sole show_is_group = not group_item.sole
displayitem = group_item.item or "unknown" displayitem = group_item.item or name
selectitem = group_item.sole and displayitem or name selectitem = group_item.sole and displayitem or name
end end
local label = show_is_group and "G" or "" local label = show_is_group and "G" or ""

View File

@ -16,6 +16,10 @@ unified_inventory_waypoints (Enable waypoints) bool true
# If enabled, disabled buttons will be hidden instead of grayed out. # If enabled, disabled buttons will be hidden instead of grayed out.
unified_inventory_hide_disabled_buttons (Hide disabled buttons) bool false unified_inventory_hide_disabled_buttons (Hide disabled buttons) bool false
# Hides items with no known craft recipe from the category "all" (default).
# This setting has no effect on players in creative mode.
unified_inventory_hide_uncraftable_items (Hide uncraftable items) bool false
# Automatically categorizes registered items based on their # Automatically categorizes registered items based on their
# groups. This is based on a fuzzy match, thus is not 100% accurate. # groups. This is based on a fuzzy match, thus is not 100% accurate.
unified_inventory_automatic_categorization (Categories: add items automatically) bool true unified_inventory_automatic_categorization (Categories: add items automatically) bool true