Advertisement
Guest User

Untitled

a guest
Jul 11th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.58 KB | None | 0 0
  1. =begin
  2. REIM Scoreboard
  3. This will show a scoreboard based on treim feedback to clearchecks.
  4. It include the character name, section of reim they are cleared to displayed as a number, scrip for the run, and time remaining.
  5.  
  6. SYNTAX - ;clearcheckwiz
  7.  
  8. author: Spenster
  9. name: clearcheckwiz
  10. tags: reim
  11. version: 1.2
  12.  
  13. changelog:
  14. 1.2 (2017-07-10)
  15. Rearranged a few things. Set the script to watch for responses for 30 seconds and then pause.
  16. Attempting to trouble shoot lag when using wizard.
  17. 1.1 (2017-07-07)
  18. Set the window to refresh no quicker than every 2 seconds.
  19. 1.0 (2017-06-30)
  20. Initial Release
  21. =end
  22.  
  23.  
  24. @groupmembers = []
  25.  
  26. @last_refresh = Time.now
  27. @last_loop = Time.now
  28. @last_refresh -= 2
  29. @window = @window_action = @vbox = @refreshwindow = @label_table = nil
  30. for index in 0..29
  31. eval("@label_#{index}_name = nil")
  32. eval("@label_#{index}_clear = nil")
  33. eval("@label_#{index}_scrip = nil")
  34. eval("@label_#{index}_time = nil")
  35. #respond("Setting up label_#{index}_stuff")
  36. end
  37. # label_0_name = label_0_clear = label_0_scrip = label_0_time = nil
  38. # label_1_name = label_1_clear = label_1_scrip = label_1_time = nil
  39. # label_2_name = label_2_clear = label_2_scrip = label_2_time = nil
  40. # label_3_name = label_3_clear = label_3_scrip = label_3_time = nil
  41. # label_4_name = label_4_clear = label_4_scrip = label_4_time = nil
  42. # label_5_name = label_5_clear = label_5_scrip = label_5_time = nil
  43. # label_6_name = label_6_clear = label_6_scrip = label_6_time = nil
  44. # label_7_name = label_7_clear = label_7_scrip = label_7_time = nil
  45. # label_8_name = label_8_clear = label_8_scrip = label_8_time = nil
  46. # label_9_name = label_9_clear = label_9_scrip = label_9_time = nil
  47. # label_10_name = label_10_clear = label_10_scrip = label_10_time = nil
  48. # label_11_name = label_11_clear = label_11_scrip = label_11_time = nil
  49. # label_12_name = label_12_clear = label_12_scrip = label_12_time = nil
  50. # label_13_name = label_13_clear = label_13_scrip = label_13_time = nil
  51. # label_14_name = label_14_clear = label_14_scrip = label_14_time = nil
  52. # label_15_name = label_15_clear = label_15_scrip = label_15_time = nil
  53. # label_16_name = label_16_clear = label_16_scrip = label_16_time = nil
  54. # label_17_name = label_17_clear = label_17_scrip = label_17_time = nil
  55. # label_18_name = label_18_clear = label_18_scrip = label_18_time = nil
  56. # label_19_name = label_19_clear = label_19_scrip = label_19_time = nil
  57. # label_20_name = label_20_clear = label_20_scrip = label_20_time = nil
  58. # label_21_name = label_21_clear = label_21_scrip = label_21_time = nil
  59. # label_22_name = label_22_clear = label_22_scrip = label_22_time = nil
  60. # label_23_name = label_23_clear = label_23_scrip = label_23_time = nil
  61. # label_24_name = label_24_clear = label_24_scrip = label_24_time = nil
  62. # label_25_name = label_25_clear = label_25_scrip = label_25_time = nil
  63. # label_26_name = label_26_clear = label_26_scrip = label_26_time = nil
  64. # label_27_name = label_27_clear = label_27_scrip = label_27_time = nil
  65. # label_28_name = label_28_clear = label_28_scrip = label_28_time = nil
  66. # label_29_name = label_29_clear = label_29_scrip = label_29_time = nil
  67.  
  68. @hiddenoutputhook = proc {|server_string|
  69. if server_string =~ /Current quest status\:|Time until next premium entry\:|Your reputation rank with the Reim Base Camp|Total Reputation|Total Quest Energy|Total Ethereal Scrip|Total Ethereal Scrip for this run|You are currently questing in the Settlement of Reim.|You are currently flagged for entry for up to the|You have slain a total of|REIM INFO|Your group status is currently|for a list of other options|is following you|is also a member of your group|is the leader of your group|Reim Fortress Defense|Current quest status|Times Defended|Times Failed|Highest Round Completed|Highest Score|Total Contribution|General Information|The Settlement of Reim/
  70. nil
  71. else
  72. server_string
  73. end
  74. }
  75.  
  76. before_dying {
  77. Gtk.queue {@window.destroy}
  78. DownstreamHook.remove('hiddenoutput')
  79. }
  80.  
  81.  
  82. # First time window setup
  83. Gtk.queue {
  84.  
  85. @window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
  86. @window.set_title "Spenster's ClearCheck Viewer" #Sets window title
  87. @window.border_width = 12
  88.  
  89. @vbox = Gtk::Table.new(1,2, false)
  90. for index in 0..29
  91.  
  92. eval("@label_#{index}_name = Gtk::Label.new(\"\")")
  93. eval("@label_#{index}_name.set_alignment(0, 0.5)")
  94. # eval("vbox.attach label_#{index}, #{name_loc}, Gtk::SHRINK")
  95.  
  96. eval("@label_#{index}_clear = Gtk::Label.new(\"\")")
  97. eval("@label_#{index}_clear.set_alignment(1, 0.5)")
  98. # eval("vbox.attach label_#{index}_clear, #{name_loc_clear}, Gtk::SHRINK")
  99.  
  100. eval("@label_#{index}_scrip = Gtk::Label.new(\"\")")
  101. eval("@label_#{index}_scrip.set_alignment(1, 0.5)")
  102. # eval("vbox.attach label_#{index}, #{name_loc}, Gtk::SHRINK")
  103.  
  104. eval("@label_#{index}_time = Gtk::Label.new(\"\")")
  105. eval("@label_#{index}_time.set_alignment(1, 0.5)")
  106. # eval("vbox.attach label_#{index}_clear, #{name_loc_clear}, Gtk::SHRINK")
  107. end
  108.  
  109. @window.add(@vbox)
  110.  
  111. @window.signal_connect('delete_event') {@window_action = true} #Deals with you hitting the X to close the window, no changes to settings made (I think)
  112. @window.show_all #Displays the GUI
  113. @window.resize(20, 20)
  114. @window.keep_above = true
  115. @window.resizable = true
  116. }
  117.  
  118. def checkgroup()
  119. @groupmembers = []
  120. @groupmembers << [Char.name,0,0,0]
  121. fput "GROUP"
  122. line = get
  123. until line =~ /for a list of other options./
  124. if line =~ /^(.*) is following you./
  125. @groupmembers << [$1,0,0,0]
  126. end
  127. line = get
  128. end
  129. @groupcheck = nil
  130. @refreshwindow = true
  131. end
  132.  
  133. def refreshgtkwindow()
  134. @last_refresh = Time.now
  135. Gtk.queue {
  136. for index in 0..29
  137.  
  138. # eval("label_#{index}.text = \"\"")
  139. # eval("label_#{index}_clear.text = \"\"")
  140. eval("@vbox.remove @label_#{index}_name")
  141. eval("@vbox.remove @label_#{index}_clear")
  142. eval("@vbox.remove @label_#{index}_scrip")
  143. eval("@vbox.remove @label_#{index}_time")
  144. end
  145. @vbox.resize(@groupmembers.count, 2)
  146. @groupmembers.each_with_index do |nextmember, index|
  147. loc_name = "0,1,#{index},#{index + 1}"
  148. loc_clear = "1,2,#{index},#{index + 1}"
  149. loc_scrip = "2,3,#{index},#{index + 1}"
  150. loc_time = "3,4,#{index},#{index + 1}"
  151. eval("@label_#{index}_name.text = \"#{nextmember[0]}\"")
  152. eval("@label_#{index}_clear.text = \"#{nextmember[1]}\"")
  153. eval("@label_#{index}_scrip.text = \"#{nextmember[2]}\"")
  154. eval("@label_#{index}_time.text = \"#{nextmember[3]}\"")
  155.  
  156. eval("@vbox.attach @label_#{index}_name, #{loc_name}, Gtk::FILL,Gtk::FILL,5,0")
  157. eval("@vbox.attach @label_#{index}_clear, #{loc_clear}, Gtk::FILL,Gtk::FILL,5,0")
  158. eval("@vbox.attach @label_#{index}_scrip, #{loc_scrip}, Gtk::FILL,Gtk::FILL,5,0")
  159. eval("@vbox.attach @label_#{index}_time, #{loc_time}, Gtk::FILL,Gtk::FILL,5,0")
  160. end
  161. @window.show_all
  162. @window.resize(20, 20)
  163. }
  164. @refreshwindow = nil
  165. end
  166.  
  167. def updateselfinfo()
  168. DownstreamHook.add('hiddenoutput', @hiddenoutputhook)
  169. waitrt?
  170. fput "REIM INFO"
  171. line = get
  172. until line =~ /You have slain a total of (.*) creatures within Reim./
  173. if line =~ /currently flagged for entry for up to the(.*)./
  174. clearto = $1.split.first
  175. elsif line =~ /Total Ethereal Scrip for this run: (.*)\/./
  176. scrip = $1.split.first
  177. elsif line =~ /You have (.*) hour and (.*) minutes? remaining/
  178. timeleft = "#{$1}H #{$2}M"
  179. elsif line =~ /You have ([0-9]{2}) minutes? remaining./
  180. timeleft = "#{$1}M"
  181. end
  182. line = get
  183. end
  184. DownstreamHook.remove('hiddenoutput')
  185. # case clearto
  186. # when "village"
  187. # areaclear = "1"
  188. # when "road"
  189. # areaclear = "2"
  190. # when "courtyard"
  191. # areaclear = "3"
  192. # when "servant"
  193. # areaclear = "4"
  194. # when "visitor"
  195. # areaclear = "5"
  196. # when "royal"
  197. # areaclear = "6"
  198. # when "throne"
  199. # areaclear = "7"
  200. # end
  201. # groupmembers[groupmembers.index(groupmembers.detect{|aa| aa.include?(Char.name)})][1] = areaclear
  202. @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?(Char.name)})][1] = clearto
  203. @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?(Char.name)})][2] = scrip
  204. @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?(Char.name)})][3] = timeleft
  205. end
  206.  
  207. @groupcheck = true
  208.  
  209. loop {
  210. if @window_action then
  211. exit
  212. end
  213. checkgroup if @groupcheck
  214. updateselfinfo
  215. fput "whisper ooc group clearcheck"
  216. until ((Time.now - @last_loop) > 30 )
  217. if @window_action then
  218. exit
  219. end
  220. refreshgtkwindow() if (@refreshwindow and (Time.now - @last_refresh >= 2)) # Only update window every 2 seconds max.
  221. line = get
  222. if line =~ /^\(OOC\) (.*?)'s player whispers, "Clear: (.*?), Scrip: (.*?), Timeleft: (.*?)."/
  223. # case $2
  224. # when "village"
  225. # areaclear = "1"
  226. # when "road"
  227. # areaclear = "2"
  228. # when "courtyard"
  229. # areaclear = "3"
  230. # when "servant"
  231. # areaclear = "4"
  232. # when "visitor"
  233. # areaclear = "5"
  234. # when "royal"
  235. # areaclear = "6"
  236. # when "throne"
  237. # areaclear = "7"
  238. # end
  239. # groupmembers[groupmembers.index(groupmembers.detect{|aa| aa.include?($1)})][1] = areaclear
  240. @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?($1)})][1] = $2
  241. @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?($1)})][2] = $3
  242. @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?($1)})][3] = $4
  243. @refreshwindow = true
  244. elsif line =~ /^(.*?) joins your group./
  245. @groupmembers << [$1,0,0,0]
  246. @refreshwindow = true
  247. elsif line =~ /^You reach out and hold (.*?)'s hand./
  248. @groupmembers << [$1,0,0,0]
  249. @refreshwindow = true
  250. elsif line =~ /^You gently take hold of (.*?)'s hand.$/
  251. @groupmembers << [$1,0,0,0]
  252. @refreshwindow = true
  253. elsif line =~ /^You clasp (.*?)'s hand tenderly.$/
  254. @groupmembers << [$1,0,0,0]
  255. @refreshwindow = true
  256. elsif line =~ /^You add (.*?) to your group.$/
  257. @groupmembers << [$1,0,0,0]
  258. @refreshwindow = true
  259. elsif line =~ /^(.*?) leaves your group./
  260. @groupmembers.delete(@groupmembers.assoc($1))
  261. @refreshwindow = true
  262. elsif line =~ /^You remove (.*?) from the group./
  263. @groupmembers.delete(@groupmembers.assoc($1))
  264. @refreshwindow = true
  265. elsif line =~ /designates you as the new leader of the group./
  266. @groupcheck = true
  267. end
  268. end
  269. _respond "#{monsterbold_start}***********************************#{monsterbold_end}"
  270. _respond "#{monsterbold_start}*** Pausing #{script.name}#{monsterbold_end}"
  271. _respond "#{monsterbold_start}*** ;u #{script.name} for new clearcheck#{monsterbold_end}"
  272. _respond "#{monsterbold_start}***********************************#{monsterbold_end}"
  273. pause_script
  274. @last_loop = Time.now
  275. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement