first commit

This commit is contained in:
AliasAlreadyTaken 2020-11-20 11:45:50 +01:00
commit 04dd3d514d
42 changed files with 2964 additions and 0 deletions

21
config.lua Normal file
View File

@ -0,0 +1,21 @@
-- Do the NPCs talk right after they spawned?
yl_speak_up.talk_after_spawn = true
-- What shall we call the folder all the dialogs will reside in?
yl_speak_up.path = "yl_speak_up_dialogs"
-- Texts
yl_speak_up.message_button_option_exit = "Farewell!"
yl_speak_up.message_button_option_prerequisites_not_met_default = "Locked answer"
yl_speak_up.message_tool_taken_because_of_lacking_priv = "We took the tool from you and logged this event. You used an admin item while lacking the neccessary priv npc_master"
yl_speak_up.text_new_dialog_id = "New dialog"
yl_speak_up.text_new_option_id = "New option"
yl_speak_up.text_new_prerequisite_id = "New prerequisite"
yl_speak_up.text_new_result_id = "New result"
yl_speak_up.text_version_warning = "You are using an outdated Minetest version!\nI will have a hard time talking to you properly, but I will try my best.\nYou can help me by upgrading to at least 5.3.0!\nGet it at https://minetest.net/downloads"
yl_speak_up.infotext = "Rightclick to talk"
yl_speak_up.max_number_of_buttons = 7

107
dev/example.json Normal file
View File

@ -0,0 +1,107 @@
{
"n_id": "n_1",
"n_npc": "Mayor",
"n_description": "The Mayor of Haven",
"n_dialogs": {
"d_1": {
"d_id": "d_1",
"d_type": "text",
"d_text": "Hello Adventurer, I am the Mayor of Haven.",
"d_options": {
"o_1": {
"o_id": "o_1",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "",
"o_text_when_prerequisites_met": "",
"o_prerequisites": {
"p_1": {
"p_id": "p_1",
"p_type": "auto",
"p_value": "5"
}
},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "2"
}
}
}
}
},
"d_2": {
"d_id": "d_2",
"d_text": "What can I do for you?",
"d_options": {
"o_1": {
"o_id": "o_1",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "This option is not available.",
"o_text_when_prerequisites_met": "Let's talk about the plots in the city!",
"o_prerequisites": {},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "3"
}
}
},
"o_2": {
"o_id": "o_2",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "This option is not available.",
"o_text_when_prerequisites_met": "Let's talk about Airports!",
"o_prerequisites": {},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "4"
}
}
}
}
},
"d_3": {
"d_id": "d_3",
"d_text": "Text3",
"d_options": {
"o_1": {
"o_id": "o_1",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "This option is not available.",
"o_text_when_prerequisites_met": "Let's talk about the plots in the city!",
"o_prerequisites": {},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "3"
}
}
},
"o_2": {
"o_id": "o_2",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "This option is not available.",
"o_text_when_prerequisites_met": "Let's talk about Airports!",
"o_prerequisites": {},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "4"
}
}
}
}
}
}
}

80
dev/example2.json Normal file
View File

@ -0,0 +1,80 @@
{
"n_id": "n_12",
"n_npc": "Mayor",
"n_description": "The Mayor of Haven",
"n_dialogs": {
"d_1": {
"d_id": "d_1",
"d_type": "text",
"d_text": "Hello Adventurer, I am the Mayor of Haven.",
"d_options": {
"o_1": {
"o_id": "o_1",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "o_1 notmet",
"o_text_when_prerequisites_met": "o_1 met",
"o_prerequisites": {
"p_1": {
"p_id": "p_1",
"p_type": "auto",
"p_value": "5"
}
},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "2"
}
}
},
"o_2": {
"o_id": "o_2",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "o_2 notmet",
"o_text_when_prerequisites_met": "o_2 met",
"o_prerequisites": {
"p_1": {
"p_id": "p_1",
"p_type": "auto",
"p_value": "5"
}
},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "2"
}
}
},
"o_3": {
"o_id": "o_3",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "o3 notmet",
"o_text_when_prerequisites_met": "o3 met",
"o_prerequisites": {
"p_1": {
"p_id": "p_1",
"p_type": "auto",
"p_value": "5"
}
},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "2"
}
}
}
}
}
}
}

