/* Last updated: November 12, 2006 To Install: -place this text file in your mIRC directory -in mIRC type: /load -rs evilFiend.txt -click "Yes" You will now see "ETF Browser" when you right click in mIRC Happy Fragging! =) Features: -Auto join when a server has a spot available -Auto join when the player number is at least X -Auto join when the map changes -Double click a server IP from your IRC channel -Option to exit mIRC when joining a server -Automatically join (Red/Blue/Autoteam/Spec) on connect -Automatically start as your favorite class. ex: Soldier -Auto record a demo -Auto "logfile 3" -Ability to parse the etconsole.log (display what players said during the rounds you played) -Select your alias from a drop down box (nicks are taken from configs in your ETF folder) -Refresh a server every X number of seconds -Buddies list: Lets you know when your buddies are playing (if monitoring is enabled) -Estimate how much time is left in the round (if monitoring is enabled) -Remember server passwords -Config, devmap and demoplay features -Open a mIRC window for sending rcon commands to your servers -Option for sending away messages to specific channels/nicks ("IRC away" link) -Automatically cancel your away message if you return to mIRC within 30 seconds of connecting to a server -Any player with a guild/clan tag that matchs the ones you specify will be shown with your other online buddies. ("tags" link) -Create your own ETF.bat to be executed on connect (kill active apps...) -Fullscreen buddies list -Alert system (alerts you when X number of buds/tags are on 1 server, or when your favorite map(s) is being played with a high # of players) -Alert methods: Fullscreen flash, taskbar flash, show buddies list, mIRC beep, echo in current mIRC window -Mute/Un-mute toggle (s_volume) -mIRC will beep when punkbuster takes a screenshot of your screen ("ss alert" checkbox) -identifies each player's team color (whenever possible... no spectators) */ ON *:LOAD:{ if *evilFiend* iswm $script { eF.3 http://www.geocities.com/fiendish69_1999/evilFiend.txt eF.3 http://www.geocities.com/fiendish69_1999/ETF_mIRC.jpg eF.3 Note: eF.3 -To add/remove players from your buddies list, you can double click their nicks in the scores or history list eF.3 -Only servers prefixed with a ~ will be scanned for buddies. Use the ~ button to add/remove servers to be monitored (smallest button in the script) eF.3 -To activate server monitoring, you will need to place a check beside "monitor ~servers/buds" eF.3 -When your buddies are online, they will appear in the window that pops up by clicking the "monitor ~servers/buds" link. Double click this window to move it eF.3 -Right click in your buddies list to change font or switch to fullscreen (auto-font) eF.3 - eF.3 ETF.bat eF.3 -If checked, ETF.bat will be executed everytime you connect to a server. eF.3 -To use this feature, you will need to manually create this file and place it in the same folder as evilFiend.txt. eF.3 -As an example, my ETF.bat looks something like this: eF.3 - eF.3 gaming.kx eF.3 pskill.exe firefox.exe eF.3 pskill.exe foobar2000.exe eF.3 pskill.exe iexplore.exe eF.3 pskill.exe wmplayer.exe eF.3 - eF.3 (pskill.exe from sysinternals.com to kill apps & gaming.kx from kxproject.com to reduce the bass coming out of my soundcard) eF.3 - } if $dialog(eF) { dialog -x eF eF } } ON *:START:{ if *evilFiend* !iswm $script { eF.3 Please do not rename the script. Keep it named evilFiend.txt :p } unset %eF.* eF.l b init eF.l s init eF.l p init if !$isfile(" $+ $hget(eF.lp,ETdir) $+ ET.exe $+ ") { var %x "C:\Program Files\Wolfenstein - Enemy Territory\ET.exe" if $isfile(%x) { eF.l p ETdir $nofile(%x) } elseif $sdir($mircdir,Please locate your ET folder.) { eF.l p ETdir $ifmatch } if !$isfile($hget(eF.lp,ETdir) $+ ET.exe) { write $mircdir $+ ET.exe eF.l p ETdir $mircdir } } set %eF.ETdir $hget(eF.lp,ETdir) set %eF.ETFdir %eF.ETdir $+ ETF\ if !$hget(eF.lp,eF.class) { eF.l p eF.class Recon } if !$hget(eF.lp,eF.spec) { eF.l p eF.spec Follow Red } set %eF.classes Recon Sniper Soldier Grenadier Paramedic Minigunner Flametrooper Agent Engineer Civilian RandomPC set %eF.specs Follow Red;Follow Blue;Chase Red;Chase Blue;FreeFlight var %i 1, %m etf_allduel etf_assaultforts etf_bases etf_canalzone etf_chaos etf_forts etf_gotduck etf_hardcore etf_japanc etf_lastresort etf_mach etf_muon etf_nocturne etf_nowjump etf_orbital etf_openfire etf_rock etf_silverfort etf_smooth etf_spazball etf_stag etf_well while $gettok(%m,%i,32) { hadd -m eF.maps $ifmatch inc %i } if !$hget(eF.lp,eF.team) { eF.l p eF.team Autoteam } set %eF.teams Blue Red Autoteam Spectator eF.l p eF.ap.s 4 if $hget(eF.refresh) { hfree eF.refresh } hmake eF.refresh 100 if $hget(eF.tmp) { hfree eF.tmp } hmake eF.tmp 100 if $hget(eF.lp,eF.time-buds) { eF.sec.init } if $hget(eF.ls) { var %n $hget(eF.ls,0).item while %n { if !$eF.is.ip2($hget(eF.ls,%n)) { if $exists($+(",$scriptdir,eF.ls.txt.bak,")) { .copy -o $+(",$scriptdir,eF.ls.txt.bak,") $+(",$scriptdir,eF.ls.txt,") } else { var %d = $input(Please do not manually edit the eF.ls.txt file. Use the buttons/links in the script instead. Unable to recover... eF.ls.txt.bak does not exist.,o,Error) .remove $+(",$scriptdir,eF.ls.txt,") } eF.l s init break } dec %n } } if !$hget(eF.ls,1) { hfree eF.ls eF.l s 1 206.204.189.62:27960 Railbait.com (I) eF.l s 2 67.18.158.150:27960 Railbait.com (II) } eF.l p eF.bud.fs 0 .log off @eF.buddies @eF.comms @eF.flash if !$hget(eF.lp,eF.vol) { eF.l p eF.vol un-muted } if !$hget(eF.lp,eF.echo) { eF.l p eF.echo on } if !$hget(eF.lp,eF.alert1342) { eF.l p eF.alert1342 any_map } if $hget(eF.lp,eF.alert.os) !isnum 2-7 { eF.l p eF.alert.os 1 } if $hget(eF.lp,eF.alert.o) == 8 { eF.l p eF.alert.o $$hget(eF.lp,eF.alert.os) } if !$hget(eF.lp,eF.alert1302) { eF.l p eF.alert1302 99 } if !$hget(eF.lp,eF.alert1312) { eF.l p eF.alert1312 99 } if !$hget(eF.lp,eF.alert1322) { eF.l p eF.alert1322 99 } if !$hget(eF.lp,eF.alert1332) { eF.l p eF.alert1332 99 } if $hget(eF.names) { hfree eF.names } hmake eF.names 100 titlebar .timereF.sec -o 0 1 eF.sec if $file(%eF.ETdir $+ ET.exe).size { var %i = $findfile(" $+ %eF.ETFdir $+ ",*.pk3,0,1,if ETF_pak* !iswm $nopath($1-) && mp_bin* !iswm $nopath($1-) hadd -m eF.maps $gettok($nopath($1-),1,46)) if !$hget(eF.lp,eF.bud.font) { eF.l p eF.bud.font $window(status window).fontsize } %i = $findfile(" $+ %eF.ETdir $+ ",*.cfg,0,2,eF.getnames $1-) } } ALIAS eF.GETNAMES { var %n = 0,%t = $lines($1-) while %n <= %t { if $regex($read($1-,r,/seta* name/,%n),/seta? name "?([^"\;]+)) { var %ml = $regml(1) hadd eF.names $replace($eF.clean.name(%ml),$chr(32),_) %ml if %n == %t { break } %n = $calc($readn +1) } else { break } } } ALIAS eF.ETDIR { if !$file(%eF.ETdir $+ ET.exe).size { if $sdir($mircdir,Please locate your ET folder.) { eF.l p ETdir $ifmatch set %eF.ETdir $hget(eF.lp,ETdir) set %eF.ETFdir %eF.ETdir $+ ETF\ } halt } } ON *:DIALOG:eF:EDIT:236:{ if $did($did) isnum 1-999 { eF.l p eF.ap.s $did($did) .timereF.ap 0 $hget(eF.lp,eF.ap.s) eF.ap } else { did -r eF 236 } } ON *:DIALOG:eF:SCLICK:213:run -p http://www.enemy-territory.com ON *:DIALOG:eF:SCLICK:214:run -p http://www.ETFgame.com/files ON *:DIALOG:eF:SCLICK:235:{ eF.- eF.235 } ALIAS eF.- did -f eF 111 ALIAS eF.235 { var %x if $did(eF,235).state && !$1 { if !$eF.is.ip($did(eF,211)) { did -u eF 235 return } unset %eF.map.to.check did -era eF 236 $hget(eF.lp,eF.ap.s) did -e eF 238,239,240,242 set %eF.235 $did(eF,211) eF.gs %eF.235 if $hget(eF.lp,eF.ap.s) isnum 1-999 { .timereF.ap 0 $ifmatch eF.ap } } else { %x = 1 } if $1 || %x { .timereF.ap off did -b eF 241,243,244 did -bra eF 236 secs did -ub eF 238,239,240,242,244 eF.252 1 if $1 { did -u eF 235 } } } ALIAS eF.AP { if $dialog(eF) { eF.gs %eF.235 if $did(eF,235).state && ($did(eF,236) isnum 1-999) { eF.l p eF.ap.s $ifmatch .timereF.ap 0 $hget(eF.lp,eF.ap.s) eF.ap } } else { .timereF.ap off } } ON *:DIALOG:eF:SCLICK:101:{ eF.etdir if $did($did) == join { eF.go now } else { eF.124 } } ALIAS eF.GO { eF.etdir did -rh eF 257 var %x,%r,%go,%y,%ip $eF.is.ip($did(eF,211)), %args +set net_qport $rand(10000,65535) +set cg_execMapConfigs 2 +set fs_game ETF +connect %ip,%340 $did(eF,340).seltext var %pass = $did(eF,501) if !%ip { return } if %pass && (%pass != "need pw") { eF.l p %ip $did(eF,501) %args = %args +password %pass } if %340 || $did(eF,340).text { if %340 { %y = $iif($remove($hget(eF.names,%340),"),$ifmatch,%340) } else { %y = $did(eF,340).text } if !%y { %y = ETF_Player } %args = %args +set name %y } %args = %args +set s_volume $iif($did(eF,993) == muted,0,1) if $1 == now { %go = 1 } elseif $did(eF,235).state { if !$did(eF,252).state { flash -br3 Status Window Connect? eF.235 1 eF.min if $$?!"Connect? $crlf $+(%ip,$crlf,$dialog(eF).title,") { %go = 1 } else { did -u eF 239,240,242,252 did -r eF 244 } eF.top } else { %go = 1 } } if %go { if $did(eF,250) { %x = $+(wait 50;team $ifmatch,;wait 50;exec $did(eF,212),;) } if $did(eF,251) && ($did(eF,251) != FreeFlight) { %x = $+(%x,$ifmatch,;) } if $did(eF,540).state { %x = $+(%x,record_etf $ $+ Y_$a_$d_$D_$h$m,;) } if $did(eF,541).state { %x = $+(%x,logfile 3,;) } write -al $+ [ $calc($lines(" $+ %eF.ETFdir $+ etconfig.cfg $+ ") -1) ] $+(",%eF.ETFdir,etconfig.cfg") $+(;set activeaction ",%x,echo_ETF asdf;") if $exists($scriptdir $+ ETF.bat) && $hget(eF.lp,eF.bat) { run -np $scriptdir $+ ETF.bat } eF.252 1 eF.235 1 if $did(eF,255).state && $server { .timereF.after 30 1 eF.after } .timereF.fg off .timereF.x 1 32 dialog -x eF if $hget(eF.lp,eF.ExitMirc) { .timereF.exit 1 30 exit } if $window(@eF.buddies) { window -c @eF.buddies } eF.alert.s OFF run -p $+(",%eF.ETdir,ET.exe,") %args } } ALIAS eF.ALERT.S { if !$1 { tokenize 46 $hget(eF.lp,eF.alert.s) } did -ra eF 1201 $1 eF.l p eF.alert.s $1 var %x if $1 == ON { %x = $hget(eF.lp,eF.alert.os) } else { %x = 8 } did -c eF 1350 %x eF.l p eF.alert.o %x } ON *:DIALOG:eF:SCLICK:250:{ if $did($did).text != $hget(eF.lp,eF.team) { eF.l p eF.team $did($did).text } if $did($did).text == Spectator { didtok -ra eF 251 59 %eF.specs did -c eF 251 $findtok(%eF.specs,$hget(eF.lp,eF.spec),59) } else { didtok -ra eF 251 32 %eF.classes did -c eF 251 $findtok(%eF.classes,$hget(eF.lp,eF.class),32) } } ON *:DIALOG:eF:SCLICK:251:{ if ($did($did).text != $hget(eF.lp,eF.class)) && ($did(eF,250).text != Spectator) { eF.l p eF.class $did($did).text } elseif $did(eF,250).text == Spectator { eF.l p eF.spec $did($did).text } } ON *:DIALOG:eF:SCLICK:533:{ eF.l p eF.onTop $did($did).state if $did($did).state { eF.top } else { eF.min } } ON *:DIALOG:eF:SCLICK:534:{ eF.235 1 eF.l p eF.DesktopMode $did($did).state dialog -x eF eF } ON *:DIALOG:eF:SCLICK:535:eF.l p eF.ExitMirc $did($did).state ON *:DIALOG:eF:SCLICK:536:eF.l p eF.ss.alert $did($did).state ON *:DIALOG:eF:SCLICK:537:{ unset %eF.alert.spam* eF.l p eF.time-buds $did($did).state eF.alert.init if $did($did).state { eF.alert.s $hget(eF.lp,eF.alert.ss) did -v eF 110,1111,546 if $hget(eF.lp,eF.mon.pw) { did -c eF 546 } did -h eF 109 } else { window -c @eF.buddies did -h eF 110,1111,546 did -v eF 109 did -r eF 111 eF.tb eF.3 (ETF browser) monitoring disabled } eF.sec.init 2 2 } ON *:DIALOG:eF:SCLICK:546:{ eF.l p eF.mon.pw $did($did).state eF.pw.bud eF.sec.init } ALIAS EF.PW.BUD { if !$hget(eF.lp,eF.mon.pw) { var %i = $hget(eF.ls,0).item while %i { if %eF.pw [ $+ [ $gettok($hget(eF.ls,%i),1,32) ] ] { while $hfind(eF.buds,* $+ $gettok($hget(eF.ls,%i),1,32) $+ *,1,w).data { hdel eF.buds $ifmatch } unset %eF.playnum [ $+ [ $gettok($hget(eF.ls,%i),1,32) ] ] if !$timer(wtf) { .timereFwtf -m 1 500 eF.best.pub } } dec %i } eF.bud.update } } ON *:INPUT:@ETF_RCON_*:{ eF.cmd $gettok($active,3,95) $1- } ON *:DIALOG:eF:SCLICK:1000:{ if $left($did($did),1) == $chr(61) { eF.- return } did -ref eF 1003 did -e eF 1005 did -c eF 1001 1 did -c eF 1002 1 var %x = $gettok($did($did),1,40) if %x == ceasefire { didtok -a eF 1003 32 on off } if %x == gameindex { didtok -a eF 1003 59 1 (advanced);2 (one flag);3 (reverse) } if %x == map { eF.listmaps 1003 } } ON *:DIALOG:eF:SCLICK:1001:{ if $left($did($did),1) == $chr(61) { eF.- return } did -ref eF 1003 did -e eF 1005 did -c eF 1000 1 did -c eF 1002 1 } ON *:DIALOG:eF:SCLICK:1002:{ if $left($did($did),1) == $chr(61) { eF.- return } did -ref eF 1003 did -e eF 1005 did -c eF 1000 1 did -c eF 1001 1 var %x = $gettok($did($did),1,40) if %x == g_banRules { didtok -a eF 1003 59 0(no bans);1(TeamKills);2(TKs & rate/snaps);3(2 + CRC) } elseif %x == g_teamKillRules { didtok -a eF 1003 59 0(disable TK bans);1(enable TK bans) } elseif %x == g_friendlyFire { didtok -a eF 1003 59 0(none);half;armor;mirrorfull;mirrorhalf;mirrorarmor } elseif %x == g_gameindex { didtok -a eF 1003 59 1(advanced);2(one flag);3(reverse) } } ON *:DIALOG:eF:SCLICK:1005:{ var %x if $left($did(1000),1) != $chr(61) { %x = admin $gettok($did(1000),1,40) } if $left($did(1001),1) != $chr(61) { %x = $gettok($did(1001),1,40) } if $left($did(1002),1) != $chr(61) { %x = $gettok($did(1002),1,40) } if $did(eF,1003).seltext { eF.rcon $did(eF,211) %x $gettok($did(eF,1003),1,40) } else { eF.rcon $did(eF,211) %x $did(eF,1003) } } ALIAS eF.FAV.LOAD { did -r eF 109,110 var %i 1,%numfav $hget(eF.ls,0).item if %numfav { while %i <= %numfav { did -a eF 109,110 $gettok($hget(eF.ls,%i),2-,32) inc %i } } } ON *:DIALOG:eF:SCLICK:1301,1311,1321,1331:{ if $did($did).state && !$hget(eF.refresh,0).item { eF.nm } unset %eF.alert.spam* var %m $mid($did,3,1) eF.l p eF.alert.c $+ $did $did($did).state if $did($did).state { did -e eF 13 $+ %m $+ 2 if %m != 4 { did -e eF 13 $+ %m $+ 3 } if %m == 3 { did -e eF 1342 } if $istok(1311 1321,$did,32) { did -c eF 545 eF.l p eF.tags.check 1 } } else { did -b eF 13 $+ %m $+ 2 if %m != 4 { did -b eF 13 $+ %m $+ 3 } if %m == 3 { did -b eF 1342 } } } ON *:DIALOG:eF:EDIT:1302,1312,1322,1332:{ if $did($did) isnum 1-99 { eF.l p eF.alert $+ $did $did($did).text .timereF.wait.edit 1 2 unset %eF.alert.spam* } else { did -r eF $did } } ON *:DIALOG:eF:SCLICK:1342:{ unset %eF.alert.spam* eF.l p eF.alert $+ $did $did($did).seltext if $did($did).seltext == -Custom_list... { eF.min var %x $$input(When "-Custom_list..." is selected $+ $chr(44) any map that matchs the ones listed here will trigger an alert. (As long as the player number is high enough.),eo,Map List,[ $iif($hget(eF.lp,eF.alert.maps),$ifmatch,etf_map1 $+ $chr(44) $+ etf_map2 $+ $chr(44) $+ etf_map3...) ] ) if %x { if $chr(44) !isin %x { %x = $replace(%x,$chr(32),$chr(44)) } eF.l p eF.alert.maps $gettok($remove(%x,$chr(32)),1-,44) } eF.top } } ON *:DIALOG:eF:SCLICK:1302,1312,1322,1332:{ if $did($did).seltext isnum 1-99 { eF.l p eF.alert $+ $did $did($did).text unset %eF.alert.spam* } } ON *:DIALOG:eF:SCLICK:1350:{ if =Turn echo isin $did($did).seltext { if $hget(eF.lp,eF.alert.o) == 5 { did -c eF 1350 5 return } if $gettok($did($did).seltext,3,32) == off= { eF.l p eF.echo off did -o eF 1350 9 =Turn echo on= } else { eF.l p eF.echo on did -o eF 1350 9 =Turn echo off= } did -c eF 1350 $iif($hget(eF.lp,eF.alert.o),$ifmatch,1) } else { eF.l p eF.alert.o $did($did).sel if $did($did).sel isnum 2-7 { eF.l p eF.alert.os $did($did).sel } if $did($did).sel == 5 { eF.l p eF.echo on did -o eF 1350 9 =Turn echo off= } eF.alert.init } } ALIAS eF.124 { var %x $did(eF,124).seltext,%d if $did(eF,702) == main { if $istok(%eF.classes,$gettok(%x,1,46),32) { run -p $+(",%eF.ETFdir,classconfigs\,%x,") } else { run -p $+(",%eF.ETFdir,%x,") } return } elseif $did(eF,802) == main { %d = +pb_sv_disable +set g_suicideDelay 0 +devmap } elseif $did(eF,902) == main { %d = +set cg_execMapConfigs 0 +demo } run -p $+(",%eF.ETdir,ET.exe,") +set fs_game ETF %d %x +set s_volume $iif($did(eF,993) == muted,0,1) eF.bwins window -c @eF.buddies } ALIAS eF.MIN dialog -n eF ALIAS eF.TOP dialog $iif($hget(eF.lp,eF.ontop),-o,-n) $+ $1- eF eF ON *:DIALOG:eF:DCLICK:124,1241:{ if $did(eF,101) == join { var %c,%x $gettok($did($did).seltext,4-,95),%xx $replace(%x,$chr(32),;),%y = $hget(eF.lb,%xx) if $window(@eF.buddies) { window -u @eF.buddies } if $window(@eF.bud.hist) { window -u @eF.bud.hist } eF.min if !%y && %x != ;bot; && $$?!"Add %x to buddies list?" { eF.gs $did(eF,211) hide eF.l b $replace(%xx,chr(32),;) - } elseif %y && $$?!"Remove %x from buddies list?" { eF.l b rem %xx eF.bud.update } eF.top if $window(@eF.buddies) { window -o @eF.buddies } if $window(@eF.bud.hist) { window -o @eF.bud.hist } } elseif $did == 124 { eF.124 } } ON *:DIALOG:eF:SCLICK:109,110:{ if $did = 109 { did -c eF 110 $did($did).sel } else { did -c eF 109 $did($did).sel } var %ip $eF.pub.ip($did($did).sel) if !$eF.~($did($did).seltext) { unset %eF.playnum $+ %ip } if $did(eF,211) != %ip { .timereF.ap off eF.235 1 did -r eF 1241 did -uh eF 252 } eF.show.rcon %ip if %ip { eF.gs %ip } } ALIAS eF.SHOW.RCON { var %a 1000,1001,1002,1003,1005 var %b 1300,1301,1302,1303,1311,1312,1313,1321,1322,1323,1331,1332,1333,1342 var %c 1000,1001,1002 if $hget(eF.lp,rcon. $+ $1) { did -v eF %a did -h eF %b did -e eF %c } else { did -h eF %a did -v eF %b did -c eF %c 1 did -b eF %c $+ ,1003,1005 } } ON *:DIALOG:eF:SCLICK:1111:{ eF.fav.sel $gettok($hfind(eF.tmp,ml $+ $did($did).sel $+ *,1,w),2,59) } ON *:DIALOG:eF:SCLICK:112:{ if $did(eF,110).sel { eF.min if $$?!"Delete $did(eF,110).seltext " { eF.add v h unset %eF.playnum [ $+ [ $did(eF,211) ] ] var %i = $calc($hget(eF.ls,0).item - $did(eF,110).sel) var %s = $did(eF,110).sel while %i >= 0 { eF.l s %s $hget(eF.ls,$calc(%s +1)) inc %s dec %i } eF.l s rem $hget(eF.ls,0).item did -d eF 109,110 $did(eF,110).sel did -u eF 109,110 eF.sec.init } eF.top } } ON *:DIALOG:eF:SCLICK:117:{ eF.min var %x $?"ip:port? (example: 127.0.0.1:27960)" if !$eF.is.ip(%x) { var %x $?"invalid format, try again. (example: 127.0.0.1:27960)" } if !$eF.is.ip(%x) { eF.top return } var %ip = $eF.is.ip(%x) if $eF.pub.name($hfind(eF.ls,%ip $+ $chr(32) $+ *,1,w).data) { var %x = $input(This server is already in your list. ( $+ %ip $ifmatch $+ ),o,Duplicate) eF.top return } eF.l s $calc($hget(eF.ls,0).item +1) %ip $$?"server name?" if $$! { if $eF.~($ifmatch) { eF.sec.init } eF.gs %ip did -a eF 109,110 $$! eF.add h v } eF.top } ALIAS eF.ADD { did - $+ $$1 eF 513 did - $+ $$2 eF 1200 } ON *:DIALOG:eF:SCLICK:115:{ eF.etdir run -p explorer /n, /e, $+(",%eF.ETFdir,") } ON *:DIALOG:eF:SCLICK:116:run -p explorer /n, /e, $+(",$mircdir,") ON *:DIALOG:eF:SCLICK:991:{ eF.etdir var %p,%f = $+(",%eF.ETdir,ETFserver.bat,") if !$exists(%f) { if $istok(2K XP,$os,32) { %p = start /high } write %f %p et.exe +set dedicated 1 +set fs_game etf +exec etf_server.cfg } run -p %f if !$hfind(eF.ls,127.0.0.1:27960*,1,w).data { eF.l s $calc($hget(eF.ls,0).item +1) 127.0.0.1:27960 local .timereF.127 1 3 eF.gs 127.0.0.1:27960 did -ac eF 109,110 local eF.reset.serv.stats } else { eF.fav.sel 127.0.0.1:27960 } } ON *:DIALOG:eF:SCLICK:113:{ eF.- var %s = $did(eF,110).sel if %s { var %t = $did(eF,110).seltext,%txt = $hget(eF.ls,%s),%line = %s,%l = $calc(%line -1) if %line > 1 { did -o eF 109,110 %line $did(eF,110,%l) did -oc eF 109,110 %l %t eF.l s %line $hget(eF.ls,%l) eF.l s %l %txt } } } ON *:DIALOG:eF:SCLICK:993:{ eF.l p eF.vol $did(eF,993) if $did(eF,993) == muted { did -ra eF 993 un-muted eF.l p eF.vol un-muted } else { did -ra eF 993 muted eF.l p eF.vol muted } } ON *:DIALOG:eF:SCLICK:114:{ eF.- var %s = $did(eF,110).sel if %s { var %t $did(eF,110).seltext,%txt = $hget(eF.ls,%s),%l $calc(%s +1) if %s < $did(eF,110).lines { did -o eF 109,110 %s $did(eF,110,%l) did -oc eF 109,110 %l %t eF.l s %s $hget(eF.ls,%l) eF.l s %l %txt } } } ON *:DIALOG:eF:SCLICK:118:{ eF.- var %s = $did(eF,110).sel if !%s { eF.3 (ETF browser)  $+ $color(h) First, select a server from your list. } if $eF.~(%s) { eF.l s %s $gettok($hget(eF.ls,%s),1,32) $gettok($hget(eF.ls,%s),2-,126) var %i = $hfind(eF.buds,* $+ $gettok($hget(eF.ls,%s),1,32) $+ *,0,w).data while %i { hdel eF.buds $hfind(eF.buds,* $+ $gettok($hget(eF.ls,%s),1,32) $+ *,%i,w).data dec %i } eF.bud.update } else { eF.l s %s $gettok($hget(eF.ls,%s),1,32) $chr(126) $+ $gettok($hget(eF.ls,%s),2-,32) eF.gs $gettok($hget(eF.ls,%s),1,32) } eF.fav.load did -c eF 109,110 %s eF.sec.init eF.tb } ON ^*:HOTLINK:*.*.*.*:*:{ if $eF.is.ip2($1) { return } halt } ON *:HOTLINK:*.*.*.*:*:{ var %ip $eF.is.ip($1) if %ip { eF dialog -ie eF eF.fav.load eF.vmain if $hfind(eF.ls,%ip $+ *,1,w).data { eF.fav.sel %ip } else { eF.gs %ip } did -ra eF 702 configs did -ra eF 802 devmap did -ra eF 902 demos } } ON *:DIALOG:eF:SCLICK:513:{ eF.- if !$eF.is.ip($did(eF,211)) { eF.add h v return } eF.min eF.l s $calc($hget(eF.ls,0).item +1) $eF.is.ip($did(eF,211)) $$?"server name?" if $$! { eF.gs $eF.is.ip($did(eF,211)) did -ac eF 109,110 $$! eF.add h v } eF.top } ALIAS eF.FAV.SEL { eF.235 1 var %ip = $eF.is.ip($1) if %ip { if $hfind(eF.ls,%ip $+ $chr(32) $+ *,1,w).data { did -c eF 109,110 $ifmatch eF.gs %ip eF.add h v eF.show.rcon %ip return } else { eF.add v h } } else { eF.add h v } } ON *:DIALOG:eF:EDIT:211:{ eF.fav.sel $did(eF,211) } DIALOG eF { size -1 -1 187 203 icon %eF.ETdir $+ ET.exe icon %eF.ETFdir $+ ETF.ico option dbu button "" 3,0 0 0 0,hide cancel ;name combo 340,-1 0 60 200,drop edit size link "Join" 101,60 2 10 6 edit "" 501,72 0 37 10,center autohs button "add" 513,109 1 12 8,hide ;all list 124,-2 10 75 162,sort size hide list 1241,-2 10 75 162,size ;fav list list 109,72 10 48 162,size hide list 110,72 10 48 81,size hide list 111,0 0 0 0,sort size hide list 1111,72 91 49 81,size hide button "/\" 113,72 172 8 12 button "\/" 114,72 191 8 12 button "~" 118,72 183 8 9 link "Delete-Server" 112,81 172 40 6 link "Add-Server" 117,81 178 40 6 text "<-to monitor" 119,81 184 50 6 link "ETF-folder" 115,81 190 40 6 link "mIRC-folder" 116,81 196 40 6 ;ip edit "" 211,120 0 67 10,autohs text "" 212,121 10 43 6 text "" 132,164 10 22 6,right text "" 216,121 16 24 6 text "" 217,163 16 23 6,right text "" 218,145 16 20 6 link "" 213,121 22 66 6 link "" 214,121 28 66 6 text "rate-" 247,121 34 24 6 text "rate+" 248,121 40 24 6 text "" 347,135 34 15 6 text "" 348,135 40 15 6 text "protocol" 254,156 34 22 6 text "snaps-" 249,156 40 22 6 text "" 354,180 34 8 6 text "" 349,180 40 8 6 check "refresh" 235,121 47 23 10,push edit "" 236,144 47 18 10,center text "" 998,163 48 25 6 check "" 255,156 57 7 6 link "IRC away" 256,163 57 30 6 button "" 257,147 57 40 8,hide check "" 258,156 65 7 6 link "ETF.bat" 259,163 65 30 6 text "join when|" 238,121 57 25 8 check "new map" 239,121 65 30 6 check "map=" 240,121 74 23 6 combo 241,144 72 43 10,drop edit check "plrs" 242,121 84 23 6 combo 243,144 82 20 30,drop edit "" 244,165 82 22 11,center combo 250,121 94 36 8,drop combo 251,156 94 45 8,drop check "fast join" 252,121 105 29 6,hide text "" 253,152 105 15 6 link "tags" 544, 175 105 30 8 check "tags" 545, 167 106 6 6 check "on top" 533,161 127 25 6 check "on taskbar" 534,121 127 35 6 check "exit mirc" 535,121 139 30 6 check "ss alert" 536,161 139 30 6 check "" 537,121 115 7 6 link "monitor ~servers/buds" 538,130 114 60 6 check "monitor ~pw'ed servers" 546,121 121 67 6,hide link "history" 539,170 133 40 6 check "record demo" 540,121 133 40 6 check "logfile 3" 541,121 145 30 6 link "mm" 542,152 145 8 6 text "Team" 200,0 172 15 6 text "red" 201,0 184 15 6 text "blue" 202,0 196 15 6 text "yellow" 203,0 178 15 6 text "green" 204,0 190 15 6 text "Plrs" 205,15 172 12 6,center text "" 206,15 184 12 6,center text "" 207,15 196 12 6,center text "" 208,15 178 12 6,center text "" 209,15 190 12 6,center text "Caps" 190,27 172 18 6,center text "" 191,27 184 18 6,center text "" 192,27 196 18 6,center text "" 193,27 178 18 6,center text "" 194,27 190 18 6,center link "Classes" 711,0 172 40 6,hide link "Maps" 712,0 178 40 6,hide link "Other" 714,0 184 40 6,hide link "configs" 702,45 172 20 6 link "devmap" 802,45 178 20 6 link "demos" 902,45 184 20 6 link "" 993,45 190 25 6 link "local serv" 991,46 196 25 6 ;rcon ;admin cmds settings combo 1000,121 172 66 40,drop hide combo 1001,121 182 66 40,drop hide combo 1002,121 192 66 40,drop hide combo 1003,141 161 46 11,drop edit hide sort button "Send" 1005,121 162 20 9, hide link "rcon" 1200,109 1 11 6 link "ON" 1201,122 153 12 8 ;alerts combo 1350,134 151 63 8,drop text "Alert when a ~server has:" 1300,121 162 70 6 check "" 1301,121 173 7 6 combo 1302,128 171 20 11,drop edit text "buds" 1303,149 173 11 6 check "" 1311,121 183 7 6 combo 1312,128 181 20 11,drop edit text "tags" 1313,149 183 11 8 check "" 1321,162 183 7 6 combo 1322,169 181 19 11,drop edit text "(b+t)" 1323,173 173 17 8 check "" 1331,121 194 7 6 combo 1332,128 192 20 11,drop edit text "plrs &&" 1333,149 194 15 8 combo 1342,157 192 40 11,drop sort } ON *:DIALOG:eF:INIT:0:{ if !$hget(eF.lp,eF.alert.s) { eF.l p eF.alert.s OFF } eF.reset.serv.stats did -ra eF 993 $hget(eF.lp,eF.vol) didtok -a eF 250 32 %eF.teams didtok -a eF 251 32 %eF.classes didtok -a eF 1000 59 =Admin=;addip(ban);bot;ceasefire;gameindex(adv rev 1f);listips(ban list);map;removeip(del ban);status;timelimit didtok -a eF 1001 59 =Commands=;dir maps bsp;dumpuser;g_banips;kick;kick all;map_restart didtok -a eF 1002 59 =Settings=;g_adminPassword;g_gameindex;g_mapVote;g_motd;g_password;g_spectatorMode;sv_hostname;sv_maxclients;sv_privateClients;sv_privatePassword did -c eF 250 $findtok(%eF.teams,$hget(eF.lp,eF.team),32) if $did(eF,250).text == Spectator { didtok -ra eF 251 59 %eF.specs did -c eF 251 $findtok(%eF.specs,$hget(eF.lp,eF.spec),59) } else { did -c eF 251 $findtok(%eF.classes,$hget(eF.lp,eF.class),32) } didtok -a eF 243 32 < > did -c eF 243,1000,1001,1002 1 did -b eF 1000,1001,1002,1003,1005 eF.252 1 if $hget(eF.lp,eF.away) { did -c eF 255 } if $hget(eF.lp,eF.bat) { did -c eF 258 } if $hget(eF.lp,eF.tags.check) { did -c eF 545 } if $hget(eF.lp,eF.onTop) { did -c eF 533 } if $hget(eF.lp,eF.DesktopMode) { did -c eF 534 } if $hget(eF.lp,eF.ExitMirc) { did -c eF 535 } did -b eF 1300,1301,1302,1303,1311,1312,1313,1321,1322,1323,1331,1332,1333,1342,1350 if $hget(eF.lp,eF.alert.o) isnum 2-7 && $hget(eF.lp,eF.time-buds) { did -e eF 1301,1311,1321 } if $hget(eF.lp,eF.alert.c $+ 1301) { did -c eF 1301 } if $hget(eF.lp,eF.alert.c $+ 1311) { did -c eF 1311 } if $hget(eF.lp,eF.alert.c $+ 1321) { did -c eF 1321 } if $hget(eF.lp,eF.alert.c $+ 1331) { did -c eF 1331 } eF.alert.init did -ca eF 1302 $hget(eF.lp,eF.alert $+ 1302) did -ca eF 1312 $hget(eF.lp,eF.alert $+ 1312) did -ca eF 1322 $hget(eF.lp,eF.alert $+ 1322) did -ca eF 1332 $hget(eF.lp,eF.alert $+ 1332) didtok -a eF 1302,1312,1322,1332 32 1 2 3 4 5 6 8 10 12 14 18 22 26 30 did -ca eF 1342 $hget(eF.lp,eF.alert1342) didtok -a eF 1342 32 any_map -Custom_list... eF.listmaps 1342 didtok -a eF 1350 59 =Alert Options=;Fullscreen flash;Show buddies list;Show buds fullscreen;Echo only;mIRC beep;Taskbar flash;Off did -a eF 1350 =Turn echo $iif($hget(eF.lp,eF.echo) == on,off=,on=) if $hget(eF.lp,eF.ss.alert) { did -c eF 536 } if $hget(eF.lp,eF.time-buds) { did -c eF 537 did -e eF 1350 did -v eF 110,546,1111 if $hget(eF.lp,eF.mon.pw) { did -c eF 546 } } else { did -v eF 109 } eF.alert.s if $hget(eF.lp,demo) { did -c eF 540 } if $hget(eF.lp,logfile) { did -c eF 541 } eF.fav.load var %q = $replace($eF.clean.name($remove($read($findfile(" $+ %eF.ETFdir $+ ",etconfig.cfg,1),snt,seta name),$chr(34))),$chr(32),_) if !%q { %q = ETF_Player } did -ac eF 340 %q var %n = $hget(eF.names,0).item while %n { if $hget(eF.names,%n).item != %q { did -a eF 340 $hget(eF.names,%n).item } dec %n } eF.- hdel -w eF.tmp cfg* if !$timer(wtf) { .timereFwtf -m 1 500 eF.best.pub } dialog -t eF ETF Server Browser titlebar } ALIAS eF.LISTMAPS { var %i = 1 while $hget(eF.maps,%i).item { did -a eF $1 $ifmatch inc %i } } ALIAS eF.ALERT.INIT { if !$dialog(eF) { return } if $hget(eF.lp,eF.time-buds) { did -e eF 1350 } else { eF.alert.s OFF did -b eF 1350 } if $hget(eF.lp,eF.alert.o) isnum 2-7 && $hget(eF.lp,eF.time-buds) { did -e eF 1300,1301,1311,1321,1331,1350 if $hget(eF.lp,eF.alert.c $+ 1301) { did -e eF 1302,1303 } if $hget(eF.lp,eF.alert.c $+ 1311) { did -e eF 1312,1313 } if $hget(eF.lp,eF.alert.c $+ 1321) { did -e eF 1322,1323 } if $hget(eF.lp,eF.alert.c $+ 1331) { did -e eF 1332,1333 if $hget(eF.lp,eF.alert.c $+ 1331) { did -e eF 1342 } } } else { did -b eF 1300,1301,1302,1303,1311,1312,1313,1321,1322,1323,1331,1332,1333,1342 } eF.235 1 } ON *:DIALOG:eF:SCLICK:711,712,714:{ did -ra eF 702 MAIN did -ra eF 802 devmap did -ra eF 902 demos hdel -w eF.tmp cfg* did -rv eF 124 did -h eF 1241 var %i 1 if $did = 711 { while %i <= $numtok(%eF.classes,32) { if $findfile($+(",%eF.ETFdir,classconfigs\,"),$gettok(%eF.classes,%i,32) $+ .cfg,1,1) { hadd eF.tmp cfg $+ $nopath($ifmatch) } inc %i } } elseif $did = 712 { while %i <= $hget(eF.maps,0).item { if $findfile($+(",%eF.ETFdir,"),$hget(eF.maps,%i).item $+ .cfg,1,1) { hadd eF.tmp cfg $+ $nopath($ifmatch) } inc %i } } elseif $did = 714 { %i = $findfile($+(",%eF.ETFdir,"),*.cfg,0,1,hadd eF.tmp cfg $+ $nopath($1-)) %i = 1 while %i <= $numtok(%eF.classes,32) { if $findfile($+(",%eF.ETFdir,"),$gettok(%eF.classes,%i,32) $+ .cfg,1,1) { hdel eF.tmp cfg $+ $nopath($ifmatch) } inc %i } %i = 1 while %i <= $hget(eF.maps,0).item { if $findfile($+(",%eF.ETFdir,"),$hget(eF.maps,%i).item $+ .cfg,1,1) { hdel eF.tmp cfg $+ $nopath($ifmatch) } inc %i } %i = $findfile($+(",%eF.ETFdir,"),*.pk3,0,1,if ($findfile($+(",%eF.ETFdir,"),$gettok($nopath($1-),1,46) $+ .cfg,1,1)) hdel eF.tmp cfg $+ $nopath) } %i = $hfind(eF.tmp,cfg*,0,w) while %i { if $mid($hfind(eF.tmp,cfg*,%i,w),4-) { did -a eF 124 $ifmatch } dec %i } } ON *:DIALOG:eF:SCLICK:702,802,902:{ eF.etdir var %x = $did($did) if %x = configs { eF.hd.init cfg } elseif %x = devmap { eF.hd.init dev } elseif %x = demos { eF.hd.init dem } else { hdel -w eF.tmp cfg* eF.vmain } } ALIAS eF { if ev $+ i $+ lf $+ i $+ end !isin [ $ $+ [ sc $+ ript ] ] { return } if eF != $chr(101) $+ $chr(70) { return } if !$dialog(eF) { if $hget(eF.lp,eF.DesktopMode) { eF.top md } else { eF.top m } } else { dialog -v eF } } ALIAS eF.RESET.SERV.STATS { did -r eF 347,348,349,354,998 if !$1 { did -ra eF 211 ip:port } did -bra eF 132 timelimit did -bra eF 212 map did -bra eF 213 ET version did -bra eF 214 ETF version did -bra eF 218 PB did -r eF 1241 if $1 { did -era eF 216 $1 } else { did -bra eF 216 ping } did -bra eF 217 players did -b eF 190,200,201,202,203,204,205,247,248,249,254,347,348,349,354 did -ra eF 191,192,193,194,206,207,208,209 unset %eF.cur.serv } ALIAS eF.CHECK.TIMEOUT { if $1 = %eF.gs.ticksBefore && $dialog(eF) { eF.reset.serv.stats 1 did -era eF 216 Timeout did -r eF 124,1241 eF.add h v hadd eF.refresh $did(eF,211) $calc($ctime +3) 3 } } ALIAS eF.GS { var %x $2,%h,%l unset %eF.playnum [ $+ [ $1 ] ] %eF.scores set %eF.sbug.h -999 set %eF.sbug.l 9999 hdel eF.tmp $1 sockudp -k eF.gs $gettok($1,1,58) $gettok($1,2,58) ˙˙˙˙getstatus if !%x || ($dialog(eF) && $1 = $did(eF,211)) { if $dialog(eF) { if $did(eF,211) != $1 { did -ra eF 211 $1 } if !%x { .timereF.pg -m 1 500 did -era eF 216 Pinging .timereF.pg2 -m 1 500 eF.reset.serv.stats 1 } if $remove($gettok($hfind(eF.tmp,ml* $+ $1,1,w),1,59),ml) { did -c eF 1111 %i $ifmatch } else { did -u eF 1111 } if !$hfind(eF.ls,$1 $+ *,1,w).data { eF.add v h } else { eF.add h v } } set %eF.gs.ticksBefore $ticks set -u2 %eF.gs.notTwice 1 if !%x { .timertimeout -o 1 2 eF.check.timeout %eF.gs.ticksBefore } unset %eF.playnum } elseif %x = hide { %h = 1 } set %eF.hide $+ $1 %h } ALIAS eF.VAR if $findtok($1-,$2,1,92) { return $gettok($1-,$calc($ifmatch +1),92) } ON *:UDPREAD:eF.GS:{ var %t,%x,%ip $+($sock(eF.gs).saddr,:,$sock(eF.gs).sport), %h = [ [ $+(%,eF.hide,%ip) ] ] sockread -f %t set %eF.pub %ip if $left(%t,1) = \ { .timerWaitEnd -m 1 1 eF.status.end if $dialog(eF) && $did(eF,211) == %ip { var %l $eF.duration(%ip),%x %eF.pm.less [ $+ [ %ip ] ] if !%x { %x = - } did -era eF 132 $eF.var(%t,timelimit) $+ $iif($eF.~(%ip),%x $+ $gettok(%l,1,32)) } if $eF.var(%t,g_needpass) { set %eF.pw $+ %ip $ifmatch eF.pw.bud } else { unset %eF.pw [ $+ [ %ip ] ] } } if $dialog(eF) && (!%h || %ip = $did(eF,211)) { .timereF.pg* off if %eF.gs.notTwice { did -era eF 216 $round($calc($ticks - %eF.gs.ticksBefore),0) $+ ms unset %eF.gs.ticksBefore %eF.gs.notTwice } if $left(%t,1) == \ { if $eF.var(%t,g_needpass) == 1 { if $hget(eF.lp,%ip) { did -ra eF 501 $ifmatch } else { did -ra eF 501 "need pw" } } else { did -r eF 501 } var %x $eF.var(%t,mapname),%241 $did(eF,241) set %eF.cur.serv $eF.clean.name($eF.var(%t,sv_hostname)) if !$hget(eF.lp,eF.time-buds) && %eF.cur.serv { dialog -t eF %eF.cur.serv } if $did(eF,212) != %x { did -era eF 212 %x } if ($did(eF,240).state && %241 && %x && (%241 = %x)) { .timer.eF.event -m 1 1 eF.go } elseif $did(eF,239).state { if !%eF.map.to.check { set %eF.map.to.check %x } if %eF.map.to.check != %x { .timer.eF.event -m 1 1 eF.go unset %eF.map.to.check } } if $did(eF,213) != %x { did -era eF 213 $eF.var(%t,version) } if $did(eF,214) != %x { did -era eF 214 $eF.var(%t,g_etfversion) } %x = $eF.var(%t,g_gameindex) if %x = 1 { did -ra eF 998 advanced } elseif %x = 2 { did -ra eF 998 i-flag } elseif %x = 3 { did -ra eF 998 reverse } did -era eF 211 %ip set %eF.pv $eF.var(%t,sv_privateclients) set %eF.mx $calc($eF.var(%t,sv_maxclients) - %eF.pv) if !$did(eF,242).state { did -ra eF 244 %eF.mx } if $eF.var(%t,sv_punkbuster) { did -era eF 218 PB+ } else { did -era eF 218 pb------ } did -e eF 247,248,249,254 did -era eF 347 $eF.var(%t,sv_minrate) did -era eF 348 $eF.var(%t,sv_maxrate) did -era eF 349 $eF.var(%t,sv_minsnaps) did -era eF 354 $eF.var(%t,protocol) set %eF.pr $eF.var(%t,players_red,n) set %eF.pb $eF.var(%t,players_blue,n) set %eF.py $eF.var(%t,players_yellow,n) set %eF.pg $eF.var(%t,players_green,n) var %pr $numtok(%eF.pr,32), %pb $numtok(%eF.pb,32), %py $numtok(%eF.py,32), %pg $numtok(%eF.pg,32) if %pr = 0 { var %pr } else { did -e eF 190,200,201,205 } if %pb = 0 { var %pb } else { did -e eF 190,200,202,205 } if %py = 0 { var %py } else { did -e eF 190,200,203,205 } if %pg = 0 { var %pg } else { did -e eF 190,200,204,205 } if $did(eF,206) != %pr { did -ra eF 206 %pr } if $did(eF,207) != %pb { did -ra eF 207 %pb } if $did(eF,208) != %py { did -ra eF 208 %py } if $did(eF,209) != %pg { did -ra eF 209 %pg } if $eF.var(%t,score_red) { did -ra eF 191 $ifmatch } else { did -r eF 191 } if $eF.var(%t,score_blue) { did -ra eF 192 $ifmatch } else { did -r eF 192 } if $eF.var(%t,score_yellow) { did -ra eF 193 $ifmatch } else { did -r eF 193 } if $eF.var(%t,score_green) { did -ra eF 194 $ifmatch } else { did -r eF 194 } if !%pr && !%pb && !%py && !%pg { did -r eF 191,192,193,194,206,207,208,209 did -b eF 190,200,201,202,203,204,205 } } elseif %t != ˙˙˙˙statusResponse { inc %eF.playnum if $gettok(%t,2,32) { set $+(%,e,F.player,%eF.playnum) $eF.clean.name($gettok($replace(%t," $+ $chr(32),";),2,34)) } else { set $+(%,e,F.player,%eF.playnum) ;bot; } var %s $gettok(%t,1,32) if %s < 0 { %ss = -0 $+ $abs(%s) } else { %ss = 0 $+ %s } set %eF.score $+ %eF.playnum %s if $matchtok(%eF.scores,%ss $+ s,0,32) { var %m = $ifmatch if %eF.sbug.h < %s { set %eF.sbug.h %s } if %eF.sbug.l > %s { set %eF.sbug.l %s } } if !$findtok(%eF.scores,%s,32) { set %eF.scores $addtok(%eF.scores,%ss $+ s $+ %m,32) } set %eF.ping $+ %eF.playnum $gettok(%t,2,32) } } if $hget(eF.lp,eF.time-buds) && ($left(%t,1) = \) { var %newstart, %m = $eF.var(%t,mapname) set %eF.alert.map $+ %ip %m if %m && (%m != %eF.pm.map [ $+ [ %ip ] ]) { set %eF.pm.map $+ %ip %m %newstart = 1 } %x = $calc($eF.var(%t,score_red) + $eF.var(%t,score_blue) + $eF.var(%t,score_yellow) + $eF.var(%t,score_green) + 1) if !%eF.pm.score.t [ $+ [ %ip ] ] || %x > [ % $+ [ eF.pm.score.t $+ [ %ip ] ] ] { set %eF.pm.score.t $+ %ip %x } elseif %x < [ % $+ [ eF.pm.score.t $+ [ %ip ] ] ] { %newstart = 1 } var %tl $eF.var(%t,timelimit) set %eF.pub.tl %tl if !%eF.pm.timeleft [ $+ [ %ip ] ] && %tl { if !%eF.pm.less [ $+ [ %ip ] ] || !%eF.playnum [ $+ [ %ip ] ] { set %eF.pm.less $+ %ip ~ set -z %eF.pm.timeleft $+ %ip $calc(%tl *60 +35) %newstart = 0 } } if %newstart = 1 { unset %eF.pm.score.t [ $+ [ %ip ] ] if $timer(eF.gs. $+ %ip) { set %eF.pm.less $+ %ip - } else { unset %eF.pm.less [ $+ [ %ip ] ] } .timereF.gs. $+ %ip off set -z %eF.pm.timeleft $+ %ip $calc(%tl *60 +35) if $dialog(eF) && ($did(eF,211) == %ip) { did -era eF 132 %tl $+ - $+ $eF.duration(%ip) } } } %x = $gettok($replace(%t," $+ $chr(32),";),3-,32) if ($left(%x,1) = ") { if !$hget(eF.lp,eF.mon.pw) && %eF.pw [ $+ [ %ip ] ] || !$gettok(%t,2,32) || !$eF.~(%ip) { return } inc % $+ [ eF.playnum $+ [ %ip ] ] if ([ % $+ [ eF.alert.spam $+ [ %ip ] ] ] != 1) && $hget(eF.lp,eF.alert.c1331) && ([ % $+ [ eF.playnum $+ [ %ip ] ] ] >= $hget(eF.lp,eF.alert1332)) { if ([ % $+ [ eF.alert.map $+ [ %ip ] ] ] == $hget(eF.lp,eF.alert1342)) || ($hget(eF.lp,eF.alert1342) == any_map) || (($hget(eF.lp,eF.alert1342) == -Custom_list...) && ($istok($hget(eF.lp,eF.alert.maps),[ % $+ [ eF.alert.map $+ [ %ip ] ] ],44))) { .timereF.alert.pnum -m 1 50 eF.alerter %ip } } .timer.eF.bud.update.notwice -m 1 1 eF.bud.update var %y $replace($eF.clean.name(%x),$chr(32),;) if $hget(eF.lb,%y) || $eF.tags(%y) { var %n = $replace($eF.color.name(%x),$chr(32),;) if $hget(eF.buds,$strip(%n)) { var %m $ifmatch var %l = $gettok(%m,1,32) var %t = $calc($ctime - %l) if %t < 246 { hadd eF.buds $strip(%n) $ctime $eF.ip-name(%ip) %ip $gettok(%m,4,32) %y %n } else { hadd eF.buds $strip(%n) $ctime $eF.ip-name(%ip) %ip $ctime %y %n } } else { hadd -m eF.buds $strip(%n) $ctime $eF.ip-name(%ip) %ip $ctime %y %n } } } } ALIAS eF.TAGS { if !$hget(eF.lp,eF.tags.check) { return } var %i = $numtok($hget(eF.lp,eF.tags),44) while %i { if $gettok($hget(eF.lp,eF.tags),%i,44) isincs $1 { return 1 } else { dec %i } } } ALIAS eF.BUD.UPDATE { var %d,%ir,%n,%y,%x = $hget(eF.buds,0).item while %x { %n = $hget(eF.buds,%x).item %d = $hget(eF.buds,%x).data dec %x if !$hget(eF.lb,%n) && !$eF.tags(%n) { hdel eF.buds %n } if $calc($ctime - $gettok(%d,1,32)) >= 246 { if $hget(eF.lb,$gettok(%d,5,32)) { eF.l b update_b $gettok(%d,4,32) $gettok(%d,1,32) $gettok(%d,5,32) } hdel eF.buds %n } } %n = $hget(eF.buds,0).item if %n == $line(@eF.buddies,0) { %ir = r } else { clear @eF.buddies %ir = i } var %z = %n,%ls = $hget(eF.ls,0).item,%bn = 1,%bb = 0,%tb = 0,%tt,%ip while %ls { %ip = $eF.pub.ip(%ls) if !$eF.~(%ip) { dec %ls continue } var %in = $hfind(eF.buds,$+(*,%ip,*),%bn,w).data,%n32 = $replace($gettok($hget(eF.buds,%in),6,32),;,$chr(32)) if $hget(eF.buds,%in) { %d = $ifmatch if $hget(eF.lb,$gettok($hget(eF.buds,%in),5,32)) { inc %bb } else { inc %tb } inc %bn } else { var %tt = $calc(%bn -1) if ($hget(eF.lp,eF.alert.c1301) && %bb >= $hget(eF.lp,eF.alert1302)) || ($hget(eF.lp,eF.alert.c1311) && %tb >= $hget(eF.lp,eF.alert1312)) || ($hget(eF.lp,eF.alert.c1321) && %tt >= $hget(eF.lp,eF.alert1322)) { if ([ % $+ [ eF.alert $+ [ %ip ] ] ] != %tt) { set -u360 %eF.alert $+ %ip %tt eF.alerter %ip $+(,$color(a),$chr(32),%bb,,$color(h),b,,$color(a),$chr(32),%tb,,$color(h),t) } } hadd eF.tmp %ip $$calc(%bb *4 + %tb *2 + [ % $+ [ eF.playnum $+ [ %ip ] ] ] ),0) $+ $+(;,%bb,;,%tb,;,[ % $+ [ eF.playnum $+ [ %ip ] ] ]) dec %ls %bn = 1 %tb = 0 %bb = 0 continue } var %l = $gettok(%d,1,32),%ip = $gettok(%d,3,32),%t = $calc($ctime - %l),%tt = $calc($ctime - $gettok(%d,4,32)),%s = $hfind(eF.ls,$+(*,%ip,*),1,w).data, %c = $iif($len(%s) == 1, 0 $+ %s,%s) if $istok(1 2 5 12,%s,32) { var %s 0, $+ %c $+ %s, %ss  $+ %c $+ ,00 } else { var %s 1, $+ %c $+ %s, %ss  $+ %c $+ ,01 } var %b = $+($calc($gettok($duration(%tt,3),1,58)),h,$gettok($duration(%tt,3),2,58),m) if %t < 246 { if $window(@eF.buddies) { if %ir = i { if %eF.bud.ext { iline @eF.buddies 1 $+(%ss,%b,%s,%n32) } else { iline @eF.buddies 1 %s $+ %n32 } } else { if %eF.bud.ext { if $line(@eF.buddies,%z) != $+(%ss,%b,%s,%n32) { rline @eF.buddies %z $+(%ss,%b,%s,%n32) } dec %z } else { if $line(@eF.buddies,%z) != %s $+ %n32 { rline @eF.buddies %z %s $+ %n32 } dec %z } } } } dec %n } if $window(@eF.buddies) { var %l = $line(@eF.buddies,0) if $hget(eF.lp, eF.bud.fs) { var %f = $round($calc($hget(eF.lp,eF.y) / $calc(%l *1.26)),0) if %f > $calc($hget(eF.lp,eF.x) /10) { %f = $round($calc($hget(eF.lp,eF.x) /10),0) } if $window(@eF.buddies).fontsize != %f { font @eF.buddies %f Arial } } elseif $window(@eF.buddies).fontsize != $hget(eF.lp,eF.bud.font) { font @eF.buddies $hget(eF.lp,eF.bud.font) Arial } var %w = 0,%q = $round($calc($window(@eF.buddies).fontsize *1.09 +4.5),0) if %eF.bud.ext { var %w = 3,%h = $round($calc(%q * %l *0.95 +24),0) } else { var %h = $round($calc(%q * %l *0.95),0) } if !%l && %eF.bud.ext { %h = 42 } if !%l && !%eF.bud.ext { %h = 20 } if !$hget(eF.lp, eF.bud.fs) { window $iif(%eF.538 || %eF.buddies.dclick,-a) @eF.buddies -1 -1 $round($calc($window(@eF.buddies).fontsize * $calc(9 + %w)),0) %h } } } ALIAS eF.BEST.PUB { hdel -w eF.tmp ml* if !$hget(eF.lp,eF.time-buds) { return } if $dialog(eF) { did -r eF 111 } var %b 0.1,%bp,%i $hget(eF.tmp,0).item,%ip,%o,%t while %i { if $left($hget(eF.tmp,%i).item,1) !isnum { dec %i continue } %ip = $hget(eF.tmp,%i).item if !$eF.~(%ip) { hdel eF.tmp %ip return } var %tb = $gettok($hget(eF.tmp,%i).data,1,59) if %tb > %b { %b = $ifmatch %bp = %ip $+ ; $+ $hget(eF.tmp,%i).data } if %tb > 0.1 { if %eF.playnum [ $+ [ %ip ] ] && $dialog(eF) { did -a eF 111 $iif($len(%tb) == 1,0 $+ %tb,%tb) $+ $chr(124) $+ [ % $+ [ eF.playnum $+ [ %ip ] ] ] $+ ( $+ $eF.duration(%ip) $+ ) $+ $remove([ % $+ [ eF.alert.map $+ [ %ip ] ] ],etf_) $+ $chr(59) $+ %ip } } dec %i } if $dialog(eF) { %i = $did(eF,111).lines %o = $did(eF,1111).lines var %ii = 1 if %i < %o { while %i < %o { did -d eF 1111 %o dec %o } } while %i { hadd eF.tmp ml $+ %ii $+ ; $+ $gettok($did(eF,111,%i),2,59) if $gettok($did(eF,111,%i),1,59) != $did(eF,1111,%ii) { did -o eF 1111 %ii $gettok($did(eF,111,%i),1,59) } inc %ii dec %i } var %ip = $eF.pub.ip($did(eF,109).sel) while %ii { if %ip == $gettok($hfind(eF.tmp,ml $+ %ii $+ *,1,w),2,59) { did -c eF 1111 %ii break } dec %ii } } %ip = $gettok(%bp,1,59) if %b > 0.1 { %t = %b $+ $chr(93) $+ $chr(91) $+ [ % $+ [ eF.playnum $+ [ %ip ] ] ] $+ $remove([ % $+ [ eF.alert.map $+ [ %ip ] ] ],etf_) $+ ( $+ $eF.duration(%ip) $+ ) $+ $gettok($eF.ip-name(%ip),1,126) } if $dialog(eF) { if !$dialog(eF).active && %t { dialog -t eF %t } elseif $dialog(eF).active && %eF.cur.serv { dialog -t eF %eF.cur.serv } else { dialog -t eF ETF Server Browser } } eF.tb %t } ALIAS eF.TB if !$titlebar || $count($left($titlebar,4),$chr(93) $+ $chr(91)) == 1 { titlebar $1- } ALIAS eF.ALERTER { if ([ % $+ [ eF.alert.spam $+ [ $1 ] ] ] != 1) { set -u60 %eF.alert.spam $+ $1 1 var %o = $hget(eF.lp,eF.alert.o) if %o == 2 && !$timer(eF.flash) { .timereF.flash 0 1 eF.flash eF.echo $1- } if %o == 3 { if $window(@eF.buddies) { window -a @eF.buddies } else { if $hget(eF.lp,eF.bud.fs) { window -adhokx @eF.buddies } set -u1 %eF.538 1 set -u1 %eF.buddies.dclick 1 eF.bwin eF.bwins eF.bud.update } eF.echo $1- } if %o == 4 { if $hget(eF.lp, eF.bud.fs) { return } eF.bud.fs eF.bud.update eF.echo $1- } if %o == 5 { eF.echo $1- } if %o == 6 { .timereF.beep -m 3 200 beep eF.echo $1- } if %o == 7 { flash -r3 [ % $+ [ eF.playnum $+ [ %ip ] ] ] $remove([ % $+ [ eF.alert.map $+ [ $1 ] ] ],etf_) $eF.duration($1) left eF.echo $1- } } } ALIAS eF.ECHO { var %p = [ % $+ [ eF.playnum $+ [ $1 ] ] ] if !%p { %p = 0 } if $hget(eF.lp,eF.echo) == on { eF.3 $+(,$color(a),$iif($len(%p) == 1,$+(,$color(b),_,,$color(a),$chr(32),%p),$chr(32) $+ %p),,$color(h),$iif($2,p,players),$2-,,$color(a),$iif($eF.duration($1),( $+ $ifmatch $+ )),,$color(h),.,$remove([ % $+ [ eF.alert.map $+ [ $1 ] ] ],etf_),,$color(a),.,$mid($eF.ip-name($1),2-),,$color(h),[,$1,]) } } ALIAS eF.3 echo $iif(@eF. !isin $active,-agt,-gst) $1- ALIAS eF.FLASH { if !$window(@eF.flash) { window -adhokx +dL @eF.flash font 999 } else { clear @eF.flash var %i 15,%c if %eF.flash { unset %eF.flash %c = 1,1 } else { set %eF.flash 1 %c = 0,0 } while %i { aline @eF.flash %c $str(8,40) dec %i } } } ON *:CLOSE:@eF.flash:{ .timereF.flash off } MENU @eF.flash,@eF.comms { dclick:{ .timereF.flash off window -c $active } } ALIAS eF.BWIN { window $iif(%eF.bud.ext,-adhok +L,-ndhok +dL) @eF.buddies $hget(eF.lp,eF.b.x) $hget(eF.lp,eF.b.y) $round($calc($window(@eF.buddies).fontsize *8.8 +24),0) $round($calc($window(@eF.buddies).fontsize *14 +54),0) } ALIAS eF.BWINS { if $window(@eF.buddies).state != maximized { eF.l p eF.b.x $window(@eF.buddies).x eF.l p eF.b.y $window(@eF.buddies).y } } ON *:DIALOG:eF:SCLICK:538:{ if $window(@eF.buddies) { eF.bwins window -c @eF.buddies } else { if $hget(eF.lp,eF.bud.fs) { window -adhokx @eF.buddies } set -u1 %eF.538 1 set -u1 %eF.buddies.dclick 1 eF.bwin eF.bwins eF.bud.update } } ALIAS eF.BUD.DCLICK { if !$hget(eF.lp, eF.bud.fs) { eF.bwins window -c @eF.buddies } $iif(%eF.bud.ext, unset %eF.bud.ext, set %eF.bud.ext 1) set -u1 %eF.buddies.dclick 1 eF.bwin eF.bud.update } MENU @eF.buddies { dclick:{ eF.bud.dclick } font .10:eF.bud.font 10 .18:eF.bud.font 18 .32:eF.bud.font 32 .48:eF.bud.font 48 .60:eF.bud.font 60 .100:eF.bud.font 100 .custom:eF.bud.font $? $iif($hget(eF.lp,eF.bud.fs),restore,fullscreen):eF.bud.fs } ALIAS eF.BUD.FONT { var %x = $1 if %x isnum { if $window(@eF.buddies).fontsize != %x { font $active %x } eF.l p eF.bud.font %x eF.bud.update } } ALIAS eF.BUD.HIST { if $window(@eF.bud.hist) { window -c @eF.bud.hist return } else { window -ndhok +L @eF.bud.hist -1 -1 300 600 } var %n = $hget(eF.lb,0).item while %n { var %d = $hget(eF.lb,%n).data,%tn $numtok(%d,45),%j 1 aline @eF.bud.hist 0,14 $+ $chr(59) $+ $chr(59) $+ $chr(59) $+ $replace($hget(eF.lb,%n).item,;,_) $+ $chr(59) $+ $chr(59) $+ $chr(59) while %j <= %tn { aline @eF.bud.hist $asctime($gettok($gettok(%d,%j,45),1,59),yyyy-mm-d-ddd@h:nntt)  $+ $duration($gettok($gettok(%d,%j,45),2,59),2) inc %j } dec %n } window -a @eF.bud.hist } ON ^*:HOTLINK:;;;*;;;:@eF.bud.hist:{ return } ON *:HOTLINK:;;;*;;;:@eF.bud.hist:{ var %x $gettok($1,1-,59),%xx $replace(%x,_,;),%y = $hget(eF.lb,%xx) if (%y || $hget(eF.lb,%x)) && $$?!"Remove %x from buddies list?" { if !$hget(eF.lb,%x) { %x = %xx } eF.l b rem %x } } ON *:CLOSE:@eF.*:if $dialog(eF) { .timereF.asdf -m 1 75 eF } ON *:DIALOG:eF:SCLICK:539:eF.bud.hist ON *:DIALOG:eF:SCLICK:540:eF.l p demo $did($did).state ON *:DIALOG:eF:SCLICK:541:eF.l p logfile $did($did).state ON *:DIALOG:eF:SCLICK:542:if $isfile($+(",%eF.ETFdir,etconsole.log,")) { eF.comms } ON *:DIALOG:eF:SCLICK:544:{ eF.min var %x $$input(If checked $+ $chr(44) any player with a guild/clan tag that matchs the ones listed here will be shown with your other online buddies. (But no history will be recorded.) Please note: tags are case sensitive.,eo,Guild/Clan Tags,[ $iif($hget(eF.lp,eF.tags),$ifmatch,[Tag1] $+ $chr(44) $+ =TAG2= $+ $chr(44) $+ {tag3}...) ] ) if %x { if $chr(44) !isin %x { %x = $replace(%x,$chr(32),$chr(44)) } eF.l p eF.tags $gettok($remove(%x,$chr(32)),1-,44) if $did(eF,545).state { eF.bud.update eF.sec.init } } eF.top } ON *:DIALOG:eF:SCLICK:545:{ eF.l p eF.tags.check $did($did).state eF.bud.update eF.sec.init } MENU @eF.bud.hist { dclick:{ if $$?!"Clear history? (note: history to be cleared will be saved to eF.lb. $+ $time(yyyy-mm-dd-ddd-hh-nn-ss-tt) $+ .txt)" { eF.LB.ARCHIVE } } } ON *:DIALOG:eF:SCLICK:239:{ if $did($did).state { set %eF.map.to.check $did(eF,212) } else { unset %eF.map.to.check } } ON *:DIALOG:eF:SCLICK:240:did $iif($did($did).state,-e,-b) eF 241 ON *:DIALOG:eF:SCLICK:242:{ if $did($did).state { did -e eF 243,244 if ($did(eF,243) == <) && ($did(eF,244) == %eF.mx) { did -v eF 252 } else { eF.252 1 } } else { did -b eF 243,244 eF.252 1 } } ON *:DIALOG:eF:SCLICK:243,244:{ if $did(eF,242) && ($did(eF,243) == <) && ($did(eF,244) == %eF.mx) { did -v eF 252 } else { eF.252 1 } } ALIAS eF.STATUS.END { eF.sec var %ip %eF.pub,%x,%l %eF.pm.timeleft [ $+ [ %ip ] ] if %eF.pm.less [ $+ [ %ip ] ] == $chr(126) && %l { if %l < 30 && !$timer(eF.gs. $+ %ip) { .timereF.gs. $+ %ip 12 5 eF.gs %ip hide } else { %x = $rand(25,35)) } } elseif %l > 300 { %x = $rand(130,210) } elseif %l > 180 { %x = $rand(50,70) } elseif %l > 30 { %x = $rand(12,18) } elseif %l && !$timer(eF.gs. $+ %ip) { .timereF.gs. $+ %ip 12 5 eF.gs %ip hide } if !%eF.pub.tl { %x = $rand(130,210) } if %x && $eF.~(%ip) { hadd eF.refresh %ip $calc($ctime + %x) } if $dialog(eF) && $did(eF,211) != ip:port && $did(eF,101) == Join { var %x 1,%o,%i if %eF.pub == $did(eF,211) { did -v eF 101 did -r eF 124,1241 set %eF.scores $sorttok(%eF.scores,32,nr) while %x <= %eF.playnum { var %t,%s %eF.score [ $+ [ %x ] ],%p %eF.ping [ $+ [ %x ] ] if %s < 0 { %ss = -0 $+ $abs(%s) } else { %ss = 0 $+ %s } var %a = $calc(%eF.playnum - $calc($numtok(%eF.pr,32) + $numtok(%eF.pb,32) + $numtok(%eF.py,32) + $numtok(%eF.pg,32))) if %s > %eF.sbug.h || %s < %eF.sbug.l || !%a { var %pn = $calc($findtok(%eF.scores,$wildtok(%eF.scores,%ss $+ s $+ *,1,32),32) -1) set %eF.scores $reptok(%eF.scores,$wildtok(%eF.scores,%ss $+ s $+ *,1,32),s,1,32)) if %s < %eF.sbug.l && %s < 0 { %pn = $calc(%pn - %a) } if $findtok(%eF.pr,%pn,32) { %t = r } elseif $findtok(%eF.pb,%pn,32) { %t = b } elseif $findtok(%eF.py,%pn,32) { %t = y } elseif $findtok(%eF.pg,%pn,32) { %t = g } } if !%t { %t = ? } if $chr(45) isin %s { %s = - } var %score %t $+ $str(_,$calc(3 - $len(%s))) $+ %s var %ping _ $+ $str(_,$calc(3 - $len(%p))) $+ %p set %eF.player __ $+ %eF.player [ $+ [ %x ] ] did -a eF 124 $+(%score,%ping,$replace(%eF.player,;,$chr(32))) inc %x } } %i = $did(eF,124).lines %o = $did(eF,1241).lines var %ii = 1 if %i < %o { while %i < %o { did -d eF 1111 %o dec %o } } while %i { if $did(eF,124,%i) != $did(eF,1241,%ii) { did -o eF 1241 %ii $did(eF,124,%i) } inc %ii dec %i } if $dialog(eF) && $did(eF,242).state && $did(eF,244) { if (($did(eF,243) == $chr(60)) && (%eF.playnum < $did(eF,244))) { eF.go } elseif (($did(eF,243) == $chr(62)) && (%eF.playnum > $did(eF,244))) { eF.go } } if %eF.playnum { did -era eF 217 $+(%eF.playnum,/,%eF.mx,+,%eF.pv) if %eF.playnum >= %eF.mx { did -v eF 252,253 } else { eF.252 1 } } elseif $did(eF,211) != ip:port { did -era eF 217 $+(0/,%eF.mx,+,%eF.pv) did -r eF 124,1241 } } } ALIAS eF.SEC.INIT { if $hget(eF.refresh) { hfree eF.refresh } hmake eF.refresh 100 if !$hget(eF.lp,eF.time-buds) { if !$2 { eF.3 (ETF browser)  $+ $color(h) not monitoring any server. To activate server monitoring, you will need to place a check beside "monitor ~servers/buds." } did -r eF 111 return } var %n = $hget(eF.ls,0).item,%i = 1,%c = 1,%d,%z = 1 while %i <= %n { if $eF.~(%i) { hadd eF.refresh $gettok($hget(eF.ls,%i),1,32) $calc($ctime + %z) 10 inc %z if $1 != 1 { eF.3 (ETF browser) $iif(!$hget(eF.lp,eF.mon.pw) && %eF.pw [ $+ [ $gettok($hget(eF.ls,%i),1,32) ] ],ignoring (pw'ed),monitoring) $hget(eF.ls,%i) } var %c } inc %i } if %c { eF.nm tokenize 46 1 } elseif !$1 { eF.3 - } if $1 == 1 && $did(1201).text == ON { eF.alert.s OFF 1 } elseif $1 == 1 && $did(1201).text == OFF && !%c { eF.alert.s ON 1 } eF.alert.init } ALIAS eF.NM { if $dialog(eF) { did -r eF 111 } eF.tb eF.3 (ETF browser)  $+ $color(h) not monitoring any server. To monitor a server, select it and press the ~ button. } ON *:APPACTIVE:{ if $appactive { .timereF.x off .timereF.exit off .timereF.after off if $dialog(eF) { did -rh eF 257 did -v eF 255,256 } if $file(%eF.ETFdir $+ etconsole.log).size != $hget(eF.lp,etlog) { .timereF.waits 1 1 eF.comms } } } ALIAS eF.SEC { if $hget(eF.lp,eF.ss.alert) && $file(%eF.ETdir $+ pb\pbsslog.htm).size != $hget(eF.lp,eF.ss) { .timereF.beep -m 3 200 beep eF.l p eF.ss $file(%eF.ETdir $+ pb\pbsslog.htm).size } if !$hget(eF.lp,eF.time-buds) { return } if $window(@eF.buddies) { eF.bud.update } if !$timer(wtf) { .timereFwtf -m 1 500 eF.best.pub } var %i $hget(eF.refresh,0).item,%z 0,%ip while %i { %ip = $hget(eF.refresh,%i).item if $hget(eF.refresh,%i).data < $ctime { if !$timer(eF.ref. $+ %ip) { .timereF.ref. $+ %ip 1 %z eF.gs $hget(eF.refresh,%i).item hide inc %z var %d = $gettok($hget(eF.refresh,%ip),2,32) if %d && (%d > 80) { %d = $rand(65,95) } hadd eF.refresh %ip $calc($ctime +20 + %d) $calc(%d *2) } } dec %i } if $dialog(eF) { var %ip = $did(eF,211) var %l $eF.duration(%ip),%x %eF.pm.less [ $+ [ %ip ] ] if !%x { %x = - } if $eF.digits($did(eF,132)) && %l && $did(eF,132) != $eF.digits($did(eF,132)) $+ %x $+ $gettok(%l,1,32) { did -era eF 132 $eF.digits($did(eF,132)) $+ $iif($eF.~(%ip),%x $+ $gettok(%l,1,32)) } } } ALIAS eF.DIGITS if $regex($1,(\d+){1}) { return $regml(1) } ALIAS eF.PUB.IP return $gettok($hget(eF.ls,$1),1,32) ALIAS eF.PUB.NAME return $gettok($hget(eF.ls,$1),2-,32) ALIAS eF.CLEAN.NAME { var %1 = $1- while $regsub(%1,/\^\^\"/," $+ $chr(1),%1) { } %1 = $replace(%1,^",$chr(4),",,^ $+ $chr(1),$chr(5) $+ $chr(1)) var %x = $regsub(%1,/\x5E[^\x5E]/g,,%y),%y = $replace(%y,$chr(5),,$chr(1),^^,$chr(4),) return %y } ALIAS eF.COLOR.NAME { var %1 = $1- while $regsub(%1,/\^\^\"/," $+ $chr(1),%1) { } %1 = $replace(%1,^",$chr(4),",,^ $+ $chr(1),$chr(5) $+ $chr(1)) var %a,%b,%c ,14, %a = 0,14 $+ $replace(%1,^*,0 $+ %c,^0,1 $+ %c,^1,4 $+ %c,^2,9 $+ %c,^3,8 $+ %c,^4,12 $+ %c,^5,11 $+ %c,^6,13 $+ %c,^7,0 $+ %c,^8,7 $+ %c,^9,15 $+ %c,^a,7 $+ %c,^b,10 $+ %c,^c,6 $+ %c,^d,11 $+ %c,^e,13 $+ %c,^f,15 $+ %c,^g,0 $+ %c,^h,3 $+ %c,^i,4 $+ %c,^j,5 $+ %c,^k,5 $+ %c,^l,7 $+ %c,^m,8 $+ %c,^n,0 $+ %c,^o,8 $+ %c,^p,1 $+ %c,^q,1 $+ %c,^r,9 $+ %c,^s,8 $+ %c,^t,12 $+ %c,^u,11 $+ %c,^v,13 $+ %c,^w,0 $+ %c,^x,7 $+ %c,^y,15 $+ %c,^z,15 $+ %c) $+  %b = $replace(%a,^ $+ $chr(45),8 $+ %c,^ $+ $chr(43),7 $+ %c,^ $+ $chr(95),1 $+ %c,^ $+ $chr(61),8 $+ %c,^ $+ $chr(96),7 $+ %c,^ $+ $chr(126),2 $+ %c,^ $+ $chr(64),7 $+ %c,^ $+ $chr(35),6 $+ %c,^ $+ $chr(36),11 $+ %c,^ $+ $chr(37),0 $+ %c,^ $+ $chr(38),11 $+ %c,^ $+ $chr(42),0 $+ %c,^ $+ $chr(40),3 $+ %c,^ $+ $chr(41),1 $+ %c,^ $+ $chr(91),0 $+ %c,^ $+ $chr(93),8 $+ %c,^ $+ $chr(124),3 $+ %c,^ $+ $chr(92),3 $+ %c,^ $+ $chr(58),0 $+ %c,^ $+ $chr(39),0 $+ %c,^ $+ $chr(44),8 $+ %c,^ $+ $chr(46),0 $+ %c,^ $+ $chr(62),2 $+ %c,^ $+ $chr(60),3 $+ %c,^ $+ $chr(63),5 $+ %c,^ $+ $chr(33),7 $+ %c,^ $+ $chr(123),0 $+ %c,^ $+ $chr(125),8 $+ %c,^ $+ $chr(32),7 $+ %c,$chr(5),,$chr(1),^^,$chr(4),) return %b } ALIAS eF.DURATION return $replace($duration(%eF.pm.timeleft [ $+ [ $1 ] ],2),hrs,h,hr,h,mins,m,min,m,secs,s,sec,s) ALIAS eF.IP-NAME return $replace($gettok($hget(eF.ls,$hfind(eF.ls, * $+ $1 $+ *, 1, w).data),2-,32),$chr(32),_) ALIAS eF.~ { if $eF.IS.IP2($1) && $left($gettok($hget(eF.ls,$hfind(eF.ls, * $+ $1 $+ *, 1, w).data),2,32),1) == $chr(126) { return 1 } elseif ($1 isnum) && $left($gettok($hget(eF.ls,$1),2,32),1) == $chr(126) { return 1 } elseif $left($1,1) == $chr(126) { return 1 } } ALIAS eF.LB.ARCHIVE { var %l = $+(",$scriptdir,eF.lb.txt,") .rename %l $+(",$scriptdir,eF.lb.,$time(yyyy-mm-dd-ddd-hh-nn-ss-tt),.txt,") window -h @eF.lb.rename var %i = 1 while %i <= $hget(eF.lb,0).item { aline @eF.lb.rename $hget(eF.lb,%i).item aline @eF.lb.rename - inc %i } savebuf @eF.lb.rename %l window -c @eF.lb.rename hfree eF.lb hmake eF.lb 100 if !$isfile(%l) { write %l } hload eF.lb %l eF.bud.hist eF.bud.hist } ALIAS eF.L { var %x = eF.l $+ $1 var %t = $+(",$scriptdir,%x,.txt,") if $2 == init { if $hget(%x) { hfree %x } hmake %x 100 if !$isfile(%t) { write %t } hload %x %t return } elseif $2 == rem { hdel %x $3 if $1 == b { eF.bud.update } } elseif $2 == update_b { var %b $3,%l $4,%n $5 var %y = $+(*,%b,;,$calc(%l - %b),*) if %y !iswm $hget(eF.lb,%n) { if $calc(%l - %b) < 600 { return } if $numtok($hget(eF.lb, %n), 45) > 55 { eF.lb.archive } var %h = $+($hget(eF.lb,%n),%b,;,$calc(%l - %b),-) hadd -m eF.lb %n %h } } else { hadd -m %x $$2- } .timereF.s $+ $1 -m 1 1 hsave -o %x %t if $1 == s { .timereF.s.backup $+ $1 1 2 hsave -o %x $+(",$scriptdir,%x,.txt.bak,") } } MENU * { - ETF Browser:{ eF dialog -ie eF } } ALIAS eF.HMAIN { did -h eF 111,190,191,192,193,194,200,201,202,203,204,205,206,207,208,209,340,1241 dialog -s eF -1 -1 143 406 did -rv eF 124 } ALIAS eF.VMAIN { did -v eF 111,190,191,192,193,194,200,201,202,203,204,205,206,207,208,209,340,993,1241 dialog -s eF -1 -1 373 406 did -hr eF 124 did -ra eF 101 Join did -h eF 711,712,714 did -ra eF 702 configs did -ra eF 802 devmap did -ra eF 902 demos } ALIAS eF.. { var %ip if $1 { %ip = $1 } elseif $dialog(eF) && $eF.is.ip($did(eF,211)) { %ip = $ifmatch } else { eF.3 If no server is selected in the browser, please specify ip & port. $eF.rcon.ips Example: /eF.. 127.0.0.1:27960 } if %ip { window -ae @ETF_RCON_ $+ %ip eF.cmd %ip status } } ALIAS eF.RCON.IPS { var %i = 1,%s while $hfind(eF.lp,rcon.*,%i,w) { if $eF.is.ip($ifmatch) { %s = %s $+([,$ifmatch,$eF.ip-name($ifmatch),]) } else { hdel eF.lp $hfind(eF.lp,rcon.*,%i,w) } inc %i } if !%s { %s = 127.0.0.1:27960 } return $+(,$color(a),%s,,$color(*)) } ALIAS eF.CMD { if $eF.is.ip($1) { eF.rcon $1 $2- } elseif $dialog(eF) && $eF.is.ip($did(eF,211)) { eF.rcon $ifmatch $1- } else { eF.3 If no server is selected in the browser, please specify ip & port. $eF.rcon.ips Example: /eF.cmd 127.0.0.1:27960 map etf_forts } } ALIAS eF.RCON { var %p window -ae @ETF_RCON_ $+ $1 if $hget(eF.lp,rcon. $+ [ $1 ] ) { %p = $ifmatch } elseif $eF.is.ip($1) && ($gettok($1,2,58) isnum 0-65535) { eF.r.pw $1 return } else { eF.3 Invalid ip:port return } if $eF.is.ip($1) && $2 { sockudp -k eF.rcon $gettok($1,1,58) $$gettok($1,2,58) ˙˙˙˙rcon $+(",%p,") $2- echo -gt $iif($window(@ETF_RCON_ $+ $1),$ifmatch)  $+ $color(h) sockudp -k eF.rcon $gettok($1,1,58) $gettok($1,2,58) ˙˙˙˙rcon $+(",%p,") $2- } } ALIAS eF.HD.INIT { var %d,%m,%did,%i 1 eF.hmain if $1 == cfg { %i = $findfile(" $+ %eF.ETFdir $+ ",*.cfg,0,1,did -a eF 124 $nopath($1-)) did -v eF 711,712,714 %did = 702 } elseif $1 == dev { var %i = $findfile(" $+ %eF.ETFdir $+ ",*.pk3,0,1,if ETF_pak* !iswm $nopath($1-) && mp_bin* !iswm $nopath($1-) hadd eF.maps $gettok($nopath($1-),1,46)) eF.listmaps 124 %did = 802 } elseif $1 == dem { %i = $findfile(" $+ %eF.ETFdir $+ demos\ $+ ",*,0,1,did -a eF 124 $nopath($1-)) %did = 902 } if $1 != cfg { did -ra eF 702 configs } if $1 != dev { did -ra eF 802 devmap } if $1 != dem { did -ra eF 902 demos } did -ra eF %did MAIN eF.235 1 did -ra eF 101 $1 } ON *:UDPREAD:eF.RCON:{ var %t,%ip $+($sock(eF.RCON).saddr,:,$sock(eF.RCON).sport) sockread -f %t echo -gt $window(@ETF_RCON_ $+ %ip) - %t if %t == Bad rconpassword. { .timereF.r.pw -m 1 1 eF.r.pw %ip } .timereF.c.rcon 1 360 sockclose eF.rcon } ALIAS eF.R.PW { eF.min eF.l p rcon. $+ $1 $$input(Enter rcon password for $1 $eF.ip-name($1) (Note: saved to eF.lp.txt),er,rcon pw,$hget(eF.lp,rcon. $+ $1)) eF.cmd $1 status } ON *:DIALOG:eF:SCLICK:1200:{ if $eF.is.ip($did(eF,211)) { var %ip $ifmatch } else { return } var %pass $hget(eF.lp,rcon. $+ [ %ip ]) if !%pass { eF.min eF.l p rcon. $+ [ %ip ] $$?"Store %ip $+ 's rcon password here. $crlf $+ Note: stored to eF.lp.txt" %pass = $! eF.top } if %pass { eF.. %ip } } ON *:DIALOG:eF:SCLICK:1201:{ eF.l p eF.alert.ss $iif($hget(eF.lp,eF.alert.s) == ON,OFF,ON) eF.SEC.INIT 1 eF.alert.init 1 } ALIAS eF.COMMS { eF.l p etlog $file(%eF.ETFdir $+ etconsole.log).size filter -cffg $+(",%eF.ETFdir,etconsole.log,") etconsole2.log \x5E\x37[\x29]?\x3A\x20[\x5E\d] var %a = $filtered var %i = 1 window -n @eF.comms while %i <= %a { aline @eF.comms $eF.color.name($read(etconsole2.log,%i)) inc %i } aline @eF.comms $str(=,120) aline @eF.comms mm1&mm2 (double click this window to close it) aline @eF.comms $str(=,120) window -r @eF.comms } ON *:DIALOG:eF:SCLICK:252:{ eF.etdir eF.252 } ALIAS eF.252 { if $1 { did -hu eF 252 did -r eF 253 .timereF.blah 1 1 .timereF.fg off } elseif $did(eF,252).state && $eF.is.ip($did(eF,211)) { did -c eF 242 .timereF.fg -m 0 250 eF.fg $replace($ifmatch,:,$chr(32)) .timereF.fg1 -m 1 1 eF.fg $replace($ifmatch,:,$chr(32)) } else { .timereF.fg off } } ALIAS eF.FG { if !$dialog(eF) || !$did(eF,252).state { .timereF.fg off } elseif !%eF.fg { sockudp -k eF.fg $1 $$2 ˙˙˙˙getinfo set -u1 %eF.fg 1 } } ON *:DIALOG:eF:SCLICK:255:eF.l p eF.away $did($did).state ON *:DIALOG:eF:SCLICK:256:{ eF.min if !$hget(eF.lp,eF.away.chans) { var %x $input(If checked $+ $chr(44) an away message will be sent to specific channels and/or nicks. You can specify which channels/nicks here.,eo,IRC away,#chan1 $+ $chr(44) $+ #chan2 $+ $chr(44) $+ nick1 $+ $chr(44) $+ nick2 $+ $chr(44) $+ nick3...) } else { var %x $input(If checked $+ $chr(44) an away message will be sent to these channels/nicks:,eo,IRC away,$hget(eF.lp,eF.away.chans)) } if %x { if $chr(44) !isin %x { %x = $replace(%x,$chr(32),$chr(44)) } eF.l p eF.away.chans $gettok($remove(%x,$chr(32)),1-,44) } eF.top } ON *:DIALOG:eF:SCLICK:257:{ did -v eF 255,256 did -rh eF 257 } ALIAS eF.AFTER { if !$dialog(eF) { .timereF.after off return } var %i if $did(eF,257).text { %i = $gettok($ifmatch,3,32) if %i = 1 { did -rh eF 257 did -v eF 255,256 var %c $hget(eF.lp,eF.away.chans) var %n,%z = -6,%ifm,%m = <- $+ away @ $did(eF,211) $remove($did(eF,212).text,etf_) $iif($len($did(eF,132).text) > 3,$did(eF,132).text) $chr(91) $+ $did(eF,217) $+ $chr(93) while $gettok(%c,1,44) { %ifm = $ifmatch if $left(%ifm,1) == $chr(35) { .timereF.msg. $+ %z 1 %z msg %ifm %m inc %z 2 } else { %n = $addtok(%n,%ifm,44) } %c = $remtok(%c,%ifm,44) } if %n { msg %n %m } return } } else { did -av eF 257 cancel away 30 %i = 30 did -h eF 255,256 } did -ra eF 257 cancel away $calc(%i -1) } ON *:UDPREAD:eF.FG:{ if !$dialog(eF) { return } var %t sockread %t .timereF.c.fg 1 360 sockclose eF.fg if %t = ˙˙˙˙infoResponse { unset %eF.fg return } if $dialog(eF) && $did(eF,242).state && $did(eF,244) { if ($did(eF,243) = $chr(60)) && ($eF.var(%t,clients) < $did(eF,244)) { eF.go now } } if $did(eF,242).state { unset %eF.fg did -ra eF 253 $calc($did(eF,253) +1) } } ON *:DIALOG:eF:SCLICK:258:eF.l p eF.bat $did($did).state ON *:DIALOG:eF:SCLICK:259:{ eF.min var %x = $input(If checked $+ $chr(44) ETF.bat (if you created one) will be executed everytime you connect to a server.,o,ETF.bat) eF.top } ALIAS eF.IS.IP { if !$regex($1,((\d+)(\.\d+){3}(:\d+)?)) { return } else { tokenize 46 $replace($regml(1),:,.) } if ($1 !isnum 0-255) || ($2 !isnum 0-255) || ($3 !isnum 0-255) || ($4 !isnum 0-255) { return } if $5 && ($5 !isnum 0-65535) { return } elseif $5 { return $regml(1) } else { return $regml(1) $+ :27960 } } ALIAS eF.IS.IP2 if $regex($1,((\d+)(\.\d+){3})) { return $regml(1) } ALIAS eF.BUD.FS { if !$hget(eF.lp, eF.bud.fs) { eF.l p eF.bud.fs 1 window -c @eF.buddies window -adhokx +dL @eF.buddies eF.l p eF.x $window(@eF.buddies).w eF.l p eF.y $window(@eF.buddies).h eF.bud.update } else { eF.l p eF.bud.fs 0 $iif(%eF.bud.ext, unset %eF.bud.ext, set %eF.bud.ext 1) eF.bud.dclick } }