forked from your-land-mirror/yl_speak_up
moved '/npc_talk force_edit' into editor/ part
This commit is contained in:
parent
8dbaaf21d5
commit
596d521345
@ -1,5 +1,8 @@
|
|||||||
-- Implementation of chat commands that were registered in register_once
|
-- Implementation of chat commands that were registered in register_once
|
||||||
|
|
||||||
|
-- this is a way to provide additional help if a mod adds further commands (like the editor)
|
||||||
|
yl_speak_up.add_to_command_help_text = ""
|
||||||
|
|
||||||
-- general function for handling talking to the NPC
|
-- general function for handling talking to the NPC
|
||||||
yl_speak_up.command_npc_talk = function(pname, param)
|
yl_speak_up.command_npc_talk = function(pname, param)
|
||||||
if(not(pname)) then
|
if(not(pname)) then
|
||||||
@ -23,10 +26,6 @@ yl_speak_up.command_npc_talk = function(pname, param)
|
|||||||
elseif(cmd and cmd == "debug") then
|
elseif(cmd and cmd == "debug") then
|
||||||
-- implemented in npc_talk_debug.lua:
|
-- implemented in npc_talk_debug.lua:
|
||||||
return yl_speak_up.command_npc_talk_debug(pname, rest)
|
return yl_speak_up.command_npc_talk_debug(pname, rest)
|
||||||
-- activates edit mode when talking to an NPC; but only if the player can edit that NPC
|
|
||||||
elseif(cmd and cmd == "force_edit") then
|
|
||||||
-- implemented in functions.lua:
|
|
||||||
return yl_speak_up.command_npc_talk_force_edit(pname, rest)
|
|
||||||
|
|
||||||
-- managing generic NPC requires npc_talk_admin priv
|
-- managing generic NPC requires npc_talk_admin priv
|
||||||
elseif(cmd and cmd == "generic") then
|
elseif(cmd and cmd == "generic") then
|
||||||
@ -69,11 +68,11 @@ yl_speak_up.command_npc_talk = function(pname, param)
|
|||||||
" version show human-readable version information\n"..
|
" version show human-readable version information\n"..
|
||||||
" list shows a list of NPC that you can edit\n"..
|
" list shows a list of NPC that you can edit\n"..
|
||||||
" debug debug a particular NPC\n"..
|
" debug debug a particular NPC\n"..
|
||||||
" force_edit forces edit mode for any NPC you talk to\n"..
|
|
||||||
" generic [requores npc_talk_admin priv] list, add or remove NPC as generic NPC\n"..
|
" generic [requores npc_talk_admin priv] list, add or remove NPC as generic NPC\n"..
|
||||||
" force_restore_npc [requires npc_talk_admin priv] restore NPC that got lost\n"..
|
" force_restore_npc [requires npc_talk_admin priv] restore NPC that got lost\n"..
|
||||||
" privs [requires privs priv] list, grant or revoke privs for an NPC\n"..
|
" privs [requires privs priv] list, grant or revoke privs for an NPC\n"..
|
||||||
-- reload is fully handled in register_once
|
-- reload is fully handled in register_once
|
||||||
"Note: /npc_talk_reload [requires privs priv] reloads the code of the mod without server "..
|
"Note: /npc_talk_reload [requires privs priv] reloads the code of the mod without server "..
|
||||||
"restart.")
|
"restart."..
|
||||||
|
yl_speak_up.add_to_command_help_text)
|
||||||
end
|
end
|
||||||
|
28
editor/chat_commands_in_edit_mode.lua
Normal file
28
editor/chat_commands_in_edit_mode.lua
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
-- Implementation of chat commands that were registered in register_once
|
||||||
|
-- (here: only add those additional things needed for edit mode)
|
||||||
|
|
||||||
|
local old_command_npc_talk = yl_speak_up.command_npc_talk
|
||||||
|
yl_speak_up.command_npc_talk = function(pname, param)
|
||||||
|
if(not(pname)) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- activates edit mode when talking to an NPC; but only if the player can edit that NPC
|
||||||
|
if(param and param == "force_edit") then
|
||||||
|
-- implemented in functions.lua:
|
||||||
|
return yl_speak_up.command_npc_talk_force_edit(pname, rest)
|
||||||
|
end
|
||||||
|
-- not perfect - but at least some help
|
||||||
|
if(param
|
||||||
|
and (param == "help force_edit"
|
||||||
|
or param == "? force_edit"
|
||||||
|
or param == "force_edit help")) then
|
||||||
|
minetest.chat_send_player(pname,
|
||||||
|
"Toggles force edit mode. This is helpful if you cut yourself out "..
|
||||||
|
"of editing an NPC by breaking it. From now on all NPC you will talk to "..
|
||||||
|
"will already be in edit mode (provided you are allowed to edit them)."..
|
||||||
|
"\nIssuing the command again ends force edit mode.")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return old_command_npc_talk(pname, param)
|
||||||
|
end
|
24
editor/command_force_edit_mode.lua
Normal file
24
editor/command_force_edit_mode.lua
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
|
||||||
|
-- allow to enter force edit mode (useful when an NPC was broken)
|
||||||
|
yl_speak_up.force_edit_mode = {}
|
||||||
|
-- command to enter force edit mode
|
||||||
|
yl_speak_up.command_npc_talk_force_edit = function(pname, param)
|
||||||
|
if(not(pname)) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if(yl_speak_up.force_edit_mode[pname]) then
|
||||||
|
yl_speak_up.force_edit_mode[pname] = nil
|
||||||
|
minetest.chat_send_player(pname,
|
||||||
|
"Ending force edit mode for NPC. From now on talks "..
|
||||||
|
"will no longer start in edit mode.")
|
||||||
|
else
|
||||||
|
yl_speak_up.force_edit_mode[pname] = true
|
||||||
|
minetest.chat_send_player(pname,
|
||||||
|
"STARTING force edit mode for NPC. From now on talks "..
|
||||||
|
"with NPC will always start in edit mode provided "..
|
||||||
|
"you are allowed to edit this NPC.\n"..
|
||||||
|
"In order to end force edit mode, give the command "..
|
||||||
|
"/npc_talk_force_edit a second time.")
|
||||||
|
end
|
||||||
|
end
|
@ -6,8 +6,16 @@ yl_speak_up.in_edit_mode = function(pname)
|
|||||||
and (yl_speak_up.edit_mode[pname] == yl_speak_up.speak_to[pname].n_id)
|
and (yl_speak_up.edit_mode[pname] == yl_speak_up.speak_to[pname].n_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local modname = minetest.get_current_modname()
|
||||||
|
|
||||||
|
-- TODO: adjust to new mod name and paths
|
||||||
|
local modpath = minetest.get_modpath(modname)..DIR_DELIM.."editor"..DIR_DELIM
|
||||||
|
|
||||||
|
-- this is a way to provide additional help if a mod adds further commands (like the editor)
|
||||||
|
yl_speak_up.add_to_command_help_text = yl_speak_up.add_to_command_help_text..
|
||||||
|
"\nAdditional commands provided by "..tostring(modname)..":\n"..
|
||||||
|
" force_edit forces edit mode for any NPC you talk to\n"
|
||||||
|
|
||||||
local modpath = minetest.get_modpath("yl_speak_up")..DIR_DELIM.."editor"..DIR_DELIM
|
|
||||||
|
|
||||||
-- overrides of functions fo fs/fs_talkdialog.lua when in edit_mode (or for entering/leaving it)
|
-- overrides of functions fo fs/fs_talkdialog.lua when in edit_mode (or for entering/leaving it)
|
||||||
dofile(modpath .. "fs/fs_talkdialog_edit_mode.lua")
|
dofile(modpath .. "fs/fs_talkdialog_edit_mode.lua")
|
||||||
@ -128,6 +136,10 @@ local modpath = minetest.get_modpath("yl_speak_up")..DIR_DELIM.."editor"..DIR_DE
|
|||||||
dofile(modpath .. "fs/fs_properties.lua")
|
dofile(modpath .. "fs/fs_properties.lua")
|
||||||
-- -- the main functionality of the mod
|
-- -- the main functionality of the mod
|
||||||
-- dofile(modpath .. "functions.lua")
|
-- dofile(modpath .. "functions.lua")
|
||||||
|
-- /npc_talk force_edit (when talking to an NPC in the normal way fails):
|
||||||
|
dofile(modpath .. "command_force_edit_mode.lua")
|
||||||
|
-- add the force_edit option to the chat commands
|
||||||
|
dofile(modpath .. "chat_commands_in_edit_mode.lua")
|
||||||
-- -- implementation of the chat commands registered in register_once.lua:
|
-- -- implementation of the chat commands registered in register_once.lua:
|
||||||
-- dofile(modpath .. "chat_commands.lua")
|
-- dofile(modpath .. "chat_commands.lua")
|
||||||
-- creating and maintaining quests
|
-- creating and maintaining quests
|
||||||
|
@ -665,3 +665,20 @@ yl_speak_up.get_fs_talkdialog_add_edit_and_command_buttons = function(
|
|||||||
return {h = h, formspec = formspec}
|
return {h = h, formspec = formspec}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- apply force_edit_mode if necessary
|
||||||
|
local old_get_fs_talkdialog = yl_speak_up.get_fs_talkdialog
|
||||||
|
yl_speak_up.get_fs_talkdialog = function(player, n_id, d_id, alternate_text, recursion_depth)
|
||||||
|
if(not(player)) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local pname = player:get_player_name()
|
||||||
|
-- are we in force edit mode, and can the player edit this NPC?
|
||||||
|
if(yl_speak_up.force_edit_mode[pname]
|
||||||
|
-- not already in edit mode?
|
||||||
|
and (not(yl_speak_up.edit_mode[pname]) or yl_speak_up.edit_mode[pname] ~= n_id)
|
||||||
|
and yl_speak_up.may_edit_npc(player, n_id)) then
|
||||||
|
yl_speak_up.edit_mode[pname] = n_id
|
||||||
|
end
|
||||||
|
return old_get_fs_talkdialog(player, n_id, d_id, alternate_text, recursion_depth)
|
||||||
|
end
|
||||||
|
@ -513,29 +513,6 @@ yl_speak_up.check_for_disambigous_results = function(n_id, pname)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- allow to enter force edit mode (useful when an NPC was broken)
|
|
||||||
yl_speak_up.force_edit_mode = {}
|
|
||||||
-- command to enter force edit mode
|
|
||||||
yl_speak_up.command_npc_talk_force_edit = function(pname, param)
|
|
||||||
if(not(pname)) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
if(yl_speak_up.force_edit_mode[pname]) then
|
|
||||||
yl_speak_up.force_edit_mode[pname] = nil
|
|
||||||
minetest.chat_send_player(pname,
|
|
||||||
"Ending force edit mode for NPC. From now on talks "..
|
|
||||||
"will no longer start in edit mode.")
|
|
||||||
else
|
|
||||||
yl_speak_up.force_edit_mode[pname] = true
|
|
||||||
minetest.chat_send_player(pname,
|
|
||||||
"STARTING force edit mode for NPC. From now on talks "..
|
|
||||||
"with NPC will always start in edit mode provided "..
|
|
||||||
"you are allowed to edit this NPC.\n"..
|
|
||||||
"In order to end force edit mode, give the command "..
|
|
||||||
"/npc_talk_force_edit a second time.")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Make the NPC talk
|
-- Make the NPC talk
|
||||||
|
|
||||||
-- assign n_ID
|
-- assign n_ID
|
||||||
@ -657,12 +634,6 @@ function yl_speak_up.talk(self, clicker)
|
|||||||
yl_speak_up.speak_to[pname].may_edit_this_npc = true
|
yl_speak_up.speak_to[pname].may_edit_this_npc = true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- are we in force edit mode, and can the player edit this NPC?
|
|
||||||
if(yl_speak_up.force_edit_mode[pname]
|
|
||||||
and yl_speak_up.may_edit_npc(clicker, n_id)) then
|
|
||||||
yl_speak_up.edit_mode[pname] = n_id
|
|
||||||
end
|
|
||||||
|
|
||||||
local dialog = yl_speak_up.speak_to[pname].dialog
|
local dialog = yl_speak_up.speak_to[pname].dialog
|
||||||
if(not(dialog.trades)) then
|
if(not(dialog.trades)) then
|
||||||
dialog.trades = {}
|
dialog.trades = {}
|
||||||
|
@ -159,17 +159,6 @@ minetest.register_chatcommand( 'npc_talk_reload', {
|
|||||||
|
|
||||||
-- most of the files of this mod can be reloaded without the server having to
|
-- most of the files of this mod can be reloaded without the server having to
|
||||||
-- be restarted;
|
-- be restarted;
|
||||||
-- handled in init.lua
|
|
||||||
minetest.register_chatcommand( 'npc_talk_force_edit', {
|
|
||||||
description = "Toggles force edit mode. This is helpful if you cut yourself out "..
|
|
||||||
"of editing an NPC by breaking it. From now on all NPC you will talk to "..
|
|
||||||
"will already be in edit mode (provided you are allowed to edit them)."..
|
|
||||||
"\nIssuing the command again ends force edit mode.",
|
|
||||||
privs = {npc_talk_owner = true},
|
|
||||||
func = function(pname, param)
|
|
||||||
return yl_speak_up.command_npc_talk_force_edit(pname, param)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- a general command that may branch off and/or offer help
|
-- a general command that may branch off and/or offer help
|
||||||
minetest.register_chatcommand( 'npc_talk', {
|
minetest.register_chatcommand( 'npc_talk', {
|
||||||
|
Loading…
Reference in New Issue
Block a user