From 9954ef29a2d213b7cf4093609d80016fb85d5d02 Mon Sep 17 00:00:00 2001 From: Astro Date: Sun, 19 Dec 2021 18:22:59 +0100 Subject: [PATCH] add catch the chicken --- ctc-tdm.cfg | 114 ++++++++++++++++++++++++++++++++++++ nixos-modules/quake3ded.nix | 26 +++++++- pkgs/baseq3.nix | 16 +++++ q3config_server.cfg | 6 +- 4 files changed, 157 insertions(+), 5 deletions(-) create mode 100644 ctc-tdm.cfg diff --git a/ctc-tdm.cfg b/ctc-tdm.cfg new file mode 100644 index 0000000..7d7026b --- /dev/null +++ b/ctc-tdm.cfg @@ -0,0 +1,114 @@ +// Catch The Chicken Team Config + +//set host name that shows up in server list. +set sv_hostname "SBZ Catch the chicken" + +set g_log "" // disables writing gamestats to log file +set g_motd "Welcome to Team Catch The Chicken" +set pmove_fixed "1" // fps independent physics + +//dedicated server +set snaps "40" +set sv_fps "40" // server fps +set sv_maxRate 25000 // set max allowable rate for a client. 8000 to 10000 recommended. Max: 25000 +set net_ip "0.0.0.0" //all interfaces +set net_port "27960" +set dedicated 2 // 1 = LAN, 2 = public/internet +set sv_lanForceRate 1 // forces LAN clients to the maximum rate instead of accepting client setting (1 is the default behaviour, backward compatible) +set g_syncronousClients "0" // enable only for server recording demos +set g_smoothclients "1" +set sv_allowDownload 8 // do not ask the client to disconnect when using HTTP/FTP downloads + +//allow chicken menu +set chickmenu 1 + +//time holder scores with chicken +set teamchicktime 30 + +//time chickholder scores, rounded up to nearest multiple of 5 +set scoretime 10 + +//time chicken wanders till respawn, 0 = never +set respawntime 20 + +//does chicken wander or stay still +set g_chickroam 1 + +//set max allowable rate for a client. 8000 to 10000 recommended. Max: 25000 (Default: 0) +set sv_maxRate 10000 + +//allow chicken holder to grab powerups +set g_allowpowerups 1 + +//Free For All Settings Below +//set ffa fraglimit. Set to 0 for no limit. +set fraglimit 25 + +//set ffa timelimit. Set to 0 for no limit. +set timelimit 15 + +//set Gametype to 3 for Team ctc +set g_gametype 3 + +//set Maximum number of clients +set sv_maxclients 16 + +//turn on/off pak cheat check. 1=on, 0=off (Default: 1) +set sv_pure 1 + +//q3ctc main options +//Glow colour 0-RED 1-YELLOW 2-GREEN 3-NONE +set g_chickglow 2 + +//allow health pickup with chicken +set g_allowarmour 1 + +//allow health pickup with chicken +set g_allowhealth 1 + +//allow dropable chicken +set g_allowdrop 1 + +//score on kills +set g_killscore 1 + +//set weapon respawn times for free for all in seconds. May need to decrease for large number of clients. (Default: 5) +set g_weaponrespawn 5 +set g_weaponTeamRespawn 5 + +//set voting. 1=on, 0=off (Default: 1) +set g_allowvote 1 + +//set power multiples for quad damage (Default: 3) +set g_quadfactor 3 + +set g_enablebreath "1" // breathing effect (0: off, 1: on) +set g_enabledust "1" // dust effect by feet on particular maps (0: off, 1: on) + +set g_teamAutoJoin "1" +set g_teamForceBalance "0" +set g_inactivity "30" +set g_warmup "15" +set g_doWarmup "1" + +// bots +set bot_enable "1" // whether bots are allowed on the server +set bot_minplayers "3" // minimum players number +set bot_nochat "1" // einfach die Fresse halten +set g_spSkill "1" // bot difficulty + + +//Set map selection, cycle order, and load first map for free for all +set d1 "fraglimit 25;timelimit 15;map q3dm6 ;set nextmap vstr d2" +set d2 "fraglimit 25;timelimit 15;map q3dm7 ;set nextmap vstr d3" +set d3 "fraglimit 25;timelimit 15;map q3dm8 ;set nextmap vstr d4" +set d4 "fraglimit 25;timelimit 15;map q3dm9 ; set nextmap vstr d5" +set d5 "fraglimit 25;timelimit 15;map q3dm11 ;set nextmap vstr d6" +set d6 "fraglimit 25;timelimit 15;map q3dm12 ;set nextmap vstr d7" +set d7 "fraglimit 25;timelimit 15;map q3dm13 ;set nextmap vstr d8" +set d8 "fraglimit 25;timelimit 15;map q3dm15 ;set nextmap vstr d1" + +vstr d1 + + + diff --git a/nixos-modules/quake3ded.nix b/nixos-modules/quake3ded.nix index df8f516..f338991 100644 --- a/nixos-modules/quake3ded.nix +++ b/nixos-modules/quake3ded.nix @@ -1,4 +1,4 @@ -{ pkgs, self, ... }: +{ pkgs, config, lib, self, ... }: with pkgs; { services.quake3-server = { @@ -6,7 +6,29 @@ with pkgs; openFirewall = true; baseq3 = self.packages.${pkgs.system}.baseq3; extraConfig = '' - exec "ctf.cfg" + exec "ctc-tdm.cfg" ''; }; + + systemd.services.q3ds = { + environment.HOME = lib.mkForce ( + pkgs.runCommand "quake3-home" {} '' + mkdir -p $out/.q3a/baseq3 + + for file in ${config.services.quake3-server.baseq3}/*; do + ln -s $file $out/.q3a/baseq3/$(basename $file) + done + + ln -s ${self.packages.${pkgs.system}.q3ctc} $out/.q3a/q3ctc + + ln -s ${pkgs.writeText "q3ds-extra.cfg" '' + set net_port ${builtins.toString config.services.quake3-server.port} + + ${config.services.quake3-server.extraConfig} + ''} $out/.q3a/baseq3/nix.cfg + '' + + ); + serviceConfig.ExecStart = lib.mkForce "${pkgs.ioquake3}/ioq3ded.x86_64 +set fs_game q3ctc +exec nix.cfg"; + }; } diff --git a/pkgs/baseq3.nix b/pkgs/baseq3.nix index 5a0a90e..747d714 100644 --- a/pkgs/baseq3.nix +++ b/pkgs/baseq3.nix @@ -37,6 +37,22 @@ rec { # cfg ln -s ${../q3config_server.cfg} $out/q3config_server.cfg ln -s ${../ctf.cfg} $out/ctf.cfg + ln -s ${../ctc-tdm.cfg} $out/ctc-tdm.cfg ln -s ${../randomctfmaps.cfg} $out/randomctfmaps.cfg ''; + + q3ctc = runCommand "q3ctc" { + src = fetchurl { + url = "http://share.pedalkickers.de/fps/quake3/q3ctc-v1_4.zip"; + sha256 = "0yx3gh0lnkdzb2iqa353ybvhqgm0hr25d3cyhlzm549mfh1qyh0q"; + }; + nativeBuildInputs = [ unzip ]; + } '' + mkdir q3ctc + cd q3ctc + unzip $src + cd .. + + cp -ar q3ctc $out + ''; } diff --git a/q3config_server.cfg b/q3config_server.cfg index ea8f71d..eaad35e 100644 --- a/q3config_server.cfg +++ b/q3config_server.cfg @@ -3,9 +3,9 @@ rconpassword "" sv_maxRate "25000" // IPv4 + IPv6 set net_enabled "3" -sv_maxclients 32 -sv_hostname "[SBZ] spaceboyz.net" -g_motd "Grrr!" +set sv_maxclients 32 +set sv_hostname "[SBZ] spaceboyz.net" +set g_motd "Grrr!" sets "Administrator" "Astro" sets "Email" "astro@spaceboyz.net"