1
dev/n_1.json Normal file
View File

@ -0,0 +1 @@
{ "n_id": "n_1", "n_npc": "Mayor", "n_description": "The Mayor of Haven", "n_dialogs": { "d_1": { "d_id": "d_1", "d_type": "text", "d_text": "Hello Adventurer, I am the Mayor of Haven.", "d_options": { "o_1": { "o_id": "o_1", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "", "o_text_when_prerequisites_met": "", "o_prerequisites": { "p_1": { "p_id": "p_1", "p_type": "auto", "p_value": "5" } }, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "2" } } } } }, "d_2": { "d_id": "d_2", "d_text": "What can I do for you?", "d_options": { "o_1": { "o_id": "o_1", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "This option is not available.", "o_text_when_prerequisites_met": "Let's talk about the plots in the city!", "o_prerequisites": {}, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "3" } } }, "o_2": { "o_id": "o_2", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "This option is not available.", "o_text_when_prerequisites_met": "Let's talk about Airports!", "o_prerequisites": {}, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "4" } } } } }, "d_3": { "d_id": "d_3", "d_text": "Text3", "d_options": { "o_1": { "o_id": "o_1", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "This option is not available.", "o_text_when_prerequisites_met": "Let's talk about the plots in the city!", "o_prerequisites": {}, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "3" } } }, "o_2": { "o_id": "o_2", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "This option is not available.", "o_text_when_prerequisites_met": "Let's talk about Airports!", "o_prerequisites": {}, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "4" } } } } } } }

77
dev/n_12.json Normal file
View File

@ -0,0 +1,77 @@
{
"n_id": "n_12",
"n_npc": "Mayor",
"n_description": "The Mayor of Haven",
"n_dialogs": {
"d_1": {
"d_id": "d_1",
"d_type": "text",
"d_text": "Hello Adventurer, I am the Mayor of Haven.",
"d_options": {
"o_1": {
"o_id": "o_1",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "o_1 notmet",
"o_text_when_prerequisites_met": "o_1 met",
"o_prerequisites": {
"p_1": {
"p_id": "p_1",
"p_type": "auto",
"p_value": "5"
}
},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "2"
}
}
},
"o_2": {
"o_id": "o_2",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "o_2 notmet",
"o_text_when_prerequisites_met": "o_2 met",
"o_prerequisites": {
"p_1": {
"p_id": "p_1",
"p_type": "auto",
"p_value": "5"
}
},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "2"
}
}
},
"o_3": {
"o_id": "o_3",
"o_hide_when_prerequisites_not_met": "false",
"o_grey_when_prerequisites_not_met": "true",
"o_text_when_prerequisites_not_met": "o3 notmet",
"o_text_when_prerequisites_met": "o3 met",
"o_prerequisites": {
"p_1": {
"p_id": "p_1",
"p_type": "auto",
"p_value": "5"
}
},
"o_results": {
"r_1": {
"r_id": "r_1",
"r_type": "dialog",
"r_value": "2"
}
}
}
}
}
}
}

1
dev/n_20.json Normal file
View File

@ -0,0 +1 @@
{ "n_id": "n_12", "n_npc": "Mayor", "n_description": "The Mayor of Haven", "n_dialogs": { "d_1": { "d_id": "d_1", "d_type": "text", "d_text": "Hello Adventurer, I am the Mayor of Haven.", "d_options": { "o_1": { "o_id": "o_1", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "o_1 notmet", "o_text_when_prerequisites_met": "o_1 met", "o_prerequisites": { "p_1": { "p_id": "p_1", "p_type": "auto", "p_value": "5" } }, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "2" } } }, "o_2": { "o_id": "o_2", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "o_2 notmet", "o_text_when_prerequisites_met": "o_2 met", "o_prerequisites": { "p_1": { "p_id": "p_1", "p_type": "auto", "p_value": "5" } }, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "2" } } }, "o_3": { "o_id": "o_3", "o_hide_when_prerequisites_not_met": "false", "o_grey_when_prerequisites_not_met": "true", "o_text_when_prerequisites_not_met": "o3 notmet", "o_text_when_prerequisites_met": "o3 met", "o_prerequisites": { "p_1": { "p_id": "p_1", "p_type": "auto", "p_value": "5" } }, "o_results": { "r_1": { "r_id": "r_1", "r_type": "dialog", "r_value": "2" } } } } } } }

