
Helmut Honigdachs
Members-
Posts
64 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Events
Everything posted by Helmut Honigdachs
-
a cheater spoofed my etpro guid
Helmut Honigdachs replied to Kanonenfutter's topic in Streaming Questions and Troubleshooting
The solution would be for yawn to remove that whole ETPro guid field. It's just nonsense, since they are long known to be easily fakeable. -
I can only second that, these scripts are great! If I find the time, I'll add name to ID translation to gwrevv3.lua...
-
Bummer. And if we would make that a premium service, so it would cost admins a few euros if they activate it?
-
I see that this is integrated in your gwrev script, though it only warns, it doesn't kick if I get that right. I have no idea about lua, could you update that script so automatic kicking is configurable? :) Cool! It's like kicking reversed - instead of forcing a known bad GUID to wait, we force all unknown GUIDs to wait, only excluding known good GUIDs. Due to the fact that there are unlimited GUIDs available, and cheaters can easily get new ones and thereby circumventing the wait time, this is absolutely the way to go in ET and maybe simlilar free games. I see that this feature is integrated in the gwrev script too, but as far as I can see, it lacks the feature to store good GUIDs in a file, thereby forcing players to wait everytime even though they may have waited before. Could you add that to the script too? I'd then activate the wait feature and set the time to 5 minutes :) Until then I'll leave it disabled, my admins will have to be content with !gwdisarm and !gwown :) Our regulars will understand that, they know that we are trying everything possible to keep their gameplay cheater free. Although I'm not that much into autokicking because of too high accuracy, I guess it may be worth a try as long as the treshold is high enough. It won't kick for high mortar/grenade/satchel/dynamite/mine/panzerfaust accuracies I guess? Please send me that script via PM. I could post them in the restricted SGA-only forum, too, if you want. Oh yeah, I'm looking forward to test these :) I think I have an idea there... we could make minguidage work again for servers that stream to the PBBans hub. Instead of using the real GUID creation time from the master server (that is not available to us), we just use the time when the PBBans hub saw the GUID for the first time. It could work like this: 1) Player joins a streaming server. 2) The hub notices the player by scanning the PB logs; it looks into it's database, determining whether it knows the player for at least X days. X could be configured by every streaming game admin in the configuration panel; the feature should be of course disabled for every server by default, so every admins has to enable it himself and also set X. I'd go for 7 days. 3) If the GUID is too new, the hub would use it's rcon rights to either kick the player or force him to stay spec. 4) If the GUID was still completely unknown, the time between join and kick should be long enough for the hub to store the player in it's database, so that the GUID can then age. All regulars would not be affected, because they're already known to the hub. foxdie, what do you think? Is this realizable? I'm not sure whether the PB logs contain all the neccessary information...
-
As I said, usually this works in ETPro, too. The cheaters just seem to have found a way around that. kmod and etadmin_mod won't help much, because they have to rely on the GUID. Bans of course get stored permanently, but due to the availability of new GUIDs they're not of much help anymore. IP bans are not permanent as long as we used the etadmin_mod command "!banip 80.160", and I finally put it in the server.cfg then. That's what I wanted to say :) Well, !disarm from mcsteve sounds like a funny idea ;) Yes, it was, but I can't understand why they actually abandoned it. The idea seems just so simple and error-free... detecting new hacks may be complicated and hard work, but storing GUID creation dates is not. It just doesn't make any sense. etadmin_mod relied on this PB feature, so without the PB support, etadmin_mod won't do anything. I already wrote about that in my original post ;) Combine it with an only-one-GUID-per-IP-per-day mechanism, and maybe a CAPTCHA, that will make GUID stashing hard work. Yeah, I was thinking about the real PB hardware GUIDs. I know that global hardware GUID banning is only for EB, but local hardware GUID banning should be possible too, IMO. It would definitely increase the odds, but it has to be done on the client side, via mod code. We would have to wait for bani to put it in ETPro... Yeah, you're right, it is being updated. I just have the feeling sometimes that it's not enough; the cheaters are making the game unplayable, and EB seems to be too slow to stop them. OTOH, there are many VIOLATION (MULTIHACK) #70476 bans in my ban list here, so it detects the hack. If there would be just a sensible GUID mechanism now, there would be no problem.
-
The last few weeks we had serious problems with mostly cheating nazis on our server, and somehow I feel left in the lurch by PB. As far as I can see, there are only two things in ET Punkbuster that are still reliable: IP range bans work, and PB GUIDs are not arbitrarily fakable, cheaters can only get random new GUIDs. Apart from this, everything else is not really effective anymore: * vote kicks / kicks: when our regulars try to votekick the cheaters, they can rejoin immediately, although neither their IP nor their GUID changes: When I joined the server and had someone votekick me it worked - I had to wait several minutes before I could join again, so there's no configuration mistake. * bans: most cheating kiddies can be scared away with bans, but especially the quoted cheater from above from the IP range 84.160.*.* is not impressed at all - new GUID and that's that. We soon started to use IP bans (without saving them in the config), but he came back whenever the server was restarted. Now I've put the range into the config, that keeps at least this guy away. A fast grep through our shrubbot.cfg shows that there are about 50 bans within that IP range... We're lucky that there seems to be only the cheater from this range, there are no other regulars within there. Today I wanted to ban a regular who greeted the nazis with "HEIL HITLER" yesterday (noticed that in the log; we're collecting IPs and nazi says because we're thinking about reporting this to the police). Of course he was back within 5 seconds, explaining he only wanted to "pose" as a nazi so they wouldn't kick him. I banned him again, and after 5 seconds he was back in the game. IP ban's not possible because there are several players from his range, so there's nothing I can do. I somehow have the urgent need to bang my head repeatedly against a wall. * minguidage: I understand that ET is rather problematic because there are no CD keys, and banned cheaters can easily get new keys from the master server. I don't understand though why EB is completely unable to make minguidage work again - it once worked and the mechanism is both uncrackable (because it works completely server-sided) and extremely simple to implement. Just have a database on the master server that records the date when each CD key was issued, and there is your GUID age - servers could request that info and thereby kick cheaters who deleted their etkey. Combined with a mechanism that allows only one key per IP per day to stop cheaters from getting hundreds of keys at once, this would be wonderfully annoying for cheaters. * hardware GUIDs: I dunno. Did they ever work? If yes, why can't we use them to ban players from our server? Next to PB, there is etpro IAC. Let's see how it performs... That's a folder containing 139 log files, each for one day, dating back into august 2007. In an old backup, we have another pile of 97 log files, dating from 04/2007 to 07/2007... no hits. In an even older log, ending in 04/2007 and being 560 MB big (we weren't using logrotation back then, so I don't know when that log started; if I assume an average 5MB per day, that would be about 112 days): So essentially, etpro IAC is as abandoned as PB - it once worked, but isn't worth a penny today. Wonderful. Oh, and etpro GUIDs. I guess there's no need to tell anyone that they're crap... cheaters were actually using them against us - they faked our own etpro GUIDs and made us ban both their worthless faked PB guid, and our own etpro GUIDs. My clanmates panicked because they thought cheaters were able to actively ban them, until we figured out what was happening and fixed the etadmin_mod to ignore etpro guids completely. So, to sum it up, we as game administrators are rather fucked up. Why are we still fighting this fight, when all the responsible companies are showing the white feather?
-
@Necromancer: see "Bugfixes and changes" in the readme, @RoadWarrior: I know about kmod, but I've never tested it. It seems to have some nice features (things that are not possible without lua, because lua is so tightly integrated into the game), but I believe there are many things that kmod can't do. [Just wanted to look into the kmod source to see how it works, but the download link is dead :/] For example, I've written an etadmin_mod extension that allows players to vote whether they like the maps (!like / !dislike), and the results (2743 votes so far) are stored in a MySQL database. That's what I like about the etadmin_mod: it's extensible until the cows come home - it's perl, you can execute other programs, connect to databases, everything. I don't think that lua could do this. On the other hand, many things that are going on inside the game can only be controlled with lua, not so good with reading logs and sending rcon commands (that's what etadmin_mod does). But you could always integrate the lua features into etadmin_mod, while you cannot integrate perl functionality into lua. If I had the time, I'd rewrite etadmin_mod and would create a program that's more powerful than kmod and etadmin_mod together :) Hell no! :) Mark wrote etadmin_mod as an utter mess of spaghetti code, but that's not Perl's fault. You can write wonderful object oriented code in Perl, and if I'd rewrite etadmin_mod, I would do exactly that. No way you could do that in lua :-p
-
HH-Funclan ET Tools: vim syntax highlighting | etadmin_mod fixes I decided to publish some more of our ET tools & modifications... so here it is: our etadmin_mod patch :) You will always find the latest version of the patch and the readme file on our website: http://download.hh-funclan.de/tools/etadmin_mod/hhpatch/ I will quote them here so you can have a look without following that link. Patch: --- clean/etadmin_mod.pl 2007-10-08 16:30:19.000000000 +0200 +++ etadmin_mod.pl 2007-10-15 20:32:00.000000000 +0200 @@ -4310,8 +4310,7 @@ if ( ( $type eq "KICK" || $type eq "MUTE" ) && &get_admin_level( $tmphash{$target}{'guid'} ) > 0 ) { - &cancelvote( $line, 0, - "You can't ^1$type^7 a " . $level{ &get_admin_level( $tmphash{$target}{'guid'} ) } . "^7!" ); + &cancelvote( $line, 0, "You can't ^1$type^7 " . $tmphash{$target}{'name'} . "^7!" ); &log("Canceled vote to $vote"); next; } @@ -5385,14 +5384,12 @@ { foreach my $guid ( keys %warnings_bn ) { - my $wt = $config{'bad_name_grace_period'} > 0 ? int( $config{'bad_name_grace_period'} * 0.66 ) : 0; - if ( $wt && time - $warnings_bn{$guid} >= 20 && $tmp_warn2{$guid}{'status'} < 2 ) + my $timeleft = $config{'bad_name_grace_period'} - (time - $warnings_bn{$guid}); + if(($timeleft % 10 == 0) && !($timeleft == $config{'bad_name_grace_period'} || $timeleft < 1)) { if ( &guid_check($guid) ) { - &say("$tmp_warn2{$guid}{'name'} ^1-> 10 seconds before kick. Please change your name!"); - $tmp_warn2{$guid}{'status'} = 2; - &log("Warning 1 -> $tmp_warn2{$guid}{'name'}"); + &say("$tmp_warn2{$guid}{'name'} ^1-> $timeleft seconds before kick. Please change your name!"); } else { @@ -5400,7 +5397,7 @@ } } - elsif ( time - $warnings_bn{$guid} >= $config{'bad_name_grace_period'} ) + elsif($timeleft < 1) { # NEVER KICK SOMEONE, that is on the slot and has a DIFFERENT GUID @@ -5694,7 +5691,7 @@ { $cmd = "chat $tmphash{$client}{'name'}^7:"; } - elsif ( $config{'et_mod'} == 2 && &etpro_pm_check($mod_version) ) + elsif ( $config{'et_mod'} == 2 ) { $cmd = 'm "' . &convert_name( $tmphash{$client}{'name'} . '"', 0, 0 ); } @@ -5715,50 +5712,24 @@ $cmd = "say"; } - if ( $config{'et_mod'} >= 2 ) - { - - # Running etpro / headshot. Has no linebreaks yet ... - my @data = split( /\n/, $message ); - - # More then one row ? - if ( $#data > 0 ) - { - - # OK, every line need (except the last) need spaces at the end. - for my $count ( 0 .. $#data - 1 ) - { - my $line_length; - if ( $config{'et_mod'} == 2 ) - { - $line_length = $intermission ? 97 : 62; - } - elsif ( $config{'et_mod'} == 3 ) - { - $line_length = $intermission ? 70 : 70; - } - my $length = length( &convert_line( $data[$count] ) ); - if ( $length < $line_length ) - { - $data[$count] .= "^0"; - for ( 1 .. $line_length - $length ) - { - $data[$count] .= $_ != $line_length - $length ? "_" : "^7 "; - } - } - } - } - $message = join( '', @data ); - } - # $ schuetzen #$message =~ s/\$/\\\$/g if( $config{'input_type'} ne "udp"); - $message =~ s/\n/\\n/g; - $message =~ s/"//g; - &cmd("$cmd \"$message\""); + if($position eq "chatclient" && $config{'et_mod'} >= 2) { + # etpro/headshot + # linebreak workaround + my @data = split(/\n/, $message); + for(@data) { + $_ =~ s/\n/\\n/g; + $_ =~ s/"//g; + &cmd("$cmd \"$_\""); + } + } else { + $message =~ s/\n/\\n/g; + $message =~ s/"//g; + &cmd("$cmd \"$message\""); + } $last = time(); - } sub etpro_pm_check @@ -7464,6 +7435,7 @@ $command =~ s/<PLAYER_CLASS>/$CLASS{$tmphash{$client_id}{'class'}}/g; $command =~ s/<PLAYER_TEAM>/$SIDE{$tmphash{$client_id}{'team'}}/g; $command =~ s/<ADMIN_?LEVEL>/$admin_level/g; + $command =~ s/<MAP_?NAME>/$mapname/g; #print "Name: $name ($convert_name)\n"; #print $command."\n"; @@ -7622,36 +7594,30 @@ #my $counter = 0; - for (@players) - { - if ( $_ =~ /^\s*(\d+)\s*\d+\s+999\s+/ ) + if(!$gamestart) { + # still warmup, we won't allow spec999 + &say("^1*ATTENTION*:^7 $name, please don't use ^1spec999^w during ^3warmup^w!"); + } else { + for (@players) { - - # Only push players in teams to spectator. - push( @exec, "forceteam $1 s" ) if ( $tmphash{$1}{'team'} == 1 || $tmphash{$1}{'team'} == 2 ); - - #$counter ++; - #if ($counter % 16 == 0) { - # my $exec = join( '; ', @exec ); - # &log("Executing: $exec"); - # &rcon( "set etadmin \"$exec; say ^3spec999: ^7Moving " . ( $#exec + 1 ) . " players to spectator.\""); - # &rcon( "vstr etadmin" ); - # @exec = (); - #} + if ( $_ =~ /^\s*(\d+)\s*\d+\s+999\s+/ ) + { + # Only push players in teams to spectator. + push( @exec, "forceteam $1 s" ) if ( $tmphash{$1}{'team'} == 1 || $tmphash{$1}{'team'} == 2 ); + } + } + if ( $#exec > -1 ) + { + my $exec = join( '; ', @exec ); + &log("Executing: $exec") if ( $config{'debug'} ); + &cmd( "set etadmin \"$exec; say ^3spec999: ^7Moving " . ( $#exec + 1 ) . " players to spectator.\"" ); + &cmd("vstr etadmin"); + } + else + { + &say( "^3spec999: ^7Moving 0 players to spectator." . $warning, @say_params ); } } - if ( $#exec > -1 ) - { - my $exec = join( '; ', @exec ); - &log("Executing: $exec") if ( $config{'debug'} ); - &cmd( "set etadmin \"$exec; say ^3spec999: ^7Moving " . ( $#exec + 1 ) . " players to spectator.\"" ); - &cmd("vstr etadmin"); - } - else - { - &say( "^3spec999: ^7Moving 0 players to spectator." . $warning, @say_params ); - } - } elsif ( $config{'admin_functions'} && $data[0] eq "admintest" @@ -7963,6 +7929,12 @@ @say_params ); } } + } elsif ($config{'admin_functions'} && $data[0] eq "pmute" && &admin_check($guid, "slap", $base)) { + my $target = $data[1]; + my $found = 0; + ($target, $found) = &part2complete($target, 0); + + &say("$name slaps $target around a bit with a big large trout."); } elsif ( $config{'admin_functions'} && $data[0] eq "pmute" ) { @@ -8459,23 +8431,6 @@ } } - if ( $cmd eq "bani" ) - { - - if ( !$tmphash{$target}{'etpro_guid'} ) - { - &say( "^3bani:^7 Sorry, no etpro guid found!", @say_params ); - return; - } - - # Win98 workaround: - if ( $tmphash{$target}{'etpro_guid'} eq "52FF6283916A9467908E6A771CB70285FB41C5E7" ) - { - &say( "^3bani:^7 Sorry, you ^1can't ^7ban this client (win98 etpro guid bug)!", @say_params ); - return; - } - } - # admin check: if ( &get_admin_level( $tmphash{$target}{'guid'} ) >= &get_admin_level($guid) ) { @@ -8522,25 +8477,12 @@ } else { - if ( $cmd eq "bani" ) - { - &shrub_ban( - $config{'shrubbot_cfg'}, "add", - $tmphash{$target}{'guid'}, $timestamp, - &convert_name( $name, 0, 0 ), $ip, - $reason, &convert_name( $tmphash{$target}{'name'}, 0, 0 ), - $tmphash{$target}{'etpro_guid'} - ); - } - else - { - &shrub_ban( - $config{'shrubbot_cfg'}, "add", - $tmphash{$target}{'guid'}, $timestamp, - &convert_name( $name, 0, 0 ), $ip, - $reason, &convert_name( $tmphash{$target}{'name'}, 0, 0 ) - ); - } + &shrub_ban( + $config{'shrubbot_cfg'}, "add", + $tmphash{$target}{'guid'}, $timestamp, + &convert_name( $name, 0, 0 ), $ip, + $reason, &convert_name( $tmphash{$target}{'name'}, 0, 0 ) + ); &log( "Banned: $target (" . &convert_name( $tmphash{$target}{'name'} ) Readme: These patches contain fixes for the etadmin_mod. Created by the HH-Funclan (http://www.hh-funclan.de). 2007 by Helmut Honigdachs, adminteam at hh-funclan dot de http://download.hh-funclan.de/tools/etadmin_mod/hhpatch/ Latest Release: r2, 15.10.2007 Bugfixes and changes: * When a player tries to kickvote a protected player, etadmin_mod will no longer display the level of the protected player, but instead a message like "You can't kick <player>!". * Fixed the kick_badnames behaviour, that was totally screwed up. * Fixed the dispatching of ETPro private messages. Someone screwed that up, too; etadmin_mod tried to emulate linebreaks by filling up the lines with underscores, which made multiline PMs totally unreadable. With the patch applied, etadmin_mod will simply dispatch each line as a single PM. * Fixed the issue with nonworking PMs after etadmin_mod was restarted. This was caused by a now unnecessary version check; etadmin_mod wouldn't dispatch PMs until it had found out the ETPro version, which was only logged after map changes. * Added the <MAPNAME> magic word for use in the etadmin.cfg. You will need this when you want to use the mappoll.pl addon. * Fixed !spec999: it is no longer useable in warmup. This will prohibit players with a fast connection to spec players with slow connections during map beginnings. We recommend you to enable !spec999 for Level 0 so that ordinary players can issue it too, this patch will reduce it's abuse. * Added !slap from IRC :) I was too lazy to add a suitable config option, so !slap uses the !pmute permission. If you can issue !pmute, then you can issue !slap. We don't want our Level 0 users to have spam commands;) * Changed !bani behaviour to !ban behaviour. Originally introduced as an improvement to !ban, !bani didn't only ban the PunkBuster GUID, but also the ETPro GUID, which is hardware based and therefore theoretically better. Eventually, it became clear that ETPro GUIDs are broken and easily fakeable (you can't fake PunkBuster GUIDs, only create random new ones). If you use !bani, you will sooner or later encounter a cheater that fakes ETPro GUIDs from other players, and thereby making you ban innocent players without even noticing. Note that this patch won't stop etadmin_mod from enforcing already banned ETPro GUIDs, so read the section "Removing ETPro GUIDs from shrubbot.cfg" after applying it. Applying the patch: (You will need the GNU utilities patch and wget to apply the patch, but maybe except from cygwin, every Linux distribution should ship these by default.) 1) Change into your etadmin_mod/bin directory. $ cd /path/to/etadmin_mod/bin 2) Make a backup copy of the etadmin_mod.pl file. $ cp etadmin_mod.pl etadmin_mod.pl.bak 3) Download the patch. wget http://download.hh-funclan.de/tools/etadmin_mod/hhpatch/latest.patch 4) Apply the patch. $ patch < latest.patch If patch says "patching file etadmin_mod.pl", everything went fine. 5) Restart the etadmin_mod. $ cd .. $ ./etadmin_mod.sh restart Removing ETPro GUIDs from shrubbot.cfg: (You will need the editor vim to do this.) 1) Change into your etadmin_mod/etc directory. $ cd /path/to/etadmin_mod/etc 2) Make a backup copy of the shrubbot.cfg file. $ cp shrubbot.cfg shrubbot.cfg.bak 3) Open the shrubbot.cfg in vim. $ vim shrubbot.cfg 4) Type the following command exactly into vim. Make sure that you haven't accidentally pressed any other keys until now; if in doubt, press ESC 2-3 times. After you have typed the command, press ENTER. vim will then remove all lines beginning with "eguid". :g/^eguid.*/d 5) Save the file and close vim with the following command (again, press ENTER to execute it). :wq What are all those files in download.hh-funclan.de/tools/etadmin_mod/hhpatch/? readme.txt This readme file. r1.patch, r2.patch, ... The patch itself. The number identifies the revision. Always use the latest (highest) revision, the old version are just archived here for your convenience. latest.patch This is a symlink (something like a copy) to the latest patch, also provided for your convenience [and for mine, cause I don't need to update the readme everytime I release a new revision;)]. EDIT: Updated the path and the readme quoting to reflect path changes.
-
Vim syntax highlighting for ET logs
Helmut Honigdachs replied to Helmut Honigdachs's topic in Enemy Territory
Well, you could use the Windows version of gvim: http://www.vim.org/download.php#pc ;) Paths should then be relative to C:\Program Files\vim\gvim or something like that. As you are most probably not familiar to (g)vim and unix editors in general, you won't be able to really use gvim as an editor (it's incredible hard to use if you've never used it before), but you can still use it to load the ET log and scroll around. -
I guess we all are looking through our logs from time to time... a few months ago, I wrote a syntax file for vim to make the log file (etserver.log) much easier to view. Have a look at the screenshots :) To install the syntax file, copy the following code into the file /usr/share/vim/vim70/syntax/etlog.vim: " Vim syntax file " Language : Enemy Territory log file " Maintainer : Helmut Honigdachs " Last change: 01.08.2007 if exists("b:current_syntax") finish endif " say syn match etSay '^..:..\... say: .\+$' contains=ALL syn match etSayTeam '^..:..\... sayteam: .\+$' contains=ALL syn match etSayFireteam '^..:..\... saybuddy: .\+$' contains=ALL syn match etPrivMsg '^..:..\... etpro privmsg: .\+$' contains=ALL hi def etSay ctermfg=lightgreen hi def etSayTeam ctermfg=lightcyan hi def etSayFireteam ctermfg=yellow hi def etPrivMsg ctermfg=red " damage modifiers / ifsk syn match etDamModifier 'MOD_[A-Z0-9_]\+' syn match etSuicide 'MOD_SUICIDE' syn match etSuicide '[iI][nN]\?[fF][sS][kK]' hi def etDamModifier ctermfg=darkred hi def etSuicide ctermbg=darkred ctermfg=white " connect/disconnect syn match etConnect '^..:..\... ClientConnect: .\+$' syn match etDisconnect '^..:..\... ClientDisconnect: .\+$' hi def etConnect ctermbg=green ctermfg=black hi def etDisconnect ctermbg=red ctermfg=white " uninteresting things syn match etU '^..:..\... Userinfo: .\+$' syn match etU '^..:..\... ClientUserinfoChanged: .\+$' syn match etU '^..:..\... ClientBegin: .\+$' syn match etU '^..:..\... WeaponStats: .\+$' syn match etU '^..:..\... InitGame: .\+$' syn match etU '^..:..\... Item: .\+$' syn match etU '^..:..\... Health: .\+$' syn match etU '^..:..\... Health_Pack: .\+$' syn match etU '^..:..\... Medic_Revive: .\+$' hi def etU ctermfg=darkgray " etadmin commands syn match etETAdmin / ![a-zA-Z9]\+/ hi def etETAdmin ctermbg=magenta ctermfg=white " vim: ts=4 As you can see in the screenshot, my name "Helmut Honigdachs" is highlighted in blue. This is because I've also put our Clan name and some fakenicks we use into the syntax file: " HH syn case ignore syn match etHH ' H[a-z]\+ \+H[a-z]\+' syn match etHH ':\*)))' syn match etHH ':-)' syn match etHH '\$chl3|m0' syn keyword etHH martinvw ai endgegner paul regenbogen gogeta sumsum dercheffe .st0rm schnickschnack minensucher bodyshotbot aow hi def etHH ctermfg=blue You can modify this code for your own clan name (the regular expression below the "syn case ignore") and also add fakenicks with own "syn match" statements when they contain special characters, or else just group them behind a "syn keyword" statement. After you have created the etlog.vim file, you need to add the following code to your /usr/share/vim/vimrc file: fun IsETLog() if match(getline(1,2), '^[0-9][0-9]:[0-9][0-9].[0-9][0-9] .*$') >= 0 set filetype=etlog %s/\^.//g set nowrite set nomodified endif endfun autocmd BufWinEnter * call IsETLog()This will examine every file you open in vim and detect the ET log format. When it decides the file has to be an ET log, it will load the syntax file and also remove all color codes, because this simplifies reading the log. -Martin
-
I don't know how we were able to keep our servers running for so long without streaming to pbbans :)
-
Bug or not Bug de PB_sS ?
Helmut Honigdachs replied to teXou's topic in Forum de discussion générale
Well, if you would be discussing this in English, I would actually be able to understand what you're talking about :-) I would be always very careful when PB screenshots just look 'strange', because for example black screenshots are just normal when playing under Linux, and faulty graphics drivers create strange looking black-and-white screenshots. But as far as I know, pbbans considers identical screenshots over at least 3 maps as enough evidence for a screenshot blocker and therefor for a ban, so if these screenshots were taken on a streaming server, go ahead and submit them over your team account and let pbbans decide. When the player still claims that it's a PB bug, then tell him to appeal the ban on pbbans and again, let them decide :) -
On our ET server HH-Funclan 2 (80.190.228.24:27960), all screenshots taken from my computer are black. The reason: I'm playing under Linux :) That's why a black screenshot is completely worthless when trying to find cheaters - it could be a player under Linux, or it could be a cheater who knows about that problem and set up his cheat program to display a black picture.
-
80.190.228.24:27960
Helmut Honigdachs replied to Helmut Honigdachs's topic in Streaming Questions and Troubleshooting
Thank you! I have already submitted the first screenshot :-) Heiko Hering ( http://www.pbbans.com/forums/index.php?showuser=107846 ) is the guy I am administrating our servers with. Is it possible to give him the same permissions on pbbans.com that I now have? Many thanks in advance :-) -
80.190.228.24:27960
Helmut Honigdachs replied to Helmut Honigdachs's topic in Streaming Questions and Troubleshooting
Woo! Server is streaming via Hub :-) -
Hub Game: Enemy Territory Clantag: HH