hawkeye.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*
  2. /hawkeye search <parameters>
  3. Parameters Examples:
  4. p:marvinius,MentorMentos
  5. t:30d,4h,20m
  6. r:10
  7. e:block_break,block_place
  8. */
  9. event.load("block_break");
  10. event.load("block_place");
  11. event.load("block_click");
  12. prefix_hawkeye = "§cHawkeye";
  13. event_map_2 = map.new();
  14. map.add(event_map_2, "block_break", 1);
  15. map.add(event_map_2, "block_place", 2);
  16. event_map = map.new(); //für hawkeye
  17. map.add(event_map, 1, "block_break");
  18. map.add(event_map, 2, "block_place");
  19. databank.workerExecute(databank.prepare("CREATE TABLE IF NOT EXISTS hawkeye(
  20. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  21. player_id INT NOT NULL,
  22. event INT NOT NULL,
  23. world VARCHAR(16) NOT NULL,
  24. x INT NOT NULL,
  25. y INT NOT NULL,
  26. z INT NOT NULL,
  27. time BIGINT NOT NULL,
  28. text VARCHAR(1024) NOT NULL);"));
  29. hawkeye.deleteOlderThanThreeWeeks();
  30. msg("dev", "§bHawkeye §rloaded.");
  31. @wait
  32. wait();
  33. if(event == "block_place") {
  34. item = living.getEquip(player, "hand");
  35. if(hawkeye.isTool(item)) {
  36. if(!perm.has(player, "hawkeye")) {
  37. perm.no(player, "hawkeye");
  38. goto("wait");
  39. }
  40. cancel = true;
  41. list = hawkeye.getData(null, null, block_loc, 1, null, null, "DESC");
  42. if(list.getSize(list) == 0) {
  43. msg.prefix(player, prefix_hawkeye, "No results found.");
  44. goto("wait");
  45. }
  46. hawkeye.setDataList(player, list);
  47. hawkeye.print(player, list, 1);
  48. goto("wait");
  49. }
  50. }
  51. if(event == "block_click") {
  52. item = living.getEquip(player, "hand");
  53. if(action == "left" && hawkeye.isTool(item)) {
  54. if(!perm.has(player, "hawkeye")) {
  55. perm.no(player, "hawkeye");
  56. goto("wait");
  57. }
  58. cancel = true;
  59. list = hawkeye.getData(null, null, block_loc, 1, null, null, "DESC");
  60. if(list.getSize(list) == 0) {
  61. msg.prefix(player, prefix_hawkeye, "No results found.");
  62. goto("wait");
  63. }
  64. hawkeye.setDataList(player, list);
  65. hawkeye.print(player, list, 1);
  66. }
  67. goto("wait");
  68. }
  69. world_name = world.getName(loc.getWorld(block_loc));
  70. if(world.isSurvName(world_name)) {
  71. if(event == "block_break" || event == "block_place") {
  72. if(cancel) {
  73. goto("wait");
  74. }
  75. state = block.getState(block_loc);
  76. state = text.replace(state, "Block{", "");
  77. state = text.replace(state, "}", "");
  78. if(text.length(state) > 1024) {
  79. goto("wait");
  80. }
  81. hawkeye.addEntry(event, player, block_loc, state);
  82. }
  83. }
  84. goto("wait");
  85. function hawkeye.addEntry(event, player, location, text) {
  86. event_id = hawkeye.getEventId(event);
  87. modTimer(-15);
  88. stmt = databank.prepare("INSERT INTO hawkeye (player_id, event, world, x, y, z, time, text) VALUES (?,?,?,?,?,?,?,?)");
  89. databank.setInt(stmt, 1, player.getId(player));
  90. databank.setInt(stmt, 2, event_id);
  91. databank.setString(stmt, 3, world.getName(loc.getWorld(location)));
  92. databank.setInt(stmt, 4, loc.getX(location));
  93. databank.setInt(stmt, 5, loc.getY(location));
  94. databank.setInt(stmt, 6, loc.getZ(location));
  95. databank.setLong(stmt, 7, time.getMillis());
  96. databank.setString(stmt, 8, text);
  97. databank.workerExecute(stmt);
  98. }
  99. function hawkeye.getEventId(event) {
  100. return map.get($event_map_2, event);
  101. }
  102. function hawkeye.deleteOlderThanThreeWeeks() {
  103. three_weeks_before = time.getMillis() - 21 * 24 * 60 * 60 * 1000;
  104. stmt = databank.prepare("DELETE FROM hawkeye WHERE time < ?;");
  105. databank.setLong(stmt, 1, three_weeks_before);
  106. databank.workerExecute(stmt);
  107. }
  108. function hawkeye.isTool(item) {
  109. lore = item.getLore(item);
  110. if(list.getSize(lore) > 0) {
  111. return list.getIndex(lore, 0) == "Hawkeye Tool";
  112. }
  113. return false;
  114. }
  115. function hawkeye.getEventName(event_id) {
  116. return map.get($event_map, event_id);
  117. }