Mirage-Skripter

AkonProtect

Aug 3rd, 2020 (edited)
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.23 KB | None | 0 0
  1. command /coi:
  2. trigger:
  3. if metadata value "coi" of player is true:
  4. delete metadata value "coi" of player
  5. send "disabled."
  6. stop
  7. set metadata value "coi" of player to true
  8. send "enabled"
  9.  
  10. on break:
  11. if metadata value "coi" of player is true:
  12. cancel event
  13. if {log::%event-location%::time::*} is not set:
  14. send "No logs"
  15. stop
  16. set {_index::*} to getLogIndex(event-location)
  17. loop {_index::*}:
  18. set {_log} to translateLog(loop-value, event-location)
  19. send {_log}
  20. wait 1 tick
  21. stop
  22. set {_id} to getLogId()
  23. add {_id} to {log::index::*}
  24. add event-location to {log::location::%{_id}%::*}
  25. set {log::%event-location%::time::%{_id}%} to now
  26. set {log::%event-location%::block::%{_id}%} to type of event-block
  27. set {log::%event-location%::player::%{_id}%} to name of player
  28. set {log::%event-location%::type::%{_id}%} to "deleted"
  29.  
  30. on place:
  31. if metadata value "coi" of player is true:
  32. cancel event
  33. if {log::%event-location%::time::*} is not set:
  34. send "No logs"
  35. stop
  36. set {_index::*} to getLogIndex(event-location)
  37. loop {_index::*}:
  38. set {_log} to translateLog(loop-value, event-location)
  39. send {_log}
  40. wait 1 tick
  41. stop
  42. set {_id} to getLogId()
  43. add {_id} to {log::index::*}
  44. add event-location to {log::location::%{_id}%::*}
  45. set {log::%event-location%::time::%{_id}%} to now
  46. set {log::%event-location%::block::%{_id}%} to type of event-block
  47. set {log::%event-location%::player::%{_id}%} to name of player
  48. set {log::%event-location%::type::%{_id}%} to "placed"
  49. set {_index::*} to getLogIndex(event-location)
  50. loop {_index::*}:
  51. set {_beforeblock} to getBeforeBlock(loop-value, event-location)
  52. exit loop
  53. set {log::%event-location%::before::%{_id}%} to {_beforeblock}
  54.  
  55. on explode:
  56. loop blocks in radius 7 around event-entity:
  57. loop-block is not air
  58. set {_before::location::%location at loop-block%} to location at loop-block
  59. set {_before::block::%location at loop-block%} to type of loop-block
  60. wait 1 tick
  61. loop {_before::location::*}:
  62. type of block at loop-value is not {_before::block::%loop-value%}
  63. set {_id} to getLogId()
  64. add {_id} to {log::index::*}
  65. add loop-value to {log::location::%{_id}%::*}
  66. set {log::%loop-value%::time::%{_id}%} to now
  67. set {log::%loop-value%::block::%{_id}%} to {_before::block::%loop-value%}
  68. set {log::%loop-value%::player::%{_id}%} to "tnt"
  69.  
  70. function getLogId() :: string:
  71. add 1 to {nowLogIdNumber}
  72. set {_id} to "%now%=%{nowLogIdNumber}%"
  73. return {_id}
  74.  
  75. function getLogIndex(loc: location) :: strings:
  76. loop {log::index::*}:
  77. loop {log::location::%loop-value%::*}:
  78. loop-value-2 is {_loc}
  79. add "%loop-value-1%" to {_return::*}
  80. return {_return::*}
  81.  
  82. function translateLog(index: string, loc: location) :: string:
  83. set {_player} to {log::%{_loc}%::player::%{_index}%}
  84. set {_type} to {log::%{_loc}%::type::%{_index}%}
  85. set {_block} to {log::%{_loc}%::block::%{_index}%}
  86. set {_time} to difference between now and {log::%{_loc}%::time::%{_index}%}
  87. set {_return} to "&3Log &c%{_player}% &7%{_type}% &c%{_block}% &7%{_time}% &8ago"
  88. return {_return}
  89.  
  90. function getBeforeBlock(index: string, loc: location) :: block:
  91. {log::%{_loc}%::type::%{_index}%} is "deleted"
  92. set {_block} to {log::%{_loc}%::block::%{_id}%}
  93. return {_block}
  94.  
  95. command /rollback [<string>] [<string>] [<timespan>]:
  96. trigger:
  97. if arg-2 is set:
  98. arg-2 is not "deleted" or "placed" or "both"
  99. send "deleted or placed or both"
  100. stop
  101. if arg-3 is not set:
  102. send "timespan"
  103. stop
  104. set {_num} to 0
  105. loop {log::index::*}:
  106. loop {log::location::%loop-value%::*}:
  107. difference between now and {log::%loop-value-2%::time::%loop-value-1%} <= arg-3
  108. if arg-1 is "@tnt":
  109. "@%{log::%loop-value-2%::player::%loop-value-1%}%" is arg-1
  110. set block at loop-value-2 to {log::%loop-value-2%::block::%loop-value-1%}
  111. else:
  112. if arg-1 is not "@everyone":
  113. "%{log::%loop-value-2%::player::%loop-value-1%}%" is not arg-1
  114. continue
  115. if {log::%loop-value-2%::type::%loop-value-1%} is "placed":
  116. arg-2 is "placed" or "both"
  117. if {log::%loop-value-2%::before::%loop-value-1%} is set:
  118. set block at loop-value-2 to {log::%loop-value-2%::before::%loop-value-1%}
  119. else:
  120. set block at loop-value-2 to air
  121. else:
  122. arg-2 is "deleted" or "both"
  123. set block at loop-value-2 to {log::%loop-value-2%::block::%loop-value-1%}
  124. add 1 to {_num}
  125. if mod({_num}, 200) = 0:
  126. wait 1 tick
  127. send "&3Rollback finish &8--- &7Loaded &c%{_num}% &7block"
  128.  
  129. command /purge [<timespan>]:
  130. trigger:
  131. if arg-1 is not set:
  132. send "timespan"
  133. stop
  134. set {_data} to 0
  135. loop {log::index::*}:
  136. loop {log::location::%loop-value%::*}:
  137. difference between now and {log::%loop-value-2%::time::%loop-value-1%} > arg-1
  138. remove loop-value-1 from {log::index::*}
  139. delete {log::%loop-value-2%::time::%loop-value-1%}
  140. delete {log::%loop-value-2%::block::%loop-value-1%}
  141. delete {log::%loop-value-2%::player::%loop-value-1%}
  142. delete {log::%loop-value-2%::type::%loop-value-1%}
  143. delete {log::%loop-value-2%::before::%loop-value-1%}
  144. delete {log::location::%loop-value-1%::*}
  145. add 7 to {_data}
  146. set {nowLogIdNumber} to 0
  147. send "&3Purge finish &8--- &7Deleted &c%{_data}% &7logs"
Add Comment
Please, Sign In to add comment