Skip to content

Instantly share code, notes, and snippets.

@sean3z
Last active February 28, 2021 00:29
Show Gist options
  • Save sean3z/d4395b3964b9649449910e5625bf7f90 to your computer and use it in GitHub Desktop.
Save sean3z/d4395b3964b9649449910e5625bf7f90 to your computer and use it in GitHub Desktop.
Tiberian Sun Filter (TSF) 3.01
;##
;# ==============
;# 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