All pastes #468347 Raw Edit

BotScript

public text v1 · immutable
·published 2007-05-03 01:41 UTC
rendered paste body
;==========================================================
; bServ Script  ; Author: Will Norris
; version 1.7   ; Email: will-norris@hotmail.com
; 4/2/07        ; Network: irc.gamerz0ne.com
;==========================================================

#bserv off

on *:LOAD:{
  if ($version > 6.16) {
    var %ltime = $ticks
    if (!$isfile(bs.ini)) { _writefile }
    else { bsload }
  }
  else {
    echo -a This script requires mIRC version 6.16 or higher. Goto www.mirc.com to download the latest version.
    unload -rs $script
  }
}
on *:START: {
  var %stime = $ticks, %s, %uptime = $ctime
}
on *:EXIT: {
  bs_save
  bs_shutdown
  unset %uptime
}
on *:CONNECT:{
  if ($me != $readini(bs.ini,settings,botnick)) nick $ifmatch
  if ($status == connected) {
    if ($readini(bs.ini,settings,password) != $null) msg NickServ IDENTIFY $ifmatch
    .timerjoin 1 4 join $readini(bs.ini,channels,public)
    .timeroper 1 6 oper $readini(bs.ini,settings,opernick) $readini(bs.ini,settings,operpass)
    .timeroper2 1 7 $iif(o isin $usermode,mode $me +Hpq)
    .timeroper3 1 8 $iif(o isin $usermode,join $+(#s2r,$chr(44),#services))
  }
}
on *:DISCONNECT: { partall | bsdisc }
on *:NOTICE:*:*: {
  if ($nick == NickServ) {
    if ($gettok($strip($1-),2-5,32) == this nick is owned) {
      if ($me != $readini(bs.ini,settings,botnick)) { 
        nick $readini(bs.ini,settings,botnick)
        timerid 1 1 msg nickserv IDENTIFY $readini(bs.ini,settings,password)
      }
      else { msg nickserv IDENTIFY $readini(bs.ini,settings,password) }
    }
    elseif (* IDENTIFY * iswm $1- && $nick == NickServ && $readini(bs.ini,settings,password) != $null) { msg $nick IDENTIFY $ifmatch }
    elseif ($1 == STATUS) { hadd status $2 $3 }
    elseif ($gettok($strip($1-),2-6,32) == Nickname is already in use.) {
      if ($gettok($strip($1-),1,32) == $readini(bs.ini,settings,botnick)) && ($me != $gettok($strip($1-),1,32)) { 
        msg nickserv ghost $gettok($strip($1-),1,32) $readini(bs.ini,settings,password)
        .timernick 1 1 nick $readini(bs.ini,setttings,botnick)
        .timerid 1 2 msg nickserv IDENTIFY $readini(bs.ini,settings,password)
      }
    } 
  }
}
on *:SNOTICE:*: bssnot
on *:JOIN:#: {
  $iif($bsch($chan) == $false,part $chan)
  $iif($bsch($chan),ns status $nick)
  .timerstatus 1 3 $iif($hget(status,$nick) == 3,mode $chan + $+ $replace($hget(modlist,$nick),5,vhoaq,4,vhoaq,3,vhoa,2,vho,1,vh) $nick $nick $nick $nick $nick)
  if $istok(#mIRC #Scripting,$chan,32) && ($readini(Joinmsg.ini,Joinmsg,$nick) != $null) {
    var %jmsg = $readini(Joinmsg.ini,Joinmsg,$nick)
    msg $chan $chr(40) $+ $nick $+ $chr(41) $+ : %jmsg
  }
}
on *:PART:#: {
  if ($hget(login,$nick)) hdel login $nick
}
on *:QUIT: bsquit
on *:NICK: {
  ns status $newnick
  bsnick $nick $newnick
}
on *:rawmode:#: $iif($nick != $me,$iif($me isin $1-,$iif(!$istok(ChanServ chicknh8r Will Fnfall BadBoy `,$nick,32),$iif(- isin $1-,$iif(-b !isin $1-,mode # $replacex($1-,+,-,-,+))))))
on *:ban:#: $iif($nick != $me,$iif(!$istok(ChanServ chicknh8r Will Fnfall BadBoy `,$nick,32),$iif($banmask iswm $address($me,5),mode # -bo+b $ifmatch $nick $nick)))


