Skip to content

Posts tagged ‘mIRC’

[mIRC] Request: Coloured nicks

This little snippet will simply colour nicknames when you send a message to a channel that contains nicknames within a line. It wont work if you have other on input events, I.e. acronyms, etc.. you’d have to implement it into that input event. Enjoy!

on *:INPUT:#:{
  if ($active == Status Window) return
  if ($left($1,1) == $readini($mircini,text,commandchar)) || ($left($1,1) == $chr(47)) return
  haltdef
  var %msg $1-
  var %num $numtok($1-,32)
  var %x 1
  while (%x <= %num) {
    var %rand $rand(2,15)
    if ($gettok(%msg,%x,32) ison $chan) var %msg $puttok(%msg,$+($chr(3),%rand,$gettok(%msg,%x,32),$chr(3)),%x,32)
    inc %x
  }
  msg $chan %msg
}

[mIRC] Colour talker.

Version 1.02 – Now detects if +c or +S is set on the channel, and will stop using colour if it is.

Copy the code below:

; Colour talker v1.02
;v1.00
;- first release
;v1.01
;- fixed a silly coding error -_-, my bad (numbers wouldn't show in colour talker)
;- added a bit more error checking, still not perfect, but I can't be arsed right now.
;v1.02
;- Detects channel mode +S or +c (strip colour codes, block colour codes) and will stop using colour in accordance

on *:LOAD:{
   echo -atc info * Info: Successfully loaded colour talker.
   echo -atc info * Info: For a quick guide on how to use this, type /ctalk help.
   echo -atc info * Info: Alternatively you may use the menu, Colour Talker, to set up this script, it only takes a few moments. Enjoy ;).
}
on *:UNLOAD:{
   echo -atc info * Info: Unloading all colour talker variables...
   .unset %ctalk.*
   echo -atc info * Successfully unloaded colour talker.
}

