Guest User

Untitled

a guest
Jan 23rd, 2015
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.92 KB | None | 0 0
  1. local config = {
  2. banLength = getConfigValue('banLength'),
  3. finalBanLength = getConfigValue('finalBanLength'),
  4. ipBanLength = getConfigValue('ipBanLength'),
  5. notationsToBan = getConfigValue('notationsToBan'),
  6. warningsToFinalBan = getConfigValue('warningsToFinalBan'),
  7. warningsToDeletion = getConfigValue('warningsToDeletion')
  8. }
  9.  
  10. function onTextEdit(cid, item, text)
  11. unregisterCreatureEvent(cid, "Ban_Finish")
  12. if(item.itemid ~= 2599) then
  13. return true
  14. end
  15.  
  16. local data = table.unserialize(getCreatureStorage(cid, "banConfig"))
  17. if(not data.type) then
  18. return true
  19. end
  20.  
  21. if(text:len() == 0) then
  22. return false
  23. end
  24.  
  25. text = text:explode("\n")
  26. if(not data.subType or isInArray({1, 5}, data.subType)) then
  27. if(text[1] ~= "Name:" or text[3] ~= "(Optional) Length:" or text[5] ~= "Comment:") then
  28. doPlayerSendCancel(cid, "Invalid format.")
  29. return false
  30. end
  31.  
  32. local size = table.maxn(text)
  33. if(size > 6) then
  34. data.comment = ""
  35. for i = 6, size do
  36. data.comment = data.comment .. text[i] .. "\n"
  37. end
  38. else
  39. data.comment = text[6]
  40. end
  41.  
  42. if(text[4]:len() > 0) then
  43. data.length = loadstring("return " .. text[4])()
  44. end
  45. elseif(text[1] ~= "Name:" or text[3] ~= "Comment:") then
  46. doPlayerSendCancel(cid, "Invalid format.")
  47. return false
  48. else
  49. data.comment = text[4]
  50. end
  51.  
  52. data.name = text[2]
  53. if(data.type == 1) then
  54. errors(false)
  55. local player = getPlayerGUIDByName(data.name, true)
  56.  
  57. errors(true)
  58. if(not player) then
  59. doPlayerSendCancel(cid, "Player not found.")
  60. return false
  61. end
  62.  
  63. local account = getAccountIdByName(data.name)
  64. if(account == 0 or getAccountFlagValue(cid, PLAYERFLAG_CANNOTBEBANNED)) then
  65. doPlayerSendCancel(cid, "You cannot take action on this player.")
  66. return false
  67. end
  68.  
  69. local warnings, warning = getAccountWarnings(account), 1
  70. if(data.subType == 1) then
  71. if(not tonumber(data.length)) then
  72. data.length = os.time() + config.banLength
  73. if((warnings + 1) >= config.warningsToDeletion) then
  74. data.length = -1
  75. elseif((warnings + 1) >= config.warningsToFinalBan) then
  76. data.length = os.time() + config.finalBanLength
  77. end
  78. else
  79. data.length = os.time() + data.length
  80. end
  81.  
  82. doAddAccountBanishment(account, player, data.length, data.comment, getPlayerGUID(cid))
  83. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. (warnings + 1) .. ") has been banned.")
  84. elseif(data.subType == 2) then
  85. doAddAccountBanishment(account, player, config.finalBanLength, data.comment, getPlayerGUID(cid))
  86. if(warnings < config.warningsToFinalBan) then
  87. warning = config.warningsToFinalBan - warnings
  88. end
  89.  
  90. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. warning .. ") has been banned.")
  91. elseif(data.subType == 3) then
  92. doAddAccountBanishment(account, player, -1, data.comment, getPlayerGUID(cid))
  93. if(warnings < config.warningsToDeletion) then
  94. warning = config.warningsToDeletion - warnings
  95. end
  96.  
  97. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. warning .. ") has been deleted.")
  98. elseif(data.subType == 4) then
  99. local notations = getNotationsCount(account) + 1
  100. if(notations >= config.notationsToBan) then
  101. data.length = os.time() + config.banLength
  102. if((warnings + 1) >= config.warningsToDeletion) then
  103. data.length = -1
  104. elseif((warnings + 1) >= config.warningsToFinalBan) then
  105. data.length = os.time() + config.finalBanLength
  106. end
  107.  
  108. doAddAccountBanishment(account, player, data.length, data.comment, getPlayerGUID(cid))
  109. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. (warnings + 1) .. ") has been banned reaching notations limit.")
  110. else
  111. doAddNotation(account, player, data.comment, getPlayerGUID(cid))
  112. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (account notations: " .. notations .. ") has been noted.")
  113. warning = 0
  114. end
  115. end
  116.  
  117. if(warning > 0) then
  118. doAddAccountWarnings(account, warning)
  119. doRemoveNotations(account)
  120.  
  121. local pid = getPlayerByGUID(player)
  122. if(pid) then
  123. doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")
  124. doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)
  125. addEvent(valid(doRemoveCreature), 1000, pid, true)
  126. end
  127. end
  128. elseif(data.type == 2) then
  129. errors(false)
  130. local player = getPlayerGUIDByName(data.name, true)
  131.  
  132. errors(true)
  133. if(not player) then
  134. doPlayerSendCancel(cid, "Player not found.")
  135. return false
  136. end
  137.  
  138. local account = getAccountIdByName(data.name)
  139. if(account == 0 or getAccountFlagValue(account, PLAYERFLAG_CANNOTBEBANNED)) then
  140. doPlayerSendCancel(cid, "You cannot take action on this player.")
  141. return false
  142. end
  143.  
  144. data.subType = data.subType - 4
  145. if(data.subType == 1) then
  146. if(not tonumber(data.length)) then
  147. local warnings = getAccountWarnings(account) + 1
  148. data.length = os.time() + config.banLength
  149. if(warnings >= config.warningsToDeletion) then
  150. data.length = -1
  151. elseif(warnings >= config.warningsToFinalBan) then
  152. data.length = os.time() + config.finalBanLength
  153. end
  154. else
  155. data.length = os.time() + data.length
  156. end
  157.  
  158. doAddPlayerBanishment(data.name, 3, data.length, data.comment, getPlayerGUID(cid))
  159. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been banned.")
  160.  
  161. local pid = getPlayerByGUID(player)
  162. if(pid) then
  163. doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")
  164. doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)
  165. addEvent(valid(doRemoveCreature), 1000, pid, true)
  166. end
  167. elseif(data.subType == 2) then
  168. doAddPlayerBanishment(data.name, 3, -1, data.comment, getPlayerGUID(cid))
  169. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been deleted.")
  170. elseif(data.subType == 3) then
  171. local warnings, notations = getAccountWarnings(account) + 1, getNotationsCount(account, player) + 1
  172. if(notations >= config.notationsToBan) then
  173. data.length = os.time() + config.banLength
  174. if(warnings >= config.warningsToDeletion) then
  175. data.length = -1
  176. elseif(warnings >= config.warningsToFinalBan) then
  177. data.length = os.time() + config.finalBanLength
  178. end
  179.  
  180. doAddPlayerBanishment(account, 3, data.length, data.comment, getPlayerGUID(cid))
  181. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been banned reaching notations limit.")
  182.  
  183. local pid = getPlayerByGUID(player)
  184. if(pid) then
  185. doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")
  186. doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)
  187. addEvent(valid(doRemoveCreature), 1000, pid, true)
  188. end
  189. else
  190. doAddNotation(account, player, data.comment, getPlayerGUID(cid))
  191. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (notations: " .. notations .. ") has been noted.")
  192. end
  193. elseif(data.subType == 4) then
  194. doAddPlayerBanishment(data.name, 1, -1, data.comment, getPlayerGUID(cid))
  195. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been reported.")
  196. elseif(data.subType == 5) then
  197. doAddPlayerBanishment(data.name, 2, -1, data.comment, getPlayerGUID(cid))
  198. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been namelocked.")
  199.  
  200. local pid = getPlayerByGUID(player)
  201. if(pid) then
  202. doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")
  203. doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)
  204. addEvent(valid(doRemoveCreature), 1000, pid, true)
  205. end
  206. end
  207. elseif(data.type == 3) then
  208. local ip = getIpByName(data.name)
  209. if(not ip) then
  210. doPlayerSendCancel(cid, "Player not found.")
  211. return false
  212. end
  213.  
  214. local account = getAccountIdByName(data.name)
  215. if(account == 0 or getAccountFlagValue(account, PLAYERFLAG_CANNOTBEBANNED)) then
  216. doPlayerSendCancel(cid, "You cannot take action on this player.")
  217. return false
  218. end
  219.  
  220. if(not tonumber(data.length)) then
  221. data.length = config.ipBanLength
  222. end
  223.  
  224. doAddIpBanishment(ip, 4294967295, os.time() + data.length, data.comment, getPlayerGUID(cid))
  225. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been banned on IP: " .. doConvertIntegerToIp(ip) .. ".")
  226.  
  227. local pid = getPlayerByGUID(player)
  228. if(pid) then
  229. doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")
  230. doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)
  231. addEvent(valid(doRemoveCreature), 1000, pid, true)
  232. end
  233. end
  234.  
  235. return false
  236. end
Advertisement
Add Comment
Please, Sign In to add comment