Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =begin
- REIM Scoreboard
- This will show a scoreboard based on treim feedback to clearchecks.
- It include the character name, section of reim they are cleared to displayed as a number, scrip for the run, and time remaining.
- SYNTAX - ;clearcheckwiz
- author: Spenster
- name: clearcheckwiz
- tags: reim
- version: 1.2
- changelog:
- 1.2 (2017-07-10)
- Rearranged a few things. Set the script to watch for responses for 30 seconds and then pause.
- Attempting to trouble shoot lag when using wizard.
- 1.1 (2017-07-07)
- Set the window to refresh no quicker than every 2 seconds.
- 1.0 (2017-06-30)
- Initial Release
- =end
- @groupmembers = []
- @last_refresh = Time.now
- @last_loop = Time.now
- @last_refresh -= 2
- @window = @window_action = @vbox = @refreshwindow = @label_table = nil
- for index in 0..29
- eval("@label_#{index}_name = nil")
- eval("@label_#{index}_clear = nil")
- eval("@label_#{index}_scrip = nil")
- eval("@label_#{index}_time = nil")
- #respond("Setting up label_#{index}_stuff")
- end
- # label_0_name = label_0_clear = label_0_scrip = label_0_time = nil
- # label_1_name = label_1_clear = label_1_scrip = label_1_time = nil
- # label_2_name = label_2_clear = label_2_scrip = label_2_time = nil
- # label_3_name = label_3_clear = label_3_scrip = label_3_time = nil
- # label_4_name = label_4_clear = label_4_scrip = label_4_time = nil
- # label_5_name = label_5_clear = label_5_scrip = label_5_time = nil
- # label_6_name = label_6_clear = label_6_scrip = label_6_time = nil
- # label_7_name = label_7_clear = label_7_scrip = label_7_time = nil
- # label_8_name = label_8_clear = label_8_scrip = label_8_time = nil
- # label_9_name = label_9_clear = label_9_scrip = label_9_time = nil
- # label_10_name = label_10_clear = label_10_scrip = label_10_time = nil
- # label_11_name = label_11_clear = label_11_scrip = label_11_time = nil
- # label_12_name = label_12_clear = label_12_scrip = label_12_time = nil
- # label_13_name = label_13_clear = label_13_scrip = label_13_time = nil
- # label_14_name = label_14_clear = label_14_scrip = label_14_time = nil
- # label_15_name = label_15_clear = label_15_scrip = label_15_time = nil
- # label_16_name = label_16_clear = label_16_scrip = label_16_time = nil
- # label_17_name = label_17_clear = label_17_scrip = label_17_time = nil
- # label_18_name = label_18_clear = label_18_scrip = label_18_time = nil
- # label_19_name = label_19_clear = label_19_scrip = label_19_time = nil
- # label_20_name = label_20_clear = label_20_scrip = label_20_time = nil
- # label_21_name = label_21_clear = label_21_scrip = label_21_time = nil
- # label_22_name = label_22_clear = label_22_scrip = label_22_time = nil
- # label_23_name = label_23_clear = label_23_scrip = label_23_time = nil
- # label_24_name = label_24_clear = label_24_scrip = label_24_time = nil
- # label_25_name = label_25_clear = label_25_scrip = label_25_time = nil
- # label_26_name = label_26_clear = label_26_scrip = label_26_time = nil
- # label_27_name = label_27_clear = label_27_scrip = label_27_time = nil
- # label_28_name = label_28_clear = label_28_scrip = label_28_time = nil
- # label_29_name = label_29_clear = label_29_scrip = label_29_time = nil
- @hiddenoutputhook = proc {|server_string|
- 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/
- nil
- else
- server_string
- end
- }
- before_dying {
- Gtk.queue {@window.destroy}
- DownstreamHook.remove('hiddenoutput')
- }
- # First time window setup
- Gtk.queue {
- @window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
- @window.set_title "Spenster's ClearCheck Viewer" #Sets window title
- @window.border_width = 12
- @vbox = Gtk::Table.new(1,2, false)
- for index in 0..29
- eval("@label_#{index}_name = Gtk::Label.new(\"\")")
- eval("@label_#{index}_name.set_alignment(0, 0.5)")
- # eval("vbox.attach label_#{index}, #{name_loc}, Gtk::SHRINK")
- eval("@label_#{index}_clear = Gtk::Label.new(\"\")")
- eval("@label_#{index}_clear.set_alignment(1, 0.5)")
- # eval("vbox.attach label_#{index}_clear, #{name_loc_clear}, Gtk::SHRINK")
- eval("@label_#{index}_scrip = Gtk::Label.new(\"\")")
- eval("@label_#{index}_scrip.set_alignment(1, 0.5)")
- # eval("vbox.attach label_#{index}, #{name_loc}, Gtk::SHRINK")
- eval("@label_#{index}_time = Gtk::Label.new(\"\")")
- eval("@label_#{index}_time.set_alignment(1, 0.5)")
- # eval("vbox.attach label_#{index}_clear, #{name_loc_clear}, Gtk::SHRINK")
- end
- @window.add(@vbox)
- @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)
- @window.show_all #Displays the GUI
- @window.resize(20, 20)
- @window.keep_above = true
- @window.resizable = true
- }
- def checkgroup()
- @groupmembers = []
- @groupmembers << [Char.name,0,0,0]
- fput "GROUP"
- line = get
- until line =~ /for a list of other options./
- if line =~ /^(.*) is following you./
- @groupmembers << [$1,0,0,0]
- end
- line = get
- end
- @groupcheck = nil
- @refreshwindow = true
- end
- def refreshgtkwindow()
- @last_refresh = Time.now
- Gtk.queue {
- for index in 0..29
- # eval("label_#{index}.text = \"\"")
- # eval("label_#{index}_clear.text = \"\"")
- eval("@vbox.remove @label_#{index}_name")
- eval("@vbox.remove @label_#{index}_clear")
- eval("@vbox.remove @label_#{index}_scrip")
- eval("@vbox.remove @label_#{index}_time")
- end
- @vbox.resize(@groupmembers.count, 2)
- @groupmembers.each_with_index do |nextmember, index|
- loc_name = "0,1,#{index},#{index + 1}"
- loc_clear = "1,2,#{index},#{index + 1}"
- loc_scrip = "2,3,#{index},#{index + 1}"
- loc_time = "3,4,#{index},#{index + 1}"
- eval("@label_#{index}_name.text = \"#{nextmember[0]}\"")
- eval("@label_#{index}_clear.text = \"#{nextmember[1]}\"")
- eval("@label_#{index}_scrip.text = \"#{nextmember[2]}\"")
- eval("@label_#{index}_time.text = \"#{nextmember[3]}\"")
- eval("@vbox.attach @label_#{index}_name, #{loc_name}, Gtk::FILL,Gtk::FILL,5,0")
- eval("@vbox.attach @label_#{index}_clear, #{loc_clear}, Gtk::FILL,Gtk::FILL,5,0")
- eval("@vbox.attach @label_#{index}_scrip, #{loc_scrip}, Gtk::FILL,Gtk::FILL,5,0")
- eval("@vbox.attach @label_#{index}_time, #{loc_time}, Gtk::FILL,Gtk::FILL,5,0")
- end
- @window.show_all
- @window.resize(20, 20)
- }
- @refreshwindow = nil
- end
- def updateselfinfo()
- DownstreamHook.add('hiddenoutput', @hiddenoutputhook)
- waitrt?
- fput "REIM INFO"
- line = get
- until line =~ /You have slain a total of (.*) creatures within Reim./
- if line =~ /currently flagged for entry for up to the(.*)./
- clearto = $1.split.first
- elsif line =~ /Total Ethereal Scrip for this run: (.*)\/./
- scrip = $1.split.first
- elsif line =~ /You have (.*) hour and (.*) minutes? remaining/
- timeleft = "#{$1}H #{$2}M"
- elsif line =~ /You have ([0-9]{2}) minutes? remaining./
- timeleft = "#{$1}M"
- end
- line = get
- end
- DownstreamHook.remove('hiddenoutput')
- # case clearto
- # when "village"
- # areaclear = "1"
- # when "road"
- # areaclear = "2"
- # when "courtyard"
- # areaclear = "3"
- # when "servant"
- # areaclear = "4"
- # when "visitor"
- # areaclear = "5"
- # when "royal"
- # areaclear = "6"
- # when "throne"
- # areaclear = "7"
- # end
- # groupmembers[groupmembers.index(groupmembers.detect{|aa| aa.include?(Char.name)})][1] = areaclear
- @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?(Char.name)})][1] = clearto
- @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?(Char.name)})][2] = scrip
- @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?(Char.name)})][3] = timeleft
- end
- @groupcheck = true
- loop {
- if @window_action then
- exit
- end
- checkgroup if @groupcheck
- updateselfinfo
- fput "whisper ooc group clearcheck"
- until ((Time.now - @last_loop) > 30 )
- if @window_action then
- exit
- end
- refreshgtkwindow() if (@refreshwindow and (Time.now - @last_refresh >= 2)) # Only update window every 2 seconds max.
- line = get
- if line =~ /^\(OOC\) (.*?)'s player whispers, "Clear: (.*?), Scrip: (.*?), Timeleft: (.*?)."/
- # case $2
- # when "village"
- # areaclear = "1"
- # when "road"
- # areaclear = "2"
- # when "courtyard"
- # areaclear = "3"
- # when "servant"
- # areaclear = "4"
- # when "visitor"
- # areaclear = "5"
- # when "royal"
- # areaclear = "6"
- # when "throne"
- # areaclear = "7"
- # end
- # groupmembers[groupmembers.index(groupmembers.detect{|aa| aa.include?($1)})][1] = areaclear
- @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?($1)})][1] = $2
- @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?($1)})][2] = $3
- @groupmembers[@groupmembers.index(@groupmembers.detect{|aa| aa.include?($1)})][3] = $4
- @refreshwindow = true
- elsif line =~ /^(.*?) joins your group./
- @groupmembers << [$1,0,0,0]
- @refreshwindow = true
- elsif line =~ /^You reach out and hold (.*?)'s hand./
- @groupmembers << [$1,0,0,0]
- @refreshwindow = true
- elsif line =~ /^You gently take hold of (.*?)'s hand.$/
- @groupmembers << [$1,0,0,0]
- @refreshwindow = true
- elsif line =~ /^You clasp (.*?)'s hand tenderly.$/
- @groupmembers << [$1,0,0,0]
- @refreshwindow = true
- elsif line =~ /^You add (.*?) to your group.$/
- @groupmembers << [$1,0,0,0]
- @refreshwindow = true
- elsif line =~ /^(.*?) leaves your group./
- @groupmembers.delete(@groupmembers.assoc($1))
- @refreshwindow = true
- elsif line =~ /^You remove (.*?) from the group./
- @groupmembers.delete(@groupmembers.assoc($1))
- @refreshwindow = true
- elsif line =~ /designates you as the new leader of the group./
- @groupcheck = true
- end
- end
- _respond "#{monsterbold_start}***********************************#{monsterbold_end}"
- _respond "#{monsterbold_start}*** Pausing #{script.name}#{monsterbold_end}"
- _respond "#{monsterbold_start}*** ;u #{script.name} for new clearcheck#{monsterbold_end}"
- _respond "#{monsterbold_start}***********************************#{monsterbold_end}"
- pause_script
- @last_loop = Time.now
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement