# neo-jircii: # I was writing this script to be a replacement for the current default # jIRCii script. The default jIRCii script does its job so I am making # this available for users to play with and use. # # Feel free to use this script as an example for developing your own # jIRCii 'theme' scripts. # # Inspiration for this script is a cross between irssi, BitchX, and the # default jIRCii script. # # Usage: /load neo-jircii.irc # Colors: # 1 - statusbar default color (atm) (black) # 2 - statusbar highlight color (dark blue) # 03 - halfop color (green) # 06 - voice color (purple) # 08 - highlight color (yellow) # 09 - server notice color (bright green) # 10 - op color (teal) # 14 - [] and : color (dark grey) # 15 - messages,notices,user spec'd parms (grey) # 17 - user color (text, nicklist, names) (grey|bolded for own text) # 18 - user brackets (text from other users) (dark light blue?) # 19 - CTCP Replies (requests too?) (green) # 22 - my brackets (for my text) (dark purple) # 23 - timestamp color (goldish/green) # 25 - part/quit/sign off color (goldish) # 28 - dcc chat message (bright green) # 30 - used in send notice/ctcp/msg (red) # 34 - notice color/message color (brown) # 35 - nick hilite/join/signon (red) # 36 - channel/server highlight color (gold) # 37 - action color (pink) # 38 - /dcc info line (grey) # 39 - parameter colors (grey) # 40 - normal text color for plain echos (grey) # $nnn = "\c40*\c36*\c40*"; # the bullet used in all of our echo's # # begin the actual sets... # set CHANNEL_MODE_IS! { return "$nnn mode for\c36 $0 \c40is\c14:\c40 $parms"; } set CHANNEL_TOPIC_IS! { return "$nnn Topic for\c36 $0 $+ \c14:\c15 $parms"; } set CHANNEL_TOPIC_SETBY! { return "$nnn Topic set by\c35 $nick \c40on\c14:\c40 $seton "; } set CHANNEL_CREATED! { return "$nnn Channel\c36 $1 \c40was created\c14:\c40 $created"; } set JOIN_SYNC! { return "$nnn Join to\c36 $1 \c40was synched in\b $sync \bsecs."; } set CHANNEL_MODE { rehashWindow($target); return "$nnn mode\c14/\c36 $+ $target \c14[\c39\b $+ $parms $+ \b\c14]\c40 by\c35 $source"; } set USER_MODE { return "$nnn Mode change \c14[\c39\b $+ $parms $+ \c14]\c40 for user\c35 $target"; } set CHANNEL_JOIN { return "$nnn \c35\b $+ $nick \b\c14[\c35 $+ $address $+ \c14]\c40 has joined\c36 $target"; } set CHANNEL_KICK { return "$nnn \c35\b $+ $1 \b\c40was kicked from\c36 $0 \c40by $nick $+ \c14:\c15 $2-"; } set USER_QUIT { return "$nnn \c25\b $+ $nick \b\c14[\c25 $+ $address $+ \c14]\c40 has quit\c14:\c15 $parms"; } set CHANNEL_PART { return "$nnn \c25\b $+ $nick \b\c14[\c25 $+ $address $+ \c14]\c40 has left $target"; } set NICKLIST_FORMAT { return formatNick($nick, $channel, $nick); } sub formatNick { if ($1 isop $2) { return "\c10@\c17 $+ $3"; } else if ($1 isvoice $2) { return "\c06+\c17 $+ $3"; } else if ($1 ishalfop $2) { return "\c03%\c17 $+ $3"; } return "\c17 $+ $3"; } sub getStatusSymbol { if ($1 isop $2) { return "\c10@"; } if ($1 isvoice $2) { return "\c06+"; } if ($1 ishalfop $2) { return "\c03%"; } return " "; } set CHANNEL_TEXT { if ($me isin $parms) { return "\c18<" . getStatusSymbol($nick, $0) . "\c08 $+ $nick $+ \c18>\c15 $parms"; } return "\c18<" . getStatusSymbol($nick, $0) . "\c17 $+ $nick $+ \c18>\c15 $parms"; } set CHANNEL_TEXT_INACTIVE { if ($me isin $parms) { return "\c18<" . getStatusSymbol($nick, $target) . "\c08 $+ $nick $+ \c18:\c17 $+ $target $+ \c18>\c15 $parms"; } return "\c18<" . getStatusSymbol($nick, $target) . "\c17 $+ $nick $+ \c18:\c17 $+ $target $+ \c18>\c15 $parms"; } set SEND_TEXT { return "\c22<" . getStatusSymbol($me, $0) . "\c17\b $+ $me $+ \b\c22>\c15 $parms"; } set SEND_TEXT_INACTIVE { return "\c22<" . getStatusSymbol($me, $0) . "\c17\b $+ $me $+ \b\c22:\c17 $+ $target $+ \c22>\c15 $parms"; } set USER_NICK { return "$nnn $nick is now known as\c14:\c35 $1"; } set CHANNEL_TOPIC_CHANGED { rehashWindow($0); return "$nnn $nick has changed the topic of $0 to: $parms"; } set ACTION { return "\c37\b*\b $nick \c15 $+ $1-"; } set PRIVACTION { return "\c37*\b>\b $nick \c15 $+ $1-"; } set ACTION_INACTIVE { return "\c37* $nick $+ \c14:\c37 $+ $0 \c15 $+ $1-"; } set SEND_ACTION { return "\c37*\b $me \b\c15 $+ $parms"; } set SEND_ACTION_INACTIVE { return "\c37*\b $me $+ \b\c14:\c37 $+ $0 \c15 $+ $parms"; } set SEND_ACTION_PRIV { return "\c37*\b $me $+ \b\c14:\c37 $+ $0 \c15 $+ $parms"; } set REPL_324! { return; } set REPL_372! { return "$parms"; } set FORMATTED_NAMES_HEADER! { return "\c14[\c40Users\c14:\c36 $2 $+ \c14]"; } set FORMATTED_NAMES { if ($nick isnormal $2) { return "\c14[ " . formatNick($nick, $2, left("$[12]nick", 12)) . "\c14] "; } return "\c14[" . formatNick($nick, $2, left("$[12]nick", 12)) . "\c14] "; } set TIMESTAMP { return "\c23 $+ $time "; } set CTCP_REPLY { $stuff = $2-; if ($pt ne "") { $stuff = $pt; } return "\c19CTCP\b $1 \breply from $nick $+ \c14:\c15 $stuff"; } set SEND_DCC { if ($1 eq "SEND") { return "$nnn DCC SEND request sent to $0 $+ : " . getFileName($4-) . " [" . formatBytes($3) . "]"; } return "$nnn DCC " . uc($1) . " request sent to $0"; } set SEND_CTCP { if ($1 eq "PING") { return "\c14[\c30ctcp\c14(\c30\b $+ $0 $+ \b\c14)]\c15 PING"; } else { return "\c14[\c30ctcp\c14(\c30\b $+ $0 $+ \b\c14)]\c15 $1-"; } } set SEND_NOTICE { return "\c14[\c30notice\c14(\c30\b $+ $0 $+ \b\c14)]\c15 $parms"; } set SEND_WALL { return "\c14[\c30wall\c14(\c30\b $+ $0 $+ \b\c14)]\c15 $1-"; } set SEND_WALLEX { return "\c14[\c30wall-x\c14(\c30\b $+ $0 $+ \b\c14)]\c15 $1-"; } set NOTICE { if ($nick eq "" && $1 eq "***") { return "\c09!\r".getServerHost()."\r\c15 $2-"; } else if ($nick eq "") { return "\c09!\r".getServerHost()."\r\c15 $1-"; } return "\c14-\b\c34 $+ $nick $+ \b\c14(\c34 $+ $address $+ \c14)-\c15 $parms"; } set PRIVMSG { if (-iswindow $nick) { return "\c18<\c17 $+ $nick $+ \c18>\c15 $parms"; } return "\c14[\b\c34 $+ $nick $+ \b\c14(\c34 $+ $address $+ \c14)]\c15 $parms"; } set SEND_MSG { if (-iswindow $target) { return "\c22<\c17\b $+ $me $+ \b\c22>\c15 $parms"; } else { return "\c14[\c30msg\c14(\c30\b $+ $target $+ \b\c14)]\c15 $1-"; } } set NOTIFY_SIGNON { return "$nnn \c35\b $+ $nick \b\c14[\c35 $+ $address $+ \c14]\c40 has signed on"; } set NOTIFY_SIGNOFF { return "$nnn \c25\b $+ $nick \b\c14[\c25 $+ $address $+ \c14]\c40 has signed off"; } set REPL_366 { return; } # hide REPL_END_OF_NAMES # # Whois Reply # set REPL_401 { return "$nnn $1 $2-"; } # no such nick/channel set REPL_406 { return "$nnn $1 $2-"; } # was no such nick/channel set REPL_301! { return formatWhois("away", "$2-"); } set REPL_307! { return formatWhois("register", "\c35\b $+ $1 $+ \b\c33 $2-"); } set REPL_311! { return "$nnn \c35\b $+ $1 \b\c14[\c35 $+ $2 $+ \r@\r $+ $3 $+ \c14]:\c45 $5-"; } set REPL_312! { return formatWhois("server", "\c36 $+ $2 \c33\r(\r $+ $3- $+ \r)\r"); } set REPL_313! { return formatWhois("ircop", "\c35\b $+ $1 \b\c33 $+ $2-"); } set REPL_314! { return formatWhois("who was", "\c35\b $+ $1 \b\r[\r $+ $2 $+ \r@\r $+ $3 $+ \r]\c33:\r $5-"); } set REPL_317! { return formatWhois("idle", formatTime($2)); } set REPL_330! { return formatWhois("register", "\c33 $+ $1 $3- \c35\b $+ $2"); } set REPL_318 { return ""; } # hide END of /WHOIS set REPL_369 { return ""; } # hide END of /WHOWAS set REPL_319! { local('$output $temp'); foreach $temp (split(' ', $2-)) { if (charAt($temp, 0) eq "@") { $temp = "\c10@\c40" . substr($temp, 1); } if (charAt($temp, 0) eq "+") { $temp = "\c06+\c40" . substr($temp, 1); } if (charAt($temp, 0) eq "%") { $temp = "\c03%\c40" . substr($temp, 1); } $output = "$output $+ $temp "; } return formatWhois("channels", "$output"); } set REPL_320! { return formatWhois("secure", "$1 $2-"); } set REPL_338! { return formatWhois("host", "$2"); } sub formatWhois { local('$temp'); $temp = " \b" . charAt("$1", 0) . "\b" . substr("$1", 1); return "$nnn \c45 $+ $[12]temp $+ \c14:\c45 $2"; } # # formatted numerics # set REPL_403 { return formatNumeric($1, $2-); } # no such channel set REPL_442 { return formatNumeric($1, $2-); } # you're not on that channel set REPL_473 { return formatNumeric($1, $2-); } # banned set REPL_474 { return formatNumeric($1, $2-); } # invite set REPL_475 { return formatNumeric($1, $2-); } # key set REPL_433 { return formatNumeric($1, $2-); } # nick in use sub formatNumeric { if (charAt($1, 0) eq "#") { return "$nnn \c36\b $+ $1 $+ \b\c33 $2"; } return "$nnn \c35\b $+ $1 $+ \b\c33 $2"; } # # Formatted Server Output Type Stuff # # /who reply set REPL_352! { return "\c36 $+ $1 \c35\b $+ $[10]5 \b\c40 $+ $[2]6 $7 \c14[\c35 $+ $2 $+ @ $+ $3 $+ \c14]\c40 on\c36 $4 $+ \c14:\c40 $8-"; } set REPL_315 { return; } # /mode #channel +b reply $_bancount = 0; set CHANNEL_BANLIST { local('@info'); @info = split('!', $3); $_bancount++; return "\c40 $+ $[2]_bancount -\c36 $1 $+ \c14:\c40 ban\c39 $2 \c14[\c40by " . @info[0] . "\c14]"; } set CHANNEL_BANLIST_END { if ($_bancount == 0) { return "$nnn \c36 $+ $1 \c40no bans set"; } $_bancount = 0; return; } # hide end of banlist reply... # /links reply set REPL_364! { # return "\C36 $+ $[20]1 \c33-\b>\b\c36 $[20]2 \c33\r(\r\b $+ $3 \bhops\r):\r $4-"; return "\c40 $+ $[20]1 -> $[20]2 \c14[\c40\b $+ $3 \bhops\c14]:\c15 $4-"; } set REPL_365 { return; } # /list reply set REPL_321! { return "\c40\bC\bhannel \bU\bsers \bT\bopic"; } set REPL_322! { return "\c35\b $+ $[20]1 $+ \b\c40 $[-5]2 $3-"; } set REPL_323 { return; } set NUMERIC! { return "$nnn $parms"; } set CTCP_REQUEST { if ($2- eq "" || ($1 eq "PING" && -isnumber $2) ) { return "\c19\b $+ $nick \b\c14[\c19 $+ $address $+ \c14]\c19 requested CTCP ".uc($1)." from $target"; } else { return "\c19\b $+ $nick \b\c14[\c19 $+ $address $+ \c14]\c19 requested CTCP ".uc($1)." from $target $+ \c14:\c15 $parms"; } } set SBAR_LEFT { local('$ime $ichan'); if ($me ison $query) { $ime = getStatusSymbol($me, $query) . "\c32" . $me; $ichan = "\c1on\c32 $query"; } else { $ime = "\c32 $+ $me"; if ($query ne "") { $ichan = "\c1Query:\c32 $query"; } } if ($mymode ne "+") { $ime = "$ime \c1 $+ $mymode"; } return "\c1[\c32Lag\c1:\c32 $lag $+ \c1] $time $ime $ichan"; } set SBAR_RIGHT { if (size(getActiveConnections()) > 0) { foreach $var (getActiveConnections()) { if (getConnectionType($var) eq "RECEIVE") { $pc = getDCCPercentage($var); if ($DCC_WATCH_TIMER eq "") { sub timertemp { refreshWindow(getActiveWindow()); } $DCC_WATCH_TIMER = addTimer(&timertemp, 2000); } return "\c1[\c32" . left(getDCCFileName($var), 25) . "\c1:\c32 $+ $pc $+ %\c1]"; } } } if ($DCC_WATCH_TIMER ne "") { stopTimer($DCC_WATCH_TIMER); $DCC_WATCH_TIMER = ""; } if (!-isSetT "ui.showtabs" && isServerConnected()) { return "\c1[\c32".getServerHost()."\c1:\c32".(getSessionId() + 1)."\c1]"; } return "\c1j\c32IRC\c1ii"; } set ON_CHANNELS { return "$nnn Channels: $parms"; } set SET_IGNORE { if ($0 eq "add") { return "$nnn Added\b $parms \bto ignore list"; } if ($0 eq "remove") { return "$nnn Removed\b $parms \bfrom ignore list"; } } set SET_NOTIFY { if ($0 eq "add") { return "$nnn Added\b $parms \bto notify list"; } if ($0 eq "remove") { return "$nnn Removed\b $parms \bfrom notify list"; } } set PROCESS_DATA! { return "\c14[\c40 $+ $pid $+ \c14]\c15 $parms"; } # # DCC Chat Related # set DCC_REQUEST { if ($2 eq "SEND") { return "$nnn DCC\c39 SEND \c40request from $nick $+ \c14:\c39 $3 \c14[\c40" . formatBytes($6) . "\c14]"; } return "$nnn DCC\c39 $2 \c40request from $nick"; } set CHATMSG { return "\c28=\b $+ $0 $+ \b=\c15 $1-"; } set SEND_CHAT_ERROR { return "$nnn there is no open chat with $0"; } set SEND_CHAT { if (-iswindow ("=" . $0)) { return "\c28=\b $+ $me $+ \b=\c15 $1-"; } else { return "\c28-> =\b $+ $0 $+ \b=\c15 $1-"; } } set CHAT_OPEN { return "$nnn Chat with\c35 $nick \c40opened."; } set CHAT_CLOSE { return "$nnn Chat with\c35 $nick \c40lost: $1-"; } # # /dcc command... don't want anyone feeling to left out :) # alias dcc { if ($1 ne "") { call("/ $+ $0-", "use-built-in-command-only"); return; } echo("\c17\bT\bype \bN\bick \bI\bnformation"); foreach $conn (getActiveConnections()) { $type = getConnectionType($conn); $nick = getDCCNickname($conn); $info = DCCInformation($conn); echo("\c36$[7]type \c35$[10]nick $info"); } } set DCC_LIST_TYPE { $conn = getDCCConnection($this); return "\c36" . getConnectionType($conn); } set DCC_LIST_NICK { $conn = getDCCConnection($this); return "\c35" . getDCCNickname($conn); } sub DCCInformation { local('$info $conn'); $conn = $1; $type = getConnectionType($conn); if (!-isdccopen $conn) { return "Waiting..."; } if ($type eq "CHAT") { $info = "\c33\bI\bdle\r:\r " . formatTime(getDCCIdleTime($conn) / 1000); } else { $info = "\r(\r\bE\bst\r:\r " . formatTime2(getTimeRemaining($conn)) . "\r)\r"; local('$a $b $c $d'); $a = getDCCPercentage($conn); $b = getDCCFileName($conn); $c = formatBytes(getTransferRate($conn)) . "/s"; $d = "\r(\r\bS\bize\r:\r " . formatBytes(getDCCSizeSoFar($conn)) . "\r)\r"; $info = "\c38 $+ $[21]info $+ $[-2]a $+ \r%\r $[7]c $+ $[22]d $+ $b" } return $info; } set DCC_LIST_INFORMATION { return DCCInformation(getDCCConnection($this)); } set RECEIVE_COMPLETE { $dcc = getDCCConnection($this); $file = getDCCFileName($dcc); $rate = formatBytes(getTransferRate($dcc)) . "/s"; return "$nnn Receive of $file from $nick complete at $rate"; } set SEND_COMPLETE { return "$nnn Send to $nick complete"; } set RECEIVE_START { $dcc = getDCCConnection($this); $file = getDCCFileName($dcc); return "$nnn Receive of $file from $nick has started"; } set SEND_START { printf("Start of send to $nick"); return "$nnn Send to $nick has started"; } set RECEIVE_FAILED { return "$nnn Receive from $nick has failed\c14:\c40 $1-"; } set SEND_FAILED { return "$nnn Send to $nick has failed: $1-"; } # # Normal DCC Messages.. always fun # set RESUME_SUCCEEDED { return "$nnn Resume request to $nick successful"; } set RESUME_FAILED { return "$nnn Resume request to $nick \bfailed\b"; } set RESUME_REQUEST_ERROR { return "$nnn $nick has made a jacked up resume request"; } set RESUME_REQUEST { return "$nnn $nick has requested to resume the dcc transfer"; } set RESOLVED_LOCALINFO { return "$nnn Resolved local host to\B $0"; } # /dns reply set RESOLVED_HOST { if ($2- ne "") { return "$nnn Resolved\b $0 \bto $2 $+ \r[\r $+ $1 $+ \r]\r"; } else { return "$nnn Unable to resolve $0 $+ \r:\r host not found"; } } # # aliases # alias notify { if ($1 ne "") { call("/ $+ $0-", "use-built-in-command-only"); return; } local('$output $otime $addy'); echo("$nnn Signed on\c14:"); foreach $var (getSignedOnUsers()) { $otime = formatTime2(onlineFor($var)); $addy = "\c14[\c40" . getAddressFromNotify($var) . "\c14]\c40"; echo("\c40 $[12]var $[40]addy $otime"); } echo("$nnn Signed off\c14:"); foreach $var (getSignedOffUsers()) { $output = "$output $var"; } echo(" $output"); } set IDENT_REQUEST { return "$nnn Ident request from\c36 $0"; } set SERVER_ERROR { return "$nnn Server \berror\b\c14:\c40 $parms"; } set IRC_ATTEMPT_CONNECT { return "$nnn Attempting to connect to\c36 " . $0; } set IRC_DISCONNECT { return "$nnn Disconnected from\c25 " . getServerHost() . "\c14:\c40 $parms"; } set IRC_CONNECT { return "$nnn Connected to\c36 " . getServerHost() . "\b"; } set IRC_RECONNECT { return "$nnn Attempting to reconnect to\r\b " . getServerHost() . "\b"; } set INVITE { return "$nnn $nick invites you to\c14:\c36 $1"; } set REPL_341 { return "$nnn Inviting\c35 $1 \c40to\c14:\c39 $2"; }