Advertisement
Guest User

Untitled

a guest
Jun 18th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.41 KB | None | 0 0
  1. Locating & echoing functions
  2.  
  3. -- for a given room name, we'll echo all the vnums
  4. function mmp.echonums(roomname)
  5. local t = mmp.searchRoomExact(roomname)
  6. roomnumberset = {}
  7.  
  8. if not next(t) then
  9. echo "?" return nil end
  10.  
  11. -- transform the kv table into a table of tables for cleaner code.
  12. -- + perhaps Mudlet in future will give this us anyway, sorted by relevancy
  13. local dt = {}
  14. for roomid,room in pairs(t) do
  15. dt[#dt+1] = {name = room, id = roomid}
  16. end
  17.  
  18. -- we can have nothing if we asked for exact match
  19. if not dt[1] then echo "?---" return end
  20.  
  21. -- display first three ids. Can't really nicely table.concat them.
  22. fg("purple")
  23. echoLink(dt[1].id, 'mmp.gotoRoom('..dt[1].id..')', string.format("Go to %s (%s)", dt[1].id, dt[1].name), true)
  24. resetFormat()
  25. highlighttimerroom = dt[1].id
  26. table.insert(roomnumberset, dt[1].id)
  27. doblink( highlighttimerroom )
  28. if not dt[2] then return end
  29.  
  30. echo", "
  31. fg("purple")
  32. echoLink(dt[2].id, 'mmp.gotoRoom('..dt[2].id..')', string.format("Go to %s (%s)", dt[2].id, dt[2].name), true)
  33. resetFormat()
  34. highlighttimerroom = dt[1].id
  35. table.insert(roomnumberset, dt[2].id)
  36. doblink( highlighttimerroom )
  37. if not dt[3] then return end
  38.  
  39. echo", "
  40. fg("purple")
  41. echoLink(dt[3].id, 'mmp.gotoRoom('..dt[3].id..')', string.format("Go to %s (%s)", dt[3].id, dt[3].name), true)
  42. resetFormat()
  43. highlighttimerroom = dt[1].id
  44. table.insert(roomnumberset, dt[3].id)
  45. doblink( highlighttimerroom )
  46. if not dt[4] then return end
  47.  
  48. echo", ..."
  49. end
  50.  
  51. function mmp.roomEcho(query)
  52. local result = mmp.searchRoom(query)
  53. roomnumberset = {}
  54.  
  55. if not tonumber(select(2, next(result))) then
  56. for roomid, roomname in pairs(result) do roomid = tonumber(roomid)
  57. cecho("<DarkSlateGrey> (<purple>")
  58. fg("purple")
  59. echoLink(roomid, 'mmp.gotoRoom('..roomid..')', string.format("Go to %s (%s)", roomid, tostring(roomname)), true)
  60. resetFormat()
  61. cecho("<DarkSlateGrey>)")
  62. highlighttimerroom = roomid
  63. table.insert(roomnumberset, roomid)
  64. doblink( highlighttimerroom )
  65. end
  66.  
  67. else
  68. for roomname, roomid in pairs(result) do roomid = tonumber(roomid)
  69. cecho("<DarkSlateGrey> (<purple>")
  70. fg("purple")
  71. echoLink(roomid, 'mmp.gotoRoom('..roomid..')', string.format("Go to %s (%s)", roomid, tostring(roomname)), true)
  72. resetFormat()
  73. cecho("<DarkSlateGrey>)")
  74. highlighttimerroom = roomid
  75. table.insert(roomnumberset, roomid)
  76. doblink( highlighttimerroom )
  77. end
  78. end
  79. end
  80.  
  81. function mmp.locateAndEcho(room, person)
  82. local t = mmp.searchRoomExact(room)
  83. roomnumberset = {}
  84.  
  85. echo " ("
  86. mmp.echonums(room, true)
  87. echo ")"
  88.  
  89. -- lowercase results
  90. for k,v in pairs(t) do if tonumber(k) then t[k] = v:lower() else t[k:lower()] = v end end
  91.  
  92. if not (t[room:lower()] or table.contains(t, room:lower())) then return end
  93.  
  94. echo"\n"
  95. if table.size(t) == 1 then
  96. local k,v = next(t)
  97. cecho("<red>From your knowledge, that room is in <orange_red>"..mmp.cleanAreaName(mmp.areatabler[getRoomArea(type(k) == "number" and k or v)] or "?").."<red>.")
  98. else
  99. local k,v = next(t)
  100. local areas = {}
  101. if type(k) == "number" then
  102. for k, _ in pairs(t) do
  103. areas[mmp.areatabler[getRoomArea(k)] or "?"] = true
  104. end
  105. else
  106. for _, k in pairs(t) do
  107. areas[mmp.areatabler[getRoomArea(k)] or "?"] = true
  108. end
  109. end
  110.  
  111. local flattened_areas = {}
  112. for k, _ in pairs(areas) do
  113. if k ~= "" then flattened_areas[#flattened_areas+1] = mmp.cleanAreaName(k) end
  114. end
  115.  
  116. cecho("<red>From your knowledge, that room might be in <orange_red>"..table.concat(flattened_areas, ", or ").."<red>.")
  117. end
  118.  
  119. if person then
  120. mmp.pdb[person] = room
  121. mmp.pdb_lastupdate[person] = true
  122. raiseEvent("mmapper updated pdb")
  123. end
  124. end
  125.  
  126. function mmp.locateAndEchoSide(room, person)
  127. local t = mmp.searchRoomExact(room)
  128. roomnumberset = {}
  129.  
  130. cecho "<grey> ("
  131. mmp.echonums(room, true)
  132. cecho ")"
  133.  
  134. -- lowercase results
  135. for k,v in pairs(t) do if tonumber(k) then t[k] = v:lower() else t[k:lower()] = v end end
  136.  
  137. if not (t[room:lower()] or table.contains(t, room:lower())) then return end
  138.  
  139. --echo"\n"
  140. if table.size(t) == 1 then
  141. local k,v = next(t)
  142. cecho("<red> ("..mmp.cleanAreaName(mmp.areatabler[getRoomArea(type(k) == "number" and k or v)] or "?")..")")
  143. else
  144. local k,v = next(t)
  145. local areas = {}
  146. if type(k) == "number" then
  147. for k, _ in pairs(t) do
  148. areas[mmp.areatabler[getRoomArea(k)] or "?"] = true
  149. end
  150. else
  151. for _, k in pairs(t) do
  152. areas[mmp.areatabler[getRoomArea(k)] or "?"] = true
  153. end
  154. end
  155.  
  156. local flattened_areas = {}
  157. for k, _ in pairs(areas) do
  158. if k ~= "" then flattened_areas[#flattened_areas+1] = mmp.cleanAreaName(k) end
  159. end
  160.  
  161. cecho("<red> ("..table.concat(flattened_areas, ", ")..")")
  162. end
  163.  
  164. if person then
  165. mmp.pdb[person] = room
  166. mmp.pdb_lastupdate[person] = true
  167. raiseEvent("mmapper updated pdb")
  168. end
  169. end
  170.  
  171. function mmp.locateAndEchoInternal(room, person)
  172. local t = mmp.searchRoomExact(room)
  173.  
  174.  
  175.  
  176. -- lowercase results
  177. for k,v in pairs(t) do if tonumber(k) then t[k] = v:lower() else t[k:lower()] = v end end
  178.  
  179. if not (t[room:lower()] or table.contains(t, room:lower())) then return end
  180.  
  181. --echo"\n"
  182. if table.size(t) == 1 then
  183. local k,v = next(t)
  184. cecho("<red> in "..mmp.cleanAreaName(mmp.areatabler[getRoomArea(type(k) == "number" and k or v)] or "?")..".")
  185. else
  186. local k,v = next(t)
  187. local areas = {}
  188. if type(k) == "number" then
  189. for k, _ in pairs(t) do
  190. areas[mmp.areatabler[getRoomArea(k)] or "?"] = true
  191. end
  192. else
  193. for _, k in pairs(t) do
  194. areas[mmp.areatabler[getRoomArea(k)] or "?"] = true
  195. end
  196. end
  197.  
  198. local flattened_areas = {}
  199. for k, _ in pairs(areas) do
  200. if k ~= "" then flattened_areas[#flattened_areas+1] = mmp.cleanAreaName(k) end
  201. end
  202.  
  203. cecho("<red> in "..table.concat(flattened_areas, ", ")..".")
  204. end
  205.  
  206. echo " ("
  207. mmp.echonums(room, true)
  208. echo ")"
  209.  
  210. if person then
  211. mmp.pdb[person] = room
  212. mmp.pdb_lastupdate[person] = true
  213. raiseEvent("mmapper updated pdb")
  214. end
  215. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement