Создание базового мода (luanti)

Russian
Post Reply
User avatar
Ermak
Member
Posts: 13
Joined: Thu Jan 02, 2025 16:56
GitHub: Ermak-MT
In-game: ermprost

Создание базового мода (luanti)

by Ermak » Post

Всем привет, меня зовут Ермак!

В этой статье я расскажу как создать простой мод для Luanti, руда, инструменты, рецепты крафта и броня (потребуется мод 3d_armor)

И так, приступим к делу!

Для начала создадим директорию с названием мода в директории mods в файлах игры, в моем случае это moretools, а после создадим директорию textures в директории мода, потом создади исполняемый файл init.lua и mod.conf

Должно получиться так:
mymod/
- textures/
- - mymod_node.png
- init.lua
- mod.conf

После мы должны отредактировать файл mod.conf вот так:

Code: Select all

mod_name = moretools
depends = 3d_armor
Дополнения можно прописать в файле depends.txt в место mod.conf вот таким образом:

Code: Select all

3d_armor, default
default как пример)

Тогда директория должна выглядеть так:
mymod/
- textures/
- - mymod_node.png
- init.lua
- depends.txt
- mod.conf

Следующий шаг редактирование исполняемого файла init.lua
Советую заполнить как у меня:

Code: Select all

--Load Mod

local S = minetest.get_translator()
local path = minetest.get_modpath(minetest.get_current_modname())

dofile(path .. "/tools.lua")
dofile(path .. "/ores.lua")
dofile(path .. "/recipes.lua")
dofile(path .. "/armor.lua")
Я расположил руду, рецепты крафта, инструменты и броню по отдельности.

Двигаемся дальше, регистрация руды:

Code: Select all

minetest.register_craftitem("moretools:amethyst_lump", {
	description = ("Amethyst lump"),
	inventory_image = "amethyst_lump.png",
})

minetest.register_craftitem("moretools:amethyst_ingot", {
	description = ("Amethyst ingot"),
	inventory_image = "amethyst_ingot.png",
})

minetest.register_node("moretools:amethyst_ore", {
	description = ("Amethyst ore"),
	tiles = {"default_stone.png^amethyst_ore.png"},
	groups = {cracky=3, stone=1},
	drop = 'moretools:amethyst_lump',
})

minetest.register_ore({
	ore_type = "scatter",
	ore = "moretools:amethyst_ore",
	wherein = "default:stone",
	clust_scarcity = 10*10*10,
	clust_num_ores = 5,
	clust_size = 5,
	y_min = -31000,
	y_max = -1500,
})
Крафты инструментов и плавки руды:

Code: Select all

--Крафты
minetest.register_craft({
	output = "moretools:amethyst_pickaxe",
	recipe = {
		{"moretools:amethyst_ingot", "moretools:amethyst_ingot", "moretools:amethyst_ingot"},
		{"", "default:stick", ""},
		{"", "default:stick", ""},
	},
})

--Плавка
minetest.register_craft({
	type = "cooking",
	output = "moretools:amethyst_ingot",
	recipe = "moretools:amethyst",
	cooktime = 5,
})
Инструменты:

Code: Select all

minetest.register_tool("moretools:copper_pickaxe", {
	description = ("Copper Pickaxe"),
	inventory_image = "copper_pickaxe.png",
	tool_capabilities = {
		full_punch_interval = 1.0,
		max_drop_level=1,
		groupcaps={
			cracky = {times={[1]=4.50, [2]=1.80, [3]=0.90}, uses=20, maxlevel=2},
		},
		damage_groups = {fleshy=4},
	},
	sound = {breaks = "default_tool_breaks"},
	groups = {pickaxe = 1}
})
Если хотите другие инструменты то в переменную: groups = {} надо в место pickaxe=1 добавить sword=1 для меча, shovel=1 для лопаты, axe=1 для топора и hoe=1 для матыги.

Самое интересное, броня:

Code: Select all

armor:register_armor(":moretools:helmet_amethyst", {

    description = ("Amethyst Helmet"),
    inventory_image = "moretools_inv_helmet_amethyst.png",
    groups = {armor_head=1, armor_heal=12, armor_use=100, armor_fire=1},
    armor_groups = {fleshy=15},
    damage_groups = {cracky=2, snappy=1, level=3},
})

armor:register_armor(":moretools:chestplate_amethyst", {
    description = ("Amethyst Chestplate"),
    inventory_image = "moretools_inv_chestplate_amethyst.png",
    groups = {armor_torso=1, armor_heal=12, armor_use=100, armor_fire=1},
    armor_groups = {fleshy=20},
    damage_groups = {cracky=2, snappy=1, level=3},
})

armor:register_armor(":moretools:leggins_amethyst", {
    description = ("Amethyst Leggins"),
    inventory_image = "moretools_inv_leggins_amethyst.png",
    groups = {armor_legs=1, armor_heal=12, armor_use=100, armor_fire=1},
    armor_groups = {fleshy=20},
    damage_groups = {cracky=2, snappy=1, level=3},
})

armor:register_armor(":moretools:boots_amethyst", {
    description = ("Amethyst Boots"),
    inventory_image = "moretools_inv_boots_amethyst.png",
    groups = {armor_feet=1, armor_heal=12, armor_use=100, physics_speed=1,
            physics_jump=0.5, armor_fire=1},
    armor_groups = {fleshy=15},
    damage_groups = {cracky=2, snappy=1, level=3},
})
Текстуры 3D модели это id брони но вместо moretools:helmet_amethyst надо назвать текстуру вот так: moretools_helmet_amethyst.png и изображение брони в инвентаре должно называться: moretools_helmet_amethyst_preview.png

И так, подводим итоги:
Вы научились создавать базовый мод для Luanti, надеюсь помог, удачи в продвижении!

OwlConfident
New member
Posts: 6
Joined: Mon Dec 16, 2024 17:37

Re: Создание базового мода (luanti)

by OwlConfident » Post

Немног сумбурно - но урок хороший , молодца))

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest