diff --git a/custrom_functions_you_can_override.lua b/custrom_functions_you_can_override.lua
index f4e2153..a989e20 100644
--- a/custrom_functions_you_can_override.lua
+++ b/custrom_functions_you_can_override.lua
@@ -188,3 +188,72 @@ yl_speak_up.input_fs_action_custom = function(player, formname, fields)
"button[2,0.5;1.5,0.9;back_from_error_msg;Back]"})
end
+-----------------------------------------------------------------------------
+-- Custom preconditions and effects (functions; they have the type "evaluate")
+-----------------------------------------------------------------------------
+-- each entry in the table has the following format:
+-- key: for display in edit options dialog and dropdown menu,
+-- function_name: name of the function that shall be called
+-- description: long description of what the function does,
+-- param1_text: label for the input field for param1 (if empty, no input field is offered)
+-- param1_desc: mouseover text for the input field for param1
+-- ...
+-- param9_text: label for the input field for param1
+-- param9_desc: mouseover text for the input field for param1
+--
+-- preconditions:
+yl_speak_up.custom_functions_p_ = {}
+-- actions: (not yet used)
+yl_speak_up.custom_functions_a_ = {}
+-- results:
+yl_speak_up.custom_functions_r_ = {}
+
+-- example function for preconditions:
+yl_speak_up.custom_functions_p_[ "example func" ] = {
+ function_call = "yl_speak_up.custom_example_function",
+ description = "Describe here in short form what your function does.",
+ param1_text = "1. Parameter:",
+ param1_desc = "This is the value passed to the function as first parameter.",
+ param2_text = "2. Parameter:",
+ param2_desc = "This is the value passed to the function as second parameter.",
+ param3_text = "3. Parameter:",
+ param3_desc = "This is the value passed to the function as 3. parameter.",
+ param4_text = "4. Parameter:",
+ param4_desc = "This is the value passed to the function as 4. parameter.",
+ param5_text = "5. Parameter:",
+ param5_desc = "This is the value passed to the function as 5. parameter.",
+ param6_text = "6. Parameter:",
+ param6_desc = "This is the value passed to the function as 6. parameter.",
+ param7_text = "7. Parameter:",
+ param7_desc = "This is the value passed to the function as 7. parameter.",
+ param8_text = "8. Parameter:",
+ param8_desc = "This is the value passed to the function as 8. parameter.",
+ param9_text = "9. Parameter:",
+ param9_desc = "This is the value passed to the function as 9. parameter.",
+}
+
+-- example function for results/effects:
+yl_speak_up.custom_functions_r_[ "example func" ] = {
+ function_call = "yl_speak_up.custom_example_function",
+ description = "Describe here in short form what your function does.",
+ param1_text = "1. Parameter:",
+ param1_desc = "This is the value passed to the function as first parameter.",
+ param2_text = "2. Parameter:",
+ param2_desc = "This is the value passed to the function as second parameter.",
+ param3_text = "3. Parameter:",
+ param3_desc = "This is the value passed to the function as 3. parameter.",
+ param4_text = "4. Parameter:",
+ param4_desc = "This is the value passed to the function as 4. parameter.",
+ param5_text = "5. Parameter:",
+ param5_desc = "This is the value passed to the function as 5. parameter.",
+ param6_text = "6. Parameter:",
+ param6_desc = "This is the value passed to the function as 6. parameter.",
+ param7_text = "7. Parameter:",
+ param7_desc = "This is the value passed to the function as 7. parameter.",
+ param8_text = "8. Parameter:",
+ param8_desc = "This is the value passed to the function as 8. parameter.",
+ param9_text = "9. Parameter:",
+ param9_desc = "This is the value passed to the function as 9. parameter.",
+}
+
+
diff --git a/fs_edit_general.lua b/fs_edit_general.lua
index e96f6ac..b6217dd 100644
--- a/fs_edit_general.lua
+++ b/fs_edit_general.lua
@@ -1635,9 +1635,35 @@ end
yl_speak_up.get_fs_edit_option_p_and_e_evaluate = function(
pname, dialog, formspec, data, id_prefix, save_button, e,
text_select_operator, values_operator, check_operator)
- if(e) then
- data.function_name = e[ id_prefix.."value"]
- -- TODO: p_param1 .. p_param9
+ local func_data = nil
+ if(e or true) then
+ --data.function_name = e[ id_prefix.."value"]
+ data.function_name = "example func"
+ -- TODO: create the dropdown
+ func_data = yl_speak_up["custom_functions_"..id_prefix][data.function_name]
+ -- add the fields for param1..param9:
+ if(func_data) then
+ local xoff = 0
+ for i = 1, 9 do
+ if(i > 5) then
+ xoff = 10
+ end
+ local paramn = "param"..tostring(i)
+ local s = func_data[paramn.."_text"]
+ if(s) then
+ formspec = formspec..
+ "label["..(0.2 + xoff)..","..(6.05 + ((i-1)%5)*0.8)..";"..
+ minetest.formspec_escape(s).."]"..
+ "field["..(4.0 + xoff)..","..(5.8 + ((i-1)%5)*0.8)..
+ ";5.0,0.6;set_"..paramn..";;"..
+ minetest.formspec_escape(
+ data[paramn] or "- enter value -").."]"..
+ "tooltip[set_"..paramn..";"..
+ minetest.formspec_escape(
+ func_data[paramn.."_desc"] or "?").."]"
+ end
+ end
+ end
end
local operator_list = {}
for i, v in ipairs(check_operator) do
@@ -1660,11 +1686,11 @@ yl_speak_up.get_fs_edit_option_p_and_e_evaluate = function(
text_operator_and_comparison..
-- TODO: rather a dropdown...
"field[1.0,4.8;5.0,0.6;property;;"..
- minetest.formspec_escape(data.property or "- enter name -").."]"..
- "hypertext[1.2,7.0;16.0,2.5;some_text;"..
- "Note: Functions are called with parameters which are passed on to them. "..
- "The function then calculates a result. This can be compared to a given value."..
- "]"
+ minetest.formspec_escape(data.property or "- enter name -").."]"
+-- "hypertext[1.2,7.0;16.0,2.5;some_text;"..
+-- "Note: Functions are called with parameters which are passed on to them. "..
+-- "The function then calculates a result. This can be compared to a given value."..
+-- "]"
end
diff --git a/fs_edit_preconditions.lua b/fs_edit_preconditions.lua
index 7f46939..b9fd9e9 100644
--- a/fs_edit_preconditions.lua
+++ b/fs_edit_preconditions.lua
@@ -247,7 +247,7 @@ yl_speak_up.show_precondition = function(p, pname)
elseif(p.p_type == "evaluate") then
local str = ""
for i = 1, 9 do
- str = str..tostring(p["p_param" + str(i)])
+ str = str..tostring(p["p_param" + tostring(i)])
if(i < 9) then
str = str..","
end