diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 957a82a..d518e7e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,7 +109,7 @@ jobs: name: Checkout uses: actions/checkout@v3 - - name: Download tf2-sourcmeomd + name: Download tf2-sourcemod uses: actions/download-artifact@v2 with: name: tf2-sourcemod @@ -150,17 +150,15 @@ jobs: path: /tmp/tf2-mge.tar.gz if-no-files-found: error - tf2-tftrue: + tf2-competitive: runs-on: ubuntu-latest needs: tf2-sourcemod - outputs: - tf2-tftrue-tag: ${{ steps.docker_meta.outputs.version }} steps: - name: Checkout uses: actions/checkout@v3 - - name: Download tf2-sourcmeomd + name: Download tf2-sourcemod uses: actions/download-artifact@v2 with: name: tf2-sourcemod @@ -170,62 +168,13 @@ jobs: id: docker_meta uses: docker/metadata-action@v4 with: - images: melkortf/tf2-tftrue + images: melkortf/tf2-competitive tags: type=sha,format=long - name: Load tf2-sourcemod run: | docker load --input /tmp/tf2-sourcemod.tar.gz docker image ls - - - name: Build - id: docker_build - uses: docker/build-push-action@v3 - with: - context: ./packages/tf2-tftrue - build-args: | - TF2_SOURCEMOD_TAG=${{ needs.tf2-sourcemod.outputs.tf2-sourcemod-tag }} - tags: ${{ steps.docker_meta.outputs.tags }} - labels: ${{ steps.docker_meta.outputs.labels }} - load: true - pull: false - platforms: linux/amd64 - - - name: Save docker image - run: docker save melkortf/tf2-tftrue:${{ steps.docker_meta.outputs.version }} | gzip > /tmp/tf2-tftrue.tar.gz - - - name: Upload docker image - uses: actions/upload-artifact@v2 - with: - name: tf2-tftrue - path: /tmp/tf2-tftrue.tar.gz - if-no-files-found: error - - tf2-competitive: - runs-on: ubuntu-latest - needs: tf2-tftrue - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Download tf2-tftrue - uses: actions/download-artifact@v2 - with: - name: tf2-tftrue - path: /tmp - - - name: Docker meta - id: docker_meta - uses: docker/metadata-action@v4 - with: - images: melkortf/tf2-competitive - tags: type=sha,format=long - - - name: Load tf2-tftrue - run: | - docker load --input /tmp/tf2-tftrue.tar.gz - docker image ls - name: Build id: docker_build @@ -233,7 +182,7 @@ jobs: with: context: ./packages/tf2-competitive build-args: | - TF2_TFTRUE_TAG=${{ needs.tf2-tftrue.outputs.tf2-tftrue-tag }} + TF2_SOURCEMOD_TAG=${{ needs.tf2-sourcemod.outputs.tf2-sourcemod-tag }} tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }} load: true @@ -252,16 +201,16 @@ jobs: tf2-dm: runs-on: ubuntu-latest - needs: tf2-tftrue + needs: tf2-sourcemod steps: - name: Checkout uses: actions/checkout@v3 - - name: Download tf2-tftrue + name: Download tf2-sourcemod uses: actions/download-artifact@v2 with: - name: tf2-tftrue + name: tf2-sourcemod path: /tmp - name: Docker meta @@ -271,9 +220,9 @@ jobs: images: melkortf/tf2-dm tags: type=sha,format=long - - name: Load tf2-tftrue + name: Load tf2-sourcemod run: | - docker load --input /tmp/tf2-tftrue.tar.gz + docker load --input /tmp/tf2-sourcemod.tar.gz docker image ls - name: Build @@ -282,7 +231,7 @@ jobs: with: context: ./packages/tf2-dm build-args: | - TF2_TFTRUE_TAG=${{ needs.tf2-tftrue.outputs.tf2-tftrue-tag }} + TF2_SOURCEMOD_TAG=${{ needs.tf2-sourcemod.outputs.tf2-sourcemod-tag }} tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }} load: true diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..93c6a5c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "sourcemod" + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 9e2726c..61f7fc3 100644 --- a/README.md +++ b/README.md @@ -85,38 +85,34 @@ $ docker pull melkortf/tf2-sourcemod TF2 server with [Metamod:Source](https://www.sourcemm.net/) and [SourceMod](https://www.sourcemod.net/) installed. -## tf2-tftrue - -``` -$ docker pull melkortf/tf2-tftrue -``` - -TF2 server with [Metamod:Source](https://www.sourcemm.net/), [SourceMod](https://www.sourcemod.net/) and [TFTrue](https://tftrue.esport-tools.net/) addons installed. - -Environment variable | Default value | Used in | Description --------------------- | ------------- | ------- | ----------- -LOGS_TF_APIKEY | | `tftrue_logs_apikey ${LOGS_TF_APIKEY}` | The API key used to upload logs to logs.tf. -LOGS_TF_PREFIX | | `tftrue_logs_prefix ${LOGS_TF_PREFIX}` | The prefix to add in the log name when uploading to logs.tf. - - ## tf2-competitive ``` $ docker pull melkortf/tf2-competitive ``` -TF2 server configured to be used in competitive matches. +TF2 server configured to be used in competitive matches. The following plugins, add-ons and configs are installed: * [TF2 competitive fixes](https://github.com/ldesgoui/tf2-comp-fixes) * [Updated pause plugin](https://github.com/l-Aad-l/updated-pause-plugin) * [SrcTV+](https://github.com/dalegaard/srctvplus) * [Improved Match Timer plugin](https://github.com/dewbsku/Improved-Match-Timer) +* [Supplemental Stats 2](https://github.com/F2/F2s-sourcemod-plugins#supplemental-stats-2-) +* [Medic Stats](https://github.com/F2/F2s-sourcemod-plugins#medic-stats-) +* [RestoreScore](https://github.com/F2/F2s-sourcemod-plugins#restorescore-) +* [LogsTF](https://github.com/F2/F2s-sourcemod-plugins#logstf-) +* [RecordSTV](https://github.com/F2/F2s-sourcemod-plugins#recordstv-) +* [WaitForSTV](https://github.com/F2/F2s-sourcemod-plugins#waitforstv-) +* [FixStvSlot](https://github.com/F2/F2s-sourcemod-plugins#fixstvslot-) +* [AFK](https://github.com/F2/F2s-sourcemod-plugins#afk-) +* [tf2rue](https://github.com/sapphonie/tf2rue) * [ETF2L.org configs](https://github.com/ETF2L/gameserver-configs) * [RGL.gg configs](https://github.com/RGLgg/server-resources-updater/tree/master/cfg) Environment variable | Default value | Used in | Description -------------------- | ------------- | ------- | ----------- -DEMOS_TF_APIKEY | | sm_demostf_apikey ${DEMOS_TF_APIKEY} | The API key used to upload the demo to [demos.tf](https://demos.tf/). +DEMOS_TF_APIKEY | | `sm_demostf_apikey ${DEMOS_TF_APIKEY}` | The API key used to upload the demo to [demos.tf](https://demos.tf/). +LOGS_TF_APIKEY | | `logstf_apikey ${LOGS_TF_APIKEY}` | The API key used to upload logs to logs.tf. ## tf2-dm diff --git a/packages/tf2-competitive/Dockerfile b/packages/tf2-competitive/Dockerfile index 5e26de6..0990668 100644 --- a/packages/tf2-competitive/Dockerfile +++ b/packages/tf2-competitive/Dockerfile @@ -1,5 +1,5 @@ -ARG TF2_TFTRUE_TAG=latest -FROM melkortf/tf2-tftrue:${TF2_TFTRUE_TAG} +ARG TF2_SOURCEMOD_TAG=latest +FROM melkortf/tf2-sourcemod:${TF2_SOURCEMOD_TAG} LABEL maintainer="garrappachc@gmail.com" COPY checksum.md5 . @@ -46,10 +46,40 @@ ARG SRCTV_PLUS_VDF_URL=https://github.com/dalegaard/srctvplus/releases/download/ ARG IMPROVED_MATCH_TIMER_PLUGIN_FILE_NAME=Improved-Match-Timer-main.zip ARG IMPROVED_MATCH_TIMER_PLUGIN_URL=https://github.com/dewbsku/Improved-Match-Timer/archive/refs/heads/main.zip +ARG SUPSTATS2_PLUGIN_FILE_NAME=supstats2.zip +ARG SUPSTATS2_PLUGIN_URL=http://sourcemod.krus.dk/supstats2.zip + +ARG MEDIC_STATS_PLUGIN_FILE_NAME=medicstats.zip +ARG MEDIC_STATS_PLUGIN_URL=http://sourcemod.krus.dk/medicstats.zip + +ARG RESTORE_SCORE_PLUGIN_FILE_NAME=restorescore.zip +ARG RESTORE_SCORE_PLUGIN_URL=http://sourcemod.krus.dk/restorescore.zip + +ARG LOGSTF_PLUGIN_FILE_NAME=logstf.zip +ARG LOGSTF_PLUGIN_URL=http://sourcemod.krus.dk/logstf.zip + +ARG RECORD_STV_PLUGIN_FILE_NAME=recordstv.zip +ARG RECORD_STV_PLUGIN_URL=http://sourcemod.krus.dk/recordstv.zip + +ARG WAIT_FOR_STV_PLUGIN_FILE_NAME=waitforstv.zip +ARG WAIT_FOR_STV_PLUGIN_URL=http://sourcemod.krus.dk/waitforstv.zip + +ARG FIX_STV_SLOT_PLUGIN_FILE_NAME=fixstvslot.zip +ARG FIX_STV_SLOT_PLUGIN_URL=http://sourcemod.krus.dk/fixstvslot.zip + +ARG AFK_PLUGIN_FILE_NAME=afk.zip +ARG AFK_PLUGIN_URL=http://sourcemod.krus.dk/afk.zip + +ARG TF2RUE_PLUGIN_FILE_NAME=tf2rue.zip +ARG TF2RUE_PLUGIN_VERSION=v0.0.4 +ARG TF2RUE_PLUGIN_URL=https://github.com/sapphonie/tf2rue/releases/download/${TF2RUE_PLUGIN_VERSION}/${TF2RUE_PLUGIN_FILE_NAME} + RUN \ # download all the plugins - wget -nv "${SOAP_DM_PLUGIN_URL}" "${DHOOKS_PLUGIN_URL}" "${COMP_FIXES_PLUGIN_URL}" "${UPDATED_PAUSE_PLUGIN_URL}" "${CURL_PLUGIN_URL}" "${CURL_EXTENSION_URL}" \ - "${ETF2L_CONFIGS_URL}" "${RGL_CONFIGS_URL}" "${DEMOS_TF_PLUGIN_URL}" "${SRCTV_PLUS_SO_URL}" "${SRCTV_PLUS_VDF_URL}" \ + wget -nv "${SOAP_DM_PLUGIN_URL}" "${DHOOKS_PLUGIN_URL}" "${COMP_FIXES_PLUGIN_URL}" "${UPDATED_PAUSE_PLUGIN_URL}" "${CURL_PLUGIN_URL}" \ + "${CURL_EXTENSION_URL}" "${ETF2L_CONFIGS_URL}" "${RGL_CONFIGS_URL}" "${DEMOS_TF_PLUGIN_URL}" "${SRCTV_PLUS_SO_URL}" "${SRCTV_PLUS_VDF_URL}" \ + "${SUPSTATS2_PLUGIN_URL}" "${MEDIC_STATS_PLUGIN_URL}" "${RESTORE_SCORE_PLUGIN_URL}" "${LOGSTF_PLUGIN_URL}" "${RECORD_STV_PLUGIN_URL}" \ + "${WAIT_FOR_STV_PLUGIN_URL}" "${FIX_STV_SLOT_PLUGIN_URL}" "${AFK_PLUGIN_URL}" "${TF2RUE_PLUGIN_URL}" \ && wget -nv "${MGEMOD_PLUGIN_URL}" -O "${MGEMOD_PLUGIN_FILE_NAME}" \ && wget -nv "${IMPROVED_MATCH_TIMER_PLUGIN_URL}" -O "${IMPROVED_MATCH_TIMER_PLUGIN_FILE_NAME}" \ # verify md5 checksums @@ -70,6 +100,15 @@ RUN \ && mv "${DEMOS_TF_PLUGIN_FILE_NAME}" "${SERVER_DIR}/tf/addons/sourcemod/plugins/${DEMOS_TF_PLUGIN_FILE_NAME}" \ && mv "${SRCTV_PLUS_SO_FILE_NAME}" "${SERVER_DIR}/tf/addons/${SRCTV_PLUS_SO_FILE_NAME}" \ && mv "${SRCTV_PLUS_VDF_FILE_NAME}" "${SERVER_DIR}/tf/addons/${SRCTV_PLUS_VDF_FILE_NAME}" \ + && unzip -q "${SUPSTATS2_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q "${MEDIC_STATS_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q "${RESTORE_SCORE_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q "${LOGSTF_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q "${RECORD_STV_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q "${WAIT_FOR_STV_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q "${FIX_STV_SLOT_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q "${AFK_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/plugins/" \ + && unzip -q -n "${TF2RUE_PLUGIN_FILE_NAME}" -d "${SERVER_DIR}/tf/addons/sourcemod/" \ # cleanup && rm "${SOAP_DM_PLUGIN_FILE_NAME}" \ && rm "${DHOOKS_PLUGIN_FILE_NAME}" \ @@ -80,11 +119,14 @@ RUN \ && rm "${ETF2L_CONFIGS_FILE_NAME}" \ && rm -r "${RGL_CONFIGS_FILE_NAME}" "cfg" \ && rm -r "${IMPROVED_MATCH_TIMER_PLUGIN_FILE_NAME}" "Improved-Match-Timer-main" \ + && rm "${SUPSTATS2_PLUGIN_FILE_NAME}" "${MEDIC_STATS_PLUGIN_FILE_NAME}" "${RESTORE_SCORE_PLUGIN_FILE_NAME}" "${LOGSTF_PLUGIN_FILE_NAME}" \ + "${RECORD_STV_PLUGIN_FILE_NAME}" "${WAIT_FOR_STV_PLUGIN_FILE_NAME}" "${FIX_STV_SLOT_PLUGIN_FILE_NAME}" "${AFK_PLUGIN_FILE_NAME}" "${TF2RUE_PLUGIN_FILE_NAME}" \ && rm "checksum.md5" \ # remove useless (and potentially harmful) plugins && rm "$SERVER_DIR/tf/addons/sourcemod/plugins/"{nextmap,funcommands,funvotes}.smx ENV DEMOS_TF_APIKEY= +ENV LOGS_TF_APIKEY= COPY cfg/* ${SERVER_DIR}/tf/cfg/ diff --git a/packages/tf2-competitive/cfg/server.cfg.template b/packages/tf2-competitive/cfg/server.cfg.template index 3d6fee5..73c966a 100644 --- a/packages/tf2-competitive/cfg/server.cfg.template +++ b/packages/tf2-competitive/cfg/server.cfg.template @@ -20,15 +20,5 @@ tv_maxrate 0 sv_quota_stringcmdspersecond 400 -tftrue_no_hats 0 -tftrue_no_misc 0 -tftrue_no_action 0 -tftrue_tv_autorecord 1 -tftrue_tv_demos_path demos -tftrue_logs_roundend 0 -tftrue_logs_accuracy 1 - -tftrue_logs_apikey "${LOGS_TF_APIKEY}" -tftrue_logs_prefix "${LOGS_TF_PREFIX}" - +logstf_apikey "${LOGS_TF_APIKEY}" sm_demostf_apikey "${DEMOS_TF_APIKEY}" diff --git a/packages/tf2-competitive/checksum.md5 b/packages/tf2-competitive/checksum.md5 index faee086..700543d 100644 --- a/packages/tf2-competitive/checksum.md5 +++ b/packages/tf2-competitive/checksum.md5 @@ -11,3 +11,12 @@ b82f1184a9209e87251a03cfe9aa4221 soap.zip 521fa89da1771fe54fe918433da3963f tf2-comp-fixes.zip 046fe7d2cb239f207ddd8784a4a83faa updated-pause-plugin.zip 7249cf4a042ef356c7f0c7cb0ea184a6 Improved-Match-Timer-main.zip +d3a9601ad2a40ec9b950ab14711c1f72 supstats2.zip +31782661e151d50ab5a9a8b3a9937ea1 medicstats.zip +d3b61538a7081e22198734fd9557945e restorescore.zip +93fd7b36d7c71ab8e66123f673fe9c89 logstf.zip +5a29dfff9df747717858be9b3bf8295e recordstv.zip +f0baf4be1c3273b763d03d4af3e40b2a waitforstv.zip +46d1bcc24e00f007a836452b5fc56adf fixstvslot.zip +0eeaaa1473645e817ce71941033a312b afk.zip +dc5ed138a53c9af951f120cf3e611a3d tf2rue.zip diff --git a/packages/tf2-dm/Dockerfile b/packages/tf2-dm/Dockerfile index 445d72e..aa6127e 100644 --- a/packages/tf2-dm/Dockerfile +++ b/packages/tf2-dm/Dockerfile @@ -1,5 +1,5 @@ -ARG TF2_TFTRUE_TAG=latest -FROM melkortf/tf2-tftrue:${TF2_TFTRUE_TAG} +ARG TF2_SOURCEMOD_TAG=latest +FROM melkortf/tf2-sourcemod:${TF2_SOURCEMOD_TAG} LABEL maintainer="garrappachc@gmail.com" COPY checksum.md5 . diff --git a/packages/tf2-dm/server.cfg.template b/packages/tf2-dm/server.cfg.template index 38188dd..3692d25 100644 --- a/packages/tf2-dm/server.cfg.template +++ b/packages/tf2-dm/server.cfg.template @@ -67,8 +67,3 @@ sm_classrestrict_red_soldiers 2 sm_classrestrict_red_spies 0 mp_tournament_whitelist "cfg/custom_whitelist_11769.txt" - -tftrue_gamedesc "deathmatch" -tftrue_no_hats 0 -tftrue_no_misc 0 -tftrue_no_action 0 diff --git a/packages/tf2-tftrue/Dockerfile b/packages/tf2-tftrue/Dockerfile deleted file mode 100644 index 2a4f717..0000000 --- a/packages/tf2-tftrue/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -ARG TF2_SOURCEMOD_TAG=latest - -FROM debian:latest AS tftrue-build -WORKDIR /build - -ARG TFTRUE_REPOSITORY_URL=https://github.com/melkortf/TFTrue.git -ARG TFTRUE_COMMIT=8472f93a0e71c0a8fcd38370adbf3b86c3cf3d2b - -RUN apt-get -y update \ - && apt-get install -y build-essential git cmake gcc-multilib g++-multilib \ - && rm -rf /var/lib/apt/lists/* \ - && git clone --recurse-submodules ${TFTRUE_REPOSITORY_URL} tftrue \ - && cd tftrue \ - && git checkout ${TFTRUE_COMMIT} \ - && mkdir build \ - && cd build \ - && env CXXFLAGS="-DNO_AUTOUPDATE" cmake .. -DCMAKE_BUILD_TYPE=Release \ - && make - - -FROM melkortf/tf2-sourcemod:${TF2_SOURCEMOD_TAG} -LABEL maintainer="garrappachc@gmail.com" - -COPY TFTrue.vdf "${SERVER_DIR}/tf/addons/TFTrue.vdf" -COPY --from=tftrue-build /build/tftrue/build/TFTrue.so ${SERVER_DIR}/tf/addons/TFTrue.so - -CMD ["+sv_pure", "2", "+map", "cp_badlands", "+maxplayers", "24"] - -ENV LOGS_TF_APIKEY= -ENV LOGS_TF_PREFIX= - -COPY server.cfg.template ${SERVER_DIR}/tf/cfg/server.cfg.template diff --git a/packages/tf2-tftrue/TFTrue.vdf b/packages/tf2-tftrue/TFTrue.vdf deleted file mode 100644 index 3719e5b..0000000 --- a/packages/tf2-tftrue/TFTrue.vdf +++ /dev/null @@ -1,4 +0,0 @@ -"Plugin" -{ - "file" "addons/TFTrue" -} \ No newline at end of file diff --git a/packages/tf2-tftrue/server.cfg.template b/packages/tf2-tftrue/server.cfg.template deleted file mode 100644 index 9ace549..0000000 --- a/packages/tf2-tftrue/server.cfg.template +++ /dev/null @@ -1,23 +0,0 @@ -log on - -rcon_password "${RCON_PASSWORD}" - -hostname "${SERVER_HOSTNAME}" -sv_password "${SERVER_PASSWORD}" - -sv_contact "" -sv_tags "" - -sv_downloadurl "${DOWNLOAD_URL}" -sv_allowdownload 1 -sv_allowupload 1 - -tv_enable 1 -tv_name "${STV_NAME}" -tv_title "${STV_TITLE}" -tv_password "${STV_PASSWORD}" - -sv_quota_stringcmdspersecond 400 - -tftrue_logs_apikey "${LOGS_TF_APIKEY}" -tftrue_logs_prefix "${LOGS_TF_PREFIX}"