#Ctalker off
on *:INPUT:*: {
   if ($left($1,1) == $chr(47)) || (Status Window == $active) || (@* iswm $active) return
   if ((c isincs $chan($chan).mode) || (S isincs $chan($chan).mode)) return
   if ($ctalk == $false) {
   echo -atc info * Error: You have colour talker enabled but have not set up your colours, type $+($chr(2),/ctalk set,$chr(2)) to set it up.
}
else {
   ;set start marker
   var %x 1
   ;loop, while marker is less than total tokens
   while (%x <= $gettok($1-,0,32)) {
   ;get the first letter of current token
   var %first $mid($gettok($1-,[ %x ],32),1,1)
   ;get the rest of the word, set it to our text variable
   var %text %text $replace($mid($gettok($1-,[ %x ],32),1,1),[ %first ], $+($chr(3),[ %ctalk.c1 ],[ %first ],$chr(3),[ %ctalk.c2 ])) $+ $mid($gettok($1-,[ %x ],32),2,$calc($len($gettok($1-,[ %x ],32) - 1)))
   ;increase our marker, move on to next token
   inc %x
   }
   msg $active %text
   halt
   }
}
#Ctalker END
alias ctalk {
   if $isid {
      if ($len(%ctalk.c1) == 1) || $len(%ctalk.c1) > 2) || (%ctalk.c1 > 15) || (%ctalk.c1 !isnum) return $false
      elseif ($len(%ctalk.c2) == 1) || $len(%ctalk.c2) > 2) || (%ctalk.c2 > 15) || (%ctalk.c2 !isnum) return $false
   else return $true
   }
   if ($ctalk == $false) echo -atc info * Error: Type $+($chr(2),/ctalk set,$chr(2)) to set up.
   if ($1) {
      if ($1 == on) {
         if ($group(#ctalker) == on) echo -atc info * Error: Colour talker is already enabled
         else {
            .enable #ctalker
            echo -atc info * Info: Colour talker is now $+($chr(2),enabled,$chr(2))
         }
      }
      if ($1 == off) {
         if ($group(#ctalker) == off) echo -atc info * Error: Colour talker is already disabled
         else {
            .disable #ctalker
            echo -atc info * Info: Colour talker is now $+($chr(2),disabled,$chr(2))
         }
      }
      if ($1 == set) {
         var %ctalk.confirm $$input(We are now going to set up the colour talker! $+ $crlf $+ $crlf $+ Press "Ctrl + K" for colour reference.,oi,Colour Talker)
         :colour1
         set %ctalk.c1 $remove($$input(Choose a colour: e.g. 2,eo,Select Colour One,%ctalk.c1),$chr(3))
         if ($len(%ctalk.c1) > 2) || (%ctalk.c1 > 15) || (%ctalk.c1 !isnum) {
           echo -atc info * Error: Colour selected must be a numerical value between 0 and 15.
           goto colour1
         }
         if ($len(%ctalk.c1) == 1) set %ctalk.c1 $+(0,%ctalk.c1)
         :colour2
         set %ctalk.c2 $remove($$input(Choose a colour: Ex. 12,eo,Select Colour Two,%ctalk.c2),$chr(3))
         if ($len(%ctalk.c2) > 2) || (%ctalk.c2 > 15) || (%ctalk.c2 !isnum) {
            echo -atc info * Error: Colour selected must be a numerical value between 0 and 15.
            goto colour1
         }
         if ($len(%ctalk.c2) == 1) set %ctalk.c2 $+(0,%ctalk.c2)
      }
      if ($1 == help) || ($1 == info) {
         echo -atc info $str($chr(42),115)
         echo -atc info * The colour talker enables you type in colours that will brighten up your IRC chat a bit (or annoy other users!).
         echo -atc info * Please note this script took just a few minutes to conjure up. Any problems get in touch! forgotten, #mIRC, #Coding, 12www.binaryfront.com
         echo -atc info * Now the important stuff, how to use this thing:
         echo -atc info * To set the colour talker colours type: /ctalk on
         echo -atc info * To turn the colour talker on type: /ctalk on
         echo -atc info * To turn the colour talker off type: /ctalk on
         echo -atc info * For this guide again type: /ctalk help
         echo -atc info $str($chr(42),115)
      }
   }
   elseif ($1 == $null) echo -atc info * For help using the colour talker type: /ctalk help
}

menu channel,status {
Colour Talker
.Set Colours:ctalk set
.Help/Info:ctalk help
. -
. $iif($group(#Ctalker) == on,$style(1) Enable,Enable):ctalk on
. $iif($group(#Ctalker) == off,$style(1) Disable,Disable):ctalk off
}

Usage:
/ctalk help
– Concise information on using this script

You can also use the popups.

I can’t remember who requested this script, and I’m sure I passed it on via IRC anyway. But regardless 😛 here it is for everyone else to see. As always comments/criticism/advise welcomed.

[mIRC] Request: Ban an IP file

A quick and short script written to zline IPs in a specified file. The IPs must be listed in the file as one IP per line, e.g.:

1.3.4.5
1.2.3.4
1.4.5.6
5.6.3.2
6.7.8.6
etc…

Follow the instructions to use.

; To use:
;1) Type /ipban.reset
;2) Ensure you specify the right file/directory in set %ipban.ipfile "nodes.csv"
;3) Type /ipban
;4) Wait until script completes, can take a while depending on size of file.

alias -l ipban_next {
  if (%ipban.pos <= %ipban.total) {
    zline $+(*@,$read(%ipban.ipfile,%ipban.pos)) 1d Tor Exit Servers are not permitted on this network
    inc %ipban.pos
    ipban
  }
  else {
    echo -atc info *** Zlined %ipban.total IPs from %ipban.ipfile
    .unset %ipban.*
  }
}
alias ipban {
  set %ipban.ipfile "nodes.csv"
  if ($isfile(%ipban.ipfile) == $false) { echo -atc info *** IP Ban Error: %ipban.ipfile does not exist | return }
  set %ipban.total $lines(%ipban.ipfile)
  if (%ipban.pos == $null) { set %ipban.pos 1 }
  .timer -m 1 5 ipban_next
}
alias ipban.reset .unset %ipban.*

Let me bring to attention my use of timers over a while loop for budding scripters.

The reason is for large IP files, a while loop will freeze your script. For this reason a timer was used with a 5 millisecond delay, ensuring fast zlines but without freezing the script.

I will edit this script to auto carry out /ipban.reset upon execution, but, as of now, this isn’t required as it does its job (plus I’m short on time again!!!).

Note: to edit the zline time and message:

zline $+(*@,$read(%ipban.ipfile,%ipban.pos)) 1d Tor Exit Servers are not permitted on this network

Change:
“1d” to something you want
“Tor Exit Servers are not permitted on this network” to something you want

[mIRC] Request: !protect & !deprotect

Someone requested a !protect and !deprotect script be made for mIRC, so here it is! It uses chanserv to set the +a and -a modes.

I’ve not tested extensively so errors are entirely possible, let me know if you spot any errors or have suggestions for improvements.

Please set the level yourself, this scriptlet is to be used as a guideline i wouldn’t recommend you all stick it in your scripts as everyone has permission to use it! If you wish to restrict it, have it check a users database or make use of mIRC users lists.

; !deprotect, !protect public commands
on *:TEXT:*:#:{
  ; set max usage, 3 commands in 2 seconds, this prevents people flooding you
  hinc -mu2 usedprot max
  if ($hget(usedprot,max) >= 3) return
  if ($1 == !protect) {
    ;if already in raw processing, return
    if (%pubcmd.prot.busy == $true) {
      msg $chan Try again in a few moments.
      return
    }
    ; identify that protect was used
    set %pubcmd.prot.usedprot $true
    ; set variable to let script know that a request is currently underway
    set %pubcmd.prot.busy $true
    ; set which channel
    set %pubcmd.prot.chan $chan
    ; set nickname as that specified or use nickname of user
    if ($2 == $null) set %pubcmd.prot.nick $nick
    else {
      if ($2 !ison $chan) {
        msg $chan $2 is not on $chan $+ $chr(46)
        return
      }
      set %pubcmd.prot.nick $2
    }
    .enable #check_a
    mode $chan a
  }
  if ($1 == !deprotect) {
    if (%pubcmd.prot.busy == $true) {
      msg $chan Try again in a few moments.
      return
    }
    ; identify that deprotect was used
    set %pubcmd.prot.useddeprot $true
    ; set variable to let script know that a request is currently underway
    set %pubcmd.prot.busy $true
    set %pubcmd.prot.chan $chan
    if ($2 == $null) set %pubcmd.deprot.nick $nick
    else {
      if ($2 !ison $chan) {
        msg $chan $2 is not on $chan $+ $chr(46)
        return
      }
      set %pubcmd.deprot.nick $2
    }
    .enable #check_a
    mode $chan a
  }
}
#check_a off
raw 388:*:{
  ; Check that this raw event occured
  set %pubcmd.prot.388 $true
  if ($3 == %pubcmd.prot.nick) {
    msg %pubcmd.prot.chan $3 is already protected.
    set %pubcmd.prot.isprotected $true
    return
  }
  if ($3 == %pubcmd.deprot.nick) {
    cs deprotect %pubcmd.prot.chan $3
    set %pubcmd.prot.isprotected $true
    return
  }
}
raw 389:*:{
  ; If raw 388 didn't happen (i.e. no +a's)
  if (%pubcmd.prot.388 == $null) {
    if (%pubcmd.prot.usedprot == $true) {
      cs protect %pubcmd.prot.chan %pubcmd.prot.nick
      goto end
    }
    if (%pubcmd.prot.useddeprot == $true) {
      msg %pubcmd.prot.chan %pubcmd.deprot.nick is already deprotected.
      goto end
    }
  }
  if (%pubcmd.prot.388 == $true) {
    if (%pubcmd.prot.usedprot == $true) {
      if (%pubcmd.prot.isprotected == $true) goto end
      cs protect %pubcmd.prot.chan %pubcmd.prot.nick
      goto end
    }
    if (%pubcmd.prot.useddeprot == $true) {
      if (%pubcmd.prot.isprotected == $true) goto end
      msg %pubcmd.prot.chan %pubcmd.deprot.nick is already deprotected.
      goto end
    }
  }
  :end
  .unset %pubcmd.*prot.*
  .disable #check_a
}
#check_a END

This script goes in remote, usage is as follows:

!protect
ChanServ sets mode +a nick1
!protect nick2
ChanServ sets mode +a nick2

Same with deprotect. Not much use if you’re not running an mIRC bot, but a nice look into how raw events work if you’re getting into it!

Enjoy.