#!/usr/local/bin/ruby require 'aimbot.rb' require 'thread' PWNAME = "nick.list" def aim_run(m, c, s, p, a) ef = false cmd = arg1 = arg2 = nil ab = AIMBot.new(s, p) m.synchronize do $c+= 1 c.signal if $c == $nc end if a ab.run do |m| if m =~ /^<\*([^*]+)\*> \/(\w+) +(\w+) +(.*)$/ next if not AIMBot::is_admin?($1) case $1 when "kill" $cmd = $1 $arg1 = $2 $arg2 = $3 end c.signal end end $cmd = "quit" $arg1 = $arg2 = nil c.signal else while not ef m.synchronize do c.wait(m) cmd = $cmd arg1 = $arg1 arg2 = $arg2 end case cmd when "kill" ab.im(arg1, arg2) when "quit" ef = true end end ab.close end end m = Mutex::new cv = ConditionVariable::new ta = [] $c = 0 $nc = 0 m.synchronize do File::open(PWNAME, 'r') do |f| f.each do |l| l.chomp! sn, pw = l.split(":") a = $nc == 0 ta << Thread::new(m, cv, sn, pw, a) do aim_run(m, cv, sn, pw, a) end $nc+= 1 end end cv.wait(m) end puts "\n===== #{$c} Clients signed on. =====\n" m.synchronize do puts "\n===== Shutting down. =====\n" $cmd = "quit" $arg1 = $arg2 = nil cv.signal end ta.each {|t| t.join}