Advertisement
Guest User

Untitled

a guest
Jul 1st, 2012
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1.  
  2. Code:
  3. minetest.register_on_placenode(function (pos, node, player)
  4. local file = io.open(minetest.get_worldpath() .."/logs/"..player:get_player_name()..".log", "w+", "a")
  5. file:write("p".."&"..os.time().."&"..pos.x.."&"..pos.y.."&"..pos.z.."&"..node.name.."\n")
  6. file:close()
  7. end)
  8.  
  9. minetest.register_on_dignode(function (pos, node, player)
  10. local file = io.open(minetest.get_worldpath() .."/logs/"..player:get_player_name()..".log", "w+", "a")
  11. file2:write("d".."&"..os.time().."&"..pos.x.."&"..pos.y.."&"..pos.z.."&"..node.name.."\n")
  12. file2:close()
  13. end)
  14.  
  15.  
  16.  
  17. local function rollback(cmd, player, playername, time)
  18. if not minetest.get_player_privs(player)["privs"] then
  19. minetest.chat_send_player(player, "error: you don't have permission to rollback")
  20. return
  21. end
  22.  
  23. local file = io.open(minetest.get_modpath("rollback").."/logs/"..playername..".log", "r")
  24. if file==nil then
  25. minetest.chat_send_player(player, "error: We have no records on this player")
  26. return
  27. end
  28.  
  29. local line
  30. local pos={}
  31. local action, logtime, nodename
  32.  
  33. line=file:read()
  34. while (line~=nil) do
  35. action, logtime, pos.x, pos.y, pos.z, nodename=string.match(line, "([%a%d%d%d%d%a_-]+)&(.*)&(.*)&(.*)&(.*)&(.*)")
  36. print (action)
  37. --print (time)
  38. --print (pos.x)
  39. --print (pos.y)
  40. --print (pos.z)
  41. --print (pos.z)
  42. --print (nodename)
  43. --print (line)
  44. --print ("logtime:"..logtime)
  45. --print ("mintime:"..os.time()-tonumber(time))
  46. if time==nil or tonumber(logtime)>os.time()-tonumber(time) then
  47. if action=="p" then
  48. minetest.env:remove_node(pos)
  49. end
  50. if action=="d" then
  51. minetest.env:add_node(pos, {name=nodename})
  52. end
  53. end
  54. line=file:read()
  55. end
  56. file:close()
  57. local file = io.open(minetest.get_worldpath() .."/logs/"..playername..".log", "w+")
  58. file:close()
  59. end
  60.  
  61.  
  62.  
  63.  
  64.  
  65. minetest.register_on_chat_message(function(player, message)
  66. local cmd = "/rollbacktime"
  67. if message:sub(0, #cmd) == cmd then
  68. local playername, time = string.match(message, cmd.." ([%a%d_-]+) (.*)")
  69. if playername == nil or time==nil then
  70. minetest.chat_send_player(player, 'usage: '..cmd..' playername time')
  71. return true -- Handled chat message
  72. end
  73. rollback(cmd, player, playername, time)
  74. return true
  75. end
  76. local cmd = "/rollback"
  77. if message:sub(0, #cmd) == cmd then
  78. local playername = string.match(message, cmd.." (.*)")
  79. if playername == nil then
  80. minetest.chat_send_player(player, 'usage: '..cmd..' playername')
  81. return true -- Handled chat message
  82. end
  83. rollback(cmd, player, playername, nil)
  84. return true
  85. end
  86. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement