1
0
mirror of https://github.com/UzixLS/armastuff.git synced 2025-07-18 23:01:34 +03:00
This commit is contained in:
Eugeny Uzix
2012-03-22 21:50:02 +04:00
commit ba317ffa1e
10 changed files with 593 additions and 0 deletions

114
armatop.pl Executable file
View File

@ -0,0 +1,114 @@
#!/usr/bin/env perl -T
# Armatop v0.8 by Uzix <master@uzix.us.to>
# TODO:
# 1. case insensetive /stats
# 2. fix file::tail
use 5.010;
use strict;
use Getopt::Long;
use File::Tail;
$ENV{PATH} = '/bin:/usr/bin:/usr/local/bin';
$ENV{ENV} = '';
my $c1="0xff6633";
my $c2="0xcc9900";
my $c3="0xffee11";
my $waitint=1;
my $workdir=".";
my $mode;
my %stats;
GetOptions ("workdir=s" => \$workdir, "mode=s" => \$mode);
sub cmessage {
my $message = $_[0];
my $nick = $_[1];
if ($nick) {
print out "PLAYER_MESSAGE $nick \">> $message\"\n";
} else {
print out "CONSOLE_MESSAGE $message\n";
}
sleep 1;
}
sub cmdtop {
my $nick=$_[1]?$_[1]:$_[0] or warn "cmdstats: no arg0" and return;
my @top; my $ok=0; my $i=0; my $ii=0;
open won_matches, "$workdir/won_matches.txt" or warn "File '$workdir/won_matches.txt' open failed: $!\n" and return;
while (<won_matches>) {
m/(?<score>\d+)\s+(?<nick>\S+)/;
my $t_nick=$+{nick}; my $t_score=$+{score};
$i++;
if ($ii) { $ii++; }
if (!$ok and $t_nick =~ /^\Q$nick\E$/i) {
$ok=1; $ii=1;
push @top, "${c3}$.th) $t_nick ($t_score)";
} else {
push @top, "${c2}$.th) $t_nick ($t_score)";
}
if ($i>5) { $i--; shift @top; }
if ($ii>2 and $i>4) { last; }
}
close won_matches;
if ($ok) {
&cmessage ("${c1}Top list for ${c3}$nick${c1}:".'\n\ '.join ('\n\ ',@top), $_[1]?$_[0]:"");
} else {
&cmessage ("${c3}$nick${c1} isn't in top list.", $_[1]?$_[0]:"");
}
}
sub cmdstats {
my $nick=$_[1]?$_[1]:$_[0] or warn "cmdstats: no arg0" and return;
if (exists ($stats{$nick})) {
&cmessage ("${c2}Stats for ${c3}$nick${c2}: ${c3}".($stats{$nick}{r} or 0)."${c2} rounds played (${c3}".sprintf ("%.0f", ($stats{$nick}{rw}/($stats{$nick}{r} or 1)*100))."${c2}% wins); ${c3}".($stats{$nick}{m} or 0)."${c2} matches played (${c3}".sprintf ("%.0f", ($stats{$nick}{mw}/($stats{$nick}{m} or 1)*100))."${c2}% wins); ${c3}".($stats{$nick}{k} or 0)."${c2} kills; ${c3}".($stats{$nick}{d} or 0)."${c2} deaths; ${c3}".sprintf("%.2f",$stats{$nick}{k}/($stats{$nick}{d} or 1))."${c2} KpD.", $_[1]?$_[0]:"");
} else {
&cmessage ("${c3}$nick${c2} never played on this server.", $_[1]?$_[0]:"");
}
}
sub rebuild {
open rebuildlog, "$workdir/ladderlog.txt" or warn "File '$workdir/ladderlog.txt' open failed: $!\n" and return;
while (chomp (my $line = <rebuildlog>)) {
given ($line) {
when (m<^DEATH_FRAG (?<who_died>\S+) (?<by_who>\S+).*>) { $stats{$+{who_died}}{'d'}++; $stats{$+{by_who}}{'k'}++; }
when (m<^ROUND_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'r'}++; }
when (m<^MATCH_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'m'}++; }
when (m<^ROUND_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'rw'}++; }
when (m<^MATCH_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'mw'}++; }
}
}
close rebuildlog;
}
given ($mode) {
when ('test') {
open out, "|cat";
&rebuild ();
open ladderlog, "$workdir/ladderlog.txt" or die "File '$workdir/ladderlog.txt' open failed: $!\n";
$c1=""; $c2=""; $c3="";
} when ('stdio') {
open out, ">-";
&rebuild ();
open ladderlog, "<-";
} default {
open out, ">$workdir/commands" or die "File '>$workdir/commands' open failed: $!\n";;
&rebuild ();
open ladderlog, "tail -n0 -f $workdir/ladderlog.txt |" or die "Pipe 'tail -n0 -f $workdir/ladderlog.txt |' open failed: $!\n";
#my $ladderlogref=tie *ladderlog,"File::Tail",(maxinterval=>0.1,interval=>0.1,name=>"$workdir/ladderlog.txt");
}
}
select((select(out), $|=1)[0]);
print out "CONSOLE_MESSAGE ***Armatop script loaded.\n";
while (chomp (my $line = <ladderlog>)) {
given ($line) {
when (m<^DEATH_FRAG (?<who_died>\S+) (?<by_who>\S+).*>) { $stats{$+{who_died}}{'d'}++; $stats{$+{by_who}}{'k'}++; }
when (m<^ROUND_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'r'}++; }
when (m<^MATCH_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'m'}++; }
when (m<^ROUND_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'rw'}++; }
when (m<^MATCH_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'mw'}++; &cmdtop ($+{who}); }
when (m<^PLAYER_ENTERED (\S+) .*>) { &cmdstats ($1); }
when (m<^PLAYER_LEFT (\S+) .*>) { &cmdstats ($1); };
when (m<^COMMAND /top (?:[0-9]?) ?(?<who>\S+) (?<ip>[0-9.]+) (?<level>[0-9]{1,3}) ?(?<parm>\S*) ?(?:\S*).*>) { if (!$+{parm}) { &cmdtop ($+{who}, $+{who}) } else { &cmdtop ($+{who}, $+{parm}) }; }
when (m<^COMMAND /stats (?:[0-9]?) ?(?<who>\S+) (?<ip>[0-9.]+) (?<level>[0-9]{1,3}) ?(?<parm>\S*) ?(?:\S*).*>) { if (!$+{parm}) { &cmdstats ($+{who}, $+{who}) } else { &cmdstats ($+{who}, $+{parm}) }; }
}
}
close ladderlog;
close out;

36
armatop/README Normal file
View File

@ -0,0 +1,36 @@
Armatop - armagetron top100 script
==================================
Armagetron is 3D game inspired by Tron film.
Requirements
------------
+ Perl > 5.10
+ Perl GetOpt::Long module
+ Perl File::Tail module (optional)
How to use
----------
There is two ways to use this script with arma server:
1) Running as standalone program (for sty+ct server version):
export ARMADIR="/path/to/armagetron/working/dir"
perl -T ./armatop.pl --workdir="$ARMADIR/var"
armagetronad-dedicated --userdatadir "$ARMADIR"\
--input "$ARMADIR/var/commands"
2) Using in pipe (for vanila server):
export ARMADIR="/path/to/armagetron/working/dir"
tail -n0 -f "$ARMADIR/var/ladderlog.txt" |\
perl -T ./armatop.pl --mode=stdio |\
armagetronad-dedicated --userdatadir "$ARMADIR"
Known issues
------------
+ In stadalone mode when script process is killed tail process staying alive
while is no any text will be written to ladderlog.txt.
+ File::Tail working glitchy.

114
armatop/armatop.pl Executable file
View File

@ -0,0 +1,114 @@
#!/usr/bin/env perl -T
# Armatop v0.8 by Uzix <master@uzix.us.to>
# TODO:
# 1. case insensetive /stats
# 2. fix file::tail
use 5.010;
use strict;
use Getopt::Long;
use File::Tail;
$ENV{PATH} = '/bin:/usr/bin:/usr/local/bin';
$ENV{ENV} = '';
my $c1="0xff6633";
my $c2="0xcc9900";
my $c3="0xffee11";
my $waitint=1;
my $workdir=".";
my $mode;
my %stats;
GetOptions ("workdir=s" => \$workdir, "mode=s" => \$mode);
sub cmessage {
my $message = $_[0];
my $nick = $_[1];
if ($nick) {
print out "PLAYER_MESSAGE $nick \">> $message\"\n";
} else {
print out "CONSOLE_MESSAGE $message\n";
}
sleep 1;
}
sub cmdtop {
my $nick=$_[1]?$_[1]:$_[0] or warn "cmdstats: no arg0" and return;
my @top; my $ok=0; my $i=0; my $ii=0;
open won_matches, "$workdir/won_matches.txt" or warn "File '$workdir/won_matches.txt' open failed: $!\n" and return;
while (<won_matches>) {
m/(?<score>\d+)\s+(?<nick>\S+)/;
my $t_nick=$+{nick}; my $t_score=$+{score};
$i++;
if ($ii) { $ii++; }
if (!$ok and $t_nick =~ /^\Q$nick\E$/i) {
$ok=1; $ii=1;
push @top, "${c3}$.th) $t_nick ($t_score)";
} else {
push @top, "${c2}$.th) $t_nick ($t_score)";
}
if ($i>5) { $i--; shift @top; }
if ($ii>2 and $i>4) { last; }
}
close won_matches;
if ($ok) {
&cmessage ("${c1}Top list for ${c3}$nick${c1}:".'\n\ '.join ('\n\ ',@top), $_[1]?$_[0]:"");
} else {
&cmessage ("${c3}$nick${c1} isn't in top list.", $_[1]?$_[0]:"");
}
}
sub cmdstats {
my $nick=$_[1]?$_[1]:$_[0] or warn "cmdstats: no arg0" and return;
if (exists ($stats{$nick})) {
&cmessage ("${c2}Stats for ${c3}$nick${c2}: ${c3}".($stats{$nick}{r} or 0)."${c2} rounds played (${c3}".sprintf ("%.0f", ($stats{$nick}{rw}/($stats{$nick}{r} or 1)*100))."${c2}% wins); ${c3}".($stats{$nick}{m} or 0)."${c2} matches played (${c3}".sprintf ("%.0f", ($stats{$nick}{mw}/($stats{$nick}{m} or 1)*100))."${c2}% wins); ${c3}".($stats{$nick}{k} or 0)."${c2} kills; ${c3}".($stats{$nick}{d} or 0)."${c2} deaths; ${c3}".sprintf("%.2f",$stats{$nick}{k}/($stats{$nick}{d} or 1))."${c2} KpD.", $_[1]?$_[0]:"");
} else {
&cmessage ("${c3}$nick${c2} never played on this server.", $_[1]?$_[0]:"");
}
}
sub rebuild {
open rebuildlog, "$workdir/ladderlog.txt" or warn "File '$workdir/ladderlog.txt' open failed: $!\n" and return;
while (chomp (my $line = <rebuildlog>)) {
given ($line) {
when (m<^DEATH_FRAG (?<who_died>\S+) (?<by_who>\S+).*>) { $stats{$+{who_died}}{'d'}++; $stats{$+{by_who}}{'k'}++; }
when (m<^ROUND_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'r'}++; }
when (m<^MATCH_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'m'}++; }
when (m<^ROUND_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'rw'}++; }
when (m<^MATCH_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'mw'}++; }
}
}
close rebuildlog;
}
given ($mode) {
when ('test') {
open out, "|cat";
&rebuild ();
open ladderlog, "$workdir/ladderlog.txt" or die "File '$workdir/ladderlog.txt' open failed: $!\n";
$c1=""; $c2=""; $c3="";
} when ('stdio') {
open out, ">-";
&rebuild ();
open ladderlog, "<-";
} default {
open out, ">$workdir/commands" or die "File '>$workdir/commands' open failed: $!\n";;
&rebuild ();
open ladderlog, "tail -n0 -f $workdir/ladderlog.txt |" or die "Pipe 'tail -n0 -f $workdir/ladderlog.txt |' open failed: $!\n";
#my $ladderlogref=tie *ladderlog,"File::Tail",(maxinterval=>0.1,interval=>0.1,name=>"$workdir/ladderlog.txt");
}
}
select((select(out), $|=1)[0]);
print out "CONSOLE_MESSAGE ***Armatop script loaded.\n";
while (chomp (my $line = <ladderlog>)) {
given ($line) {
when (m<^DEATH_FRAG (?<who_died>\S+) (?<by_who>\S+).*>) { $stats{$+{who_died}}{'d'}++; $stats{$+{by_who}}{'k'}++; }
when (m<^ROUND_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'r'}++; }
when (m<^MATCH_SCORE (?<score>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'m'}++; }
when (m<^ROUND_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'rw'}++; }
when (m<^MATCH_WINNER (?<team>\S+) (?<who>\S+).*>) { $stats{$+{who}}{'mw'}++; &cmdtop ($+{who}); }
when (m<^PLAYER_ENTERED (\S+) .*>) { &cmdstats ($1); }
when (m<^PLAYER_LEFT (\S+) .*>) { &cmdstats ($1); };
when (m<^COMMAND /top (?:[0-9]?) ?(?<who>\S+) (?<ip>[0-9.]+) (?<level>[0-9]{1,3}) ?(?<parm>\S*) ?(?:\S*).*>) { if (!$+{parm}) { &cmdtop ($+{who}, $+{who}) } else { &cmdtop ($+{who}, $+{parm}) }; }
when (m<^COMMAND /stats (?:[0-9]?) ?(?<who>\S+) (?<ip>[0-9.]+) (?<level>[0-9]{1,3}) ?(?<parm>\S*) ?(?:\S*).*>) { if (!$+{parm}) { &cmdstats ($+{who}, $+{who}) } else { &cmdstats ($+{who}, $+{parm}) }; }
}
}
close ladderlog;
close out;

11
bot/README Normal file
View File

@ -0,0 +1,11 @@
Patch file to make your armagetron client acts like bot.
To activate bot chage value of option CHATBOT_ALWAYS_ACTIVE to 1.
Recommeded settings:
CHATBOT_MIN_TIMESTEP 0
CHATBOT_DECAY 0
CHATBOT_DELAY 0
CHATBOT_NEW_WALL_BLINDNESS 0
CHATBOT_RANGE 10
CHATBOT_DECAY 0

35
bot/armabot.patch Normal file
View File

@ -0,0 +1,35 @@
--- gCycle.cpp 2012-03-21 22:54:49.000000000 +0400
+++ gCycle.cpp~ 2012-03-21 21:49:24.000000000 +0400
@@ -318,26 +318,26 @@
#endif
static bool sg_chatBotAlwaysActive = false;
-static tConfItem<bool> sg_chatBotAlwaysActiveConf( "CHATBOT_ALWAYS_ACTIVE", sg_chatBotAlwaysActive );
+static gChatBotSwitch sg_chatBotAlwaysActiveConf( "CHATBOT_ALWAYS_ACTIVE", sg_chatBotAlwaysActive );
static REAL sg_chatBotNewWallBlindness = .3;
-static tConfItem<REAL> sg_chatBotNewWallBlindnessConf( "CHATBOT_NEW_WALL_BLINDNESS",
+static gChatBotSetting sg_chatBotNewWallBlindnessConf( "CHATBOT_NEW_WALL_BLINDNESS",
sg_chatBotNewWallBlindness );
static REAL sg_chatBotMinTimestep = .3;
-static tConfItem<REAL> sg_chatBotMinTimestepConf( "CHATBOT_MIN_TIMESTEP",
+static gChatBotSetting sg_chatBotMinTimestepConf( "CHATBOT_MIN_TIMESTEP",
sg_chatBotMinTimestep );
static REAL sg_chatBotDelay = .5;
-static tConfItem<REAL> sg_chatBotDelayConf( "CHATBOT_DELAY",
+static gChatBotSetting sg_chatBotDelayConf( "CHATBOT_DELAY",
sg_chatBotDelay );
static REAL sg_chatBotRange = 1;
-static tConfItem<REAL> sg_chatBotRangeConf( "CHATBOT_RANGE",
+static gChatBotSetting sg_chatBotRangeConf( "CHATBOT_RANGE",
sg_chatBotRange );
static REAL sg_chatBotDecay = .02;
-static tConfItem<REAL> sg_chatBotDecayConf( "CHATBOT_DECAY",
+static gChatBotSetting sg_chatBotDecayConf( "CHATBOT_DECAY",
sg_chatBotDecay );
class gCycleChatBot

77
run.sh Executable file
View File

@ -0,0 +1,77 @@
#!/usr/bin/env bash
# Run script for armagetron server.
PROGDIR=/opt/arma
HOMDIR=/var/games/arma/$2
#test $(id -u) = 0 && su armagetron
case "$1" in
start|stop|restart|rehash|status)
if [ -z "$2" ]; then echo "Please, give me servername."; exit 1; fi
if [ ! -r "$HOMDIR" ]; then echo "Cannot read $HOMDIR"; exit 3; fi
;;
esac; case "$1" in
status)
echo "Status for armagetron ($2): "
echo -n ' Server: '
if [ ! -r "$HOMDIR/var/pid" ]; then echo "cannot read PID file ($HOMDIR/var/pid)"; exit 2; fi
echo -n $(cat "$HOMDIR/var/pid")" "
if [ -r /proc/$(cat "$HOMDIR/var/pid") ]; then echo "ok"; else echo "fail"; fi
echo -n ' Armatop: '
if [ ! -r "$HOMDIR/var/pid.armatop" ]; then echo "cannot read PID file ($HOMDIR/var/pid.armatop)"; exit 2; fi
echo -n $(cat "$HOMDIR/var/pid.armatop")" "
if [ -r /proc/$(cat "$HOMDIR/var/pid") ]; then echo "ok"; else echo "fail"; fi
;;
stop)
echo -n "Stopping armagetron ($2): "
if [ ! -r "$HOMDIR/var/pid" ]; then
echo "Cannot read PID file ($HOMDIR/var/pid)"
exit 2
fi
echo -n $(cat "$HOMDIR/var/pid")" "
kill $(cat "$HOMDIR/var/pid") 2>/dev/null
if [ ! -r "$HOMDIR/var/pid.armatop" ]; then
echo "Cannot read PID file ($HOMDIR/var/pid.armatop)"
exit 2
fi
echo -n $(cat "$HOMDIR/var/pid.armatop")" "
kill $(cat "$HOMDIR/var/pid.armatop") 2>/dev/null
echo .
;;
start)
echo -n "Starting armagetron ($2): "
touch "$HOMDIR/var/ladderlog.txt" "$HOMDIR/var/won_rounds.txt" "$HOMDIR/var/won_matches.txt"
test -e "$HOMDIR/var/commands" && rm "$HOMDIR/var/commands" ; mkfifo "$HOMDIR/var/commands"
nice -n 2 perl -T $PROGDIR/scripts/armatop.pl --workdir="$HOMDIR/var" &
echo -n "$! "; echo -n $! >"$HOMDIR/var/pid.armatop"
while true; do
env LD_LIBRARY_PATH=/opt/arma/lib/ $PROGDIR/bin/armagetronad-dedicated --userdatadir "$HOMDIR" --input "$HOMDIR/var/commands" >"$HOMDIR/var/log" 2>&1 &
trap "kill %1; exit;" TERM INT
trap "kill -HUP %1; wait %1;" HUP
wait %1
sleep 3
done &
echo -n "$! "; echo -n $! >"$HOMDIR/var/pid"
echo .
;;
restart)
"$0" stop "$2" && "$0" start "$2"
;;
rehash)
echo -n "Rehashing armagetron ($2): "
if [ ! -r "$HOMDIR/var/pid" ]; then
echo "Cannot read PID file ($HOMDIR/var/pid)"
exit 2
fi
echo -n $(cat "$HOMDIR/var/pid")" "
kill -HUP $(cat "$HOMDIR/var/pid") 2>/dev/null
echo .
;;
*)
echo "Unknown parameters. Try to use \"$0 <start|stop|restart|rehash|status> <servername>\""
;;
esac

65
server_sets/TheTavern.cfg Normal file
View File

@ -0,0 +1,65 @@
### Cycle Settings ###
CYCLE_SPEED 30
CYCLE_START_SPEED 18
CYCLE_ACCEL 28
CYCLE_DELAY .001
CYCLE_BRAKE 70
CYCLE_RUBBER 8
CYCLE_PING_RUBBER 8
CYCLE_RUBBER_SPEED 40
CYCLE_BRAKE_REFILL 1
CYCLE_BRAKE_DEPLETE .1
CYCLE_TIME_TOLERANCE 10000
CYCLE_RUBBER_TIMEBASED 1
CYCLE_RUBBER_MINDISTANCE .001
CYCLE_RUBBER_MINDISTANCE_RATIO 0.0001
CYCLE_RUBBER_MINADJUST 0.001
CYCLE_RUBBER_LEGACY 0
CYCLE_RUBBER_TIME 1
CYCLE_RUBBER_DELAY .5
CYCLE_RUBBER_DELAY_BONUS .5
CYCLE_DELAY_TIMEBASED 0.5
### Gameplay Settings ###
SP_SPEED_FACTOR 0
SPEED_FACTOR 0
SP_WALLS_LENGTH 0
WALLS_LENGTH 0
SP_WALLS_STAY_UP_DELAY 0
WALLS_STAY_UP_DELAY 0
SP_EXPLOSION_RADIUS 0
EXPLOSION_RADIUS 0
SP_SIZE_FACTOR -3
SIZE_FACTOR -1
WIN_ZONE_DEATHS 1
SP_WIN_ZONE_MIN_ROUND_TIME 360
WIN_ZONE_MIN_ROUND_TIME 360
SP_WIN_ZONE_MIN_LAST_DEATH 60
WIN_ZONE_MIN_LAST_DEATH 60
### Score Settings ###
SCORE_HOLE 0
SCORE_SUICIDE -1
SCORE_DIE 0
SCORE_KILL 1
SCORE_SURVIVE 0
SP_SCORE_WIN 0
SCORE_WIN 0
SP_LIMIT_SCORE 100
LIMIT_SCORE 10
SP_LIMIT_ROUNDS 100
LIMIT_ROUNDS 100
SP_LIMIT_TIME 20
LIMIT_TIME 20
### Teams settings ###
SP_MIN_PLAYERS 4
SP_NUM_AIS 0
TEAM_BALANCE_ON_QUIT 0
TEAM_BALANCE_WITH_AIS 0
TEAM_MAX_IMBALANCE_PERM 1
TEAM_MAX_IMBALANCE 2
TEAM_MAX_PLAYERS 1
TEAM_MIN_PLAYERS 1
TEAMS_MAX 16
TEAMS_MIN 1

75
server_sets/TronTrek.cfg Normal file
View File

@ -0,0 +1,75 @@
### Cycle Settings ###
CYCLE_ACCEL 25
CYCLE_BRAKE 70
CYCLE_BRAKE_DEPLETE 0.1
CYCLE_DELAY 0.001
CYCLE_DELAY_TIMEBASED 0
CYCLE_PING_RUBBER 10
CYCLE_RUBBER 10
CYCLE_RUBBER_TIME 2
CYCLE_RUBBER_TIMEBASED 1
CYCLE_RUBBER_DELAY 50
CYCLE_RUBBER_DELAY_BONUS 2
CYCLE_RUBBER_MINDISTANCE 0.1
CYCLE_RUBBER_MINDISTANCE_GAP 0.15
CYCLE_START_SPEED 1
RESPAWN_TIME 0
CYCLE_INVULNERABLE_TIME 4
CYCLE_WALL_TIME 3.5
### Gameplay Settings ###
SP_GAME_TYPE 0
GAME_TYPE 0
SP_WALLS_LENGTH 400
WALLS_LENGTH 1400
SP_WALLS_STAY_UP_DELAY 0.5
WALLS_STAY_UP_DELAY 0.5
SP_SIZE_FACTOR -2
SIZE_FACTOR -2
SP_EXPLOSION_RADIUS 1
EXPLOSION_RADIUS 1
SP_WIN_ZONE_MIN_LAST_DEATH 1
WIN_ZONE_MIN_LAST_DEATH 1
SP_WIN_ZONE_MIN_ROUND_TIME 320
WIN_ZONE_MIN_ROUND_TIME 320
WIN_ZONE_DEATHS 1
WIN_ZONE_EXPANSION 10
WIN_ZONE_RANDOMNESS 0
WIN_ZONE_INITIAL_SIZE 1
### Score Settings ###
SCORE_DEATHZONE 0
SCORE_DIE 0
SCORE_HOLE 0
SCORE_KILL 1
SCORE_SUICIDE -1
SCORE_SURVIVE 0
SP_SCORE_WIN 0
SCORE_WIN 0
SP_LIMIT_SCORE 100
LIMIT_SCORE 100
SP_LIMIT_ROUNDS 1
LIMIT_ROUNDS 1
SP_LIMIT_TIME 6
LIMIT_TIME 6
### Other Settings ###
CHATBOT_MIN_TIMESTEP 0
CHATBOT_DELAY 0
CHATBOT_RANGE 10
CHATBOT_DECAY 0
### Teams Settings ###
SP_MIN_PLAYERS 2
MIN_PLAYERS 2
SP_AI_IQ 10000
AI_IQ 10000
SP_NUM_AIS 0
NUM_AIS 1
SP_TEAMS_MIN 4
TEAMS_MIN 2
SP_TEAMS_MAX 5
SP_TEAM_MIN_PLAYERS 2
SP_TEAM_MAX_PLAYERS 2
TEAM_MAX_PLAYERS 1
SP_TEAM_BALANCE_WITH_AIS 0