;================== bServ Text Section ====================

on *:TEXT:*:#:{
  if $istok(#mIRC #Scripting #QoQServ,$chan,32) {
    if ($left($1,1) == !) {
      var %cmd = $iif($hget(cmds,$1),$hget(cmds,$1),0), %ua = $iif($hget(modlist,$nick),$hget(modlist,$nick),0), %ub = $iif($hget(modlist,$2),$hget(modlist,$2),0)
      if $istok(!mods !modlist,$1,32) { 
        if (!$2) { modlistall }
        else { modlistone $2 }
      }
      elseif ($1 == !version) && (!$2) { msg $chan Currently running bServ $+(v,$bsv) }
      elseif ($1 == !uptime) && (!$2) { msg $chan $bsup }
      elseif ($1 == !info) && (!$2) { msg $chan $bsinfo }
      elseif ($1 == !idle) && (!$2) { msg $chan I have been idle for $asctime($bsidle,nn:ss) }
      elseif $istok(!umodes !usermode !usermodes,$1,32) { msg $chan $iif(!$2,$nick,$2) $+ 's usermodes: $remove($bstok($iif(!$2,$nick,$2)),$nick,$2) }
      elseif ($1 == !viewjoin) {
        if (!$2) { var %jnick = $nick }
        else { var %jnick = $2 }
        if ($readini(JoinMsg.ini,Joinmsg,%jnick) != $null) { 
          var %jmsg = $readini(Joinmsg.ini,Joinmsg,%jnick)
          msg $chan $chr(40) $+ %jnick $+ $chr(41) $+ : $readini(Joinmsg.ini,Joinmsg,%jnick)
        }
        else { msg $chan %jnick doesn't have a join message. }
      }  
      elseif ($1 == !setjoin) {
        if (!$2) { notice $nick You need to input a message, $nick $+ . | halt }
        if ($chr(36) !isin $1-) { notice $nick Error. You cannot have Character $chr(36) in your Join Message, $nick $+. | halt }
        else {
          var %jmsg = $2-
          writeini -n Joinmsg.ini Joinmsg $nick %jmsg
          msg $chan $nick $+ , your join message has been saved.
        }
      }
      elseif ($1 == !deljoin) {
        if ($readini(Joinmsg.ini,Joinmsg,$nick) != $null) {
          remini Joinmsg.ini Joinmsg $nick
          msg $chan Your join message has been deleted, $nick $+ .
        }
        else { msg $chan You don't have a join message to delete, $nick $+ . }
      }
      elseif ($1 == !login) { bslogin $nick }
      elseif $istok(!commands !cmds !cmd,$1,32) {
        if ($bsmod($nick)) { notice $nick Your available commands: $bscmds($nick) }
        else { notice $nick Your available commands: $bsguest($nick) }
      }
      if ($nick isin $readini(bs.ini,settings,founder)) {
        if ($1 == !add) {
          if ($2 isnum) { notice $nick $bser(3) | halt }
          if (!$2) { notice $nick $bser(1) | halt }
          if (!$3) { notice $nick $bser(2) | halt }
          if ($hget(modlist,$2) == $3) { notice $nick $2 is already a Channel $replacex($hget(modlist,$2),5,Founder,4,Owner,3,Admin,2,Moderator,1,Half Moderator) $+ . | halt }
          if ($hget(modlist,$2) != $3) {
            hadd modlist $2 $3
            msg $chan $2 has been moved to Channel $replacex($hget(modlist,$2),5,Founders,4,Owners,3,Admins,2,Moderators,1,Half Moderators) group.
            halt      
          }     
          else {     
            hadd modlist $2 $3
            msg $chan $2 has been added to Channel $replacex($hget(modlist,$2),5,Founders,4,Owners,3,Admins,2,Moderators,1,Half Moderators) group.
            halt
          }
        }
        elseif $istok(!del !rem,$1,32) {
          if (!$2) { notice $nick $bser(1) | halt }
          if (!$hget(modlist,$2)) { notice $nick $2 isn't a moderator. | halt }
          hdel modlist $2
          msg $chan $2 has been removed from the Moderating Staff.
        }
        elseif $istok(!settings !configuration !config,$1,32) {

        }
        elseif ($1 == !save) {
          if ($2 == modlist) {  
            $iif($hget(modlist),hsave -o modlist modlist.dat)
            msg $chan $iif($hget(modlist),Modlist has been saved,Hashtable 'Modlist' doesn't exist) $+ .
          }
        }
      }
    }
  }
}

#bserv end

;================== bServ Menu Section ====================

menu channel {
  bServ ( $+ $group(#bserv).status $+ )
  .$iif($group(#bserv).status == on, Disable, Enable):{
    $iif($group(#bserv).status == on, .disable, .enable) #bserv
    .echo -a bServ now $iif($group(#bserv).status == on, Enabled, Disabled)
  }
  .$iif($active == $readini(bs.ini,channels,home),Flood Protection ( $+ $iif($group(#flood).status == on, Enabled,Disabled) $+ )):{
    $iif($group(#flood).status == on, .disable, .enable) #flood
    .echo -a Flood Protection now $iif($group(#flood).status == on, Enabled, Disabled)
  }
  .Adjust Flood Protection Settings
  ..Seconds ( $+ $readini(bs.ini,flood,seconds) $+ ):{
    writeini -n bs.ini flood seconds $$?="Enter New Seconds Amount"
    .echo -a Flood Seconds have been changed to $readini(bs.ini,flood,seconds)
  }
  ..Lines ( $+ $readini(bs.ini,flood,lines) $+ ):{
    writeini -n bs.ini flood lines $$?="Enter New Seconds Amount"
    .echo -a Flood Lines have been changed to $readini(bs.ini,flood,lines)
  } 
}
menu nicklist {
  $iif($$1,bServ)
  $iif($hget(modlist,$$1),$replace($hget(modlist,$$1),5,Founder,4,Owner,3,Admin,2,Moderator,1,Half Moderator))
}

;================= bServ Alias Section ====================

alias bsv return 1.6
alias bsnet return $iif($network,$v1,$server)
alias bsfile return $+(",$scriptdirbs.ini,")
alias bswrite writeini -n $bsfile $1-
alias bstag return ** bServ:
alias bser return $iif($1 == 1,You didn't enter a nick/command,$iif($1 == 2,You didn't enter a level,$iif($1 == 3,Invalid parameter.)))
alias bsidle return $iif($idle > 0,$idle)
alias bsch return $iif($1 isin $readini(bs.ini,channels,public),$true,$false)
alias bsex return $iif($1 isin $readini(bs.ini,settings,exclude),$true,$false)
alias bstok return $nick(#,$1).pnick
alias bscon return $iif($bsnet,$iif($status == connected,Currently $status to $bsnet $+ $chr(44) $bsup))
alias bsup return $iif($status == connected,$iif(%uptime,I have been running for $duration($calc($ctime - %uptime))))
alias bsinfo return $iif($status == connected,$iif(%uptime,Currently running bServ $+(v,$bsv,) - Uptime $duration($calc($ctime - %uptime)))) 
alias bschk {
  $iif($bsfile == $false,return File doesn't exist)
  var %emsg = Error. Usage: $bschk([s,f,p]).[s,l,t,b,k,d,c,e,]
  $iif(!$1,return %emsg)
  if ($1 == p) {
    if ($prop == b) return $readini(bs.ini,protections,ban)
    elseif ($prop == k) return $readini(bs.ini,protections,kick)
    elseif ($prop == m) return $readini(bs.ini,protections,mode)
    else return %emsg
  }
  elseif ($1 == f) {
    if ($prop == b) return $readini(bs.ini,flood,bot)
    elseif ($prop == s) return $readini(bs.ini,flood,seconds)
    elseif ($prop == l) return $readini(bs.ini,flood,lines)
    elseif ($prop == t) return $readini(bs.ini,flood,time)
    else return %emsg
  }
  elseif ($1 == c) {
    if ($prop == h) return $readini(bs.ini,channels,home)
    elseif ($prop == p) return $readini(bs.ini,channels,public)
    else return %emsg
  }
  elseif ($1 == s) {
    if ($prop == c) return $readini(bs.ini,settings,channels)
    elseif ($prop == e) return $readini(bs.ini,settings,exclude)
    elseif ($prop == f) return $readini(bs.ini,settings,founder)
    elseif ($prop == p) return $readini(bs.ini,settings,password)
    elseif ($prop == n) return $readini(bs.ini,settings,botnick)
    elseif ($prop == s) return $readini(bs.ini,settings,network)
    elseif ($prop == m) return $readini(bs.ini,settings,chanmodes)
    else return %emsg
  }
  elseif ($1 == pu) {
    if ($prop == b) return $readini(bs.ini,punish,ban)
    elseif ($prop == k) return $readini(bs.ini,punish,kick)
    elseif ($prop == m) return $readini(bs.ini,punish,mode)
    elseif ($prop == f) return $readini(bs.ini,punish,flood)
    else return %emsg
  }
}
alias bscom return $iif($
alias bssnot {

}
alias bsmod return $iif($hget(modlist,$nick),$hget(modlist,$nick),0)
alias bscmds return $iif($hget(modlist,$nick),$bscmd($hget(modlist,$nick)))
alias bsguest {

}
alias bscmd return $readini(bs.ini,settings,commands,$bsmod($nick))
alias bsjoin $iif($bsch($1),ns status $2) 
alias bsnick {
  $iif($hget(login,$1), ns status $2)
}
alias bscheck {
  if ($hget(status,$2) == 3) { mode $chan + $+ $replacex($hget(modlist,$2),5,vhoaq,4,vhoaq,3,vhoa,2,vho,1,vh) $2 $2 $2 $2 $2 }
}
alias bsconn {
  if (gamerz0ne isin $network) {
    $iif($status == disconnected,reconnect),$iif($status == connected)
    $iif($me != $bsp(s).n,nick $bsp(s).n),$iif($me == $bsp(s).n,msg NickServ IDENTIFY $bsp(s).p)
    $iif($me !ison $bsp(c).h,join $bsp(c).p)
  }
}
alias bsrecon {
  $iif($status == disconnected)
  part all
  timercon 1 1 server -m $readini(bs.ini,settings,network1)
}
alias bsdef {
  bswrite protections ban off
  bswrite protections kick off
  bswrite protections mode off
  bswrite punish ban off
  bswrite punish kick off
  bswrite punish mode off
  bswrite punish flood off
  bswrite flood bot off
  bswrite flood seconds 4
  bswrite flood lines 6
  bswrite flood time 30
  if ($1) echo $colour(info) -a $bsl Settings default options... done!
}
alias floodcheck {
  $iif(!$hget(flood),hmake flood 5)
  if ($bsp(f).b == on) {
    var %fs = $bsp(f).s, %fl = $bsp(f).l, %ft = $bsp(f).t, %fp = $bsp(pu).f
    hinc -u $+ %fs $flood $2 1
    if ($hget(flood,$2) > %fl) {
      mode $1 +m-vhoaq $1 $str($2,$modespl)
      msg $1 Channel Flood detected from $2 on $1 $+ ... $iif(%fp == on,( $+ %ft $+ ) second ban.,Ignoring $2)
      $iif(%fp == on,ban -ku $+ %ft $1 $2)
      hdel flood $2
      .timerm 1 %ft mode $1 -m
    }
  }
}
alias bslogin {
  ns status $nick
  if ($hget(login,$nick)) { notice $nick You are already logged in. You logged in $hget(login,$nick) $+ . | halt }
  if ($hget(status,$nick) == 3) {
    hadd login $nick $fulldate
    mode $chan + $replacex($hget(modlist,$nick),5,vhoaq,4,vhoaq,3,vhoa,2,vho,1,vh) $nick $nick $nick $nick $nick
    msg $chan You are now logged in, $nick $+ .
  }
}
alias _writefile {
  $iif(!$isfile(bs.ini),write bs.ini)
  bswrite settings network Gamerz0ne
  bswrite settings botnick $me
  bswrite settings home #Scripting #mIRC
  bswrite settings founder Oper
  bswrite settings password xxxx
  bswrite settings channels #Scripting
  bswrite settings access Rev,Ren
  bswrite settings exclude Oper,Rev,Ren,Chickn,Rain,[ESOW]Rain767
  bswrite settings chanmodes +m
  bswrite flood bot off
  bswrite flood seconds 3
  bswrite flood lines 6
  bswrite flood time 30
  bswrite protections ban off
  bswrite protections kick off
  bswrite protections mode off
  bswrite punish ban off
  bswrite punish kick off
  bswrite punish mode off
  bswrite punish flood off
}
alias bsload {
  if ($version > 6.16) {
    echo -a bServ $+(v,$bsv) Successfully Installed.
    echo -a Copyright @ April 2nd, 2007
    echo -a Written by: William Norris, Email: will-norris@hotmail.com
    $iif(!$isfile(bs.ini),_writefile)
  }
  else {
    echo -a Sorry, this script was written with mIRC versions 6.16 and newer. Please get the latest version from www.mirc.com
    .unload -rs $+(",$script,")
  }
}
alias modlistall {
  $iif(!$hget(modlist),return)
  var %x = 1, %read = $hget(modlist,0).item
  while (%x <= %read) {
    var %read2 = $hget(modlist,%x).item
    if (5 isincs $hget(modlist,%read2)) %ml5 = $addtok(%ml5,$+(,%read2),44)
    if (4 isincs $hget(modlist,%read2)) %ml4 = $addtok(%ml4,$+(~,%read2),44)
    if (3 isincs $hget(modlist,%read2)) %ml3 = $addtok(%ml3,$+(&,%read2),44)
    if (2 isincs $hget(modlist,%read2)) %ml2 = $addtok(%ml2,$+(@,%read2),44)
    if (1 isincs $hget(modlist,%read2)) %ml1 = $addtok(%ml1,$+(%,%read2),44)
    inc %x
  }
  notice $nick ::::::: Moderating Staff :::::::
  notice $nick 9Founde $+ $iif($numtok(%ml5,44) > 0,rs,r) $+ ( $+ $iif($numtok(%ml5,44) > 0,$numtok(%ml5,44),0) $+ ): %ml5
  notice $nick 4Owne $+ $iif($numtok(%ml4,44) > 0,rs,r) $+ ( $+ $iif($numtok(%ml4,44) > 0,$numtok(%ml4,44),0) $+ ): %ml4
  notice $nick 7Admi $+ $iif($numtok(%ml3,44) > 0,ns,n) $+ ( $+ $iif($numtok(%ml3,44) > 0,$numtok(%ml3,44),0) $+ ): %ml3
  notice $nick 15Moderato $+ $iif($numtok(%ml2,44) > 0,rs,r) $+ ( $+ $iif($numtok(%ml2,44) > 0,$numtok(%ml2,44),0) $+ ): %ml2
  notice $nick 14Half Moderato $+ $iif($numtok(%ml1,44) > 0,rs,r) $+ ( $+ $iif($numtok(%ml1,44) > 0,$numtok(%ml1,44),0) $+ ): %ml1
  unset %ml*
}
alias modlistone {
  $iif(!$hget(modlist),return)
  var %nick = $1
  if ($hget(modlist,%nick)) { notice $nick 4.:0Nickname: $+ $replacex($hget(modlist,%nick),5,9,4,4,3,7,2,15,1,14) %nick 4:: 0Level: $+ $replacex($hget(modlist,%nick),5,9,4,4,3,7,2,15,1,14) $replace($hget(modlist,%nick),5,Founder,4,Owner,3,Admin,2,Moderator,1,Half Moderator)15:. }
  else { notice $nick %nick isn't a moderator. }
}
alias bsexit {
  unset %uptime
  hashfree
}














;EOF