From ccb933d2db92d93901154028da75f661e9db2e46 Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Sat, 8 Sep 2018 15:36:31 +0200 Subject: [PATCH] Version MFF. --- depends.txt | 2 + init.lua | 91 ++++++++++++++++++++++++++++--------- textures/report_button.png | Bin 0 -> 3772 bytes 3 files changed, 71 insertions(+), 22 deletions(-) create mode 100644 textures/report_button.png diff --git a/depends.txt b/depends.txt index 7df2c28..7381e1c 100644 --- a/depends.txt +++ b/depends.txt @@ -1 +1,3 @@ email +action_timers +unified_inventory? diff --git a/init.lua b/init.lua index 3864fb2..cab411d 100644 --- a/init.lua +++ b/init.lua @@ -1,3 +1,30 @@ +report = {} + +function report.send(sender, message) + -- Send to online moderators / admins + -- Get comma separated list of online moderators and admins + local mods = {} + for _, player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + if minetest.check_player_privs(name, {kick = true, ban = true}) then + table.insert(mods, name) + minetest.chat_send_player(name, "-!- " .. sender .. " reported: " .. message) + end + end + + if #mods > 0 then + local mod_list = table.concat(mods, ", ") + email.send_mail(sender, minetest.setting_get("name"), + "Report: " .. message .. " (mods online: " .. mod_list .. ")") + return true, "Reported. Moderators currently online: " .. mod_list + else + email.send_mail(sender, minetest.setting_get("name"), + "Report: " .. message .. " (no mods online)") + return true, "Reported. We'll get back to you." + end +end + + minetest.register_chatcommand("report", { func = function(name, param) param = param:trim() @@ -10,27 +37,47 @@ minetest.register_chatcommand("report", { minetest.chat_send_player(name, "If you're reporting a player, " .. "you should also include a reason why. (Eg: swearing, sabotage)") end - - -- Send to online moderators / admins - -- Get comma separated list of online moderators and admins - local mods = {} - for _, player in pairs(minetest.get_connected_players()) do - local name = player:get_player_name() - if minetest.check_player_privs(name, {kick = true, ban = true}) then - table.insert(mods, name) - minetest.chat_send_player(name, "-!- " .. name .. " reported: " .. param) - end - end - - if #mods > 0 then - mod_list = table.concat(mods, ", ") - email.send_mail(name, minetest.setting_get("name"), - "Report: " .. param .. " (mods online: " .. mod_list .. ")") - return true, "Reported. Moderators currently online: " .. mod_list - else - email.send_mail(name, minetest.setting_get("name"), - "Report: " .. param .. " (no mods online)") - return true, "Reported. We'll get back to you." - end + return action_timers.wrapper(name, "report", "report_" .. name, 600, report.send, {name, param}) end }) + +if minetest.get_modpath("unified_inventory") then + unified_inventory.register_button("report", { + type = "image", + -- From http://www.clker.com/cliparts/v/K/Y/P/2/M/warning-sign-bl-bg-hi.png + image = "report_button.png", + tooltip = "Report to the moderators/administrator", + }) + + unified_inventory.register_page("report", { + get_formspec = function(player) + local form = "label[3,0;Report a Bug/Player]".. + "label[0,1.5;DO NOT report a player until you have read the rules posted".. + "\nat the spawn area! Don't report griefing, it's allowed on".. + "\nour server! You can ask questions to moderators and report".. + "\nflooding/spam, cheating, etc. Don't abuse/spam Report messages".. + "\nor you will be punished. LIMIT: One report per 5 minutes.]".. + "field[2,5;5,1;text;Type report here:;]" .. + "button[3,6;2,0.5;report;Send]" + return {formspec = form, draw_inventory = false} + end + }) + + minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "" or not fields.report then + return + end + + -- Copied from src/builtin/game/chatcommands.lua (with little tweaks) + if not fields.text or fields.text == "" then + return + end + local name = player:get_player_name() + + local success, message = action_timers.wrapper(name, "report", "report_" .. name, 600, report.send, {name, fields.text}) + if message then + core.chat_send_player(name, message) + end + return true -- Handled fields reception + end) +end diff --git a/textures/report_button.png b/textures/report_button.png new file mode 100644 index 0000000000000000000000000000000000000000..9961223588a34f3477fdba733d81cdb1fd309222 GIT binary patch literal 3772 zcmV;t4ny&YP)gbX?-1G0~V9Ta6l{b~MJcOKW1%>1fBqB`!`)7R!pZJ*Cq# zJw0VrQd1fQ#YHrVizr5k24vrNc!0(w&-&}jR7jB>Z?-Vy?6if zpZ_f9{IA(B@{2rP+1RX^7mR~r@IP=34#Ft#Z0d_|4Qn>Jx>oEA2#|f9JKNdWrj78k zd;IPb@NKG#cZUT~ez;dJ$$9&2IlF9`oL#z9vS-hh16{fZzq`cu z5?x&-39|b4m$OTjNZd;=iTVUs1a3`90fQj^P@g_hirE*8A1{e6E|S=+8GxIc*k;X= z;txKMh@c=gmL5KD>t{> zyygS&XbKAGkB85U8Zba?3l~c6^Uv#ool-b)qU8VakFx*Qzg8=Vg&s}8^REu~_peI* z{qLoO#ig`rWiB{gu_z!7^H+y>X7p$YYtf>D*DeLO#;kyznDhB4oSg1{HeNr8^RA2C z2eV*49EC(ka(9=!7hjZucixdm!r~?umm=PyQ)5;@=r%t;Nt-!SY@Gj85*}S>EX)ND z@PSX@j9~@s+uI#t{FpHk=Ivd@d;D8tUHlMsu;OsvzEVbr)7{swr;9uUZHNNT;}4#D z?m6ko|4$fJ(7d_i@-y4Kd9v?Uzfxat7kW0veE;AUFE7dA+!qu3Q=fRkzQ6>S4jnso zl-;{`%Z3dbqz#twkt)Dq1;x{+OUi@^vYBJSdxbZeh@fdKOoc1ag9l65;>EiAX50@4 zAN;`7sZ-_V&6{%m{CRna1gIU>alo(wey>(g`rdnTpgJP_H@wnV6wn^N#`9Mc&Yv&E zoc|PGU;DzogR$W6?=R8O(PBtwXsCF5d&^8qR8W6WJZ+j}z43;GdUgH(`r=*f z#f*!~#nXhcb7Xy4Pd#Ot_TRw|W>fs!xpPMhxpCu$jOOnH`Q2tn1hp8o9JPYu_z~Xs z983e3hOB@Ph}hksLuKLn?@KYBU!9sR=p>8;KeE7rf&y`rQ>RXeC#FA{zlnoHNN&-> z?mu#{gzeRZQaE&M$h$wCtgrkGxxSXVX&pM4yT2CN!7_gCOscA?WEu-4=*tF+L(Kfm zZ^VWpjiGAf{jbB625AMlGjQl@oK_y$T;Z#)nu~~nm!T8+erai`)Ff$XX%c{cn5q_I zISPf7CQ0U$DY82tK$Wl;Iy6KD%p&aFi6wz4#r%!kKLdY-V2;A)pMNg5Zrzfaq`bUb z7A#mGAw-0KXvnk_N<|!}7<>X@@fM%;MuTg0k@O_)WB2p5xj|S<^6;=f{1F%nPe1*% zq^73I{X~y}`hp&qy;{L>BP@D)O5TVOk~MjFi(L zLuO~Ap}|g>yB`aKVaSjnlAN3@wGp*~lP6C~Uz#W5tPz2%QcLMv5~!VIm3-zU2xp)2&K6wb}f6+_mqUoWq{_L@@;9Xce2#K*@=j~+c_kYw71Y z_*_cuZnU}*U@o-4FKChDD4%}%X^jdvcI?>ybBOEKtrKsxD2o-O&}1ok{dGy<$c1@& z-qB|P|Hr9-;b1%d?6YEH$dNs8p!slHp*IYB;RUBj4?dtq1#s@2CP%%QBn{;Edo9_a z7FqfDji_$j3|}z(aV_2t{;{1%*La`4CL1x@XTGsi>$BXL9i1!5S5Sx!0H%Y}v9!f(U&}En!j1<-Fhi zR+8u>Z>QzZ98`CxbH&J)6<aFU!WG4L;o<1BeIRGlV?l>-=9JO z@4(#?e3(veGV#oY^E(Xw?1nZvuU@?>_Y-!~sRBaS$p^{Bix*`gjxUhU{l*dz(#aL_ znJGq7Me>aIVBVu%d|OBg<;>Zr^@}h?iW779CqWQ9qi6p?f`XhXpkKd!QX5fU(6((` zdD9vZD3`U1oQD!ZIZ8ZhDztx;j&BiO_F62BOHF#TO=b1`ZZMhj^!DxBwJLO6*fmE5 z3>!8~Y9rc8A4}Qo$!m653ni-2f|p;GZ^=yQP3TRN<&VT6>Vy_fM9|?Wq1@%{n~lzI zVGOjS(HRpHBefMD&aI;YCNKo4t!O0i!U88*3nl7~91^o!tY9~7HJc5Y0FSRdT_9*^}j(Im_st8VXwB*o}$T70W;|S)>gEoK7|k*=+HpbS%Uh4SSnCj zXE%BF72y3a3g`u=A_*}C+~LWm-)DrqXc!AYoJX6@CUp@la~%~hckW!Ni)3eKOB-r} zi4G0aY(uN}c@|T3RKRlX z4b?^TGZ!*)57x#DBwCXrilkT+5nA0k`zP?KZ>uZ!0BNSq>vM+=HN##MjE64F@CyqI zrLLl_@u9rmV9HwM1qvti?sb)%oE!<}NKR6Vv{*p~&zwnlzQ6juQ5l5PM**LN;jH5E zthU*+&FOADtcM`lRodp(MrU0_eMMYcoPGC3u~XwXvuoC@ahw*_IwGhAYRmoKEptV^ zgQT6K?-;33E~^sOfookB-;J<$A(B$FkPZ&s)%5()Fd7EwZI7fRsjKKvR0kxEM?fdU znnKrARGFGXOt7}msYWws(Pt4__u~r)i`Q!H3-nG7{Fl!5lgPS?xZ9ITfn#lS2BP6r zt5(%{_wU}lD zHCrcAyf2la-Zwf7E$?@;V-lRD(Wxn~?!NhEF%S$-KKZ1Sm6b_-L_-%TuhYeAdaM(n z`btqzk#xgnb>_WJJIoStv4SI{%B<}o%mNo@3J8F(tv)^#d2ha1eY1nJZWKI=z>SC0 zCgsD3PJJ|dx?-Z%Ucf;5iW(jtMs)n9&$!H5C=so+XPH5`-Rk9~RtVqY?h_HB^Oq98zXq!(Ja9F>zr1$aiF>_+4`GRPe4Q;@; zF=6y6jP%&jG|?_{3J!ip^)TgBvyJ4*dOzQWSI)$P8Wo?xK3D}y8yTx$zhxcPrb#wg zo%=Q~{KcrUIHItW6cbca#hTT+<_Pn($}8jHuVqH2$Y!5$X%lsI^V# z37XK-vck;X0+4$DLu9AGAZaSQT5qy}<$+syfgtpaH61oKiIE6wnjUj&1=-5p6g1MF5n@dg~;Qu%>s9 zbPT5V5cEqGN-k-&rny@CYr{rc!R$)2qe+0000