Last active
February 28, 2021 00:29
-
-
Save sean3z/d4395b3964b9649449910e5625bf7f90 to your computer and use it in GitHub Desktop.
Tiberian Sun Filter (TSF) 3.01
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;## | |
;# ============== | |
;# Tiberian Sun Filter - TSF | |
;# $Id: 3.01 02/02/11 14:55:01 Sean Wragg <[email protected]> - sean3z $ | |
;# http://triggsolutions.com/mirc-snippets/tiberian-sun-filter-3-01/415/ | |
;# ============== | |
;# | |
;# INSTALLTION - | |
;# 1) open mIRC/load 'tsf.msl' into remotes - type /tsf | |
;# 2) append "127.0.0.1 servserv.westwood.com" to hosts configuration file | |
;# probably - C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS | |
;# 3) open TS and enjoy | |
;# | |
;# FUNCTIONS - | |
;# /m <text> - msg channel action | |
;# /o <[2-8]|[off]> - sets joingame override (player patch). "/o off" to disable. | |
;# /n <nick> - messages channel with cache'd nicks | |
;# /l - lists currently games open | |
;# /f <nick> - finds a nick and returns their location | |
;# /p <nick> <message> - pages nick with supplied text | |
;# /u <nick> [1] - searches database for alternatives on supplied nick. "/u <nick> 1" to override cache. | |
;## | |
alias tsf { | |
socklisten -d 127.0.0.1 tsfs 4005 | |
socklisten -d 127.0.0.1 tsfl 4000 | |
hmake tsf.cache | |
check.tsf.update 3.01 | |
echo -a 12Tiberian Sun Filter (TSF) 3.01 | |
echo -a Author: Sean Wragg <[email protected]> | |
echo -a URL: http://triggsolutions.com/xih/ | |
} | |
alias -l e { | |
var %w = @TSF | |
if ( !$window(%w) ) { window -e0k0nx %w } | |
aline %w $1- | |
} | |
alias -l p { | |
Lw $2 $+($chr(58), $1,!u@h) PAGE u $+($chr(58), $3-) | |
} | |
alias -l Sw { | |
var %s = $+(tsf.S-, $1) | |
sockwrite -n %s $2- | |
} | |
alias -l Lw { | |
var %s = $+(tsf.L-, $1) | |
sockwrite -n %s $2- | |
e Lr: -> $1 $2- | |
} | |
alias -l Rw { | |
var %s = $+(tsf.R-, $1) | |
sockwrite -n %s $2- | |
e Rr: <- $1 $2- | |
} | |
alias -l stou { | |
if ( $1 < 0 ) { return $calc($1 + $base(ffffffff, 16, 10) + 1) } | |
else { return $1 } | |
} | |
alias fetchnick { | |
var %n = $iif($1 == ip, $4, $3) | |
if ( !$hget(tsf.cache, %n) ) { | |
var %s = $+(tsf.fetch-, $calc($ticks * $rand(1, 100))) | |
sockopen %s triggsolutions.com 80 | |
sockmark %s $1- | |
} | |
else { | |
p %n $2 $hget(tsf.cache, %n) (cache) | |
} | |
} | |
;# ip.mark = %mode %id %ip %nick | |
;# nick.mark = %mode %id %nick | |
on *:sockopen:tsf.fetch-*: { | |
var %s = $sockname, %w = $iif($gettok($sock(%s).mark, 1, 32) == ip, ?a=, ?n=) | |
sockwrite -n %s HEAD $+(/xih/get.php, %w, $gettok($sock(%s).mark, 3, 32), &tsfv=3) HTTP/1.1 | |
sockwrite -n %s Host: triggsolutions.com | |
sockwrite -n %s $crlf | |
} | |
on *:sockread:tsf.fetch-*: { | |
var %s = $sockname, %m = $gettok($sock(%s).mark, 1, 32) | |
var %id = $gettok($sock(%s).mark, 2, 32), %r | |
var %n = $gettok($sock(%s).mark, $iif(%m == ip, 4, 3), 32) | |
sockread %r | |
if ( $left(%r, 6) == Nicks: ) { | |
var %o = $remtok($mid(%r, 8), %n, 1, 44) | |
if ( %o ) { | |
hadd tsf.cache %n %o | |
p %n %id %o | |
} | |
else { | |
p %n %id No alternatives found! | |
} | |
} ;# endif Nicks: | |
else if ( $left(%r, 4) == NaN: ) { | |
p %n %id No alternatives found! | |
} | |
} | |
on *:socklisten:tsfs:{ | |
var %s = $+(tsf.S-, $ticks) | |
sockaccept %s | |
} | |
on *:sockread:tsf.S-*:{ | |
var %s = $sockname, %r | |
var %id = $gettok(%s, 2, 45) | |
sockread %r | |
if ( !%r ) halt | |
tokenize 32 %r | |
if ( $1 == QUIT ) { | |
Sw %id : 610 u 1 | |
Sw %id : 605 u :127.0.0.1 4000 '0:XWIS (filtered)' -8 36.1083 -115.0582 | |
Sw %id : 607 | |
sockclose %s | |
} | |
} | |
on *:socklisten:tsfl:{ | |
var %s = $+(tsf.L-, $ticks) | |
sockaccept %s | |
} | |
on *:sockread:tsf.L-*:{ | |
var %s = $sockname, %r | |
var %id = $gettok(%s, 2, 45) | |
var %ss = $+(tsf.R-, %id) | |
sockread %r | |
if ( !%r ) halt | |
tokenize 32 %r | |
if ( $1 == CVERS ) { | |
;# do nothing | |
} | |
else if ( $1 == PASS ) { | |
;# do nothing | |
} | |
else if ( $1 == NICK ) { | |
sockmark %s $2 | |
} | |
else if ( $1 == apgar ) { | |
sockmark %s $sock(%s).mark $2 | |
} | |
else if ( $1 == SERIAL ) { | |
sockmark %s $sock(%s).mark $2 | |
} | |
else if ( $1 == USER ) { | |
;# do nothing | |
} | |
else if ( $1 == verchk ) { | |
;# do nothing | |
} | |
else if ( $1 == SETOPT && !$sock(%ss) ) { | |
sockopen %ss xwis.net 4001 | |
sockmark %s $sock(%s).mark $2 | |
} | |
else if ( $1 == JOINGAME && $right($left($2, -7), -1) == $gettok($sock(%s).mark, 1, 32) ) { | |
Rw %id $iif($hget(tsf.cache, JOINGAME), $puttok($1-, $hget(tsf.cache, JOINGAME), 4, 32), %r) | |
} | |
else if ( $1 == PRIVMSG && $left($3, 2) == :/ ) { | |
var %cmd = $right($3, -2) | |
if ( %cmd == m ) { | |
Lw %id $+($gettok($sock(%s).mark, 1, 32),!u@h) PRIVMSG $2 $+(:ACTION, $4-, ) | |
Rw %id PRIVMSG $2 $+(:ACTION, $4-, ) | |
} | |
else if ( %cmd == f ) { | |
Rw %id FINDUSEREX $4 | |
} | |
else if ( %cmd == o ) { | |
if ( $4 == off ) { | |
hdel tsf.cache JOINGAME | |
p tsf %id Player Patch Override [Off] | |
} | |
else { | |
hadd tsf.cache JOINGAME $4 | |
p tsf %id $hget(tsf.cache, JOINGAME) Player(s) Patch Override [On] | |
} | |
} | |
else if ( %cmd == p ) { | |
Lw %id $+(:,$gettok($sock(%s).mark, 1, 32),!u@h) PAGE $gettok($sock(%s).mark, 1, 32) :page $+($chr(40), $4, $chr(41)) $5- | |
Rw %id PAGE $4 $+($chr(58), $5-) | |
var %w = $+(@TSF.Page[, $4, ]) | |
if ( !$window(%w) ) { window -e0k0nx %w } | |
aline %w $+($gettok($sock(%s).mark, 1, 32),$chr(58)) $5- | |
} | |
else if ( %cmd == n ) { | |
if ( $hget(tsf.cache, $4) ) { | |
Lw %id $+($gettok($sock(%s).mark, 1, 32),!u@h) PRIVMSG $2 $+(:, $4, $chr(32), =, $chr(32), $hget(tsf.cache, $4)) | |
Rw %id PRIVMSG $2 $+(:, $4, $chr(32), =, $chr(32), $hget(tsf.cache, $4)) | |
} | |
else { | |
p tsf %id No cached alternatives for $4 | |
} | |
} | |
else if ( %cmd == l ) { | |
set %tsf.pagelist $2 | |
Rw %id LIST 18 18 | |
} | |
else if ( %cmd == u ) { | |
if ( $hget(tsf.cache, $4) && !$5 ) { | |
p $4 %id $hget(tsf.cache, $4) (cache) | |
} | |
else { | |
var %f = $+(tsf.fetch-, $calc($ticks * $rand(1, 100))) | |
sockopen %f triggsolutions.com 80 | |
sockmark %f user %id $4 | |
} | |
} | |
else { | |
Rw %id $1- | |
} | |
} | |
else if ( $sock(%ss) ) { | |
Rw %id $1- | |
} | |
if ( $1 == QUIT ) { | |
sockclose %s | |
sockclose %ss | |
} | |
} | |
on *:sockclose:tsf.L-*:{ | |
var %id = $gettok($sockname, 2, 45) | |
var %ss = $+(tsf.R-, %id) | |
sockclose $sockname | |
sockclose %ss | |
} | |
on *:sockopen:tsf.R-*:{ | |
var %id = $gettok($sockname, 2, 45) | |
var %ss = $+(tsf.L-, %id) | |
Rw %id CVERS 11012 4608 | |
Rw %id PASS supersecret | |
Rw %id NICK $gettok($sock(%ss).mark, 1, 32) | |
Rw %id apgar $gettok($sock(%ss).mark, 2, 32) 0 | |
Rw %id SERIAL $gettok($sock(%ss).mark, 3, 32) | |
Rw %id USER UserName HostName irc.westwood.com :RealName | |
Rw %id verchk 32512 720908 | |
Rw %id SETOPT $gettok($sock(%ss).mark, 4, 32) | |
} | |
on *:sockread:tsf.R-*:{ | |
var %s = $sockname, %r | |
var %id = $gettok(%s, 2, 45) | |
var %ss = $+(tsf.L-, %id) | |
sockread %r | |
if ( !%r ) halt | |
tokenize 32 %r | |
if ( $2 == STARTG ) { | |
p tsf %id Host has started the game... | |
Lw %id %r | |
} | |
else if ( $2 == 326 && %tsf.pagelist ) { | |
Lw %id : $+ $+($right($left($4, -7), -1), !u@h) PAGE $gettok($sock(%ss).mark, 1, 32) : $+ $gettok($11, 9, 44) $+([, $5, /, $right($left($gettok($11, 2, 58), 3), 1), ]) $iif($8 == 1, [T]) $iif($9 == 256, [B]) $iif($left($11, 3) == 384, [P]) | |
;# Rw %id PRIVMSG %tsf.pagelist : $+ $+($chr(40), $right($left($4, -7), -1), $chr(41)) $gettok($11, 9, 44) $+([, $5, /, $right($left($gettok($11, 2, 58), 3), 1), ]) $iif($8 == 1, [T]) $iif($9 == 256, [B]) $iif($left($11, 3) == 384, [P]) | |
} | |
else if ( $2 == 323 && %tsf.pagelist ) { | |
set %tsf.pagelist 0 | |
} | |
else if ( $2 == JOINGAME ) { | |
var %n = $right($gettok($1, 1, 33), -1), %a = $longip($stou($8)) | |
if ( %n != $gettok($sock(%ss).mark, 1, 32) ) { | |
fetchnick ip %id %a %n | |
} | |
Lw %id %r | |
} | |
else if ( $2 == 398 ) { | |
if ( $4 == 0 ) { | |
p tsf %id user in $right($gettok($5, 1, 44), -1) | |
} | |
else if ( $4 == 1 ) { | |
p tsf %id user not online | |
} | |
else { | |
p tsf %id user in game | |
} | |
} | |
else if ( $2 == 353 && $left($5, 5) != #Lob_ ) { | |
var %h = $right($left($5, -7), -1) | |
var %s = $right($6-, -1), %x = $numtok(%s, 32) | |
while ( %x ) { | |
var %b = $gettok(%s, %x, 32) | |
var %n = $gettok(%b, 1, 44), %a = $longip($stou($gettok(%b, 3, 44))) | |
if ( $left(%n, 1) == @ ) { %n = $right(%n, -1) } | |
if ( %n != $gettok($sock(%ss).mark, 1, 32) ) { | |
fetchnick ip %id %a %n | |
} | |
dec %x | |
} | |
Lw %id %r | |
} | |
else if ( $2 == 353 && $left($5, 5) == #Lob_ ) { | |
Lw %id $replace($1-, @XWISAdmin, @TSF) | |
} | |
else if ( $2 == PAGE ) { | |
var %n = $right($gettok($1, 1, 33), -1) | |
;# if ( %n == xwis ) halt | |
var %w = $+(@TSF.Page[, %n, ]) | |
if ( !$window(%w) ) { window -e0k0nx %w } | |
aline %w $+(%n,$chr(58)) $right($4-, -1) | |
Lw %id %r | |
} | |
else { | |
Lw %id %r | |
} | |
} | |
on *:sockclose:tsf.R-*:{ | |
var %s = $sockname | |
var %id = $gettok(%s, 2, 45) | |
var %ss = $+(tsf.L-, %id) | |
sockclose %s | |
sockclose %ss | |
} | |
alias check.tsf.update { | |
var %s = $+(tsf.version-, $ticks) | |
sockopen %s triggsolutions.com 80 | |
} | |
on *:sockopen:tsf.version-*: { | |
var %s = $sockname | |
sockwrite -n %s HEAD /xih/version.php HTTP/1.1 | |
sockwrite -n %s Host: triggsolutions.com | |
sockwrite -n %s $crlf | |
sockmark %s 3.01 | |
} | |
on *:sockread:tsf.version-*: { | |
var %s = $sockname, %r | |
sockread %r | |
if ( $left(%r, 6) == TSFVR: ) { | |
if ( $mid(%r, 8) == $sock(%s).mark ) { | |
echo -a Version: 3Current (3.01) | |
} | |
else { | |
echo -a Version: 4Outdated (3.01) -> $mid(%r, 8) | |
echo -a Please visit http://triggsolutions.com/xih/ | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment