All pastes #203233 Raw Edit

Untitled

public text v1 · immutable
#203233 ·published 2006-10-15 00:34 UTC
rendered paste body
  menu channel {
    Runescape Stats Kicker:/rsstatskicker
  }
  alias rsstats {
    dialog -ma rsstats rsstats
  }
  alias rsstatskicker {
    dialog -ma rsstatskicker rsstatskicker
  }
  dialog rsstatskicker {
    title "Runescape Stats Kicker"
    size -1 -1 195 161
    option dbu
    tab "Channels/Requirements", 1, -3 -1 209 185
    combo 2, 20 44 124 44, tab 1 size
    text "Settings: Channels and Requirements", 3, 21 26 122 8, tab 1
    button "Add", 7, 22 99 37 12, tab 1
    button "Remove", 8, 64 99 37 12, tab 1
    button "Clear", 9, 108 99 37 12, tab 1
    button "Clear Confirm", 10, 108 111 37 12, tab 1
    tab "Nicks/Addresses", 11
    combo 12, 20 52 80 50, tab 11 size
    text "Settings: Nicks/Address", 13, 21 26 79 8, tab 11
    text "Nicks/Addresses below will not be kicked", 14, 21 34 79 8, tab 11
    button "Add", 15, 109 52 37 12, tab 11
    button "Remove", 16, 109 66 37 12, tab 11
    button "Clear", 17, 109 80 37 12, tab 11
    button "Clear Confirm", 18, 109 94 37 12, tab 11
    tab "Cache", 19
    text "Cache:", 21, 21 26 25 8, tab 19
    text "A feature that saves if the nick meets the requirements for that channel. This will eliminate the need to retrieve the stats for the user every time they join.", 20, 21 34 119 29, tab 19
    button "Clear Cache", 22, 21 67 37 12, tab 19
    tab "Info/Settings", 4
    text "Kick count:", 5, 37 28 28 8, tab 4
    text "Users in #pestcontrol:", 23, 10 43 55 8, tab 4
    text "Total voiced:", 24, 32 56 33 8, tab 4
    edit "", 25, 71 27 50 10, disable tab 4
    edit "", 26, 71 41 50 10, disable tab 4
    edit "", 27, 71 54 50 10, disable tab 4
    text "Highest amount of users:", 28, 5 77 62 8, tab 4
    text "Lowest amount of users:", 29, 6 90 61 8, tab 4
    edit "", 30, 71 75 50 10, disable tab 4
    edit "", 31, 71 89 50 10, disable tab 4
    button "Turn ON", 32, 142 25 37 12, tab 4
    button "Turn OFF", 33, 142 38 37 12, tab 4
    button "Ok", 6, 110 139 37 12, ok cancel
  }
  alias rsstatskicker.refresh {
    did -h rsstatskicker 10,18
    did -r rsstatskicker 2,12,25-27,30,31
    did -a rsstatskicker 25 %kicks
    did -a rsstatskicker 26 $nick(#pestcontrol,0)
    did -a rsstatskicker 27 %pcvoice
    did -a rsstatskicker 30 %pchigh
    did -a rsstatskicker 31 %pclow
    var %x = 1
    while ($read(RSstatschan.txt,%x)) {
      did -a rsstatskicker 2 $read(RSstatschan.txt,%x)
      inc %x
      continue
    }
    var %x = 1
    while ($read(RSstatsnick.txt,%x)) {
      did -a rsstatskicker 12 $read(RSstatsnick.txt,%x)
      inc %x
      continue
    }
  }
  on *:dialog:rsstatskicker:init:*: {
    rsstatskicker.refresh
  }
  on *:dialog:rsstatskicker:sclick:*: {
    if ($did == 32) { .enable #statskicker }
    if ($did == 33) { .disable #statskicker }
    if ($did == 7) { 
      if (!$read(RSStatschan.txt,w,$did(2))) && ($chr(35) isin $did(2)) {
        write RSStatschan.txt $did(2)
        rsstatskicker.refresh
      }
    }
    if ($did == 8) {
      if ($read(RSStatschan.txt,w,$did(2))) {
        write -ds $+ $gettok($did(2),1,32) RSStatschan.txt
        rsstatskicker.refresh
      }
    }
    if ($did == 9) { did -v rsstatskicker 10 }
    if ($did == 10) { 
      .remove rsstatschan.txt
      rsstatskicker.refresh 
    }
    if ($did == 15) {
      if (!$read(RSStatsnick.txt,w,$iif($chr(64) isin $did(12),$gettok($mask(! $+ $did(12),2),1,32),$did(12)))) {
        write RSStatsnick.txt $iif($chr(64) isin $did(12),$mask(! $+ $did(12),2),$did(12))
        rsstatskicker.refresh
      }
    }
    if ($did == 16) {
      if ($read(RSStatsnick.txt,w,$iif($chr(64) isin $did(12),$mask(! $+ $did(12),2),$did(12)))) {
        write -ds $+ $iif($chr(64) isin $did(12),$mask(! $+ $did(12),2),$did(12)) RSStatsnick.txt
        rsstatskicker.refresh
      }
    }
    if ($did == 17) { did -v rsstatskicker 18 }
    if ($did == 18) {
      .remove rsstatsnick.txt
      rsstatskicker.refresh
    }
    if ($did == 22) { .remove rsstatscache.txt }
  }
  alias rsstats.voice {
    var %chan = $iif($left($1,1) iswm $chr(35),$1,$chan)
    if ($me isop %chan) || ($me ishop %chan) {
      var %x = 1
      var %y = $nick(%chan,0,r)
      while (%x <= %y) {
        if ($read(RSstatsCache.txt,w,$nick(%chan,%x,r))) { msg JY|BOT Requirements $nick(%chan,%x,r) | inc %cache | inc %x | continue }
        if ($read(RSStatsnick.txt,w,$nick(%chan,%x,r))) { inc %x | continue }
        if ($read(RSstatsnick.txt,w,$address(%nick($chan,%x,r),2))) { inc %x | continue }
        var %ID = 1
        while ($sock(stats. $+ %ID)) {
          inc %ID
        }
        if ($len($nick(%chan,%x,r)) > 13) {
          inc %kicks
          ban -ku120 %chan $nick(%chan,%x,r) 5 Your nickname is too long 12¤4 %kicks $+ 1
          inc %x
          continue
        }
        set %stats.chan. [ $+ [ %ID ] ] %chan
        set $+(%,stats.rsn.,%ID) $nick(%chan,%x,r)
        sockopen $+(stats.,%ID) hiscore.runescape.com 80 
        inc %x
      }
    }
  }
  alias rsstats.check {
    if ($me isop $chan) || ($me ishop $chan) {
      mode $chan -vvvvvvvvvvvv $1-
      var %x = 1
      var %y = $numtok($1-,32)
      while (%x <= %y) {
        tokenize 32 $gettok($1-,%x,32)
        if ($read(RSStatsnick.txt,w,$1)) { inc %x | continue }
        if ($read(RSStatsCache.txt,w,$1)) { msg JY|BOT Requirements $1 | inc %cache | inc %x | continue }
        if ($len($1) > 13) {
          inc %kicks
          ban -ku120 $chan $1 5 Your nickname is too long 12¤4 %kicks $+ 1
          inc %x
          continue
        }
        var %ID = 1
        while ($sock(stats. $+ %ID)) {
          inc %ID
        }
        set %stats.chan. [ $+ [ %ID ] ] $chan
        set $+(%,stats.rsn.,%ID) $1
        sockopen $+(stats.,%ID) hiscore.runescape.com 80 
        inc %x
      }
    }
  }
  alias rsstats.cache {
    if ($read(RSStatscache.txt,w,$1)) { Echo -a $1 has been to #Pestcontrol and was voiced. }
    else { Echo -a $1 has not been to #Pestcontrol. }
  }
  alias rsstats.except {
    if ($read(RSstatsnick.txt,w,$address($1,2))) {
      Echo -a $1 is on the except list.
    }
    elseif ($read(RSStatsnick.txt,w,$1)) { Echo -a $1 is on the except list. }
    else { Echo -a $1 is not on the except list. }
  }
  alias rsstats.time {
    echo -a 8(06 Time to retrieve stats was: 12[04 $+ $read(Statstime.txt) $+ 12] 8)
  }
  #statskicker off
  on *:join:#pestcontrol: {
    if ($me isop $chan) || ($me ishop $chan) {
      if ($read(RSStatsnick.txt,w,$nick)) { halt }
      if ($read(RSstatsnick.txt,w,$address($nick,2))) { halt }
      if ($read(RSStatsCache.txt,w,$nick)) { msg JY|BOT Requirements $nick | inc %cache | halt }
      if ($len($nick) > 13) {
        inc %kicks
        ban -ku120 $chan $nick 5 Your nickname is too long 12¤4 %kicks $+ 1
        halt
      }
      var %ID = 1
      while ($sock(stats. $+ %ID)) {
        inc %ID
      }
      set %stats.chan. [ $+ [ %ID ] ] $chan
      set $+(%,stats.rsn.,%ID) $nick
      set $+(%,stats.time.,%ID) $ctime
      sockopen $+(stats.,%ID) hiscore.runescape.com 80
      if ($nick($chan,0) > %pchigh) { set %pchigh $nick($chan,0) }
      if ($nick($chan,0) < %pclow) { set %pclow $nick($chan,0) }
    }
  }
  #statskicker end
  on *:sockopen:stats.*: {
    var %id = $gettok($sockname,2,46)
    sockwrite -n $sockname GET /lang/en/aff/runescape/hiscorepersonal.ws?user1= $+ $($+(%,stats.rsn.,%ID),2) HTTP/1.1
    sockwrite -n $sockname Host: hiscore.runescape.com $+ $crlf $+ $crlf
  }
  on *:sockread:stats.*: {
    sockread &Incoming
    bwrite $sockname -1 -1 &Incoming
    if ($bfind(&Incoming, 1, </html>).text) makehash $sockname
    elseif ($bfind(&Incoming, 1,does not feature in the hiscores).text) {
      inc %kicks
      ban -ku30 %stats.chan. [ $+ [ $gettok($sockname,2,46) ] ] %stats.rsn. [ $+ [ $gettok($sockname,2,46) ] ] 5 Please change your nick to your Runescape username. Use _ as spaces. Type /nick newnick to change nicknames 12¤4 %kicks $+ 1
      sockclose $sockname
      cleanup $gettok($sockname,2,46)
    }
  }
  alias -l makehash {
    var %file = $1
    bread %file 1 $file(%file).size &stats
    var %currentstat, %x = 1
    while (%x) {
      var %x = $bfind(&stats,$calc(%x + 1),<a href="overall.ws?table=)
      var %currentstat = $striptags($bvar(&stats,%x,200).text)
      tokenize 10 %currentstat
      hadd -m %file $1 $2 $3 $4 $xp2next($3,$4)
    }
    process %file
  }
  alias process {
    var %table = $1, %id = $gettok($1,2,46), %x = 0, $&
      %display = $($+(%,stats.display.,%ID),2), $&
      %rsn = $($+(%,stats.rsn.,%ID),2), $&
      %skill = $($+(%,stats.skill.,%ID),2), $&
      %style = $($+(%,stats.style.,%ID),2)
    write -c Statstime.txt $duration($calc($ctime - $eval($+(%,stats.time.,%ID))))
    var %a.mult = .32707, %s.mult = .324, %d.mult = .25, %h.mult = .25, %p.mult = .124, %r.mult = .487, %m.mult = .487
    var %a = $iif($gettok($hget(%table,attack),2,32),$v1,-), $&
      %s = $iif($gettok($hget(%table,strength),2,32),$v1,-), $&
      %d = $iif($gettok($hget(%table,defence),2,32),$v1,-), $&
      %h = $iif($gettok($hget(%table,hitpoints),2,32),$v1,-), $&
      %r = $iif($gettok($hget(%table,ranged),2,32),$v1,-), $&
      %m = $iif($gettok($hget(%table,magic),2,32),$v1,-), $&
      %p = $iif($gettok($hget(%table,prayer),2,32),$v1,-)
    var %meleecombat  = $calc(%a * %a.mult + %s * %s.mult + %d * %d.mult + %h * %h.mult + %p * %p.mult), $&
      %RangedCombat = $calc(%r * %r.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult), $&
      %MagicCombat  = $calc(%m * %m.mult + %p * %p.mult + %d * %d.mult + %h * %h.mult)

    if (%MagicCombat > %RangedCombat) && (%MagicCombat > %MeleeCombat) var %cmbstyle = Magic, %Combat = %MagicCombat
    elseif (%RangedCombat > %MeleeCombat) var %cmbstyle = Ranged, %Combat = %RangedCombat
    else var %cmbstyle = melee, %combat = %MeleeCombat
    var %combat = $round(%combat,2), %next = $ceil(%combat)
    if (%combat >= 95) || ($eval($calc(%a + %s)) >= 160) {
      msg JY|BOT Requirements %rsn
      if (!$read(RSStatscache.txt,w,%rsn)) { write Rsstatscache.txt %rsn }
      inc %pcvoice
    }
    elseif (%combat < 95) && ($eval($calc(%a + 5)) < 160) {
      inc %kicks
      ban -ku120 %stats.chan. [ $+ [ %id ] ] %rsn 2 7The4 %rsstats.chan. [ $+ [ %id ] ] 7requirements:04 95 CMB or 160 Combined att+str 12¤4 %kicks $+ 1
    }
    else { echo -a Error }
    sockclose $sockname
    cleanup %id
  }
  alias cleanup {
    if ($1 == all) {
      unset %stats.*
      var %s = 1
      while ($sock(stats. $+ %s)) {
        sockclose $+(Stats.,%s)
        if ($hget($+(Stats.,%s))) { .hfree $+(Stats.,%s) }
        inc %s
      }
    }
    else {
      unset $+(%,stats.*.,$1)
      sockclose $+(Stats.,$1)
      .remove $+(Stats.,$1)
      if ($hget($+(Stats.,$1))) {
        .hfree $+(Stats.,$1)
      }
    }
  }
  alias -l striptags { var %x,%y = $regsub($1-,/(<[^>]+>)/g,$null,%x) | return %x }
  on *:text:!scan:#pestcontrol: {
    if ($nick isop $chan) || ($nick ishop $chan) {
      if ($me isop $chan) || ($me ishop $chan) {
        rsstats.voice #pestcontrol
      }
    }
  }