PageRenderTime 58ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/ChaosLinkifier.lua

https://bitbucket.org/chaosdeveloper/chaosadmin
Lua | 270 lines | 242 code | 3 blank | 25 comment | 76 complexity | e8a39ee071c52f3e76e3c48ec169b6b1 MD5 | raw file
Possible License(s): GPL-3.0
  1. -------------------------------------------------------------------------------------------------------------
  2. --
  3. -- ChaosAdmin Version 1.0 Beta
  4. --
  5. -- Copyright (C) 2010 Chaos Developer Corporation
  6. --
  7. -- Official Website: http://www.chaos-developer.com
  8. --
  9. -------------------------------------------------------------------------------------------------------------
  10. local function RGBPercToHex(r, g, b)
  11. r = r <= 1 and r >= 0 and r or 0
  12. g = g <= 1 and g >= 0 and g or 0
  13. b = b <= 1 and b >= 0 and b or 0
  14. return string.format("%02x%02x%02x", r*255, g*255, b*255)
  15. end
  16. function MangLinkifier_Decompose(chatstring)
  17. if chatstring ~= nil then
  18. ----------====~~GO Target Command Match Text ~~====----------
  19. for guid in string.gmatch(chatstring, Strings["lfer_GOtargid1"]) do --TARGET ID
  20. chatstring = string.gsub (chatstring, Strings["lfer_GOtargid2"], MangLinkifier_Link(Strings["lfer_GOtargid3"], "%2", "targid"))
  21. end
  22. for guid in string.gmatch(chatstring, Strings["lfer_GOtargguid1"]) do --TARGET GUID
  23. chatstring = string.gsub (chatstring, Strings["lfer_GOtargguid1"], MangLinkifier_Link(Strings["lfer_GOtargguid3"], "%1", "targguid"))
  24. end
  25. for guid in string.gmatch(chatstring, Strings["lfer_GOtargxyz1"]) do --TARGET XYZ
  26. chatstring = string.gsub (chatstring, Strings["lfer_GOtargxyz2"], MangLinkifier_Link(Strings["lfer_GOtargxyz3"], "1 %2 %3 %4", "targxyz"))
  27. end
  28. ----------====~~ NPC Info Command Match Text ~~====----------
  29. for guid in string.gmatch(chatstring, Strings["lfer_NPCInfoguid1"]) do --NPCINFO GUID
  30. chatstring = string.gsub (chatstring, Strings["lfer_NPCInfoguid2"], MangLinkifier_Link(Strings["lfer_NPCInfoguid3"], "%1", "npcguid"))
  31. end
  32. for guid in string.gmatch(chatstring, Strings["lfer_NPCInfoentry1"]) do --NPCINFO Entry
  33. chatstring = string.gsub (chatstring, Strings["lfer_NPCInfoentry2"], MangLinkifier_Link(Strings["lfer_NPCInfoentry3"], "%1", "npcentry"))
  34. end
  35. for guid in string.gmatch(chatstring, Strings["lfer_NPCInfodisplay1"]) do --NPCINFO Display
  36. chatstring = string.gsub (chatstring, Strings["lfer_NPCInfodisplay2"], MangLinkifier_Link(Strings["lfer_NPCInfodisplay3"], "%1", "npcdisplay"))
  37. end
  38. for guid in string.gmatch(chatstring, Strings["lfer_NPCInfodisplay21"]) do --NPCINFO Display Native
  39. chatstring = string.gsub (chatstring, Strings["lfer_NPCInfodisplay22"], MangLinkifier_Link(Strings["lfer_NPCInfodisplay23"], "%1", "npcdisplay2"))
  40. end
  41. ----------====~~ ADD GO Command Match Text ~~====----------
  42. for guid in string.gmatch(chatstring, Strings["lfer_AddGoguid1"]) do --ADDGO GUID
  43. chatstring = string.gsub (chatstring, Strings["lfer_AddGoguid2"], MangLinkifier_Link(Strings["lfer_AddGoguid3"], "%1", "addgoguid"))
  44. end
  45. for guid in string.gmatch(chatstring, Strings["lfer_AddGoid1"]) do --ADDGO ID
  46. chatstring = string.gsub (chatstring, Strings["lfer_AddGoid2"], MangLinkifier_Link(Strings["lfer_AddGoid3"], "%1", "addgoid"))
  47. end
  48. for guid in string.gmatch(chatstring, Strings["lfer_AddGoxyz1"]) do --ADDGO XYZ
  49. chatstring = string.gsub (chatstring, Strings["lfer_AddGoxyz2"], MangLinkifier_Link(Strings["lfer_AddGoxyz3"], "%1 %2 %3", "addgoxyz"))
  50. end
  51. ----------====~~ GPS Command Match Text ~~====----------
  52. for guid in string.gmatch(chatstring, Strings["lfer_GPSxyz1"]) do --GPS XYZ
  53. chatstring = string.gsub (chatstring, Strings["lfer_GPSxyz2"], MangLinkifier_Link(Strings["lfer_GPSxyz3"], "%1 %2 %3", "gpsxyz"))
  54. end
  55. ----------====~~ Added Options for Clickable Links Made by Mangos ~~====----------
  56. for guid in string.gmatch(chatstring, "%|cffffffff%|Hquest:(.*)%|h%[(.*)%]%|h%|r") do --LOOKUP QUEST
  57. chatstring = string.gsub (chatstring, "%|cffffffff%|Hquest:(.*)%|h%[(.*)%]%|h%|r", MangLinkifier_Link("%2", "%1", "lookupquest"))
  58. end
  59. for guid in string.gmatch(chatstring, "%|cff(.*)%|Hitem:(.*)%|h%[(.*)%]%|h%|r") do --LOOKUP ITEM -- Bug when more than 1 item is linked in chat, it is not translated
  60. chatstring = string.gsub (chatstring, "%|cff(.*)%|Hitem:(.*)%|h%[(.*)%]%|h%|r", MangLinkifier_Link("%3-%1", "%2", "lookupitem"))
  61. end
  62. for guid in string.gmatch(chatstring, "%|cffffffff%|Hgameobject_entry:(.*)%|h%[(.*)%]%|h%|r") do --LOOKUP OBJECT
  63. chatstring = string.gsub (chatstring, "%|cffffffff%|Hgameobject_entry:(.*)%|h%[(.*)%]%|h%|r", MangLinkifier_Link("%2", "%1", "lookupgo"))
  64. end
  65. for guid in string.gmatch(chatstring, "%|cffffffff%|Hcreature_entry:(.*)%|h%[(.*)%]%|h%|r") do --LOOKUP CREATURE
  66. chatstring = string.gsub (chatstring, "%|cffffffff%|Hcreature_entry:(.*)%|h%[(.*)%]%|h%|r", MangLinkifier_Link("%2", "%1", "lookupcreature"))
  67. end
  68. for guid in string.gmatch(chatstring, "%|cffffffff%|Hspell:(.*)%|h%[(.*)%]%|h%|r") do --LOOKUP SPELL
  69. chatstring = string.gsub (chatstring, "%|cffffffff%|Hspell:(.*)%|h%[(.*)%]%|h%|r", MangLinkifier_Link("%2", "%1", "lookupspell"))
  70. end
  71. for guid in string.gmatch(chatstring, "%|cffffffff%|Htele:(.*)%|h%[(.*)%]%|h%|r") do --LOOKUP TELE
  72. chatstring = string.gsub (chatstring, "%|cffffffff%|Htele:(.*)%|h%[(.*)%]%|h%|r", MangLinkifier_Link("%2", "%1", "lookuptele"))
  73. end
  74. end
  75. return chatstring
  76. end
  77. function MangLinkifier_Link(orgtxt, id, type)
  78. local color = MangAdmin.db.account.style.color.linkifier
  79. local urlcolor = RGBPercToHex(color.r,color.g,color.b)
  80. --local urlcolor = (string.rep("0",6-string.len((string.upper(string.format("%x", dec)))))..(string.upper(string.format("%x", dec))))
  81. ----------====~~GO Target Command Replace Text ~~====----------
  82. if(type == "targid") then
  83. link = orgtxt .." - |cff" .. urlcolor .. "|Htargidadd:" .. id .. "|h["..Locale["lfer_Spawn"].."]|h|r "
  84. link = link .." - |cff" .. urlcolor .. "|Htargidlist:" .. id .. "|h["..Locale["lfer_List"].."]|h|r "
  85. elseif(type == "targguid") then
  86. link = orgtxt .." - |cff" .. urlcolor .. "|Htargguidgo:" .. id .. "|h["..Locale["lfer_Goto"].."]|h|r "
  87. link = link .." - |cff" .. urlcolor .. "|Htargguidmove:" .. id .. "|h["..Locale["lfer_Move"].."]|h|r "
  88. link = link .." - |cff" .. urlcolor .. "|Htargguidturn:" .. id .. "|h["..Locale["lfer_Turn"].."]|h|r "
  89. link = link .." - |cff" .. urlcolor .. "|Htargguiddel:" .. id .. "|h["..Locale["lfer_Delete"].."]|h|r \n"
  90. elseif(type == "targxyz") then
  91. link = orgtxt .." - |cff" .. urlcolor .. "|Htargxyz:" .. id .. "|h["..Locale["lfer_Teleport"].."]|h|r "
  92. ----------====~~ NPC Info Command Replace Text ~~====----------
  93. elseif(type == "npcguid") then
  94. link = orgtxt .." - |cff" .. urlcolor .. "|Hnpcguidgo:" .. id .. "|h["..Locale["lfer_Goto"].."]|h|r "
  95. link = link .." - |cff" .. urlcolor .. "|Hnpcguidmove:" .. id .. "|h["..Locale["lfer_Move"].."]|h|r "
  96. elseif(type == "npcentry") then
  97. link = orgtxt .." - |cff" .. urlcolor .. "|Hnpcentryadd:" .. id .. "|h["..Locale["lfer_Spawn"].."]|h|r "
  98. link = link .." - |cff" .. urlcolor .. "|Hnpcentrylist:" .. id .. "|h["..Locale["lfer_List"].."]|h|r "
  99. elseif(type == "npcdisplay") then
  100. link = orgtxt .." - |cff" .. urlcolor .. "|Hnpcdisplay:" .. id .. "|h["..Locale["lfer_Morph"].."]|h|r "
  101. elseif(type == "npcdisplay2") then
  102. link = orgtxt .." - |cff" .. urlcolor .. "|Hnpcdisplay2:" .. id .. "|h["..Locale["lfer_Morph"].."]|h|r "
  103. ----------====~~ ADD GO Command Replace Text ~~====----------
  104. elseif(type == "addgoguid") then
  105. link = orgtxt .." - |cff" .. urlcolor .. "|Haddgoguidgo:" .. id .. "|h["..Locale["lfer_Goto"].."]|h|r "
  106. link = link .." - |cff" .. urlcolor .. "|Haddgoguidmove:" .. id .. "|h["..Locale["lfer_Move"].."]|h|r "
  107. link = link .." - |cff" .. urlcolor .. "|Haddgoguidturn:" .. id .. "|h["..Locale["lfer_Turn"].."]|h|r "
  108. link = link .." - |cff" .. urlcolor .. "|Haddgoguiddel:" .. id .. "|h["..Locale["lfer_Delete"].."]|h|r \n"
  109. elseif(type == "addgoid") then
  110. link = orgtxt .." - |cff" .. urlcolor .. "|Haddgoid:" .. id .. "|h["..Locale["lfer_Spawn"].."]|h|r \n"
  111. elseif(type == "addgoxyz") then
  112. link = orgtxt .." - |cff" .. urlcolor .. "|Haddgoxyz:" .. id .. "|h["..Locale["lfer_Teleport"].."]|h|r "
  113. ----------====~~ GPS Command Replace Text ~~====----------
  114. elseif(type == "gpsxyz") then
  115. link = orgtxt .." - |cff" .. urlcolor .. "|Hgpsxyz:" .. id .. "|h["..Locale["lfer_Teleport"].."]|h|r "
  116. ----------====~~ Added Options for Clickable Links Made by Mangos ~~====----------
  117. elseif(type == "lookupquest") then
  118. link = "|cffffffff|Hquest:" .. id .. "|h[" .. orgtxt .. "]|h|r"
  119. link = link .." - |cff" .. urlcolor .. "|Hlookupquestadd:" .. id .. "|h["..Locale["lfer_Add"].."]|h|r "
  120. link = link .." - |cff" .. urlcolor .. "|Hlookupquestend:" .. id .. "|h["..Locale["lfer_Remove"].."]|h|r "
  121. link = link .." - |cff" .. urlcolor .. "|Hlookupquestrem:" .. id .. "|h["..Locale["lfer_Delete"].."]|h|r "
  122. elseif(type == "lookupitem") then
  123. for orgtxt, color in string.gmatch (orgtxt, "(.*)%-(.*)") do
  124. link = "|cff" .. color .."|Hitem:" .. id .. "|h[" .. orgtxt .. "]|h|r"
  125. link = link .." - |cff" .. urlcolor .. "|Hlookupitemadd:" .. id .. "|h["..Locale["lfer_Add"].."]|h|r "
  126. link = link .." - |cff" .. urlcolor .. "|Hlookupitemlist:" .. id .. "|h["..Locale["lfer_List"].."]|h|r "
  127. end
  128. elseif(type == "lookupgo") then
  129. link = "|cffffffff|Hgameobject_entry:" .. id .. "|h[" .. orgtxt .. "]|h|r"
  130. link = link .." - |cff" .. urlcolor .. "|Hlookupgoadd:" .. id .. "|h["..Locale["lfer_Spawn"].."]|h|r "
  131. link = link .." - |cff" .. urlcolor .. "|Hlookupgolist:" .. id .. "|h["..Locale["lfer_List"].."]|h|r "
  132. elseif(type == "lookupcreature") then
  133. link = "|cffffffff|Hcreature_entry:" .. id .. "|h[" .. orgtxt .. "]|h|r"
  134. link = link .." - |cff" .. urlcolor .. "|Hlookupcreatureadd:" .. id .. "|h["..Locale["lfer_Spawn"].."]|h|r "
  135. link = link .." - |cff" .. urlcolor .. "|Hlookupcreaturelist:" .. id .. "|h["..Locale["lfer_List"].."]|h|r "
  136. elseif(type == "lookupspell") then
  137. link = "|cffffffff|Hspell:" .. id .. "|h[" .. orgtxt .. "]|h|r"
  138. link = link .." - |cff" .. urlcolor .. "|Hlookupspelllearn:" .. id .. "|h["..Locale["lfer_Learn"].."]|h|r "
  139. link = link .." - |cff" .. urlcolor .. "|Hlookupspellunlearn:" .. id .. "|h["..Locale["lfer_Unlearn"].."]|h|r "
  140. elseif(type == "lookuptele") then
  141. link = "|cffffffff|Htele:" .. id .. "|h[" .. orgtxt .. "]|h|r"
  142. link = link .." - |cff" .. urlcolor .. "|Hlookupteledelete:" .. id .. "|h["..Locale["lfer_Delete"].."]|h|r "
  143. else
  144. link = orgtxt .." - |cffc20000"..Locale["lfer_Error"].." |r |cff008873" .. type .. "|r"
  145. end
  146. return link
  147. end
  148. function MangLinkifier_SetItemRef(link, text, button)
  149. ----------====~~Target Command Functions ~~====----------
  150. if ( strsub(link, 1, 9) == "targidadd" ) then
  151. SendChatMessage(".gobject add "..strsub(link, 11), say, nil, nil)
  152. return;
  153. elseif ( strsub(link, 1, 10) == "targidlist" ) then
  154. SendChatMessage(".list object "..strsub(link, 12), say, nil, nil)
  155. return;
  156. elseif ( strsub(link, 1, 10) == "targguidgo" ) then
  157. SendChatMessage(".go object "..strsub(link, 12), say, nil, nil)
  158. return;
  159. elseif ( strsub(link, 1, 12) == "targguidmove" ) then
  160. SendChatMessage(".gobject move "..strsub(link, 14), say, nil, nil)
  161. return;
  162. elseif ( strsub(link, 1, 12) == "targguidturn" ) then
  163. SendChatMessage(".gobject turn "..strsub(link, 14), say, nil, nil)
  164. return;
  165. elseif ( strsub(link, 1, 11) == "targguiddel" ) then
  166. SendChatMessage(".gobject delete "..strsub(link, 13), say, nil, nil)
  167. return;
  168. elseif ( strsub(link, 1, 7) == "targxyz" ) then
  169. SendChatMessage(".go "..strsub(link, 9), say, nil, nil)
  170. return;
  171. ----------====~~ NPC Info Command Functions ~~====----------
  172. elseif ( strsub(link, 1, 9) == "npcguidgo" ) then
  173. SendChatMessage(".go creature "..strsub(link, 11), say, nil, nil)
  174. return;
  175. elseif ( strsub(link, 1, 11) == "npcguidmove" ) then
  176. SendChatMessage(".go creature "..strsub(link, 13), say, nil, nil)
  177. return;
  178. elseif ( strsub(link, 1, 11) == "npcentryadd" ) then
  179. SendChatMessage(".npc add "..strsub(link, 13), say, nil, nil)
  180. return;
  181. elseif ( strsub(link, 1, 12) == "npcentrylist" ) then
  182. SendChatMessage(".list creature "..strsub(link, 14), say, nil, nil)
  183. return;
  184. elseif ( strsub(link, 1, 10) == "npcdisplay" ) then
  185. SendChatMessage(".modify morph "..strsub(link, 12), say, nil, nil)
  186. return;
  187. elseif ( strsub(link, 1, 11) == "npcdisplay2" ) then
  188. SendChatMessage(".modify morph "..strsub(link, 13), say, nil, nil)
  189. return;
  190. ----------====~~ ADD GO Command Functions ~~====----------
  191. elseif ( strsub(link, 1, 11) == "addgoguidgo" ) then
  192. SendChatMessage(".go object "..strsub(link, 13), say, nil, nil)
  193. return;
  194. elseif ( strsub(link, 1, 13) == "addgoguidmove" ) then
  195. SendChatMessage(".gobject move "..strsub(link, 15), say, nil, nil)
  196. return;
  197. elseif ( strsub(link, 1, 13) == "addgoguidturn" ) then
  198. SendChatMessage(".gobject turn "..strsub(link, 15), say, nil, nil)
  199. return;
  200. elseif ( strsub(link, 1, 12) == "addgoguiddel" ) then
  201. SendChatMessage(".gobject delete "..strsub(link, 14), say, nil, nil)
  202. return;
  203. elseif ( strsub(link, 1, 7) == "addgoid" ) then
  204. SendChatMessage(".gobject add "..strsub(link, 9), say, nil, nil)
  205. return;
  206. elseif ( strsub(link, 1, 8) == "addgoxyz" ) then
  207. SendChatMessage(".go "..strsub(link, 10), say, nil, nil)
  208. return;
  209. ----------====~~ GPS Command Functions ~~====----------
  210. elseif ( strsub(link, 1, 6) == "gpsxyz" ) then
  211. SendChatMessage(".go "..strsub(link, 8), say, nil, nil)
  212. return;
  213. ----------====~~ Support for Clickable Links Made by Mangos and Added Options ~~====----------
  214. elseif ( strsub(link, 1, 14) == "lookupquestadd" ) then
  215. SendChatMessage(".quest add "..strsub(link, 16), say, nil, nil)
  216. return;
  217. elseif ( strsub(link, 1, 14) == "lookupquestend" ) then
  218. SendChatMessage(".quest complete "..strsub(link, 16), say, nil, nil)
  219. return;
  220. elseif ( strsub(link, 1, 14) == "lookupquestrem" ) then
  221. SendChatMessage(".quest remove "..strsub(link, 16), say, nil, nil)
  222. return;
  223. elseif ( strsub(link, 1, 13) == "lookupitemadd" ) then
  224. SendChatMessage(".additem "..strsub(link, 15), say, nil, nil)
  225. return;
  226. elseif ( strsub(link, 1, 14) == "lookupitemlist" ) then
  227. SendChatMessage(".list item "..strsub(link, 16), say, nil, nil)
  228. return;
  229. elseif ( strsub(link, 1, 16) == "gameobject_entry" ) then
  230. SendChatMessage(".gobject add "..strsub(link, 18), say, nil, nil)
  231. return;
  232. elseif ( strsub(link, 1, 11) == "lookupgoadd" ) then
  233. SendChatMessage(".gobject add "..strsub(link, 13), say, nil, nil)
  234. return;
  235. elseif ( strsub(link, 1, 12) == "lookupgolist" ) then
  236. SendChatMessage(".list object "..strsub(link, 14), say, nil, nil)
  237. return;
  238. elseif ( strsub(link, 1, 14) == "creature_entry" ) then
  239. SendChatMessage(".npc add "..strsub(link, 16), say, nil, nil)
  240. return;
  241. elseif ( strsub(link, 1, 17) == "lookupcreatureadd" ) then
  242. SendChatMessage(".npc add "..strsub(link, 19), say, nil, nil)
  243. return;
  244. elseif ( strsub(link, 1, 18) == "lookupcreaturelist" ) then
  245. SendChatMessage(".list creature "..strsub(link, 20), say, nil, nil)
  246. return;
  247. elseif ( strsub(link, 1, 10) == "gameobject" ) then
  248. SendChatMessage(".go object "..strsub(link, 12), say, nil, nil)
  249. return;
  250. elseif ( strsub(link, 1, 8) == "creature" ) then
  251. SendChatMessage(".go creature "..strsub(link, 10), say, nil, nil)
  252. return;
  253. elseif ( strsub(link, 1, 16) == "lookupspelllearn" ) then
  254. SendChatMessage(".learn "..strsub(link, 18), say, nil, nil)
  255. return;
  256. elseif ( strsub(link, 1, 18) == "lookupspellunlearn" ) then
  257. SendChatMessage(".unlearn "..strsub(link, 20), say, nil, nil)
  258. return;
  259. elseif ( strsub(link, 1, 4) == "tele" ) then
  260. SendChatMessage(".tele "..strsub(link, 6), say, nil, nil)
  261. return;
  262. elseif ( strsub(link, 1, 16) == "lookupteledelete" ) then
  263. SendChatMessage(".tele del "..strsub(link, 18), say, nil, nil)
  264. return;
  265. end
  266. MangLinkifier_SetItemRef_Original(link, text, button);
  267. end