16
dev/whatdowedo.txt Normal file
View File

@ -0,0 +1,16 @@
Next:
Bugfixes and executing functions when talked to
###
https://codeberg.org/Hamlet/mobs_humans/src/branch/master/init.lua
https://github.com/minetest-mods/areas/blob/master/internal.lua
https://forum.minetest.net/viewtopic.php?t=20379
https://forum.minetest.net/viewtopic.php?t=19108
###
Make flat:
echo $(cat example.json) > n_12.json

2140
functions.lua Normal file

File diff suppressed because it is too large Load Diff

28
init.lua Normal file
View File

@ -0,0 +1,28 @@
yl_speak_up = {}
local modpath = minetest.get_modpath("yl_speak_up")..DIR_DELIM
yl_speak_up.worldpath = minetest.get_worldpath()..DIR_DELIM
yl_speak_up.modpath = modpath
yl_speak_up.modstorage = minetest.get_mod_storage()
-- status
-- 0: NPCs may speak
-- 1: NPCs may not speak
-- 2: NPCs must selfdestruct on load. Their dialogs remain safed
yl_speak_up.status = yl_speak_up.modstorage:get_int("status") or 0
yl_speak_up.number_of_npcs = yl_speak_up.modstorage:get_int("amount") or 0
yl_speak_up.speak_to = {}
dofile(modpath .. "config.lua")
dofile(modpath .. "privs.lua")
dofile(modpath .. "functions.lua")
dofile(modpath .. "tools.lua")
dofile(modpath .. "mobs.lua")
--dofile(modpath .. "debug.lua")
minetest.mkdir(yl_speak_up.worldpath..yl_speak_up.path)
yl_speak_up.mob_table = yl_speak_up.init_mob_table() or {}
minetest.log("action","[MOD] yl_speak_up loaded")

333
mobs.lua Normal file
View File

