This commit is contained in:
Elias Stepanik 2023-12-03 14:07:42 +01:00
commit 1d8657dc6c
10 changed files with 375 additions and 0 deletions

28
Dockerfile Normal file
View File

@ -0,0 +1,28 @@
# https://worldofpadman.net/en/tutorials/create-a-dedicated-wop-server/
FROM ubuntu:22.04
RUN echo 'APT::Install-Suggests "0";' >> /etc/apt/apt.conf.d/00-docker
RUN echo 'APT::Install-Recommends "0";' >> /etc/apt/apt.conf.d/00-docker
RUN DEBIAN_FRONTEND=noninteractive \
apt-get update \
&& apt-get install -y python3 \
&& apt-get install -y unzip \
&& apt-get install -y wget
RUN mkdir /wop
RUN mkdir /wop/server
RUN mkdir /wop/server/data
RUN mkdir /wop/server/data/wop
WORKDIR /tmp
RUN wget --no-check-certificate https://res.sailehd.de/wop-1.6.2-full-unified.zip
RUN unzip /tmp/wop-1.6.2-full-unified.zip -d /tmp/
RUN mv /tmp/worldofpadman-1-6-2/* /wop/server/data/
WORKDIR /wop/server
ADD start-* /wop/server/
ADD config/ /wop/server/server/wop/
CMD ./data/wopded-linux.x86_64 +set dedicated 1 +set net_port 27960 +set com_hunkMegs 256 +exec /wop/server/server/wop/server_settings.cfg

181
config/rotation.cfg Normal file
View File

@ -0,0 +1,181 @@
//
// World of Padman - example map and gametype rotation
//
//
// Rotates through each official map for each supported gametype.
// Sets point- and timelimit for each gametype.
//
// Does not load a map itself!
//
//
// Maps
//
// Free For All
set map_ffa1 "map wop_airplane; set nextmap_ffa vstr map_ffa2"
set map_ffa2 "map wop_anteroom; set nextmap_ffa vstr map_ffa3"
set map_ffa3 "map wop_backyard; set nextmap_ffa vstr map_ffa4"
set map_ffa4 "map wop_bath; set nextmap_ffa vstr map_ffa5"
set map_ffa5 "map wop_cabin; set nextmap_ffa vstr map_ffa6"
set map_ffa6 "map wop_diner; set nextmap_ffa vstr map_ffa7"
set map_ffa7 "map wop_jail; set nextmap_ffa vstr map_ffa8"
set map_ffa8 "map wop_padattic; set nextmap_ffa vstr map_ffa9"
set map_ffa9 "map wop_padcrash; set nextmap_ffa vstr map_ffa10"
set map_ffa10 "map wop_padcrash_dm17; set nextmap_ffa vstr map_ffa11"
set map_ffa11 "map wop_padgarden; set nextmap_ffa vstr map_ffa12"
set map_ffa12 "map wop_padgarden_night; set nextmap_ffa vstr map_ffa13"
set map_ffa13 "map wop_padkitchen; set nextmap_ffa vstr map_ffa14"
set map_ffa14 "map wop_padlibrary; set nextmap_ffa vstr map_ffa15"
set map_ffa15 "map wop_padship; set nextmap_ffa vstr map_ffa16"
set map_ffa16 "map wop_padshop; set nextmap_ffa vstr map_ffa17"
set map_ffa17 "map wop_trashmap; set nextmap_ffa vstr map_ffa1"
// Spray Your Color
set map_syc1 "map wop_airplane; set nextmap_syc vstr map_syc2"
set map_syc2 "map wop_anteroom; set nextmap_syc vstr map_syc3"
set map_syc3 "map wop_backyard; set nextmap_syc vstr map_syc4"
set map_syc4 "map wop_bath; set nextmap_syc vstr map_syc5"
set map_syc5 "map wop_cabin; set nextmap_syc vstr map_syc6"
set map_syc6 "map wop_diner; set nextmap_syc vstr map_syc7"
set map_syc7 "map wop_huette; set nextmap_syc vstr map_syc8"
set map_syc8 "map wop_jail; set nextmap_syc vstr map_syc9"
set map_syc9 "map wop_padattic; set nextmap_syc vstr map_syc10"
set map_syc10 "map wop_padgarden; set nextmap_syc vstr map_syc11"
set map_syc11 "map wop_padkitchen; set nextmap_syc vstr map_syc12"
set map_syc12 "map wop_padlibrary; set nextmap_syc vstr map_syc13"
set map_syc13 "map wop_padship; set nextmap_syc vstr map_syc14"
set map_syc14 "map wop_padshop; set nextmap_syc vstr map_syc15"
set map_syc15 "map wop_trashmap; set nextmap_syc vstr map_syc1"
// Last Pad Standing
set map_lps1 "map wop_airplane; set nextmap_lps vstr map_lps2"
set map_lps2 "map wop_anteroom; set nextmap_lps vstr map_lps3"
set map_lps3 "map wop_backyard; set nextmap_lps vstr map_lps4"
set map_lps4 "map wop_cabin; set nextmap_lps vstr map_lps5"
set map_lps5 "map wop_diner; set nextmap_lps vstr map_lps6"
set map_lps6 "map wop_huette; set nextmap_lps vstr map_lps7"
set map_lps7 "map wop_padatticLPS; set nextmap_lps vstr map_lps8"
set map_lps8 "map wop_padcrash; set nextmap_lps vstr map_lps9"
set map_lps9 "map wop_padgarden_night; set nextmap_lps vstr map_lps10"
set map_lps10 "map wop_padkitchenLPS; set nextmap_lps vstr map_lps11"
set map_lps11 "map wop_padlibraryLPS; set nextmap_lps vstr map_lps1"
// Free For All Team
set map_tffa1 "map wop_airplane; set nextmap_tffa vstr map_tffa2"
set map_tffa2 "map wop_anteroom; set nextmap_tffa vstr map_tffa3"
set map_tffa3 "map wop_backyard; set nextmap_tffa vstr map_tffa4"
set map_tffa4 "map wop_bath; set nextmap_tffa vstr map_tffa5"
set map_tffa5 "map wop_cabin; set nextmap_tffa vstr map_tffa6"
set map_tffa6 "map wop_diner; set nextmap_tffa vstr map_tffa7"
set map_tffa7 "map wop_huette; set nextmap_tffa vstr map_tffa8"
set map_tffa8 "map wop_jail; set nextmap_tffa vstr map_tffa9"
set map_tffa9 "map wop_padattic; set nextmap_tffa vstr map_tffa10"
set map_tffa10 "map wop_padcrash; set nextmap_tffa vstr map_tffa11"
set map_tffa11 "map wop_padcrash_dm17; set nextmap_tffa vstr map_tffa12"
set map_tffa12 "map wop_padgarden; set nextmap_tffa vstr map_tffa13"
set map_tffa13 "map wop_padkitchen; set nextmap_tffa vstr map_tffa14"
set map_tffa14 "map wop_padlibrary; set nextmap_tffa vstr map_tffa15"
set map_tffa15 "map wop_padship; set nextmap_tffa vstr map_tffa16"
set map_tffa16 "map wop_padshop; set nextmap_tffa vstr map_tffa17"
set map_tffa17 "map wop_trashmap; set nextmap_tffa vstr map_tffa1"
// Capture The Lolly
set map_ctl0 "map wop_colorstageCTL; set nextmap_ctl vstr map_ctl1"
set map_ctl1 "map wop_fridgeCTL; set nextmap_ctl vstr map_ctl2"
set map_ctl2 "map wop_journeyCTL; set nextmap_ctl vstr map_ctl3"
set map_ctl3 "map wop_padasiaCTL; set nextmap_ctl vstr map_ctl4"
set map_ctl4 "map wop_padbaseCTL; set nextmap_ctl vstr map_ctl5"
set map_ctl5 "map wop_padboxCTL; set nextmap_ctl vstr map_ctl6"
set map_ctl6 "map wop_padcloisterCTL; set nextmap_ctl vstr map_ctl7"
set map_ctl7 "map wop_padcrashCTL; set nextmap_ctl vstr map_ctl8"
set map_ctl8 "map wop_westernCTL; set nextmap_ctl vstr map_ctl0"
// Spray Your Color Team
set map_tsyc1 "map wop_airplane; set nextmap_tsyc vstr map_tsyc2"
set map_tsyc2 "map wop_anteroom; set nextmap_tsyc vstr map_tsyc3"
set map_tsyc3 "map wop_backyard; set nextmap_tsyc vstr map_tsyc4"
set map_tsyc4 "map wop_bath; set nextmap_tsyc vstr map_tsyc5"
set map_tsyc5 "map wop_cabin; set nextmap_tsyc vstr map_tsyc6"
set map_tsyc6 "map wop_diner; set nextmap_tsyc vstr map_tsyc7"
set map_tsyc7 "map wop_huette; set nextmap_tsyc vstr map_tsyc8"
set map_tsyc8 "map wop_jail; set nextmap_tsyc vstr map_tsyc9"
set map_tsyc9 "map wop_padattic; set nextmap_tsyc vstr map_tsyc10"
set map_tsyc10 "map wop_padgarden; set nextmap_tsyc vstr map_tsyc11"
set map_tsyc11 "map wop_padkitchen; set nextmap_tsyc vstr map_tsyc12"
set map_tsyc12 "map wop_padlibrary; set nextmap_tsyc vstr map_tsyc13"
set map_tsyc13 "map wop_padship; set nextmap_tsyc vstr map_tsyc14"
set map_tsyc14 "map wop_padshop; set nextmap_tsyc vstr map_tsyc15"
set map_tsyc15 "map wop_trashmap; set nextmap_tsyc vstr map_tsyc1"
// BigBalloon
set map_bb0 "map wop_anteroomBB; set nextmap_bb vstr map_bb1"
set map_bb1 "map wop_backyardBB; set nextmap_bb vstr map_bb2"
set map_bb2 "map wop_bathBB; set nextmap_bb vstr map_bb3"
set map_bb3 "map wop_cabinBB; set nextmap_bb vstr map_bb4"
set map_bb4 "map wop_dinerBB; set nextmap_bb vstr map_bb5"
set map_bb5 "map wop_huetteBB; set nextmap_bb vstr map_bb6"
set map_bb6 "map wop_jailBB; set nextmap_bb vstr map_bb7"
set map_bb7 "map wop_padatticBB; set nextmap_bb vstr map_bb8"
set map_bb8 "map wop_padcrashBB; set nextmap_bb vstr map_bb9"
set map_bb9 "map wop_padgardenBB; set nextmap_bb vstr map_bb10"
set map_bb10 "map wop_padkitchenBB; set nextmap_bb vstr map_bb11"
set map_bb11 "map wop_padlibraryBB; set nextmap_bb vstr map_bb12"
set map_bb12 "map wop_padshipBB; set nextmap_bb vstr map_bb13"
set map_bb13 "map wop_padshopBB; set nextmap_bb vstr map_bb14"
set map_bb14 "map wop_trashmapBB; set nextmap_bb vstr map_bb0"
//
// Gametypes
//
// Start with 8 lives in Last Pad Standing
set g_LPS_startLives "8"
// Do not enable InstaPad
set g_instaPad "0"
// Free For All
set gametype_ffa "set g_gametype 0; set pointlimit 32; set timelimit 16; vstr nextmap_ffa; set next_gametype vstr gametype_syc"
// Spray Your Color
set gametype_syc "set g_gametype 3; set pointlimit 256; set timelimit 16; vstr nextmap_syc; set next_gametype vstr gametype_lps"
// Last Pad Standing
set gametype_lps "set g_gametype 4; set pointlimit 8; set timelimit 16; vstr nextmap_lps; set next_gametype vstr gametype_tffa"
// Free For All Team
set gametype_tffa "set g_gametype 5; set pointlimit 64; set timelimit 16; vstr nextmap_tffa; set next_gametype vstr gametype_ctl"
// Capture The Lolly
set gametype_ctl "set g_gametype 6; set pointlimit 8; set timelimit 16; vstr nextmap_ctl; set next_gametype vstr gametype_tsyc"
// Spray Your Color Team
set gametype_tsyc "set g_gametype 7; set pointlimit 512; set timelimit 16; vstr nextmap_tsyc; set next_gametype vstr gametype_bb"
// BigBalloon
set gametype_bb "set g_gametype 8; set pointlimit 256; set timelimit 16; vstr nextmap_bb; set next_gametype vstr gametype_ffa"
//
// Setup the rotations
//
set nextmap "vstr nextscript"
set nextscript "vstr next_gametype; set nextmap vstr nextscript"
// Initialize individual map rotations
set nextmap_ffa "vstr map_ffa1"
set nextmap_syc "vstr map_syc3"
set nextmap_lps "vstr map_lps8"
set nextmap_tffa "vstr map_tffa17"
set nextmap_ctl "vstr map_ctl3"
set nextmap_tsyc "vstr map_tsyc12"
set nextmap_bb "vstr map_bb4"
// Initialize gametype to start with
set next_gametype "vstr gametype_ctl"
//
// You can now load a map via "vstr nextmap"
//

View File

@ -0,0 +1,12 @@
//
// World of Padman - example server settings for all gametypes
//
// Just execute server-settings.cfg, which will load rotation.cfg
// which includes all gametypes by default
exec "server-settings.cfg"
// Now load a map
vstr nextmap

View File

@ -0,0 +1,16 @@
//
// World of Padman - example server settings for BigBalloon gametype
//
// Just execute server-settings.cfg, which will load rotation.cfg
// which includes all gametypes by default
exec "server-settings.cfg"
// Overwrite rotation to loop BigBalloon only
set gametype_bb "set g_gametype 8; set pointlimit 256; set timelimit 16; vstr nextmap_bb; set next_gametype vstr gametype_bb"
set next_gametype "vstr gametype_bb"
// Now load a map
vstr nextmap

View File

@ -0,0 +1,16 @@
//
// World of Padman - example server settings for Capture the Lolly gametype
//
// Just execute server-settings.cfg, which will load rotation.cfg
// which includes all gametypes by default
exec "server-settings.cfg"
// Overwrite rotation to loop Capture the Lolly only
set gametype_ctl "set g_gametype 6; set pointlimit 8; set timelimit 16; vstr nextmap_ctl; set next_gametype vstr gametype_ctl"
set next_gametype "vstr gametype_ctl"
// Now load a map
vstr nextmap

View File

@ -0,0 +1,16 @@
//
// World of Padman - example server settings for Last Pad Standing gametype
//
// Just execute server-settings.cfg, which will load rotation.cfg
// which includes all gametypes by default
exec "server-settings.cfg"
// Overwrite rotation to loop Last Pad Standing only
set gametype_lps "set g_gametype 4; set pointlimit 8; set timelimit 16; vstr nextmap_lps; set next_gametype vstr gametype_lps"
set next_gametype "vstr gametype_lps"
// Now load a map
vstr nextmap

View File

@ -0,0 +1,73 @@
//
// World of Padman - example server settings
//
// NOTE: Any line that starts with // is ignored by WoP.
// Whitespace between commands is also ignored.
//
//
// Administrator info
//
// Do not forget to edit and uncomment the two lines below
//sets admin "YOUR NAME HERE"
//sets email "YOUR EMAIL HERE"
//
// Server name and message
//
// Name of the server. Can include color tags
set sv_hostName "My ^2first ^6WoP ^7server"
// "Message of the Day". Can include color tags
set g_MOTD "^7Visit ^6www.worldofpadman.net ^7for news and files"
//
// Server settings
//
// Maximum number of players, including bots
set sv_maxClients "12"
// Enable Voice over IP
set sv_VoIP "1"
// Maximum bandwith per player. VoIP needs additional bandwidth.
// You only need to set this if your server is on a home connection with
// small upstream bandwith, e.g. dial-up.
// A value of 9000 is for 12 sv_maxClients and sv_VoIP 1 while on a 1 Mbps upstream.
set sv_maxRate "9000"
//
// Bot settings
//
// Enable bots
set bot_enable "1"
// Automatically add 4 bots and kick them when humans connect
set bot_minPlayers "4"
// Bot skill, from 1 to 5. 2 is default
set g_spSkill "3"
//
// Passwords
//
// Remote administration password. If not set, no remote administration is possible
set rconPassword ""
// Password needed for anyone to join the server. If not set, anyone can join
set g_password ""
//
// Game settings
//
// Allow players to call votes for next map, kicking a player etc.
set g_allowVote "1"
// Do warmup at the start of every map
set g_doWarmup "1"
// Duration of the warmup, 30 seconds
set g_warmup "30"
//
// Map and gametype rotation
//
// Execute contents of "rotation.cfg"
exec "rotation.cfg"
//
// You can now load a map via "vstr nextmap"
//

View File

@ -0,0 +1,18 @@
//
// World of Padman - example server settings for Spray your colour and
// Spray your color Team gametype
//
// Just execute server-settings.cfg, which will load rotation.cfg
// which includes all gametypes by default
exec "server-settings.cfg"
// Overwrite rotation to loop Spray your colour and Spray your color Team only
set gametype_syc "set g_gametype 3; set pointlimit 256; set timelimit 16; vstr nextmap_syc; set next_gametype vstr gametype_tsyc"
set gametype_tsyc "set g_gametype 7; set pointlimit 512; set timelimit 16; vstr nextmap_tsyc; set next_gametype vstr gametype_syc"
set next_gametype "vstr gametype_syc"
// Now load a map
vstr nextmap

8
docker-compose.yml Normal file
View File

@ -0,0 +1,8 @@
version: "3.9"
services:
wop:
build: .
ports:
- 27960:27960/tcp
- 27960:27960/udp

7
start-ffa.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
#[[ -n $SERVER_NAME ]] || SERVER_NAME="WOP Server"
#[[ -z $RCON_PASSWORD ]] || RCON_PASSWORD="ADMIN_PASS $RCON_PASSWORD
#cd /wop/server/worldofpadman-1-6-2/
./wop/server/data/wopded-linux.x86_64 +set dedicated 1 +set net_port 27960 +set com_hunkMegs 256 +exec wop/server_settings.cfg