aboutsummaryrefslogtreecommitdiff
path: root/ch_core/udm.lua
diff options
context:
space:
mode:
Diffstat (limited to 'ch_core/udm.lua')
-rw-r--r--ch_core/udm.lua72
1 files changed, 72 insertions, 0 deletions
diff --git a/ch_core/udm.lua b/ch_core/udm.lua
new file mode 100644
index 0000000..105dad9
--- /dev/null
+++ b/ch_core/udm.lua
@@ -0,0 +1,72 @@
+ch_core.open_submod("udm", {areas = true, data = true, lib = true})
+
+local color_celoserverovy = minetest.get_color_escape_sequence("#ff8700")
+local color_mistni = minetest.get_color_escape_sequence("#fff297")
+-- local color_mistni_zblizka = minetest.get_color_escape_sequence("#64f231") -- 54cc29
+local color_soukromy = minetest.get_color_escape_sequence("#ff4cf3")
+-- local color_sepot = minetest.get_color_escape_sequence("#fff297cc")
+local color_systemovy = minetest.get_color_escape_sequence("#cccccc")
+-- local color_reset = minetest.get_color_escape_sequence("#ffffff")
+
+function ch_core.udm_catch_chat(player_name, message)
+ local pinfo = ch_core.normalize_player(player_name)
+ if message == "test" then
+ minetest.chat_send_player(player_name, color_mistni..pinfo.viewname..": test "..color_systemovy.."[0 post.]")
+ minetest.after(1, minetest.chat_send_player, player_name, "* Správně! Takto byste napsali zprávu postavám ve vašem okolí. Za zprávou se vypsalo „[0 post.]“, "..
+ "což znamená, že ve skutečnosti nikomu nedošla. Kdyby došla, řekněme, na dva další herní klienty, bylo by tam „[2 post.]“.\nMůžete pokročit k další ceduli.")
+ elseif message == "!ahoj" then
+ minetest.chat_send_player(player_name, color_celoserverovy..pinfo.viewname..": ahoj "..color_systemovy.."[1 post.]")
+ minetest.after(1, minetest.chat_send_player, player_name, color_celoserverovy.."Fiktivní postava: zdravím! "..color_systemovy.."(563 m)")
+ minetest.after(2, minetest.chat_send_player, player_name, "* Správně! Takto byste napsali zprávu na všechny herní klienty připojené k serveru. A rovněž vám odpověděla "..
+ "Fiktivní postava (která ve skutečnosti neexistuje, je to jen ukázka). Za její zprávou se ukázalo (563 m), což by znamenalo, že se nachází "..
+ "563 metrů od vás.\nNyní můžete pokročit k další ceduli.") -- Nyní zkuste zadat: \"Fik test
+ elseif message == "\"Fik test" or message == "\"Fiktivní_postava test" or message == "\"Fiktivni_postava test" then
+ minetest.chat_send_player(player_name, color_soukromy.."-> Fiktivní postava: test")
+ minetest.after(1, minetest.chat_send_player, player_name, color_soukromy.."Fiktivní postava: zpráva dorazila")
+ minetest.after(2, minetest.chat_send_player, player_name, "* Správně! Právě jste (jako) napsali Fiktivní postavě soukromou zprávu a ona vám odpověděla. "..
+ "U další zprávy už můžete předponu jména vynechat, protože systém si pamatuje, komu jste psali soukromou zprávu naposledy.\n"..
+ "Nyní tedy zkuste zadat: \" test 2\nA nezapomeňte na mezeru mezi \" a t!")
+ elseif message == "\" test 2" then
+ minetest.chat_send_player(player_name, color_soukromy.."-> Fiktivní postava: test 2")
+ minetest.after(1, minetest.chat_send_player, player_name, color_soukromy.."Fiktivní postava: i tato zpráva dorazila")
+ minetest.after(2, minetest.chat_send_player, player_name, "* Správně!\n"..
+ "To je vše, co zatím potřebujete vědět o ovládání četu. Můžete pokračovat k další ceduli.")
+ else
+ minetest.chat_send_player(player_name, "* Napsali jste: „"..message.."“, což není to, co jste měli. Zkuste to, prosím, znovu, nebo opusťte zelenou plochu na podlaze.")
+ end
+ minetest.log("action", "UDM chat catched a message: >"..message.."<")
+ return true
+end
+
+local function nastavit_udm_zachyceni(player_name, area_id)
+ local area_id_number = tonumber(area_id)
+ if area_id_number == nil or area_id_number ~= math.floor(area_id_number) or area_id_number <= 0 then
+ return false, "Chybné ID oblasti!"
+ end
+ local area = ch_core.areas[area_id_number]
+ if area == nil then
+ area = {}
+ ch_core.areas[area_id_number] = area
+ area.udm_catch_chat = true
+ elseif area.udm_catch_chat then
+ area.udm_catch_chat = false
+ ch_core.save_areas()
+ return true, "Zachycení zrušeno pro oblast č. "..area_id_number
+ else
+ area.udm_catch_chat = true
+ end
+ ch_core.save_areas()
+ return true, "Zachycení nastaveno pro oblast č. "..area_id_number
+end
+
+local def = {
+ params = "<id_oblasti>",
+ description = "Pro danou oblast zapne/vypne funkci zachycení četu pro ÚDM",
+ privs = {server = true},
+ func = nastavit_udm_zachyceni,
+}
+
+minetest.register_chatcommand("nastavit_údm_zachycení", def)
+minetest.register_chatcommand("nastavit_udm_zachyceni", def)
+
+ch_core.close_submod("udm")