on *:input:@:{ var %window $+(@,$hget(config,nickname)) if ($target == %window) && $left($1,1) != / { if $sock($+(PugBot_,$hget(config,nickname))).status == Active { sockwrite -n $+(PugBot_,$hget(config,nickname)) $1- aline -p %window $timestamp Sent: $1- } else aline %window $timestamp Not Connected. } } alias cpanel { dialog -m cpanel cpanel var %sockname $+(PugBot_,$hget(config,nickname)) if ($sock(%sockname)) did -b cpanel 2 else did -b cpanel 1 } dialog cpanel { title "PugBot Control Panel" size -1 -1 147 81 option dbu button "Start Bot", 2, 6 29 40 10 button "Stop Bot", 1, 6 41 40 10 button "Edit Config.ini", 3, 6 53 40 11 button "Edit Servers.ini", 4, 6 66 40 11 button "Reload main.mrc", 5, 4 12 44 13 ;icon 6, 53 7 88 68, c:\PugBot\PugBot\logo.bmp, 0 } on *:dialog:cpanel:sclick:5:{ reload -rs $qt($script) } on *:dialog:cpanel:sclick:1:{ var %me $hget(config,nickname) .sockclose $+(PugBot_,%me) | did -b $dname 1 | did -e $dname 2 if ($window(@ $+ %me)) { aline $v1 $timestamp - Stopped $+(',%me,') - } } on *:dialog:cpanel:sclick:2:{ var %me $hget(config,nickname) if (%cfg.error) { dialog -m cfg.error cfg.error | unset %cfg.error | halt } StartBot | did -b $dname 2 | did -e $dname 1 } on *:dialog:cpanel:sclick:3:{ editcfg } on *:dialog:cpanel:sclick:4:{ editservs } dialog cfg.error { title "Error" size -1 -1 98 39 option dbu text "Error: Config not setup properly.", 1, 10 8 87 16 button "OK", 2, 30 21 37 12 } on *:dialog:cfg.error:sclick:2:{ dialog -c $dname } dialog editcfg { title "Edit Config.ini" size -1 -1 246 90 option dbu edit "", 1, 19 9 205 57, multi return autovs button "Save", 2, 104 72 37 12 } alias editcfg { dialog -m editcfg editcfg var %x 1 while (%x <= $lines($scriptdirconfig.ini)) { did -a editcfg 1 $read($scriptdirconfig.ini,nt,%x) $+ $crlf inc %x } } alias editservs { dialog -m editservs editservs var %x 1 while (%x <= $lines($scriptdirservers.ini)) { did -a editservs 1 $read($scriptdirservers.ini,nt,%x) $+ $crlf inc %x } } dialog editservs { title "Edit Servers.ini" size -1 -1 246 90 option dbu edit "", 1, 19 9 205 57, multi return autovs vsbar button "Save", 2, 104 72 37 12 } on *:dialog:editcfg:sclick:2:{ .remove $scriptdirconfig.ini var %x 1 while $did($dname,1,%x) { write $scriptdirconfig.ini $v1 inc %x } dialog -c $dname } on *:dialog:editservs:sclick:2:{ .remove $scriptdirservers.ini var %x 1 while %x <= $did($dname,1,0).lines { if $regex($did($dname,1,%x),^\[.*\]$) && %x != 1 { write $scriptdirservers.ini $crlf } write $scriptdirservers.ini $did($dname,1,%x) inc %x } dialog -c $dname } on *:start:{ unset %cfg.error .timerrefreshcfg 0 1 check_cfg .timercpanel 1 1 cpanel startbot } alias startbot { if ($check_cfg) { var %nickname $hget(config,nickname), %server = $hget(config,server) var %authserv $hget(config,authserv), %botmaster = $hget(config,botmaster) var %trigger $hget(config,trigger), %skin = $hget(config,trigger) var %sockname PugBot_ $+ %nickname .sockopen %sockname $replace(%server,:,$chr(32)) .sockmark %sockname 1 if (!$window(@ $+ %nickname)) .window -e @ $+ %nickname else clear @ $+ %nickname aline @ $+ %nickname $timestamp - Starting $+(',%nickname,') - } } alias check_cfg { var %cfg $scriptdirconfig.ini, %x if ($read(%cfg,r,/^nickname=(.*)$/i)) .hadd -m config nickname $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'nickname' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if ($read(%cfg,r,/^server=(.*)$/i)) .hadd -m config server $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'server' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if ($read(%cfg,r,/^authserv=(.*)$/i)) .hadd -m config authserv $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'authserv' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if ($read(%cfg,r,/^botmaster=(.*)$/i)) .hadd -m config botmaster $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'botmaster' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if ($read(%cfg,r,/^channels=(.*)$/i)) .hadd -m config channels $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'channels' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if ($read(%cfg,r,/^trigger=(.*)$/i)) .hadd -m config trigger $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'trigger' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if ($read(%cfg,r,/^skin=(.*)$/i)) .hadd -m config skin $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'skin' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if ($read(%cfg,r,/^rconport=(.*)$/i)) .hadd -m config rconport $regml(1) else { if (%cfg.error) halt var %error Config Error: could not find 'rconport' in $qt($+($scriptdir,config.ini)) echo -a %error | inc %x } if (!%x) { unset %cfg.error | return 1 } else { set %cfg.error 1 } } on *:sockopen:PugBot_*:{ if ($sockerr) return var %me $hget(config,nickname), %user = $lower($regsubex(%me,/\W/g,)), %sw = sockwrite -n $sockname %sw NICK %me %sw USER %user $qt(%user) $qt($ip) : $+ %user } on *:sockwrite:PugBot_*:{ if (!$1) halt var %window $+(@,$hget(config,nickname)) if ($window(%window)) aline -p $v1 $timestamp Sent: $1- } on *:sockread:PugBot_*:{ var %data, %me = $hget(config,nickname), %skin $hget(config,skin), %sw = rawsend $sockname var %trigger $hget(config,trigger), %botmaster = $hget(config,botmaster) sockread %data | tokenize 32 %data var %window @ $+ %me if (!$window(%window)) window -e %window aline -p %window $timestamp Received: $1- if $1 == PING { if $sock($sockname).mark { if $hget(config,authserv) { .timer 1 1 %sw mode %me +x | .timer 1 1 %sw as AUTH $v1 } if ($hget(config,channels)) { .timer 1 2 %sw JOIN $v1 } if ($timer($sockname)) { .timer $+ $sockname off } .sockmark %sockname * } %sw Pong $2 } ;Raw Numeric events. elseif $regex($1,:.+) && $2 isnum { ;Catch nicks if $2 == 353 { var %chan $5, %nicks $regsubex($6-,/^:/g,) var %x 1 while $gettok(%nicks,%x,32) { var %nick $remove($v1,+,@,&) if ($left($v1,1) == @) { hadd -m $+(%chan,_nickmodes) %nick op } elseif ($left($v1,1) == +) { hadd -m $+(%chan,_nickmodes) %nick voice } inc %x } } elseif $2 == 330 { if $hget($sockname,getauthname) { var %authname $5 .hadd -m $sockname gotauthname $5 .hdel -sw $sockname getauthname } } } ;On Text elseif $regex($1-,^:(.*)!.*@(.*) PRIVMSG (.*) :(.*)$) { var %nick $regml(1), %address = $+(*!*@,$regml(2)), %target = $regml(3), %text = $regml(4) var %botmaster $hget(config,botmaster) if (!$hget(Authname,%address)) .hadd -m Authname %address $iif($authname($sockname,%nick),$v1,0) if ($hget(Authname,%address)) var %authname $v1 if (%authname) && ($read($scriptdirusers.db,w,%authname $+ :*)) var %userlevel $iif($gettok($v1,2,58),$v1,1) if ($left(%target,1) == $(#,0)) var %chan %target if $regex(%address,^(.*)\..*\.gamesurge$) { var %gsauth $regml(1) } tokenize 32 %text if $1- == %trigger $+ version { var %msg Hi %nick $+ , im running %me v1.0. sendcmd %nick notice %nick : $+ $skin(%skin,Version,%msg) } elseif $1- == %trigger $+ commands || $1- == %trigger $+ help { sendcmd %nick notice %nick : $+ $skin(%skin,Admin-Commands,%trigger $+ Pug %trigger $+ EndPug - %trigger $+ Bind %trigger $+ Set %trigger $+ Unbind %trigger $+ Binds - %trigger $+ Adduser %trigger $+ Deluser %trigger $+ Users - %trigger $+ help Levels) sendcmd %nick notice %nick : $+ $skin(%skin,Commands,%trigger $+ Help - %trigger $+ Access %trigger $+ Version %trigger $+ Commands %trigger $+ Add) if ($mybot_binds(%me)) sendcmd %nick notice %nick : $+ $skin(%skin,Binds,$showbinds($v1)) } elseif $1 == %trigger $+ help { if $2- == %trigger $+ bind || $2- == bind { sendcmd %nick notice %nick : $+ $skin(%skin,Bind,Syntax: %trigger $+ bind ) } elseif $2- == %trigger $+ unbind || $2- == unbind { sendcmd %nick notice %nick : $+ $skin(%skin,Unbind,Syntax: %trigger $+ unbind ) } elseif $2- == %trigger $+ set || $2- == set { sendcmd %nick notice %nick : $+ $skin(%skin,Set,Syntax: %trigger $+ set ) } elseif $2- == %trigger $+ add || $2- == add { sendcmd %nick notice %nick : $+ $skin(%skin,Add,This adds you to a pug $+ $chr(44) an admin needs to type %trigger $+ startpug before you can add your self to it.) } elseif $2- == %trigger $+ adduser || $2- == adduser { sendcmd %nick notice %nick : $+ $skin(%skin,Adduser,Syntax: %trigger $+ adduser ) } elseif $2- == %trigger $+ deluser || $2- == deluser { sendcmd %nick notice %nick : $+ $skin(%skin,Deluser,Syntax: %trigger $+ deluser ) } elseif $2 == %trigger $+ pug || $2- == pug { sendcmd %nick notice %nick : $+ $skin(%skin,StartPug,Syntax: %trigger $+ startpug ) } elseif ($2- == %trigger $+ access || $2- == access || $2- == %trigger $+ a || $2- == a) { sendcmd %nick notice %nick : $+ $skin(%skin,Access,Syntax: $+(%trigger,access|,%trigger,a) [Nick]) } elseif $2 == levels { sendcmd %nick notice %nick : $+ $skin(%skin,Access Levels,[100=Channel-Peon] [200=Channel-Op] [300=StartPug/StopPug] [400=AddBind/Set/DelBind/Binds] [500=AddUser/Deluser/Users]) } else sendcmd %nick notice %nick : $+ $skin(%skin,Error,There isnt any help for that command.) } elseif $1 == %trigger $+ a || $1 == %trigger $+ access { if (!$2) sendcmd %nick notice %nick : $+ $skin(%skin,Access,Authname: $iif(%authname,$v1,not authed) Userlevel: $iif(%userlevel,$v1,0) Address: %address) else { var %authname $authname($sockname,$2) if (!%authname) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,That user isnt authenticated.) | halt } set -u0 %tmp.authname $read($scriptdirusers.db,w,%authname $+ :*) var %targ_level $gettok(%tmp.authname,2,58) sendcmd %nick notice %nick : $+ $skin(%skin,Access,Authname: $iif(%authname,$v1,not authed) Userlevel: $iif(%targ_level,$v1,0)) } } elseif $1 == %trigger $+ adduser { if %address != %botmaster && $iif(%userlevel,$v1,1) < 300 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You dont have access to that command.) halt } elseif !$3 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,Invalid Syntax $+ $chr(44) use like this %trigger $+ adduser ) halt } elseif $read($scriptdirusers.db,w,$2 $+ :*) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,That user is already on my userlist.) halt } if $left($2,1) != * { var %targ_name $authname($sockname,$2) if (!%targ_name) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,$2 needs to authenticate with AuthServ.) halt } } else { if !$accountexists($sockname,$2) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,That account doesnt exist.) halt } var %targ_name $remove($2,*) } write $scriptdirusers.db $+(%targ_name,:,$3) sendcmd %nick notice %nick : $+ $skin(%skin,Adduser,Successfully added user.) } elseif $1- == %trigger $+ users { if %address != %botmaster && $iif(%userlevel,$v1,1) < 100 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You dont have access to that command.) halt } elseif !$lines($scriptdirusers.db) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,No users exist.) halt } elseif $lines($scriptdirusers.db) < 20 { var %x 1 | while $read($scriptdirusers.db,%x) { var %y = %y $v1 | inc %x } sendcmd %nick notice %nick : $+ $skin(%skin,Users,%y) } else { sendcmd %nick notice %nick : $+ $skin(%skin,Error,To many users to list.) halt } } elseif $1 == %trigger $+ deluser { if %address != %botmaster && $iif(%userlevel,$v1,1) < 300 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You dont have access to that command.) halt } elseif $hget(Authname,%address) == 0 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You need to authenticate with AuthServ.) halt } elseif !$2 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,Invalid Syntax $+ $chr(44) use like this %trigger $+ adduser ) halt } if ($left($2,1) != *) { var %targ_name $authname($sockname,$2) if (!%targ_name) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,$2 is either offline or needs to authenticate with AuthServ.) halt } } elseif ($left($2,1) == *) { var %nick2 $remove($2,*) if ($read($scriptdirusers.db,w,%nick2 $+ :*)) var %targ_name %nick2 elseif (!$accountexists($sockname,$2)) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,That account doesnt exist.) halt } } if (!$read($scriptdirusers.db,w,%targ_name $+ :*)) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,%targ_name isnt on my userlist.) halt } write -dl $+ $readn $scriptdirusers.db sendcmd %nick notice %nick : $+ $skin(%skin,Deluser,Successfully removed user.) } elseif $1 == %trigger $+ bind { if %address != %botmaster && $iif(%userlevel,$v1,1) < 400 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You dont have access to that command.) halt } elseif $hget(Authname,%address) == 0 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You need to authenticate with AuthServ.) } var %binds $+(%me,_binds) if !$3 || $regex($2,\W) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,Invalid syntax $+ $chr(44) use like this %trigger $+ bind ) } else { if !$hget(%binds,$2) { hadd -m %binds $2 $3- sendcmd %nick notice %nick : $+ $skin(%skin,Bind,Successfully bound $qt($2) to $qt($3-)) .hsave %binds $+($scriptdir,%binds,.db) } else sendcmd %nick notice %nick : $+ $skin(%skin,Bind,That bind already exists) } } elseif $1 == %trigger $+ set { var %binds $+(%me,_binds) if !$3 { sendcmd %nick notice $nick : $+ $skin(%skin,Error,Invalid syntax $+ $chr(44) use like this %trigger $+ set ) | halt } elseif !$hget(%binds,$remove($2,%trigger)) { sendcmd %nick notice $nick : $+ $skin(%skin,Error,No bind by that name exists.) | halt } hadd -m %binds $2 $3- | .hsave %binds $+($scriptdir,%binds,.db) sendcmd %nick notice %nick : $+ $skin(%skin,Set,Successfully set $qt($2) to $qt($3-)) } elseif $1 == %trigger $+ unbind { if %address != %botmaster && $iif(%userlevel,$v1,1) < 300 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You dont have access to that command.) halt } elseif $hget(Authname,%address) == 0 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You need to authenticate with AuthServ.) } var %me $hget(config,nickname), %binds = %me $+ _binds if $1 && !$2 { var %msg Invalid syntax, use like this %trigger $+ unbind sendcmd %nick notice %nick : $+ $skin(%skin,Error,%msg) } else { if $hget(%binds,$2) { .hdel -sw %binds $2 sendcmd %nick notice %nick : $+ $skin(%skin,Unbind,Successfully unbound $qt($2)) .hsave %binds $+($scriptdir,%binds,.db) if $lines($+($scriptdir,%binds,.db)) < 1) .remove $+($scriptdir,%binds,.db) } else sendcmd %nick notice %nick : $+ $skin(%skin,Error,There is no command named $qt($2)) } } elseif $1- == %trigger $+ binds { if %address != %botmaster && $iif(%userlevel,$v1,1) < 300 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You dont have access to that command.) halt } elseif $hget(Authname,%address) == 0 { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You need to authenticate with AuthServ.) } sendcmd %nick notice %nick : $+ $iif($mybinds(%me),$skin(%skin,Binds,$v1),$skin(%skin,Binds,No binds exist.)) } elseif $1 == %trigger $+ eval { if %address != %botmaster { sendcmd %nick notice %nick : $+ $skin(%skin,Error,You dont have access to that command.) halt } var %ticks $ticks, %str = $2- == $($2-,2) $+([,$calc($ticks - %ticks),ms]) sendcmd %nick privmsg %chan : $+ $skin(%skin,Eval,%str) } elseif $1 == %trigger $+ a || $1 == %trigger $+ access { if (!$2) sendcmd %nick notice %nick : $+ $skin(%skin,Access,Authname: $iif(%authname,$v1,not authed) Userlevel: $iif(%userlevel,$v1,0) Address: %address) else { var %authname $authname($sockname,$2) if (!%authname) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,That user isnt authenticated.) | halt } set -u0 %tmp.authname $read($scriptdirusers.db,w,%authname $+ :*) var %targ_level $gettok(%tmp.authname,2,58) sendcmd %nick notice %nick : $+ $skin(%skin,Access,Authname: $iif(%authname,$v1,not authed) Userlevel: $iif(%targ_level,$v1,0)) } } elseif $1 == %trigger $+ pug { if (!%authname) { sendcmd %nick notice %nick : $+ $skin(%skin,Pug,You need to authenticate to use this.) } elseif ($hget(Pug-Starter)) { sendcmd %nick notice %nick : $+ $skin(%skin,Pug,A Pug is already in progress.) } elseif (!$2) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,Invalid syntax $+ $chr(44) use like this: %trigger $+ Pug ) } elseif (!$read($scriptdirmaps.txt,w,$2 $+ .bsp)) { sendcmd %nick notice %nick : $+ $skin(%skin,Error,Map not found.) } else { var %randpass $regsubex(*****,/\*/g,$iif($r(1,5) > 2,$iif($r(1,2) > 1,$r(a,z),$r(A,Z)),$r(1,9))) sockwrite -n $sockname privmsg %chan : $+ $skin(%skin,$hget(config,nickname),%nick Started a Pug $+ $chr(44) to play type %trigger $+ addme) sockwrite -n $sockname privmsg %nick : $+ $skin(%skin,Pug,Pug Started $+ $chr(44) Waiting for players..) sockwrite -n $sockname privmsg %nick : $+ $skin(%skin,Pug,When you are in game type %trigger $+ login %randpass) hadd -m Pug-Players %address %nick hadd -m Pug-Starter %address %nick var %file $scriptdirservers.ini var %serv $ini(%file,1), %rconpass = $readini(%file,%serv,rconpass), %maxplayers = $readini(%file,%serv,maxplayers) rcon %serv %rconpass logaddress_add $netip 1337 } } elseif $hget(%me $+ _binds,$remove($1,%trigger)) { var %value $v1 sendcmd %nick notice %nick : $+ $skin(%skin,$remove($1,%trigger),%value) } } elseif $regex($1-,/:(.+)\!.+@.+ MODE (#[^\s]+) ([^\s]+) (.+)/g) { var %nick $regml(1), %chan = $regml(2), %modes = $regml(3), %nicks = $regml(4) if +* iswm %modes { var %+modes $mid(%modes,2-) } if -* iswm %modes { var %-modes $mid(%modes,2-) } if (%+modes) || (%-modes) { var %x 1, %tmpmodes = $remove(%modes,-,+) while (%x <= $len(%tmpmodes)) { if ($mid(%tmpmodes,%x,1) == o) { if (%+modes) var %opnicks = %opnicks $gettok(%nicks,%x,32) if (%-modes) var %dopnicks = %dopnicks $gettok(%nicks,%x,32) } elseif ($mid(%tmpmodes,%x,1) == v) { if (%+modes) var %vnicks = %vnicks $gettok(%nicks,%x,32) if (%-modes) var %dvnicks = %dvnicks $gettok(%nicks,%x,32) } inc %x } if %opnicks { var %x = 1 | while ($gettok($v1,%x,32)) { .hadd -m $+(%chan,_nickmodes) $v1 op | inc %x } } if %vnicks { var %x = 1 | while ($gettok($v1,%x,32)) { .hadd -m $+(%chan,_nickmodes) $v1 voiced | inc %x } } if %dopnicks { var %x = 1 | while ($gettok($v1,%x,32)) { .hdel -m $+(%chan,_nickmodes) $v1 | inc %x } } if %dvnicks { var %x = 1 | while ($gettok($v1,%x,32)) { .hdel -m $+(%chan,_nickmodes) $v1 | inc %x } } } } ;On Notice elseif $regex($1-,^:(.+)\!.*\@.* NOTICE .* :(.*)$) { var %nick $regml(1), %text = $regml(2) tokenize 32 %text if %nick == AuthServ { if $hget($sockname,accountexists) == 0 { if ($regex($1-,^Account information for .+:$)) { .hadd -m $sockname accountexists 1 } else .hdel -sw $sockname accountexits } } } ;On Join elseif $regex($1-,^:(.+)\!.+\@.+ JOIN (.+)) { var %nick $regml(1), %chan = $regml(2), %hostmask = *!*@ $+ $gettok($1,2,64) if (%nick != %me) { if (!$hget(Authname,%hostmask)) .hadd -m Authname %address $iif($authname($sockname,%nick),$v1,0) if ($hget(Authname,%hostmask)) var %authname $v1 if (%authname) && ($read($scriptdirusers.db,w,%authname $+ :*)) var %userlevel $gettok($v1,2,58) if (%userlevel >= 100) && (%userlevel < 200) || (%botmaster iswm %hostmask) %sw mode %chan +v %nick elseif (%userlevel >= 200) || (%botmaster iswm %hostmask) %sw mode %chan +o %nick } } ;On Part elseif $regex($1-,^:(.+)\!.+\@.+ PART (.+)) { var %nick $regml(1), %chan = $regml(2) ;Remove all names from list when you part if (%nick == %me) { .hfree -sw $+(%chan,_nickmodes) } else .hdel -sw $+(%chan,_nickmodes) %nick } ;On Quit elseif $regex($1-,^:(.+)\!.+\@.+ QUIT) { ;Remove persons name when they quit. var %x 1 while $hget(%x) { var %y 1 while ($hfind($v1,*,%y,w)) { .hdel -sw $hget(%x) $v1 | inc %y } inc %x } } } on *:socklisten:test:{ sockaccept test2 } on *:udpread:rcon.logs:{ sockread %data echo -s $bvar(%data,1-).text } on *:sockclose:PugBot_*:{ .timer $+ $sockname 0 30 sopen $sockname } alias -l sopen { if (!$sock($1)) { sockopen $1 $replace($hget(config,server),:,$chr(32)) sockmark $1 1 } } alias rawsend { var %window $+(@,$hget(config,nickname)) if ($sock($1).status != Active) halt sockwrite -n $1 $2- if ($window(%window)) aline -p $v1 $timestamp Sent: $1- } alias rcon { var %sockname $+(rcon,$r(1,1000)) | sockudp -k %sockname $replace($1,:,$chr(32)) ÿÿÿÿchallenge rcon | sockmark %sockname $1- } on *:udpread:rcon*:{ var %data | sockread %data | tokenize 32 %data if ($1-2 == ÿÿÿÿchallenge rcon) { var %challenge $3 if ($sock($sockname).mark) { var %serv $gettok($v1,1,32), %rconpass = $gettok($v1,2,32), %cmd = $gettok($v1,3-,32) sockudp $sockname $replace(%serv,:,$chr(32)) ÿÿÿÿrcon $qt(%challenge) %rconpass %cmd } } sockclose $sockname } alias queryserv { var %serv $gettok($1,1,58), %port = $gettok($1,2,58) sockudp -k queryserv %serv %port ÿÿÿÿTSource Engine Query sockmark queryserv %serv %port set %beginticks $ticks pause ms 150 if ($hget(queryserv,result)) { .hfree -sw queryserv | return $v1 } } on *:udpread:queryserv:{ var %ping = $calc($ticks - %beginticks) sockread &data breplace &data 0 254 32 160 | var %data $bvar(&data,1,$bvar(&data,0)).text if %data { var %hostname = $gettok(%data,2,254), %map = $gettok(%data,3,254), %gamedir = $gettok(%data,4,254) var %mod = $gettok(%data,5,254) if (!%pos) var %pos = 1 var %posn = $pos(%data,$gettok(%data,5,254),%pos), %gamechars = $len($gettok(%data,5,254)) var %chrclc = $calc(%posn + %gamechars), %bots = $iif($asc($right(%data,1)) == 254,0,$ifmatch) var %tmpplayers = $mid(%data,%chrclc,3), %players = $iif($asc($mid(%tmpplayers,2,1)) == 254,0,$ifmatch) var %maxplayers = $asc($right(%tmpplayers,1)) if (%maxplayers == 160) var %maxplayers = 32 var %string = $gettok(%data,6,254) var %players2 = $iif($asc($mid(%players,2,1)) == 254,0,$ifmatch) var %pwpos = $calc(%chrclc + $pos(%string,5,1) + 1) var %password = $iif($right($mid(%data,%pwpos,6),1) == $chr(254),no,yes) var %protocol = $asc($mid(%string,$iif(%players2 == 0,2,3),1)) if (!%protocol) var %protocol = 0 var %servertype = $iif($mid(%string,$iif(%players == 0,3,4),1) == d,Dedicated,Listen) var %serveros = $iif($mid(%string,$iif(%players == 0,4,5),1) == l,Linux,Windows) var %secure = $iif($mid($calc($len(%data) - 1),1) == $chr(254),no,yes) .hadd -m $sockname result $gettok($sock($sockname).mark,1,32) ¶ %map ¶ %players ¶ %hostname ¶ %password unset %beginticks | sockclose $sockname } } alias -l mybinds { var %x 1 while $hfind($+($1,_binds),*,%x,w) { if (!$hget($sockname,tmpb)) hadd -mu1 $sockname tmpb $hget(config,trigger) $+ $hfind($+($1,_binds),*,%x,w) else hadd -mu1 $sockname tmpb $hget($sockname,tmpb) $hget(config,trigger) $+ $hfind($+($1,_binds),*,%x,w) inc %x } .hfree -sw $1 trigger if $hget($sockname,tmpb) { .hfree -sw $sockname tmpb | return $v1 } } alias pause { if ($version < 5.91) halt elseif (!$regex(pause,$1-,/^m?s \d+$/Si)) halt elseif ($1 == ms) && ($istok(95 98 ME,$os,32)) halt elseif ($2 !isnum 1-) halt var %wsh = wsh $+ $ticks, %cmd if ($1 == s) %cmd = ping.exe -n $int($calc($2 + 1)) 127.0.0.1 else %cmd = pathping.exe -n -w 1 -q 1 -h 1 -p $iif($2 > 40,$calc($2 - 40),$2) 127.0.0.1 .comopen %wsh wscript.shell | .comclose %wsh $com(%wsh,run,1,bstr*,% $+ comspec% /c %cmd >nul,uint,0,bool,true) } alias -l sendcmd { var %sw sockwrite -n $sockname, %nick = $1, %skin = $hget(config,skin) if (!$sockname) echo -a Error, not connected. elseif !$hget(%nick,ignored) { var %lines 5, %secs = 4, %time = 30 .hinc $+(-mu,%secs) %nick floodcount if $hget($1,floodcount) >= %lines { %sw notice %nick : $+ $skin(%skin,Error,You are sending commands to quickly $+ $chr(44) you will be ignored for 30 secs) .hadd $+(-mu,%time) %nick ignored 1 } %sw $2- } } alias authname { if (!$2) || (!$sock($1)) halt .hadd -m $1 getauthname $2 sockwrite -n $1 whois $2 pause ms 600 if ($hget($1,gotauthname)) { .hdel -sw $1 gotauthname | return $v1 } } ;$skin(,,) alias skin { if ($1 == 1) { return 15,1[14,1«0,1»15,1 9 $+ $2 0,1«14,1»15,1]: 4,1 $+ $3- $+  } elseif ($1 == 2) { return 15,1[14,1«0,1»15,1 4 $+ $2 0,1«14,1»15,1]: 9,1 $+ $3- $+  } elseif ($1 == 3) { var %color1 9,1, %color2 = 7,1, %color3 = 3,1 return 15,1[14,1«0,1»15,1 9 $+ $2 0,1«14,1»15,1]: %color1 $replace($3-,IP:,%color2 $+ IP: $+ %color1,PW:,%color3 $+ PW: $+ %color1,Map:,%color2 $+ Map:) } else return $3- } alias netip { if ($1) || (!$isid) halt elseif !$ip { if ($hget(mIRC,ip)) return $v1 else { var %sock getip .sockclose %sock | .sockopen %sock whatismyip.com 80 pause s 1 if $hget(%sock,ip) { .hadd -m mIRC ip $v1 | .hfree -sw %sock | return $hget(mIRC,ip) } } } else return $ip } on *:sockopen:getip:{ var %sw sockwrite -n $sockname %sw GET / HTTP/1.1 %sw Host: whatismyip.com %sw Connection: Close %sw } on *:sockread:getip:{ var %data | sockread %data if ($regex(%data,/WhatIsMyIP\.com - (.+)<\/TITLE>/i)) { .hadd -m $sockname ip $regml(1) } }