;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PPERFORM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;info: ; ; by wiebe @ QuakeNet ; version 1.0 (written and tested on mIRC 6.15) ; ; ; last edit: Sun Jul 04 2004 ; ; ;What does this script do? ; ; performs commands based on event, logon connect raw396(hidden host) oper(usermode o) ; commands can be grouped based on network, servername, serverip, a global list and when starting mirc ; commands are like a one line script, supports the use of identifiers, if, elseif, else, while and | ; ; PPERFORM = paranoid - perform combination script ; ; paranoid: ; connect with a random nick ; set usermodes i and x ; login with service ; get fake host ; change nick ; join channels & go irc'ing.. ; ; perform: ; to perform certain commands on connect ; ; i was not about to make 2 similar scripts, so i combined them ; ; ;How to use this script? ; ; general help ; ; /pperform -a ; to add a network|server|ip|global entry, see /pperform -ha for help on this command ; ; /pperform -a ; to add a start entry, see /pperform -ha for help on this command ; ; /pperform -l [n-network|s-server|i-ip|start|global] ; to list all or a specific section ; ; /pperform -c ; to change an entry type ; ; /pperform -r [number] ; to remove a specified number or section ; ; /pperform -e [number] ; to enable the specified number or section ; ; /pperform -d [number] ; to disable the specified number or section ; ; /pperform -s [setting value] ; to list or change a setting, see /pperform -hs for help on these settings ; ; /pperform -h ; to list help ; ; /pperform reload ; to load settings from the ini (if manually changed) ; ; /pperform passive ; to trigger the entries marked as passive ; ; ; help for adding ; ; /pperform -a ; /pperform -a ; start is for the start event ; ; ; prefix a network with n-, a server with s-, an ip with i- and use global for a global entry ; the n- s- i- prefixes are needed because a server can have an ip as name or as network name ; these prefixes ensure the right things are matched against the right things ; examples: n-quakenet s-port80a.se.quakenet.org i-127.0.0.1 global ; ; ; specifies when the command should be performed ; l is for the logon event (only for use with global and i-ip) ; c is for the connect event ; o is for when setting usermode o/O ; p is for passive, to trigger with /pperform passive ; xmask is for raw 396 '.. is now your hidden host' 'mask' is what mask it should be, wildcards supported ; example: xwiebe.users.quakenet.org ; ; ; values are on|off, to enable or disable an entry ; ; ; time in seconds the script should wait before performing the command ; ; ; the command to execute, identifiers, if, elseif, else, while and | are supported ; view as a 1 line script ; example: NICK mynick | JOIN #mychan ; example: if ($me != mynick) { NICK mynick } ; ; ; help for settings ; ; script ; on or off to enable or disable the script ; ; target ; 0=echo in @pperform ; 1=echo in active window ; 2=echo in status window ; ; color1 color2 ; colors to use 0-15 ; possible to use an identifier, $color(info) for example ; ; paranoidnick ; values are on|off, sets random nick when connecting to a server ; ; nicklen ; values are <1-32> [1-32] ; takes first value or random value between the two for the paranoid nicklength ; ; chars ; the chars to choose from when creating a random nick ; ; ; other things ; ; info/result is returned with 'return' (handy on bots) ; this means you can use '$pperform()' or ; '/pperform ' with $result afterwards ; ; no need to seperate params with a , when calling pperform as identifier ; like '$pperform(,,[param3],...)' ; instead '$pperform()' will also work ; ; . silence prefix ; when .pperform is used, no output is shown ; ; multiline editbox ; reads multiline editbox setting from mirc's ini when creating the window ; ; @pperform window ; you can change its name in the settings below (together with some other things) ; ; Oper ; oper is detected when usermode o or O is set, not when receiving raw 381 ; ; list ; when listing the entries the mask for 'x' is shown under 'command', this is not an error ; couldnt find a better way for it, perhaps it will be changed later ; ; about the n-network s-servername i-ip things ; those are needed to make the script work correct ; a perform entry for a server with ip 12.34.56.78 ; should not be performed on a server with that name (with different ip) ; ; logon event ; network is not known in this event, servername is what was used to open the connection ; therefor logon can only be used based on serverip or in the global list ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; change these settings in case of conflicts or just when you feel like it :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM.WINDOW ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l pperform.window { ; window to use (close window and use /pperform again) return @pperform } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM.INI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l pperform.ini { ; ini file to use (/pperform reload to load settings) return pperform.ini } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM.HASH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l pperform.hash { ; hash table to use (/pperform reload to load settings) return pperform } ; code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM.LOAD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l pperform.load { if ($hget($pperform.hash)) { hfree $pperform.hash } var %x = 1 while ($ini($pperform.ini,0) != 0) && ($ini($pperform.ini,%x) != $null) { var %section = $ifmatch, %y = 1 while ($ini($pperform.ini,%section,0) != 0) && ($ini($pperform.ini,%section,%y) != $null) { var %item = $ifmatch hadd -m $pperform.hash $+(%section,$chr(160),%item) $readini($pperform.ini,n,%section,%item) inc %y } inc %x } return done } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM.PERFORM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1 = connect|start|usermode|396|passive $2 = [mask] alias -l pperform.perform { if ($istok(start logon connect usermode 396 passive,$1,32)) && ($hget($pperform.hash,$+(settings,$chr(160),script)) == on) { if ($1 == start) { var %x = 1 while ($hfind($pperform.hash,$+(start,$chr(160),?*),%x,w) != $null) { var %item = $ifmatch if ($hget($pperform.hash,%item) != $null) { var %value = $ifmatch if ($gettok(%value,1,32) == on) { .timer 1 $gettok(%value,2,32) pperform.perform2 $gettok(%value,3-,32) } } inc %x } } elseif ($istok(logon connect usermode 396 passive,$1,32)) { var %char = $replace($1,connect,c,usermode,o,396,x,logon,l,passive,p), %types = $+(i-,$serverip) $iif($1 != logon,$+(s-,$server) $+(n-,$network)) global, %t = 1 while ($gettok(%types,%t,32)) { var %type = $ifmatch, %x = 1 while ($hfind($pperform.hash,$+(%type,$chr(160),?*),%x,w) != $null) { var %item = $ifmatch if ($hget($pperform.hash,%item) != $null) { var %value = $ifmatch if ($1 == 396) { if ($gettok(%value,1-2,32) == %char on) && ($gettok(%value,4,32) iswm $2) { .timer 1 $gettok(%value,3,32) pperform.perform2 $gettok(%value,5-,32) } } elseif ($gettok(%value,1-2,32) == %char on) { .timer 1 $gettok(%value,3,32) pperform.perform2 $gettok(%value,4-,32) } } inc %x } inc %t } } } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM.PERFORM2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $1- code alias -l pperform.perform2 { .alias pperform.perform3 $1- pperform.perform3 goto end :error { | echo -s perform code ' $1- ' caused error: $error | reseterror | goto end } :end { | .alias pperform.perform3 } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; START EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:start:{ if ($readini($pperform.ini,n,settings,script) == $null) { writeini $pperform.ini settings script on } if ($readini($pperform.ini,n,settings,target) == $null) { writeini $pperform.ini settings target 0 } if ($readini($pperform.ini,n,settings,color1) == $null) { writeini $pperform.ini settings color1 $!color(info) } if ($readini($pperform.ini,n,settings,color2) == $null) { writeini $pperform.ini settings color2 $!color(info2) } if ($readini($pperform.ini,n,settings,paranoidnick) == $null) { writeini $pperform.ini settings paranoidnick on } if ($readini($pperform.ini,n,settings,nicklen) == $null) { writeini $pperform.ini settings nicklen 15 20 } if ($readini($pperform.ini,n,settings,chars) == $null) { writeini $pperform.ini settings chars 1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`^-_[]{}\| } pperform.load if ($scon(0) == 1) && ($scon(1).status == disconnected) { pperform.perform $event if ($hget($pperform.hash,$+(settings,$chr(160),paranoidnick)) == on) { .nick $pperform.nick .anick $pperform.nick } } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOGON EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:LOGON:*:{ pperform.perform $event if ($hget($pperform.hash,$+(settings,$chr(160),paranoidnick)) == on) { .nick $pperform.nick .anick $pperform.nick } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:connect:{ pperform.perform $event } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISCONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:disconnect:{ if ($hget($pperform.hash,$+(settings,$chr(160),paranoidnick)) == on) { .nick $pperform.nick .anick $pperform.nick } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; USERMODE EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:usermode:{ if (o isin $1) && (o isin $gettok($usermode,1,32)) { pperform.perform $event } } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RAW 396 HIDDEN HOST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 396 me host :is now your hidden host raw 396:& & *is now your hidden host*:{ pperform.perform $numeric $2 } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias -l pperform.nick { var %chars = $hget($pperform.hash,$+(settings,$chr(160),chars)) var %nicklen = $hget($pperform.hash,$+(settings,$chr(160),nicklen)) if ($numtok(%nicklen,32) == 2) { var %nicklen = $rand($gettok(%nicklen,1,32),$gettok(%nicklen,2,32)) } var %nick = $mid(%chars,$rand(1,$len(%chars)),1) while ($istok(0 1 2 3 4 5 6 7 8 9 -,%nick,32)) { var %nick = $mid(%chars,$rand(1,$len(%chars)),1) } var %x = 2 while (%x <= %nicklen) { var %nick = %nick $+ $mid(%chars,$rand(1,$len(%chars)),1) inc %x } return %nick } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ALIAS PPERFORM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; alias pperform { tokenize 32 $1- var %window = $iif($hget($pperform.hash,$+(settings,$chr(160),target)) == 0,$pperform.window) var %target = $replace($hget($pperform.hash,$+(settings,$chr(160),target)),0,target0,1,target1,2,target2) var %target = $replace(%target,target0,-mqgi2 $pperform.window,target1,-amqgi2,target2,-msqgi2) var %cmd = $+($readini($mircini,n,text,commandchar),pperform) var %color1 = $eval($hget($pperform.hash,$+(settings,$chr(160),color1)),2) var %color2 = $eval($hget($pperform.hash,$+(settings,$chr(160),color2)),2) if (!$window(%window)) && ($show) && (%window) { window -nx $+ $iif($gettok($readini($mircini,n,options,n1),8,44),E,e) %window font %window 10 fixedsys editbox -p $pperform.window %cmd } if (!$editbox(%window)) && (%window) { editbox -p %window %cmd } if ($1- == $null) { echo %color2 %target * Not enough parameters, %cmd -h for help var %result = * Not enough parameters $+ $chr(44) %cmd -h for help } ; reload elseif ($1 == reload) { pperform.load echo %color2 %target * Loaded settings from $nopath($pperform.ini) var %result = * Loaded settings from $nopath($pperform.ini) } ; passive elseif ($1 == passive) { pperform.perform passive } ; list elseif ($1 == -l) { if ($2 != $null) { if ($istok(start global,$2,32)) || ($istok(n- s- i-,$left($2,2),32)) { if ($ini($pperform.ini,$2,0)) { var %x = 1 echo %color2 %target * List ( $+ $2 $+ ) echo %color2 %target   Number $iif($2 != start,Type) Status Delay Command while ($ini($pperform.ini,$2,0) != 0) && ($ini($pperform.ini,$2,%x)) { var %v = $ifmatch $readini($pperform.ini,n,$2,$ifmatch) echo %color1 %target   $& $gettok(%v,1,32) $str( $+ $chr(32),$calc(6 - $len($gettok(%v,1,32)))) $& $gettok(%v,2,32) $str( $+ $chr(32),$calc(3 - $len($gettok(%v,2,32)) $iif($2 == start,+3,+1))) $& $gettok(%v,3,32) $str( $+ $chr(32),$calc(5 - $len($gettok(%v,3,32)) $iif($2 != start,+1))) $& $gettok(%v,4,32) $str( $+ $chr(32),$calc(5 - $len($gettok(%v,4,32)))) $& $gettok(%v,5-,32) inc %x } } echo %color2 %target * End of list ( $+ $2 $+ ) var %result = * End of list ( $+ $2 $+ ) } else { echo %color2 %target * Invalid parameters, use n-network s-server i-ip global or start var %result = * Invalid parameters $+ $chr(44) use n-network s-server i-ip global or start } } else { var %y = 1 echo %color2 %target * List while ($ini($pperform.ini,0) != 0) && ($ini($pperform.ini,%y)) { var %section = $ifmatch if (%section != settings) { echo %color2 %target * List ( $+ %section $+ ) echo %color2 %target   Number $iif(%section != start,Type) Status Delay Command var %x = 1 while ($ini($pperform.ini,%section,0) != 0) && ($ini($pperform.ini,%section,%x)) { var %v = $ifmatch $readini($pperform.ini,n,%section,$ifmatch) echo %color1 %target   $& $gettok(%v,1,32) $str( $+ $chr(32),$calc(6 - $len($gettok(%v,1,32)))) $& $gettok(%v,2,32) $str( $+ $chr(32),$calc(3 - $len($gettok(%v,2,32)) $iif(%section == start,+3,+1))) $& $gettok(%v,3,32) $str( $+ $chr(32),$calc(5 - $len($gettok(%v,3,32)) $iif(%section != start,+1))) $& $gettok(%v,4,32) $str( $+ $chr(32),$calc(5 - $len($gettok(%v,4,32)))) $& $gettok(%v,5-,32) inc %x } } inc %y } echo %color2 %target * End of list var %result = * End of list } } ; add ; /pperform -a ; /pperform -a elseif ($1 == -a) { if ($2 == start) { if ($0 < 5) { echo %color2 %target * Not enough parameters, %cmd -a var %result = * Not enough parameters $+ $chr(44) %cmd -a } elseif ($strip($1-) != $1-) { echo %color2 %target * Control codes can not be used, use $!chr(N) var %result = * Control codes can not be used $+ $chr(44) use $!chr(N) } elseif (!$istok(on off,$3,32)) { echo %color2 %target * Invalid value for status, use on or off var %result = * Invalid value for status $+ $chr(44) use on or off } elseif ($4 !isnum 0-9999) { echo %color2 %target * Invalid value for delay, use 0-9999 var %result = * Invalid value for delay $+ $chr(44) use 0-9999 } else { var %x = 1 while ($readini($pperform.ini,n,$2,%x) != $null) { inc %x } writeini $pperform.ini $2 %x $3- echo %color2 %target * Added $2- var %result = * Added $2- } } else { if ($0 < 6) { echo %color2 %target * Not enough parameters, %cmd -a var %result = * Not enough parameters $+ $chr(44) %cmd -a } elseif ($istok(n- s-,$left($2,2),32)) && ($3 == l) { echo %color2 %target * Logon event can not be based on network or server var %result = * Logon event can not be based on network or server } elseif (!$istok(n- s- i- global,$iif($2 == global,$2,$left($2,2)),32)) { echo %color2 %target * Invalid parameters, use n-network s-server i-ip global or start var %result = * Invalid parameters $+ $chr(44) use n-network s-server i-ip global or start } elseif (!$istok(l c o p x,$iif($left($3,1) == x,x,$3),32)) { echo %color2 %target * Invalid value for type, l=logon c=connect o=oper p=passive x=hidden host var %result = * Invalid value for type $+ $chr(44) l=logon c=connect o=oper p=passive x=hidden host } elseif ($left($3,1) == x) && ($len($3) == 1) { echo %color2 %target * Not enough parameters, x var %result = * Not enough parameters $+ $chr(44) x } elseif (!$istok(on off,$4,32)) { echo %color2 %target * Invalid value for status, use on or off var %result = * Invalid value for status $+ $chr(44) use on or off } elseif ($5 !isnum 0-9999) { echo %color2 %target * Invalid value for delay, use 0-9999 var %result = * Invalid value for delay $+ $chr(44) use 0-9999 } else { var %x = 1 while ($readini($pperform.ini,n,$2,%x) != $null) { inc %x } tokenize 32 $1-2 $left($3,1) $4-5 $iif($left($3,1) == x,$right($3,-1)) $6- writeini $pperform.ini $2 %x $3- echo %color2 %target * Added $2- var %result = * Added $2- pperform.load } } } ; remove ; pperform -r elseif ($1 == -r) { if ($0 < 2) { echo %color2 %target * Not enough parameters, %cmd -r var %result = * Not enough parameters $+ $chr(44) %cmd -r } elseif (!$istok(n- s- i-,$left($2,2),32)) && (!$istok(start global,$2,32)) { echo %color2 %target * Invalid parameters, use n-network s-server i-ip global or start var %result = * Invalid parameters $+ $chr(44) use n-network s-server i-ip global or start } elseif ($3 !isnum 1-) && ($3 != $null) { echo %color2 %target * Invalid value for number var %result = * Invalid value for number } elseif ($3) && ($readini($pperform.ini,n,$2,$3) == $null) { echo %color2 %target * Number $3 not in list for $2 var %result = * Number $3 not in list for $2 } elseif ($3 == $null) && ($ini($pperform.ini,$2,0) == 0) { echo %color2 %target * Not found $2 var %result = * Not found $2 } else { echo %color2 %target * Removed $iif($3,' $readini($pperform.ini,n,$2,$3) ' from) $2 var %result = * Removed $iif($3,' $readini($pperform.ini,n,$2,$3) ' from) $2 remini $pperform.ini $2-3 if ($3 == $null) && ($ini($pperform.ini,$2,0) == 0) { remini $pperform.ini $2 } pperform.load } } ; disable ; /pperform -d elseif ($1 == -d) { if ($0 < 2) { echo %color2 %target * Not enough parameters, %cmd -d var %result = * Not enough parameters $+ $chr(44) %cmd -d } elseif (!$istok(n- s- i-,$left($2,2),32)) && (!$istok(start global,$2,32)) { echo %color2 %target * Invalid parameters, use n-network s-server i-ip global or start var %result = * Invalid parameters $+ $chr(44) use n-network s-server i-ip global or start } elseif ($3 !isnum 1-) && ($3 != $null) { echo %color2 %target * Invalid value for number var %result = * Invalid value for number } elseif ($3) && ($readini($pperform.ini,n,$2,$3) == $null) { echo %color2 %target * Number $3 not in list for $2 var %result = * Number $3 not in list for $2 } elseif ($3 == $null) && ($ini($pperform.ini,$2,0) == 0) { echo %color2 %target * Not found $2 var %result = * Not found $2 } else { if ($3) { var %value = $readini($pperform.ini,n,$2,$3) writeini $pperform.ini $2-3 $gettok(%value,1,32) off $gettok(%value,3-,32) echo %color2 %target * Disabled $3 for $2 var %result = * Disabled $3 for $2 } else { var %x = 1 while ($ini($pperform.ini,$2,0) != 0) && ($ini($pperform.ini,$2,%x) != $null) { var %value = $readini($pperform.ini,n,$2,$ifmatch) writeini $pperform.ini $2 $ifmatch $gettok(%value,1,32) off $gettok(%value,3-,32) inc %x } echo %color2 %target * Disabled $2 var %result = * Disabled $2 } pperform.load } } ; enable elseif ($1 == -e) { if ($0 < 2) { echo %color2 %target * Not enough parameters, %cmd -e var %result = * Not enough parameters $+ $chr(44) %cmd -e } elseif (!$istok(n- s- i-,$left($2,2),32)) && (!$istok(start global,$2,32)) { echo %color2 %target * Invalid parameters, use n-network s-server i-ip global or start var %result = * Invalid parameters $+ $chr(44) use n-network s-server i-ip global or start } elseif ($3 !isnum 1-) && ($3 != $null) { echo %color2 %target * Invalid value for number var %result = * Invalid value for number } elseif ($3) && ($readini($pperform.ini,n,$2,$3) == $null) { echo %color2 %target * Number $3 not in list for $2 var %result = * Number $3 not in list for $2 } elseif ($3 == $null) && ($ini($pperform.ini,$2,0) == 0) { echo %color2 %target * Not found $2 var %result = * Not found $2 } else { if ($3) { var %value = $readini($pperform.ini,n,$2,$3) writeini $pperform.ini $2-3 $gettok(%value,1,32) on $gettok(%value,3-,32) echo %color2 %target * Enabled $3 for $2 var %result = * Enabled $3 for $2 } else { var %x = 1 while ($ini($pperform.ini,$2,0) != 0) && ($ini($pperform.ini,$2,%x) != $null) { var %value = $readini($pperform.ini,n,$2,$ifmatch) writeini $pperform.ini $2 $ifmatch $gettok(%value,1,32) on $gettok(%value,3-,32) inc %x } echo %color2 %target * Enabled $2 var %result = * Enabled $2 } pperform.load } } ; settings ; /pperform -s elseif ($1 == -s) { if ($2-3 == $null) { var %x = 1 echo %color2 %target * List (settings) echo %color2 %target   Setting Value while ($ini($pperform.ini,settings,0) != 0) && ($ini($pperform.ini,settings,%x) != $null) { echo %color1 %target   $ifmatch = $readini($pperform.ini,n,settings,$ifmatch) inc %x } echo %color2 %target * End of list (settings) var %result = * End of list (settings) } elseif ($strip($1-) != $1-) { echo %color2 %target * Control codes can not be used, use $!chr(N) var %result = * Control codes can not be used $+ $chr(44) use $!chr(N) } elseif ($2 == script) && ($istok(on off,$3,32)) { writeini $pperform.ini settings $2-3 echo %color2 %target * Updated setting $2 to $3 var %result = * Updated setting $2 to $3 } elseif ($2 == target) && ($3 isnum 0-2) { writeini $pperform.ini settings $2-3 echo %color2 %target * Updated setting $2 to $3 var %result = * Updated setting $2 to $3 } elseif ($2 == color1) && ($eval($3,2) isnum 0-15) { writeini $pperform.ini settings $2-3 echo %color2 %target * Updated setting $2 to $3 var %result = * Updated setting $2 to $3 } elseif ($2 == color2) && ($eval($3,2) isnum 0-15) { writeini $pperform.ini settings $2-3 echo %color2 %target * Updated setting $2 to $3 var %result = * Updated setting $2 to $3 } elseif ($2 == paranoidnick) && ($istok(on off,$3,32)) { writeini $pperform.ini settings $2-3 echo %color2 %target * Updated setting $2 to $3 var %result = * Updated setting $2 to $3 } elseif ($2 == nicklen) && ($3 isnum 1-32) && (($4 isnum 1-32) || ($4 == $null)) { writeini $pperform.ini settings $2-4 echo %color2 %target * Updated setting $2 to $3 var %result = * Updated setting $2 to $3 } elseif ($2 == chars) { if ($remove($3,1,2,3,4,5,6,7,8,9,0,-) != $null) && ($remove($3,1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,`,^,-,_,[,],\,|,$chr(123),$chr(125)) == $null) { writeini $pperform.ini settings $2-3 echo %color2 %target * Updated setting $2 to $3 var %result = * Updated setting $2 to $3 } else { echo %color2 %target * Invalid or no chars specified, valid chars are a-z A-Z 0-9 and `^-_[]{}\| var %result = * Invalid or no chars specified $+ $chr(44) valid chars are a-z A-Z 0-9 and `^-_[]{}\| } } elseif (!$istok(target color1 color2 paranoidnick nicklen chars,$2,32)) { echo %color2 %target * Unkown setting var %result = * Unknown setting } elseif ($3 == $null) { echo %color2 %target * Invalid parameters, %cmd -s [setting value] var %result = * Invalid parameters $+ $chr(44) %cmd -s [setting value] } pperform.load } ; change ; /pperform -c n-network|s-server|i-ip|global number type elseif ($1 == -c) { var %v = $readini($pperform.ini,n,$2,$3) if ($0 < 4) { echo %color2 %target * Not enough parameters, %cmd -c var %result = * Not enough parameters $+ $chr(44) %cmd -c } elseif (!$istok(n- s- i-,$left($2,2),32)) && (!$istok(global,$2,32)) { echo %color2 %target * Invalid parameters, use n-network s-server i-ip global or start var %result = * Invalid parameters $+ $chr(44) use n-network s-server i-ip global or start } elseif ($3 !isnum 1-) { echo %color2 %target * Invalid value for var %result = * Invalid value for } elseif (!$istok(l c o p,$4,32)) { echo %color2 %target * Invalid value for type, l=logon c=connect o=oper p=passive var %result = * Invalid value for type $+ $chr(44) l=logon c=connect o=oper p=passive } elseif (%v == $null) { echo %color2 %target * $3 not in list $2 var %result = * $3 not in list $2 } elseif ($gettok(%v,1,32) == x) { echo %color2 %target * $3 is a 396 event, not possible to change var %result = * $3 is a 396 event $+ $chr(44) not possible to change } else { writeini $pperform.ini $2-3 $4 $gettok(%v,2-,32) echo %color2 %target * Updated switches for $3 ( $+ $2 $+ ) var %result = * Updated switches for $3 ( $+ $2 $+ ) pperform.load } } ; help elseif ($1 == -h) { echo %color2 %target * Help echo %color1 %target   %cmd -a echo %color1 %target       to add a network|server|ip|global entry, see %cmd -ha for help on this command echo %color1 %target   %cmd -a echo %color1 %target       to add a start entry, see %cmd -ha for help on this command echo %color1 %target   %cmd -l [n-network|s-server|i-ip|start|global] echo %color1 %target       to list all or a specific section echo %color1 %target   %cmd -c echo %color1 %target       to change an entry type echo %color1 %target   %cmd -r [number] echo %color1 %target       to remove a specified number or section echo %color1 %target   %cmd -e [number] echo %color1 %target       to enable the specified number or section echo %color1 %target   %cmd -d [number] echo %color1 %target       to disable the specified number or section echo %color1 %target   %cmd -s [setting value] echo %color1 %target       to list or change a setting, see %cmd -hs for help on these settings echo %color1 %target   %cmd -h echo %color1 %target       to list help echo %color1 %target   %cmd reload echo %color1 %target       to load settings from the ini (if manually changed) echo %color1 %target   %cmd passive echo %color1 %target       to trigger the entries marked as passive echo %color2 %target * End of help var %result = * End of help } ; help add elseif ($istok(-ha -ah,$1,32)) { echo %color2 %target * Help echo %color1 %target   %cmd -a echo %color1 %target   %cmd -a echo %color1 %target       start is for the start event echo %color1 %target   echo %color1 %target       prefix a network with n-, a server with s-, an ip with i- and use global for a global entry echo %color1 %target       the n- s- i- prefixes are needed because a server can have an ip as name or as network name echo %color1 %target       these prefixes ensure the right things are matched against the right things echo %color1 %target       examples: n-quakenet s-port80a.se.quakenet.org i-127.0.0.1 global echo %color1 %target   echo %color1 %target       specifies when the command should be performed echo %color1 %target       l is for the logon event (only for use with global and i-ip) echo %color1 %target       c is for the connect event echo %color1 %target       o is for when setting usermode o/O echo %color1 %target       p is for passive, to trigger with %cmd passive echo %color1 %target       xmask is for raw 396 '.. is now your hidden host' 'mask' is what mask it should be, wildcards supported echo %color1 %target       example: xwiebe.users.quakenet.org echo %color1 %target   echo %color1 %target       values are on|off, to enable or disable an entry echo %color1 %target   echo %color1 %target       time in seconds the script should wait before performing the command echo %color1 %target   echo %color1 %target       the command to execute, identifiers, if, elseif, else, while and $chr(124) are supported echo %color1 %target       view as a 1 line script echo %color1 %target       example: NICK mynick $chr(124) JOIN #mychan echo %color1 %target       example: if ($me != mynick) $chr(123) NICK mynick $chr(125) echo %color2 %target * End of help var %result = * End of help } ; help settings elseif ($istok(-sh -hs,$1,32)) { echo %color2 %target * Help echo %color1 %target   script echo %color1 %target       on or off to enable or disable the script echo %color1 %target   target echo %color1 %target       0=echo in $pperform.window echo %color1 %target       1=echo in active window echo %color1 %target       2=echo in status window echo %color1 %target   color1 color2 echo %color1 %target       colors to use 0-15 echo %color1 %target       possible to use an identifier, $!color(info) for example echo %color1 %target   paranoidnick echo %color1 %target       values are on|off, sets random nick when connecting to a server echo %color1 %target   nicklen echo %color1 %target       values are <1-32> [1-32] echo %color1 %target       takes first value or random value between the two for the paranoid nicklength echo %color1 %target   chars echo %color1 %target       the chars to choose from when creating a random nick echo %color2 %target * End of help var %result = * End of help } else { echo %color2 %target * Unknown option, see %cmd -h for help var %result = * Unknown option $+ $chr(44) see %cmd -h for help } return %result } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INPUT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:input:$($pperform.window):{ editbox -p $pperform.window $readini($mircini,n,text,commandchar) $+ pperform } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:load:{ echo -a loaded pperform, writing default settings to $mircdir $+ $pperform.ini echo -a $readini($mircini,n,text,commandchar) $+ pperform -h for help } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; UNLOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; on *:unload:{ if ($hget($pperform.hash)) { hfree $pperform.hash } if ($window($pperform.window)) { window -c $pperform.window } echo -a pperform: unloaded }