diff options
Diffstat (limited to 'ch_core/udm.lua')
-rw-r--r-- | ch_core/udm.lua | 72 |
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") |