66
server_sets/WildCat.cfg Normal file
View File

@ -0,0 +1,66 @@
### Cycle Settings ###
CYCLE_ACCEL 30
CYCLE_ACCEL_OFFSET 2.0
CYCLE_BRAKE 90.0
CYCLE_BRAKE_REFILL .5
CYCLE_BRAKE_DEPLETE .25
CYCLE_DELAY 0.001
CYCLE_MAX_REFCOUNT 30000
CYCLE_PING_RUBBER 12.0
CYCLE_RUBBER 20.0
CYCLE_RUBBER_MINADJUST .1
CYCLE_RUBBER_MINDISTANCE .01
CYCLE_RUBBER_MINDISTANCE_RATIO .0001
CYCLE_RUBBER_SPEED 40
CYCLE_RUBBER_TIME 5.0
CYCLE_SOUND_SPEED 15
CYCLE_SMOOTH_THRESHOLD .2
CYCLE_SMOOTH_TIME .5
CYCLE_SPEED 35.0
CYCLE_START_SPEED 35.0
CYCLE_SYNC_INTERVAL_ENEMY 0.2
CYCLE_SYNC_INTERVAL_SELF 0.05
CYCLE_WALL_NEAR 3.0
RESPAWN_TIME 0
CYCLE_INVULNERABLE_TIME 4
CYCLE_WALL_TIME 3.5
### Gameplay Settings ###
SP_WALLS_LENGTH 200
WALLS_LENGTH 200
SP_WALLS_STAY_UP_DELAY 0
WALLS_STAY_UP_DELAY 0
SP_SIZE_FACTOR -3
SIZE_FACTOR -3
SP_EXPLOSION_RADIUS 0
EXPLOSION_RADIUS 0
WIN_ZONE_DEATHS 1
SP_WIN_ZONE_MIN_LAST_DEATH 30
WIN_ZONE_MIN_LAST_DEATH 30
SP_WIN_ZONE_MIN_ROUND_TIME 2000
WIN_ZONE_MIN_ROUND_TIME 2000
### Score Settings ###
SCORE_DEATHZONE 0
SCORE_DIE 0
SCORE_HOLE 0
SCORE_KILL 1
SCORE_SUICIDE 0
SCORE_SURVIVE 0
SP_SCORE_WIN 1
SCORE_WIN 1
SP_LIMIT_SCORE 13
LIMIT_SCORE 13
SP_LIMIT_ROUNDS 100
LIMIT_ROUNDS 100
SP_LIMIT_TIME 20
LIMIT_TIME 20
### Teams settings ###
SP_MIN_PLAYERS 2
MIN_PLAYERS 2
SP_AI_IQ 100
SP_NUM_AIS 3
SP_TEAM_BALANCE_WITH_AIS 0
TEAMS_MIN 2
TEAM_MAX_PLAYERS 1

View File