#! /bin/bash set -uxe CSTRIKE="$CSSDS/cstrike" update_cssds() { cd $STEAMCMD ./steamcmd.sh +runscript "$HOME/etc/update_cssds.txt" echo "--------------------------------------------------------------" echo "CSS DS is up to date" echo "--------------------------------------------------------------" } update_tf2ds() { cd $STEAMCMD ./steamcmd.sh +runscript "$HOME/etc/update_tf2ds.txt" echo "--------------------------------------------------------------" echo "TF2 DS is up to date" echo "--------------------------------------------------------------" } install_metamod() { # is the metamod folder missing? if [ ! -d "$CSTRIKE/addons/metamod" ]; then LATESTMM=$(wget -qO- https://mms.alliedmods.net/mmsdrop/"${METAMOD_VERSION}"/mmsource-latest-linux) wget -qO- https://mms.alliedmods.net/mmsdrop/"${METAMOD_VERSION}"/"${LATESTMM}" | tar xvzf - -C "$CSTRIKE" echo "--------------------------------------------------------------" echo "Installed MetaMod $METAMOD_VERSION" echo "--------------------------------------------------------------" fi } install_sourcemod() { # Are we in a sourcemod container and is the sourcemod folder missing? if [ ! -d "$CSTRIKE/addons/sourcemod" ]; then LATESTSM=$(wget -qO- https://sm.alliedmods.net/smdrop/"${SOURCEMOD_VERSION}"/sourcemod-latest-linux) wget -qO- https://sm.alliedmods.net/smdrop/"${SOURCEMOD_VERSION}"/"${LATESTSM}" | tar xvzf - -C "$CSTRIKE" echo "--------------------------------------------------------------" echo "Installed SourceMod $SOURCEMOD_VERSION" echo "--------------------------------------------------------------" fi } install_surf() { cd $CSTRIKE # Install Shavit BHopTimer (replaces InfluxTimer) if [ ! -d "$CSTRIKE/addons/sourcemod/configs/shavit" ]; then wget "https://github.com/shavitush/bhoptimer/releases/download/v4.0.1/bhoptimer-v4.0.1.zip" unzip "bhoptimer-v4.0.1.zip" rm "bhoptimer-v4.0.1.zip" echo "--------------------------------------------------------------" echo "Installed Shavit BHopTimer v4.0.1" echo "--------------------------------------------------------------" fi # Install MomSurfFix if [ ! -f "$CSTRIKE/addons/sourcemod/plugins/momsurffix2.smx" ]; then wget "https://github.com/GAMMACASE/MomSurfFix/releases/download/1.1.5/MomSurfFix2v1.1.5.zip" unzip "MomSurfFix2v1.1.5.zip" rm "MomSurfFix2v1.1.5.zip" echo "--------------------------------------------------------------" echo "Installed MomSurfFix v1.1.5" echo "--------------------------------------------------------------" fi # Install PushFix Definitive Edition if [ ! -f "$CSTRIKE/addons/sourcemod/plugins/pushfix_de.smx" ]; then wget "https://github.com/GAMMACASE/PushFixDE/releases/download/1.0.0/pushfix_de_1.0.0.zip" unzip "pushfix_de_1.0.0.zip" rm "pushfix_de_1.0.0.zip" echo "--------------------------------------------------------------" echo "Installed PushFix Definitive Edition v1.0.0" echo "--------------------------------------------------------------" fi # Install EventQueue Fix if [ ! -f "$CSTRIKE/addons/sourcemod/plugins/eventqueuefix.smx" ]; then wget "https://github.com/hermansimensen/eventqueue-fix/releases/download/1.3.2/eventqueuefix-1.3.2.zip" unzip "eventqueuefix-1.3.2.zip" rm "eventqueuefix-1.3.2.zip" echo "--------------------------------------------------------------" echo "Installed EventQueue Fix v1.3.2" echo "--------------------------------------------------------------" fi # Install RNGFix if [ ! -f "$CSTRIKE/addons/sourcemod/plugins/rngfix.smx" ]; then wget "https://github.com/jason-e/rngfix/releases/download/v1.1.3/rngfix_1.1.3.zip" unzip "rngfix_1.1.3.zip" rm "rngfix_1.1.3.zip" echo "--------------------------------------------------------------" echo "Installed RNGFix v1.1.3" echo "--------------------------------------------------------------" fi } configure_shavit_zones() { cd $CSTRIKE # Check if already configured if [ -f "$CSTRIKE/addons/sourcemod/configs/shavit-mapfixes.cfg" ]; then echo "--------------------------------------------------------------" echo "Shavit zones already configured" echo "--------------------------------------------------------------" return fi echo "--------------------------------------------------------------" echo "Configuring Shavit to use JSON zones from surf-zones repo" echo "--------------------------------------------------------------" # Download surf-zones repository cd /tmp wget "https://github.com/wrldspawn/surf-zones/archive/refs/heads/main.zip" -O surf-zones.zip unzip -q surf-zones.zip # Copy stripper directory if [ -d "surf-zones-main/addons/stripper" ]; then mkdir -p "$CSTRIKE/addons/stripper" cp -r surf-zones-main/addons/stripper/* "$CSTRIKE/addons/stripper/" echo "Copied stripper configurations" fi # Copy mapfixes configuration if [ -f "surf-zones-main/addons/sourcemod/configs/shavit-mapfixes.cfg" ]; then mkdir -p "$CSTRIKE/addons/sourcemod/configs" cp surf-zones-main/addons/sourcemod/configs/shavit-mapfixes.cfg "$CSTRIKE/addons/sourcemod/configs/" echo "Copied shavit-mapfixes.cfg" fi # Copy styles configuration (optional - removes irrelevant styles, matches KSF behavior) if [ -f "surf-zones-main/addons/sourcemod/configs/shavit-styles.cfg" ]; then cp surf-zones-main/addons/sourcemod/configs/shavit-styles.cfg "$CSTRIKE/addons/sourcemod/configs/" echo "Copied shavit-styles.cfg" fi # Cleanup rm -rf surf-zones-main surf-zones.zip # Create cfg directory for plugin configs if it doesn't exist mkdir -p "$CSTRIKE/cfg/sourcemod" # Configure zones plugin to use JSON instead of SQL cat > "$CSTRIKE/cfg/sourcemod/plugin.shavit-zones.cfg" <<'EOF' // Shavit Zones Plugin Configuration // Set to 0 to use JSON zones instead of SQL database shavit_zones_usesql "0" EOF # Configure JSON zones URL cat > "$CSTRIKE/cfg/sourcemod/plugin.shavit-zones-json.cfg" <<'EOF' // Shavit JSON Zones Configuration // URL template for loading zone data - {map} will be replaced with map name shavit_zones_json_url "https://wrldspawn.github.io/surf-zones/z/{map}.json" EOF echo "--------------------------------------------------------------" echo "Configured Shavit to use JSON zones" echo "JSON URL: https://wrldspawn.github.io/surf-zones/z/{map}.json" echo "Note: Use !setmaxvel in-game to set max velocity per map" echo "--------------------------------------------------------------" } configure_shavit_database() { cd $CSTRIKE # Check if database config already exists if [ -f "$CSTRIKE/addons/sourcemod/configs/databases.cfg" ]; then # Check if shavit database entry already exists if grep -q '"shavit"' "$CSTRIKE/addons/sourcemod/configs/databases.cfg"; then echo "--------------------------------------------------------------" echo "Shavit database already configured" echo "--------------------------------------------------------------" return fi fi echo "--------------------------------------------------------------" echo "Configuring Shavit database connection" echo "--------------------------------------------------------------" # Set defaults if environment variables are not set DB_HOST="${MYSQL_HOST:-mariadb}" DB_PORT="${MYSQL_PORT:-3306}" DB_NAME="${MYSQL_DATABASE:-shavit}" DB_USER="${MYSQL_USER:-root}" DB_PASS="${MYSQL_ROOT_PASSWORD:-changeme}" # Create or append to databases.cfg mkdir -p "$CSTRIKE/addons/sourcemod/configs" # If databases.cfg doesn't exist, create it with full structure if [ ! -f "$CSTRIKE/addons/sourcemod/configs/databases.cfg" ]; then cat > "$CSTRIKE/addons/sourcemod/configs/databases.cfg" <> "$CSTRIKE/addons/sourcemod/configs/databases.cfg" <