From 613ebf046ddc5320c4a1941e5fbad0315365d652 Mon Sep 17 00:00:00 2001 From: Dirk Sohler Date: Sat, 16 Feb 2019 17:33:16 +0100 Subject: [PATCH] extend chat command --- locale/mtimer.de.tr | 5 +++-- system/chat_command.lua | 34 +++++++++++++++++++++++++++++++++- system/formspec_creation.lua | 4 ++-- system/on_receive_fields.lua | 2 +- 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/locale/mtimer.de.tr b/locale/mtimer.de.tr index b56d5a0..619a818 100644 --- a/locale/mtimer.de.tr +++ b/locale/mtimer.de.tr @@ -1,6 +1,6 @@ # textdomain: mtimer -# Configuration Selection Menu +# Configuration Selection Menu and chat command help Toggle Visibility=Sichtbarkeit umschalten Set Position=Position setzen Set Color=Farbe einstellen @@ -8,6 +8,7 @@ Timezone Offset=Zeitzonenunterschied Ingame Time Representation=Spielzeit-Repräsentation Real World Time Representation=Realzeit-Repräsentation Set Timer Text=Timertext einstellen +Open Main Menu=Hauptmenü öffnen # Visibility mTimer Visibility=mTimer-Sichtbarkeit @@ -17,7 +18,7 @@ Invisible=Unsichtbar # Generic Formspec Strings Default=Standard Exit=Verlassen -Back=Zurück +Main Menu=Hauptmenü # Timer Weekdays Monday=Montag diff --git a/system/chat_command.lua b/system/chat_command.lua index afaea44..1435fcd 100644 --- a/system/chat_command.lua +++ b/system/chat_command.lua @@ -1,10 +1,42 @@ local m = mtimer local S = m.translator +local fs = m.show_formspec +local cs = minetest.chat_send_player + + +local command = function (command) + return minetest.colorize('cyan', '/mtimer '..command..' ') +end minetest.register_chatcommand('mtimer', { description = S('Configure timer display'), + params = '', func = function(name, parameters) local action = parameters:match('%a+') - if not action then m.show_formspec.menu(name) end + + if not minetest.get_player_by_name(name) then return end + if not action then fs.main_menu(name) end + + if action == 'vi' then fs.set_visibility(name) end + if action == 'po' then fs.set_position(name) end + if action == 'co' then fs.set_color(name) end + if action == 'tz' then fs.timezone_offset(name) end + if action == 'in' then fs.ingame_time(name) end + if action == 're' then fs.real_time(name) end + if action == 'te' then fs.timer_text(name) end + + if action == 'help' then + local message = { + command('vi')..S('Set Visibility'), + command('po')..S('Set Position'), + command('co')..S('Set Color'), + command('tz')..S('Timezone Offset'), + command('in')..S('Ingame Time Representation'), + command('re')..S('Real World Time Representation'), + command('te')..S('Set Timer Text'), + command(' ')..S('Open Main Menu') + } + cs(name, table.concat(message, '\n')) + end end }) diff --git a/system/formspec_creation.lua b/system/formspec_creation.lua index 41293d8..9ed7cc1 100644 --- a/system/formspec_creation.lua +++ b/system/formspec_creation.lua @@ -2,7 +2,7 @@ local m = mtimer local S = m.translator -mtimer.show_formspec.menu = function (player_name) +mtimer.show_formspec.main_menu = function (player_name) minetest.show_formspec(player_name, 'mtimer:main_menu', [[ size[4,7.75] button[0,0;4,1;set_visibility;]]..S('Set Visibility')..[[] @@ -25,6 +25,6 @@ mtimer.show_formspec.set_visibility = function (player_name) button[2,0.5;2,1;invisible;]]..S('Invisible')..[[] button[4,0.5;2,1;default;]]..S('Default')..[[] button_exit[0,1.5;3,1;exit;]]..S('Exit')..[[] - button[3,1.5;3,1;back;]]..S('Back')..[[] + button[3,1.5;3,1;back;]]..S('Main Menu')..[[] ]]) end diff --git a/system/on_receive_fields.lua b/system/on_receive_fields.lua index 8deabe5..617e8c5 100644 --- a/system/on_receive_fields.lua +++ b/system/on_receive_fields.lua @@ -22,7 +22,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Back to menu from all formspecs - if fields.back then f.menu(name) end + if fields.back then f.main_menu(name) end -- DEBUG: Print all player meta data