alias connect { socklisten init $ky | server 127.0.0.1 $sock(init).port } alias sw return sockwrite -n alias xn return $remove($gettok($1,1,33),:) alias cf return $chr(37) $+ $chr(35) $+ $remove($replace($1-,$chr(32),\b,$chr(44),\c),$chr(37),$chr(35)) alias qk return $hget(ownerkey,$1) alias hk return $hget(hostkey,$1) alias db { if (%debug) { if (!$window(@debug)) window @debug | echo @debug $1 : $2- } } alias ky return $r(1111,9999) alias swl return sockwrite -n root alias tag return progynova alias scat set %cc $1 alias resock if (#) { echo 5 -a * reconnecting # ... | $sw # quit } on *:socklisten:init:{ sockaccept root | sockclose init } on *:sockopen:?#*:var %s = $sockname | $sw %s user W T F $+(:,$tag) $lf nick $me $lf nickserv identify %email %pass $lf join %s $qk(%s) on *:sockread:?#*: { var %1, %s = $sockname | sockread %1 | tokenize 32 %1 | db %s $1- if ($2 = prop) hadd -m $4 %s $mid($5-,2) if ($1 = ping) { if ($me !ison %s) sockclose %s | else $sw %s PONG $2- } if ($2 $5 = mode $me) && (!$hget(fp,%s)) { if ($4 = -q) && (%dqp) $sw %s mode $me +h $qk(%s) $lf access %s clear $lf mode %s -q $xn($1) $lf prop %s ownerkey $ky $lf access %s clear if ($4 = +q) && (%qqp) && ($xn($1) != $me) $sw %s prop %s ownerkey $ky $lf prop %s hostkey $ky $lf access %s add owner $ial($me).addr 0 $tag | hadd -mu1 fp %s 1 } if ($2 $4 = kick $me) && (%rvk) $sw %s join %s $qk(%s) $lf access %s clear $lf kick %s $xn($1) :Revenge kick $lf prop %s ownerkey $ky $lf prop %s hostkey $ky $lf access %s clear if ($2 = join) { if ($xn($1) = $me) $sw %s who %s | if ($gettok($3,4,44)) $swl : $+ $xn($1) MODE %s $+(+,$replace($gettok($3,4,44),.,q,@,o,+,v)) $xn($1) } if ($2 = privmsg) { if (!$remove($4-,:)) halt | if ($4 = :S) $swl $1-3 $+(:,$remove($6-,$chr(1))) | elseif ($4 = :ACTION) $swl $1-4 $remove($5-,$chr(1)) | else $swl $remove($1-,$chr(1)) | halt } if ($2 = whisper) { if ($5-6 = :ERR NOUSERWHISPER) halt | elseif ($5 = :S) $swl $1 privmsg $4 $remove($6-,$chr(3)) | else $swl $1 privmsg $4 $remove($5-,$chr(3)) } if ($2 = 353) { var %1, %2 | %2 = $regsub($6-,/([^:,\s]+,)/g,$null,%1) | $swl $1-5 %1 } if ($2 = nick) && ($remove($3,:) = $me) halt if ($2 = quit) { $swl $1 part %s $3- | halt } if (%who) { if ($2 = 352) echo 5 %s   * $+ $5 $+ @ $+ $6 $8- | if ($2 = 315) { echo 6 %s  End $5- | echo %s  } } if ($xn($1) = nickserv) halt else $swl $1- } raw *:*:{ var %1 = $numeric, %2 = $event if ($istok(1 2 3 4 5 251 252 254 255 265 266 315 352 375 372 376 803 804 805 820,%1,32)) haltdef if (%1 = 803) { echo $2  | echo 6 $2  $3- } if (%1 = 804) { echo 5 $2   $3 - $4 $5 $iif($7,$7-) | echo 14 $2    Added by $xn($6) } if (%1 = 805) { echo 6 $2  $3- | echo $2  } if (%2 = prop) { echo 3 $1 * $nick sets $2 to: $3- | halt } } on *:sockclose:?#*:var %s = $sockname, %1 = $sock(%s).ip | sockclose %s | sockopen %s %1 6667 on *:sockopen:finds.*:var %s = $sockname, %c = $gettok(%s,2-,46) | $sw %s NICK $me $ld USER W T F : $+ $tag | $sw %s FINDS %c | echo 5 -a * Retrieving IP for: %c ... on *:sockread:finds.*: { var %1, %s = $sockname, %c = $gettok(%s,2-,46) | sockread %1 | tokenize 32 %1 | db %s $1- if ($2 = 613) { sockopen %c $mid($4,2) 6667 | sockclose %s } if ($2 = 702) { echo 5 -a * %c not found, creating ... | var %1 = $ky | hadd -m ownerkey %c %1 | $sw %s CREATE CP %c created - EN-US 1 %1 0 } } on *:sockread:root: { var %1, %s = $sockname | sockread %1 | tokenize 32 %1 | db %s $1- if ($1 = join) && ($2) { var %c = $cf($2-) | if ($sock(%c)) $sw %c join %c $qk(%c) | else { sockopen finds. $+ %c 96.47.40.242 7000 | echo 5 -a * Preforming lookup on %c ... } } if ($istok(privmsg notice,$1,32)) && ($me !ison $2) { var %1 = $chan(0) | while (%1) { var %c = $chan(%1) | if ($2 ison %c) { $sw %c $1-2 : $+ $mid($3-,2) | halt } | dec %1 } } elseif ($sock($2)) $sw $2 $1- } menu status,channel { Connect:{ if (!%email) set %email $?="email?" | if (!%pass) set %pass $?="pass?" | connect } Disconnect: sockclose * | timer* off | disconnect - Options .Show who ( $+ $iif(%who,on,off) $+ ):$iif(%who,unset %who,inc %who) .- .Prop on +q ( $+ $iif(%qqp,on,off) $+ ):$iif(%qqp,unset %qqp,inc %qqp) .Deowner prot ( $+ $iif(%dqp,on,off) $+ ):$iif(%dqp,unset %dqp,inc %dqp) .Revenge kick ( $+ $iif(%rvk,on,off) $+ ):$iif(%rvk,unset %rvk,inc %rvk) .- .Debug ( $+ $iif(%debug,on,off) $+ ):$iif(%debug,unset %debug,inc %debug) .- .Create category ( $+ $iif(%cc,%cc,CP) $+ ) ..City Chats:scat GE ..Computing:scat CP ..Fun n Games:scat EA ..General:scat GN ..Interests:scat II ..Lifestyles:scat LF ..News:scat NW ..Peers:scat PR ..Religion:scat RL ..Roleplay:scat RP ..Romance:scat RM ..Sports:scat SP ..Teens:scat TN }