@ -0,0 +1,333 @@
mobs:register_mob("yl_speak_up:human", {
type = "npc",
passive = true,
damage = 9,
attack_type = "dogfight",
attacks_monsters = true,
attack_npcs = false,
owner_loyal = false,
pathfinding = false,
hp_min = 60,
hp_max = 100,
armor = 0,
collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3},
visual = "mesh",
visual_size = {x = 1, y = 1},
mesh = "skinsdb_3d_armor_character_5.b3d",
drawtype = "front",
textures = {{
"blank.png", -- cape?
"yl_speak_up_main_default.png", -- 64x64 skin
"3d_armor_trans.png", -- shield?!
"3d_armor_trans.png", -- item right hand
}},
makes_footstep_sound = true,
sounds = {},
walk_velocity = 2,
run_velocity = 3,
jump = false,
water_damage = 0,
lava_damage = 0,
light_damage = 0,
view_range = 4,
owner = "Haven",
order = "stand",
fear_height = 3,
animation = {
speed_normal = 30,
speed_run = 30,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219,
},
on_rightclick = yl_speak_up.on_rightclick,
on_spawn = yl_speak_up.on_spawn,
after_activate = yl_speak_up.after_activate
})
mobs:register_egg("yl_speak_up:human", "Human", "wool_blue.png", 1)
mobs:register_mob("yl_speak_up:elf", {
type = "npc",
passive = true,
damage = 9,
attack_type = "dogfight",
attacks_monsters = true,
attack_npcs = false,
owner_loyal = false,
pathfinding = false,
hp_min = 60,
hp_max = 100,
armor = 0,
collisionbox = {-0.25, 0.0, -0.25, 0.25, 1.9, 0.25},
visual = "mesh",
visual_size = {x = 0.9, y = 1.1},
mesh = "skinsdb_3d_armor_character_5.b3d",
drawtype = "front",
textures = {{
"blank.png", -- cape?
"yl_speak_up_main_default.png", -- 64x64 skin
"3d_armor_trans.png", -- shield?!
"3d_armor_trans.png", -- item right hand
}},
makes_footstep_sound = true,
sounds = {},
walk_velocity = 2,
run_velocity = 3,
jump = false,
water_damage = 0,
lava_damage = 0,
light_damage = 0,
view_range = 4,
owner = "Haven",
order = "stand",
fear_height = 3,
animation = {
speed_normal = 30,
speed_run = 30,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219,
},
on_rightclick = yl_speak_up.on_rightclick,
on_spawn = yl_speak_up.on_spawn,
after_activate = yl_speak_up.after_activate
})
mobs:register_egg("yl_speak_up:elf", "Elf", "wool_cyan.png", 1)
mobs:register_mob("yl_speak_up:dwarf", {
type = "npc",
passive = true,
damage = 9,
attack_type = "dogfight",
attacks_monsters = true,
attack_npcs = false,
owner_loyal = false,
pathfinding = false,
hp_min = 60,
hp_max = 100,
armor = 0,
collisionbox = {-0.35, 0.0, -0.35, 0.35, 1.4, 0.35},
visual = "mesh",
visual_size = {x = 1.1, y = 0.8},
mesh = "skinsdb_3d_armor_character_5.b3d",
drawtype = "front",
textures = {{
"blank.png", -- cape?
"yl_speak_up_main_default.png", -- 64x64 skin
"3d_armor_trans.png", -- shield?!
"3d_armor_trans.png", -- item right hand
}},
makes_footstep_sound = true,
sounds = {},
walk_velocity = 2,
run_velocity = 3,
jump = false,
water_damage = 0,
lava_damage = 0,
light_damage = 0,
view_range = 4,
owner = "Haven",
order = "stand",
fear_height = 3,
animation = {
speed_normal = 30,
speed_run = 30,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219,
},
on_rightclick = yl_speak_up.on_rightclick,
on_spawn = yl_speak_up.on_spawn,
after_activate = yl_speak_up.after_activate
})
mobs:register_egg("yl_speak_up:dwarf", "Dwarf", "wool_red.png", 1)
mobs:register_mob("yl_speak_up:goblin", {
type = "npc",
passive = true,
damage = 9,
attack_type = "dogfight",
attacks_monsters = true,
attack_npcs = false,
owner_loyal = false,
pathfinding = false,
hp_min = 60,
hp_max = 100,
armor = 0,
collisionbox = {-0.25, 0.0, -0.25, 0.25, 1.4, 0.25},
visual = "mesh",
visual_size = {x = 0.7, y = 0.8},
mesh = "skinsdb_3d_armor_character_5.b3d",
drawtype = "front",
textures = {{
"blank.png", -- cape?
"yl_speak_up_main_default.png", -- 64x64 skin
"3d_armor_trans.png", -- shield?!
"3d_armor_trans.png", -- item right hand
}},
makes_footstep_sound = true,
sounds = {},
walk_velocity = 2,
run_velocity = 3,
jump = false,
water_damage = 0,
lava_damage = 0,
light_damage = 0,
view_range = 4,
owner = "Haven",
order = "stand",
fear_height = 3,
animation = {
speed_normal = 30,
speed_run = 30,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219,
},
on_rightclick = yl_speak_up.on_rightclick,
on_spawn = yl_speak_up.on_spawn,
after_activate = yl_speak_up.after_activate
})
mobs:register_egg("yl_speak_up:goblin", "Goblin", "wool_yellow.png", 1)
mobs:register_mob("yl_speak_up:orc", {
type = "npc",
passive = true,
damage = 9,
attack_type = "dogfight",
attacks_monsters = true,
attack_npcs = false,
owner_loyal = false,
pathfinding = false,
hp_min = 60,
hp_max = 100,
armor = 0,
collisionbox = {-0.35, 0.0, -0.35, 0.35, 1.9, 0.35},
visual = "mesh",
visual_size = {x = 1.1, y = 1.1},
mesh = "skinsdb_3d_armor_character_5.b3d",
drawtype = "front",
textures = {{
"blank.png", -- cape?
"yl_speak_up_main_default.png", -- 64x64 skin
"3d_armor_trans.png", -- shield?!
"3d_armor_trans.png", -- item right hand
}},
makes_footstep_sound = true,
sounds = {},
walk_velocity = 2,
run_velocity = 3,
jump = false,
water_damage = 0,
lava_damage = 0,
light_damage = 0,
view_range = 4,
owner = "Haven",
order = "stand",
fear_height = 3,
animation = {
speed_normal = 30,
speed_run = 30,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219,
},
on_rightclick = yl_speak_up.on_rightclick,
on_spawn = yl_speak_up.on_spawn,
after_activate = yl_speak_up.after_activate
})
mobs:register_egg("yl_speak_up:orc", "Orc", "wool_dark_green.png", 1)
-- ###
-- Test
-- ###
mobs:register_mob("yl_speak_up:npc", {
type = "npc",
passive = true,
damage = 9,
attack_type = "dogfight",
attacks_monsters = true,
attack_npcs = false,
owner_loyal = false,
pathfinding = false,
hp_min = 60,
hp_max = 100,
armor = 0,
collisionbox = {-0.35, 0.0, -0.35, 0.35, 1.9, 0.35},
visual = "mesh",
visual_size = {x = 1.1, y = 1.1},
mesh = "skinsdb_3d_armor_character_5.b3d",
drawtype = "front",
textures = {{
"blank.png", -- cape? wenn 64x32, dann 56,20 - 63,31, wenn 128x64, dann 111,39 - 127,63, rest invis
"yl_speak_up_main_default.png", -- 64x64 skin oder auch 128x128?
"blank.png", -- shield?! 64x32
"3d_armor_trans.png", -- item right hand (16x16)
}},
makes_footstep_sound = true,
sounds = {},
walk_velocity = 2,
run_velocity = 3,
jump = false,
water_damage = 0,
lava_damage = 0,
light_damage = 0,
view_range = 4,
owner = "Haven",
order = "stand",
fear_height = 3,
animation = {
speed_normal = 30,
speed_run = 30,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219,
},
on_rightclick = yl_speak_up.on_rightclick,
on_spawn = yl_speak_up.on_spawn,
after_activate = yl_speak_up.after_activate
})
mobs:register_egg("yl_speak_up:npc", "NPC", "wool_black.png", 1)

