mirror of
https://gitea.your-land.de/Sokomine/yl_speak_up.git
synced 2025-09-02 01:06:23 +02:00
allow actual editing of most preconditions, actions and effects
This commit is contained in:
parent
b594b3d237
commit
a44cb0fbdd
@ -659,6 +659,7 @@ yl_speak_up.get_fs_edit_actions = function(player, table_click_result)
|
|||||||
"a_", "actions", yl_speak_up.max_actions,
|
"a_", "actions", yl_speak_up.max_actions,
|
||||||
"(A)ctions", "tmp_action",
|
"(A)ctions", "tmp_action",
|
||||||
"What do you want to happen in this (A)ction?",
|
"What do you want to happen in this (A)ction?",
|
||||||
|
values_what, {}, {}, {}, {},
|
||||||
check_what, {}, {}, {}, {},
|
check_what, {}, {}, {}, {},
|
||||||
nil, -- no variables
|
nil, -- no variables
|
||||||
yl_speak_up.show_action,
|
yl_speak_up.show_action,
|
||||||
|
@ -678,6 +678,7 @@ yl_speak_up.get_fs_edit_effects = function(player, table_click_result)
|
|||||||
"r_", "o_results", yl_speak_up.max_result_effects,
|
"r_", "o_results", yl_speak_up.max_result_effects,
|
||||||
"(Ef)fect", "tmp_result",
|
"(Ef)fect", "tmp_result",
|
||||||
"What do you want to change with this effect?",
|
"What do you want to change with this effect?",
|
||||||
|
values_what, values_operator, values_block, {}, {},
|
||||||
check_what, check_operator, check_block, {}, {},
|
check_what, check_operator, check_block, {}, {},
|
||||||
-- player variables with write access
|
-- player variables with write access
|
||||||
yl_speak_up.get_sorted_player_var_list_write_access,
|
yl_speak_up.get_sorted_player_var_list_write_access,
|
||||||
|
@ -253,7 +253,8 @@ yl_speak_up.input_fs_edit_option_related = function(player, formname, fields,
|
|||||||
|
|
||||||
elseif(fields.custom_param
|
elseif(fields.custom_param
|
||||||
and fields.custom_param ~= "- Insert a text that is passed on to your function here -"
|
and fields.custom_param ~= "- Insert a text that is passed on to your function here -"
|
||||||
and fields.custom_param ~= "") then
|
and fields.custom_param ~= ""
|
||||||
|
and data and data.what and data.what == 7 and id_prefix == "a_") then
|
||||||
data.custom_param = fields.custom_param
|
data.custom_param = fields.custom_param
|
||||||
|
|
||||||
elseif(fields.action_item_quest_id
|
elseif(fields.action_item_quest_id
|
||||||
@ -271,13 +272,15 @@ yl_speak_up.input_fs_edit_option_related = function(player, formname, fields,
|
|||||||
data.item_desc = fields.action_item_desc
|
data.item_desc = fields.action_item_desc
|
||||||
end
|
end
|
||||||
if(fields.quest_question
|
if(fields.quest_question
|
||||||
and fields.quest_question ~= "") then
|
and fields.quest_question ~= ""
|
||||||
|
and data and data.what and data.what == 6 and id_prefix == "a_") then
|
||||||
data.quest_question = fields.quest_question
|
data.quest_question = fields.quest_question
|
||||||
end
|
end
|
||||||
-- quest question and answer can be given with the same press of the save button
|
-- quest question and answer can be given with the same press of the save button
|
||||||
if(fields.quest_answer
|
if(fields.quest_answer
|
||||||
and fields.quest_answer ~= "- Insert the correct answer here -"
|
and fields.quest_answer ~= "- Insert the correct answer here -"
|
||||||
and fields.quest_answer ~= "") then
|
and fields.quest_answer ~= ""
|
||||||
|
and data and data.what and data.what == 6 and id_prefix == "a_") then
|
||||||
data.quest_answer = fields.quest_answer
|
data.quest_answer = fields.quest_answer
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -721,6 +724,7 @@ yl_speak_up.get_fs_edit_option_related = function(player, table_click_result,
|
|||||||
id_prefix, element_list_name, max_entries_allowed,
|
id_prefix, element_list_name, max_entries_allowed,
|
||||||
element_desc, tmp_data_cache,
|
element_desc, tmp_data_cache,
|
||||||
what_do_you_want_txt,
|
what_do_you_want_txt,
|
||||||
|
values_what, values_operator, values_block, values_trade, values_inv,
|
||||||
check_what, check_operator, check_block, check_trade, check_inv,
|
check_what, check_operator, check_block, check_trade, check_inv,
|
||||||
get_sorted_player_var_list_function,
|
get_sorted_player_var_list_function,
|
||||||
show_element_function,
|
show_element_function,
|
||||||
@ -782,6 +786,8 @@ yl_speak_up.get_fs_edit_option_related = function(player, table_click_result,
|
|||||||
|
|
||||||
-- store which element we are talking about
|
-- store which element we are talking about
|
||||||
yl_speak_up.speak_to[pname][ id_prefix.."id" ] = x_id
|
yl_speak_up.speak_to[pname][ id_prefix.."id" ] = x_id
|
||||||
|
-- nothing selected yet
|
||||||
|
yl_speak_up.speak_to[pname][ tmp_data_cache ] = nil
|
||||||
-- display the selected element
|
-- display the selected element
|
||||||
if(x_id ~= "new") then
|
if(x_id ~= "new") then
|
||||||
return "formspec_version[3]"..
|
return "formspec_version[3]"..
|
||||||
@ -814,6 +820,91 @@ yl_speak_up.get_fs_edit_option_related = function(player, table_click_result,
|
|||||||
if(not(x_id)) then
|
if(not(x_id)) then
|
||||||
x_id = "new"
|
x_id = "new"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- does the element exist already? if so: use the existing values as presets for data
|
||||||
|
-- (so that the element can be edited)
|
||||||
|
-- does kind of the opposite than the saving of values starting in line 323 of this file
|
||||||
|
if(x_id ~= "new" and data.what == 1 and elements[ x_id ]) then
|
||||||
|
local e = elements[ x_id ]
|
||||||
|
data.what = table.indexof(values_what, e[ id_prefix.."type" ])
|
||||||
|
if(data.what == -1) then
|
||||||
|
data.what = 1
|
||||||
|
-- a state/variable (precondition + effect)
|
||||||
|
elseif(data.what == 2 and id_prefix ~= "a_") then
|
||||||
|
data.operator = math.max(1,table.indexof(values_operator, e[ id_prefix.."operator" ]))
|
||||||
|
data.var_cmp_value = e[ id_prefix.."var_cmp_value" ]
|
||||||
|
data.variable_name = e[ id_prefix.."variable" ]
|
||||||
|
local var_list = get_sorted_player_var_list_function(pname)
|
||||||
|
data.variable = math.max(1, table.indexof(var_list, e[ id_prefix.."variable"]))
|
||||||
|
-- a block (precondition + effect)
|
||||||
|
elseif(data.what == 3 and id_prefix ~= "a_") then
|
||||||
|
data.block = math.max(1,table.indexof(values_block, e[ id_prefix.."value" ]))
|
||||||
|
data.node_data = {}
|
||||||
|
data.node_data.data = e[ id_prefix.."node" ]
|
||||||
|
data.node_data.param2 = e[ id_prefix.."param2" ]
|
||||||
|
data.block_pos = {x=e[ id_prefix.."pos" ].x,
|
||||||
|
y=e[ id_prefix.."pos" ].y,
|
||||||
|
z=e[ id_prefix.."pos" ].z}
|
||||||
|
-- the block below was punched
|
||||||
|
if(id_prefix == "p_" and data.block == 5) then
|
||||||
|
data.block_pos.y = data.block_pos.y - 1
|
||||||
|
end
|
||||||
|
-- a trade (precondition)
|
||||||
|
elseif(data.what == 4 and id_prefix == "p_") then
|
||||||
|
data.trade = math.max(1,table.indexof(values_trade, e[ "p_value" ]))
|
||||||
|
-- an invenetory (precondition)
|
||||||
|
elseif((data.what == 5 or data.what == 6) and id_prefix == "p_") then
|
||||||
|
data.inv = math.max(1,table.indexof(values_inv, e["p_value"]))
|
||||||
|
data.inv_stack_name = e[ "p_itemstack" ]
|
||||||
|
-- crafting (effect)
|
||||||
|
elseif(data.what and id_prefix == "r_" and data.what == 4) then
|
||||||
|
-- TODO: there really can't be done much in that regard so far
|
||||||
|
-- v[ "r_value" ] = player_inv:get_stack("craftpreview", 1):to_string()
|
||||||
|
-- v[ "r_craft_grid"] = {} player_inv:get_stack("craft", i):to_string())
|
||||||
|
-- on failure (effect)
|
||||||
|
elseif(data.what and id_prefix == "r_" and data.what == 5) then
|
||||||
|
data.on_failure = e[ "r_value" ]
|
||||||
|
-- send a chat message (effect)
|
||||||
|
elseif(data.what and id_prefix == "r_" and data.what == 6) then
|
||||||
|
data.chat_msg_text = e[ "r_value" ]
|
||||||
|
-- normal trade (action)
|
||||||
|
elseif(data.what and id_prefix == "a_" and data.what == 3) then
|
||||||
|
-- TODO: there is no good way to show that in edit mode yet
|
||||||
|
data.trade_id = e[ "a_value" ]
|
||||||
|
-- v[ "a_pay" ] = dialog.trades[ data.trade_id ].pay
|
||||||
|
-- v[ "a_buy" ] = dialog.trades[ data.trade_id ].buy
|
||||||
|
local sorted_dialog_list = yl_speak_up.sort_keys(dialog.n_dialogs)
|
||||||
|
data.action_failure_dialog = math.max(1,
|
||||||
|
table.indexof(sorted_dialog_list, e[ "a_on_failure" ]))
|
||||||
|
-- npc_gives/npc_wants (action)
|
||||||
|
elseif(data.what and id_prefix == "a_" and (data.what == 4 or data.what == 5)) then
|
||||||
|
-- TODO: there is no good way to show that in edit mode yet
|
||||||
|
local sorted_dialog_list = yl_speak_up.sort_keys(dialog.n_dialogs)
|
||||||
|
data.action_failure_dialog = math.max(1,
|
||||||
|
table.indexof(sorted_dialog_list, e[ "a_on_failure" ]))
|
||||||
|
-- TODO: data.item_string is not really used...
|
||||||
|
data.item_string = e[ "a_value"] -- stack name and count (as string)
|
||||||
|
data.item_desc = e[ "a_item_desc" ]
|
||||||
|
data.item_quest_id = e[ "a_item_quest_id" ]
|
||||||
|
local sorted_dialog_list = yl_speak_up.sort_keys(dialog.n_dialogs)
|
||||||
|
data.action_failure_dialog = math.max(1,
|
||||||
|
table.indexof(sorted_dialog_list, e[ "a_on_failure" ]))
|
||||||
|
-- entering password (action)
|
||||||
|
elseif(data.what and id_prefix == "a_" and data.what == 6) then
|
||||||
|
data.quest_question = e[ "a_question" ]
|
||||||
|
data.quest_answer = e[ "a_value" ]
|
||||||
|
local sorted_dialog_list = yl_speak_up.sort_keys(dialog.n_dialogs)
|
||||||
|
data.action_failure_dialog = math.max(1,
|
||||||
|
table.indexof(sorted_dialog_list, e[ "a_on_failure" ]))
|
||||||
|
-- custom function (action)
|
||||||
|
elseif(data.what and id_prefix == "a_" and data.what == 7) then
|
||||||
|
data.custom_param = e[ "a_value" ]
|
||||||
|
local sorted_dialog_list = yl_speak_up.sort_keys(dialog.n_dialogs)
|
||||||
|
data.action_failure_dialog = math.max(1,
|
||||||
|
table.indexof(sorted_dialog_list, e[ "a_on_failure" ]))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local save_button = "button[5.0,9.8;1,0.7;save_element;Save]"
|
local save_button = "button[5.0,9.8;1,0.7;save_element;Save]"
|
||||||
local formspec =
|
local formspec =
|
||||||
"formspec_version[3]"..
|
"formspec_version[3]"..
|
||||||
|
@ -396,6 +396,7 @@ yl_speak_up.get_fs_edit_preconditions = function(player, table_click_result)
|
|||||||
"p_", "o_prerequisites", yl_speak_up.max_prerequirements,
|
"p_", "o_prerequisites", yl_speak_up.max_prerequirements,
|
||||||
"pre(C)ondition", "tmp_prereq",
|
"pre(C)ondition", "tmp_prereq",
|
||||||
"What do you want to check in this precondition?",
|
"What do you want to check in this precondition?",
|
||||||
|
values_what, values_operator, values_block, values_trade, values_inv,
|
||||||
check_what, check_operator, check_block, check_trade, check_inv,
|
check_what, check_operator, check_block, check_trade, check_inv,
|
||||||
-- player variables with read access
|
-- player variables with read access
|
||||||
yl_speak_up.get_sorted_player_var_list_read_access,
|
yl_speak_up.get_sorted_player_var_list_read_access,
|
||||||
|
Loading…
Reference in New Issue
Block a user