6
mod.conf Normal file
View File

@ -0,0 +1,6 @@
author = Alias
description = NPCs deliver speeches
release = 202009231753
title = Yourland Speak up
name = yl_speak_up
depends = mobs

Binary file not shown.

7
privs.lua Normal file
View File

@ -0,0 +1,7 @@
local npc_master_priv_definition = {
description="Can use the staffs to command NPCs",
give_to_singleplayer = false,
give_to_admin = true,
}
minetest.register_privilege("npc_master", npc_master_priv_definition)

0
readme.md Normal file
View File

BIN
textures/3d_armor_trans.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

147
tools.lua Normal file
View File

@ -0,0 +1,147 @@
minetest.register_tool("yl_speak_up:staff_of_i_said_so", {
description = "Staff of I-said-so",
inventory_image = "yl_speak_up_staff_of_i_said_so.png",
on_use = function(itemstack, user, pointed_thing)
local has_priv = minetest.check_player_privs(user, {npc_master=true})
local p_name = user:get_player_name()
if not has_priv then
minetest.chat_send_player(p_name,yl_speak_up.message_tool_taken_because_of_lacking_priv)
minetest.log("action","[MOD] yl_speak_up: User "..p_name.." used an admin item: "..itemstack:get_name().." at pos "..minetest.pos_to_string(user:get_pos(),0))
itemstack:take_item(1)
return itemstack
end
if (pointed_thing.type == "object") then
local obj = pointed_thing.ref
local luaentity = obj:get_luaentity()
if luaentity ~= nil and luaentity.yl_speak_up == nil then return itemstack end -- Is the thing we clicked really one of our NPCs?
yl_speak_up.config(user, obj)
return itemstack
end
end
})
minetest.register_tool("yl_speak_up:staff_of_shut_up", {
description = "Staff of shut-up",
inventory_image = "yl_speak_up_staff_of_shut_up.png",
on_use = function(itemstack, user, pointed_thing)
local has_priv = minetest.check_player_privs(user, {npc_master=true})
local p_name = user:get_player_name()
if not has_priv then
minetest.chat_send_player(p_name,yl_speak_up.message_tool_taken_because_of_lacking_priv)
minetest.log("action","[MOD] yl_speak_up: User "..p_name.." used an admin item: "..itemstack:get_name().." at pos "..minetest.pos_to_string(user:get_pos(),0))
itemstack:take_item(1)
return itemstack
end
if (pointed_thing.type == "object") then
local obj = pointed_thing.ref
local luaentity = obj:get_luaentity()
if luaentity ~= nil and luaentity.yl_speak_up == nil then return itemstack end -- Is the thing we clicked really one of our NPCs?
luaentity.yl_speak_up.talk = false
local npc = luaentity.yl_speak_up.id
minetest.chat_send_player(p_name,"NPC with ID "..npc.." will shut up at pos "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID n_"..npc.." will shut up at pos "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
return itemstack
end
end
})
minetest.register_tool("yl_speak_up:staff_of_dawai_dawai", {
description = "Staff of dawai-dawai",
inventory_image = "yl_speak_up_staff_of_dawai_dawai.png",
on_use = function(itemstack, user, pointed_thing)
local has_priv = minetest.check_player_privs(user, {npc_master=true})
local p_name = user:get_player_name()
if not has_priv then
minetest.chat_send_player(p_name,yl_speak_up.message_tool_taken_because_of_lacking_priv)
minetest.log("action","[MOD] yl_speak_up: User "..p_name.." used an admin item: "..itemstack:get_name().." at pos "..minetest.pos_to_string(user:get_pos(),0))
itemstack:take_item(1)
return itemstack
end
if (pointed_thing.type == "object") then
local obj = pointed_thing.ref
local luaentity = obj:get_luaentity()
if luaentity ~= nil and luaentity.yl_speak_up == nil then return itemstack end -- Is the thing we clicked really one of our NPCs?
luaentity.yl_speak_up.talk = true
local npc = luaentity.yl_speak_up.id
minetest.chat_send_player(p_name,"NPC with ID "..npc.." will resume speech at pos "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID n_"..npc.." will resume speech at pos "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
return itemstack
end
end
})
minetest.register_tool("yl_speak_up:staff_of_game_over", {
description = "Staff of game-over",
inventory_image = "yl_speak_up_staff_of_game_over.png",
on_use = function(itemstack, user, pointed_thing)
local has_priv = minetest.check_player_privs(user, {npc_master=true})
local p_name = user:get_player_name()
if not has_priv then
minetest.chat_send_player(p_name,yl_speak_up.message_tool_taken_because_of_lacking_priv)
minetest.log("action","[MOD] yl_speak_up: User "..p_name.." used an admin item: "..itemstack:get_name().." at pos "..minetest.pos_to_string(user:get_pos(),0))
itemstack:take_item(1)
return itemstack
end
if (pointed_thing.type == "object") then
local obj = pointed_thing.ref
local luaentity = obj:get_luaentity()
if luaentity ~= nil and luaentity.yl_speak_up == nil then return itemstack end -- Is the thing we clicked really one of our NPCs?
local npc = luaentity.yl_speak_up.id
minetest.chat_send_player(p_name,"NPC with ID "..npc.." removed from position "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID "..npc.." removed from position "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
obj:remove()
return itemstack
end
end
})
minetest.register_tool("yl_speak_up:staff_of_fashion", {
description = "Staff of fashion",
inventory_image = "yl_speak_up_staff_of_fashion.png",
on_use = function(itemstack, user, pointed_thing)
local has_priv = minetest.check_player_privs(user, {npc_master=true})
local p_name = user:get_player_name()
if not has_priv then
minetest.chat_send_player(p_name,yl_speak_up.message_tool_taken_because_of_lacking_priv)
minetest.log("action","[MOD] yl_speak_up: User "..p_name.." used an admin item: "..itemstack:get_name().." at pos "..minetest.pos_to_string(user:get_pos(),0))
itemstack:take_item(1)
return itemstack
end
if (pointed_thing.type == "object") then
local obj = pointed_thing.ref
local luaentity = obj:get_luaentity()
if luaentity ~= nil and luaentity.yl_speak_up == nil then return itemstack end -- Is the thing we clicked really one of our NPCs?
yl_speak_up.fashion(user, obj)
local npc = luaentity.yl_speak_up.id
minetest.chat_send_player(p_name,"NPC with ID n_"..npc.." will redress at pos "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
minetest.log("action","[MOD] yl_speak_up: NPC with ID n_"..npc.." will redress at pos "..minetest.pos_to_string(obj:get_pos(),0).." on command of "..p_name)
return itemstack
end
end
})