#!/bin/bash set -e ######################## # Half-Life build script ######################## #: << 'KOMENTAR' # Xash3D engine build 64bit pacman -Q base-devel sdl2 freetype2 fontconfig libglvnd mkdir -p "$PWD/Half-Life-x64" mkdir -p "$PWD/src-dir-64/" if [ ! -d "$PWD/src-dir-64/xash3d-fwgs-continuous-4102" ]; then git clone https://github.com/FWGS/xash3d-fwgs.git "$PWD/src-dir-64/xash3d-fwgs-continuous-4102" (cd "$PWD/src-dir-64/xash3d-fwgs-continuous-4102" && git checkout -q 9f2b895) (cd "$PWD/src-dir-64/xash3d-fwgs-continuous-4102" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/" (cd "$PWD/src-dir-64/xash3d-fwgs-continuous-4102" && CFLAGS="-w -Wno-stringop-overflow -Wno-stringop-overread" \ CXXFLAGS="-w -Wno-stringop-overflow -Wno-stringop-overread" \ "./waf" configure --build-type=release \ --64bits \ --enable-packaging \ --enable-all-renderers \ --disable-werror \ --out="build64" \ --prefix="/" # >/dev/null ) (cd "$PWD/src-dir-64/xash3d-fwgs-continuous-4102" && CFLAGS="-w -Wno-stringop-overflow -Wno-stringop-overread" CXXFLAGS="-w -Wno-stringop-overflow -Wno-stringop-overread" ./waf build --out="build64" ) (cd "$PWD/src-dir-64/xash3d-fwgs-continuous-4102" && ./waf install --out="build64" --destdir="$PWD/dist64" ) mkdir -p "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/Half-Life-x64/valve" cp "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/bin/xash3d" "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/Half-Life-x64/" cp "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/lib/xash3d/"*.so "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/Half-Life-x64/" cp "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/share/xash3d/valve/extras.pk3" "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/Half-Life-x64/valve/" rm -rf "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/bin" \ "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/lib" \ "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/share" echo "--------------------------------------------------------" echo "Čistá hra s enginem čeká v: dist64/Half-Life-x64" echo "--------------------------------------------------------" cp -r "$PWD/assets/valve/" "$PWD/Half-Life-x64/" cp -r "$PWD/assets/cstrike/" "$PWD/Half-Life-x64/" unzip -o "$PWD/assets/nav/cs_assault_nav_2026-06-24.zip" -d "$PWD/Half-Life-x64/cstrike/maps" chmod o+r "$PWD/Half-Life-x64/cstrike/maps/cs_assault.nav" cp -r "$PWD/src-dir-64/xash3d-fwgs-continuous-4102/dist64/Half-Life-x64" "$PWD/" objdump -p "$PWD/Half-Life-x64/xash3d" | grep -E 'R(UN)?PATH' cp "$PWD/assets/libSDL2-x64/libSDL2-2.0.so.0.3200.10" "$PWD/Half-Life-x64/" ( cd "$PWD/Half-Life-x64" || exit 1 ln -sf "libSDL2-2.0.so.0.3200.10" "libSDL2-2.0.so.0" if ldd ./libxash.so | grep -q "libSDL2"; then LIB_PATH=$(echo "$line" | awk '{print $3}') [[ "$LIB_PATH" == /usr/* ]] && cp "$LIB_PATH" ./ else echo "[VAROVÁNÍ] libxash.so nevyžaduje SDL2!" fi ldd ./libxash.so | grep "=>" | grep -E "libav|libsw" | while read -r line; do LIB_PATH=$(echo "$line" | awk '{print $3}') [[ "$LIB_PATH" == /usr/* ]] && cp "$LIB_PATH" ./ done ) # hlsdk portable 64bit if [ ! -d "$PWD/src-dir-64/hlsdk-8c5b284" ]; then git clone --recursive -b master https://github.com/FWGS/hlsdk-portable "$PWD/src-dir-64/hlsdk-8c5b284" (cd "$PWD/src-dir-64/hlsdk-8c5b284" && git checkout -q 8c5b284) (cd "$PWD/src-dir-64/hlsdk-8c5b284" && git submodule update --init --recursive) fi mkdir -p "$PWD/src-dir-64/hlsdk-8c5b284/build-64" cmake -S "$PWD/src-dir-64/hlsdk-8c5b284" -B "$PWD/src-dir-64/hlsdk-8c5b284/build-64" \ -DCMAKE_BUILD_TYPE=Release \ -D64BIT=ON \ -DGAMEDIR=valve \ --log-level=ERROR \ -Wno-dev (cd "$PWD/src-dir-64/hlsdk-8c5b284/build-64" && make -j$(nproc) > /dev/null 2>&1) mkdir -p "$PWD/Half-Life-x64/valve/dlls/serverDLL/hlsdk/" cp "$PWD/src-dir-64/hlsdk-8c5b284/build-64/dlls/hl_amd64.so" "$PWD/Half-Life-x64/valve/dlls/serverDLL/hlsdk/" cp "$PWD/src-dir-64/hlsdk-8c5b284/build-64/dlls/hl_amd64.so" "$PWD/Half-Life-x64/valve/dlls/" cp "$PWD/src-dir-64/hlsdk-8c5b284/build-64/cl_dll/client_amd64.so" "$PWD/Half-Life-x64/valve/cl_dlls/" # hl hl.so s boty Bot10 64bit if [ ! -d "$PWD/src-dir-64/hlsdk-bot10" ]; then git clone --recursive -b bot10 https://github.com/FWGS/hlsdk-portable "$PWD/src-dir-64/hlsdk-bot10" (cd "$PWD/src-dir-64/hlsdk-bot10" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir-64/hlsdk-bot10/build-64" mkdir -p "$PWD/src-dir-64/hlsdk-bot10/build-64" #FLAGS="-m64 -w -fpack-struct=4" FLAGS="-m64 -w" CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" cmake \ -S "$PWD/src-dir-64/hlsdk-bot10" \ -B "$PWD/src-dir-64/hlsdk-bot10/build-64" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="$FLAGS" \ -DCMAKE_CXX_FLAGS="$FLAGS" \ -D64BIT=ON \ -DGAMEDIR=valve \ -Wno-dev (cd "$PWD/src-dir-64/hlsdk-bot10/build-64" && make -j$(nproc)) #valve/dlls/serverDLL/ cp "$PWD/src-dir-64/hlsdk-bot10/build-64/dlls/bot_amd64.so" "$PWD/Half-Life-x64/valve/dlls/serverDLL/bot_amd64.so" cp "$PWD/src-dir-64/hlsdk-bot10/build-64/dlls/bot_amd64.so" "$PWD/Half-Life-x64/valve/dlls/bot_amd64.so" cp "$PWD/Half-Life-x64/valve/listenserver.cfg" "$PWD/Half-Life-x64/valve/listenserver.cfg_orig" cat << 'EOF' > "$PWD/Half-Life-x64/valve/listenserver.cfg" sv_aim 0 mp_autocrosshair 0 pausable 1 mp_teamplay 1 mp_friendlyfire 1 mp_teamlist "hgrunt;gman" hostname "HL Server s Boti" wait; wait; wait; wait; wait; wait; wait; exec boti.cfg EOF #cat << 'EOF' > "$PWD/Half-Life-x64/valve/listenserver.cfg" #mp_teamplay 1 #mp_friendlyfire 1 #mp_teamlist "scientist;gman" #wait; wait; wait; wait; wait; wait; wait; #exec boti.cfg #EOF ## mp_teamlist "scientist;hgrunt;gman;robo" cat << 'EOF' > "$PWD/Half-Life-x64/valve/boti.cfg" addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot EOF # hl jk_botti kompilace 64bit pres metamod if [ ! -d "$PWD/src-dir-64/jk_botti" ]; then git clone --recursive -b v1.62 https://github.com/Bots-United/jk_botti.git "$PWD/src-dir-64/jk_botti" (cd "$PWD/src-dir-64/jk_botti" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir-64/jk_botti/build-64" mkdir "$PWD/src-dir-64/jk_botti/build-64" rsync -a --exclude='.git*' --exclude='build-64/' "$PWD/src-dir-64/jk_botti/" "$PWD/src-dir-64/jk_botti/build-64/" (cd "$PWD/src-dir-64/jk_botti/build-64" && \ make clean && \ make all \ CC="gcc -m64" \ CXX="g++ -m64" \ DBG_FLGS=1 \ VER_MAJOR=1 \ VER_MINOR=62 \ VER_NOTE="release" \ SHIM_TARGETFLAGS="-march=x86-64 -mtune=generic" \ X87_TARGETFLAGS="-march=x86-64 -mtune=generic" \ SSE3_TARGETFLAGS="-march=x86-64 -mtune=generic" \ AVX2FMA_TARGETFLAGS="-march=x86-64 -mtune=generic -mavx2 -mfma" \ DLLEND="_amd64.so" \ -j$(nproc) ) shopt -s extglob rm -rf "$PWD/src-dir-64/jk_botti/build-64"/!(addons) shopt -u extglob rm -f "$PWD/src-dir-64/jk_botti/build-64/addons/jk_botti/dlls/.empty_dir" # hl jk_botti 64bit pres metamod mkdir -p "$PWD/Half-Life-x64/valve/addons/metamod/dlls" cp "$PWD/src-dir-64/metamod-fwgs-c0ad71a/build-64/metamod/metamod_amd64.so" "$PWD/Half-Life-x64/valve/addons/metamod/dlls/" cat << 'EOF' > "$PWD/Half-Life-x64/valve/addons/metamod/plugins.ini" linux addons/jk_botti/dlls/jk_botti_mm.so EOF cat << 'EOF' > "$PWD/Half-Life-x64/valve/addons/metamod/config.ini" gamedll dlls/hl_amd64.so EOF mkdir -p "$PWD/Half-Life-x64/valve/addons/jk_botti/dlls/" "$PWD/Half-Life-x64/valve/addons/jk_botti/waypoints/" cp -r "$PWD/src-dir-64/jk_botti/build-64/addons/jk_botti/dlls/"* "$PWD/Half-Life-x64/valve/addons/jk_botti/dlls/" cp -r "$PWD/src-dir-64/jk_botti/build-64/addons/jk_botti/waypoints/"* "$PWD/Half-Life-x64/valve/addons/jk_botti/waypoints/" find "$PWD/src-dir-64/jk_botti/build-64/addons/jk_botti/" -maxdepth 1 -type f -exec cp {} "$PWD/Half-Life-x64/valve/addons/jk_botti/" \; cp "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti(2).cfg" sed -i '/^\s*#/d; /^\s*$/d' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_percent\s\s*[0-9]*/bot_chat_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_taunt_percent\s\s*[0-9]*/bot_taunt_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_whine_percent\s\s*[0-9]*/bot_whine_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_endgame_percent\s\s*[0-9]*/bot_endgame_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_logo_percent\s\s*[0-9]*/bot_logo_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*autowaypoint\s\s*[0-9]*/autowaypoint 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_tag_percent\s\s*[0-9]*/bot_chat_tag_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_drop_percent\s\s*[0-9]*/bot_chat_drop_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_swap_percent\s\s*[0-9]*/bot_chat_swap_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_lower_percent\s\s*[0-9]*/bot_chat_lower_percent 0/' "$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" (JKBOTTICFG="$PWD/Half-Life-x64/valve/addons/jk_botti/jk_botti.cfg" grep -q '^\s*mp_friendlyfire' "$JKBOTTICFG" && sed -i 's/^\s*mp_friendlyfire\s\s*[0-9]*/mp_friendlyfire 1/' "$JKBOTTICFG" \ || echo 'mp_friendlyfire 1' >> "$JKBOTTICFG" ) # 64bit hl liblist.gam cat << 'EOF' > "$PWD/Half-Life-x64/valve/liblist.gam" game "Half-Life" startmap "c0a0" trainmap "t0a0" mpentity "info_player_deathmatch" //gamedll_linux "addons/metamod/dlls/metamod.so" gamedll_linux "dlls/bot.so" secure "1" type "singleplayer_only" EOF # Velaron cs16-client 64 bit if [ ! -d "$PWD/src-dir-64/cs16-client-934a366" ]; then git clone --recursive https://github.com/Velaron/cs16-client.git "$PWD/src-dir-64/cs16-client-934a366" (cd "$PWD/src-dir-64/cs16-client-934a366" && git checkout -q 934a366) (cd "$PWD/src-dir-64/cs16-client-934a366" && git submodule update --init --recursive -q) fi sed -i 's/Vector Center(void){ return (GetStartPos() + GetEndPos()) \* 0.5; }/Vector Center(void){ return (pev->origin + pev->angles) \* 0.5; }/g' "$PWD/src-dir-64/cs16-client-934a366/dlls/effects.h" sed -i 's/return (GetStartPos() + GetEndPos()) \* 0.5f;/return (pev->origin + pev->angles) \* 0.5f;/g' "$PWD/src-dir-64/cs16-client-934a366/dlls/effects.h" find "$PWD/src-dir-64/cs16-client-934a366/" -name "CMakeLists.txt" -exec sed -i 's/-Wall//g; s/-Wextra//g; s/-Woverloaded-virtual//g' {} + find "$PWD/src-dir-64/cs16-client-934a366/" -name "CMakeLists.txt" -exec sed -i '2i add_compile_options("-w")' {} + #(cd "$PWD/src-dir-64/cs16-client-934a366" && CFLAGS="-m64 -w" CXXFLAGS="-m64 -w" cmake -S . -B build-64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-m64" -DCMAKE_CXX_FLAGS="-m64" --log-level=ERROR -Wno-dev) (cd "$PWD/src-dir-64/cs16-client-934a366" && CFLAGS="-m64 -w" CXXFLAGS="-m64 -w" cmake -S . -B build-64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-m64" -DCMAKE_CXX_FLAGS="-m64" -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--allow-multiple-definition" -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition" --log-level=ERROR -Wno-dev) (cd "$PWD/src-dir-64/cs16-client-934a366/build-64" && make -j$(nproc)) mkdir -p "$PWD/Half-Life-x64/cstrike/addons/yapb/bin/" cp "$PWD/src-dir-64/cs16-client-934a366/build-64/3rdparty/ReGameDLL_CS/regamedll/cs_amd64.so" "$PWD/Half-Life-x64/cstrike/dlls/cs_amd64.so" cp "$PWD/src-dir-64/cs16-client-934a366/build-64/3rdparty/yapb/yapb_amd64.so" "$PWD/Half-Life-x64/cstrike/addons/yapb/bin/yapb_amd64.so" cp "$PWD/src-dir-64/cs16-client-934a366/build-64/cl_dll/client_amd64.so" "$PWD/Half-Life-x64/cstrike/cl_dlls/client_amd64.so" cp "$PWD/src-dir-64/cs16-client-934a366/build-64/3rdparty/mainui_cpp/menu_amd64.so" "$PWD/Half-Life-x64/cstrike/cl_dlls/menu_amd64.so" cp "$PWD/src-dir-64/cs16-client-934a366/3rdparty/cs16client-extras/maps/"* "$PWD/Half-Life-x64/cstrike/maps/" # cs boti Yapb 64bit if [ ! -d "$PWD/src-dir-64/yapb-4967a22" ]; then git clone --recursive https://github.com/yapb/yapb.git "$PWD/src-dir-64/yapb-4967a22" (cd "$PWD/src-dir-64/yapb-4967a22" && git checkout -q 4967a22) (cd "$PWD/src-dir-64/yapb-4967a22" && git submodule update --init --recursive -q) fi mkdir -p "$PWD/src-dir-64/yapb-4967a22/build-64" (cd "$PWD/src-dir-64/yapb-4967a22/build-64" && \ cmake .. \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \ -DCMAKE_CXX_FLAGS_DEBUG="-O0 -g3 -w" \ -DCMAKE_C_FLAGS_DEBUG="-O0 -g3 -w" \ -DCMAKE_CXX_FLAGS="-O0 -g3 -w" \ -DCMAKE_C_FLAGS="-O0 -g3 -w" \ -Wno-dev ) (cd "$PWD/src-dir-64/yapb-4967a22/build-64" && cmake --build . --config Debug --parallel $(nproc)) (cd "$PWD/src-dir-64/yapb-4967a22/build-64" && python3 -c ' with open("libyapb.so", "rb") as f: data = f.read() avx_op = b"\xc4\xe3\x61\x0a\xe2\x01" sse_op = b"\x66\x0f\x3a\x0a\xe2\x10" if avx_op in data: pocet = data.count(avx_op) data = data.replace(avx_op, sse_op) with open("libyapb.so", "wb") as f: f.write(data) print(f"ÚSPĚCH: Ručně opraveno a nahrazeno {pocet} AVX instrukcí na SSE4.1!") else: print("AVX instrukce nenalezeny nebo už byly upraveny.") ') mkdir -p "$PWD/Half-Life-x64/cstrike/addons/yapb/bin" mkdir -p "$PWD/Half-Life-x64/cstrike/addons/yapb/conf" mkdir -p "$PWD/Half-Life-x64/cstrike/addons/yapb/data/graph" cp "$PWD/src-dir-64/yapb-4967a22/build-64/libyapb.so" "$PWD/Half-Life-x64/cstrike/addons/yapb/bin/yapb_amd64.so" cp -r "$PWD/src-dir-64/yapb-4967a22/cfg/addons/yapb/conf/." "$PWD/Half-Life-x64/cstrike/addons/yapb/conf/" cp "$PWD/src-dir-64/yapb-4967a22/cfg/addons/yapb/conf/yapb.cfg" "$PWD/Half-Life-x64/cstrike/addons/yapb/conf/yapb(2).cfg" sed -i '/^\s*\/\//d; /^\s*$/d' "$PWD/Half-Life-x64/cstrike/addons/yapb/conf/yapb.cfg" sed -i -E 's/^yb_difficulty[[:space:]]+.*/yb_difficulty 2/' "$PWD/Half-Life-x64/cstrike/addons/yapb/conf/yapb.cfg" sed -i -E 's/^yb_display_welcome_text[[:space:]]+.*/yb_display_welcome_text "0"/' "$PWD/Half-Life-x64/cstrike/addons/yapb/conf/yapb.cfg" #curl -L -o "$PWD/yapb-graph.zip" https://github.com/yapb/graph/archive/refs/heads/master.zip #unzip -jqqo "$PWD/assets/yapb-graph/yapb-graph.zip" "graph-master/graph/*.graph" -d "$PWD/Half-Life-x64/cstrike/addons/yapb/data/graph/" # rozbaleni grafu 64bit ZIP_FILE="$PWD/assets/yapb-graph/yapb-graph.zip" TARGET_DIR="$PWD/Half-Life-x64/cstrike/addons/yapb/data/graph" mkdir -p "$TARGET_DIR" MAP_LIST=$(unzip -p "$ZIP_FILE" "graph-master/DEFAULT.txt" 2>/dev/null) echo "$MAP_LIST" | while read -r map_name || [ -n "$map_name" ]; do map_name=$(echo "$map_name" | tr -d '\r' | xargs) if [[ -z "$map_name" || "$map_name" == \#* ]]; then continue fi graph_file="graph-master/graph/${map_name}.graph" unzip -jqqo "$ZIP_FILE" "$graph_file" -d "$TARGET_DIR" 2>/dev/null if [ $? -eq 0 ]; then echo "Rozbaleno: ${map_name}.graph" else echo "Upozornění: Soubor $graph_file nebyl v archivu nalezen." fi done # metamod 64bit if [ ! -d "$PWD/src-dir-64/metamod-fwgs-c0ad71a" ]; then git clone --recursive https://github.com/FWGS/metamod-fwgs.git "$PWD/src-dir-64/metamod-fwgs-c0ad71a" (cd "$PWD/src-dir-64/metamod-fwgs-c0ad71a" && git checkout -q c0ad71a) fi (cd "$PWD/src-dir-64/metamod-fwgs-c0ad71a" && CFLAGS="-w" CXXFLAGS="-w" cmake -S . -B build-64 -DCMAKE_BUILD_TYPE=Release --log-level=ERROR -Wno-dev) (cd "$PWD/src-dir-64/metamod-fwgs-c0ad71a/build-64" && make -j$(nproc) )#> /dev/null 2>&1) mkdir -p "$PWD/Half-Life-x64/cstrike/addons/metamod/dlls" cp "$PWD/src-dir-64/metamod-fwgs-c0ad71a/build-64/metamod/metamod_amd64.so" "$PWD/Half-Life-x64/cstrike/addons/metamod/dlls/" touch "$PWD/Half-Life-x64/cstrike/addons/metamod/plugins.ini" echo "linux addons/yapb/bin/yapb_amd64.so" > "$PWD/Half-Life-x64/cstrike/addons/metamod/plugins.ini" cat << 'EOF' > "$PWD/Half-Life-x64/cstrike/liblist.gam" game "Counter-Strike" url_info "www.counter-strike.net" version "1.6" size "184000000" svonly "0" casediff "1" hlversion "1111" nomodels "1" mpentity "info_player_start" //gamedll_linux "addons/metamod/dlls/metamod.so" gamedll_linux "dlls/cs.so" EOF cat << 'EOF' > "$PWD/Half-Life-x64/cstrike/zbot_settings.cfg" // --- NASTAVENI VESTAVENYCH BOTU (ReGameDLL / ZBot) --- bot_quota_mode "fill" bot_quota "10" mp_autoteambalance "1" mp_limitteams "1" bot_join_team "any" bot_difficulty "2" bot_chatter "off" EOF ## # Echoes 64bit unzip -qo "$PWD/assets/mody/echoes/Echoes_v1.4.zip" "echoes/*" -d "$PWD/Half-Life-x64/" (LIBLISTPATH="$PWD/Half-Life-x64/echoes/liblist.gam" grep -q '^gamedll_linux[[:space:]]' $LIBLISTPATH && sed -i 's/^gamedll_linux .*/gamedll_linux "dlls\/echoes.so"/' $LIBLISTPATH || echo -e '\ngamedll_linux "dlls/echoes.so"' >> $LIBLISTPATH ) if [ ! -d "$PWD/src-dir-64/hlsdk-echoes" ]; then git clone --recursive -b echoes --single-branch https://github.com/FWGS/hlsdk-portable "$PWD/src-dir-64/hlsdk-echoes" (cd "$PWD/src-dir-64/hlsdk-echoes" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir-64/hlsdk-echoes/build-64" mkdir -p "$PWD/src-dir-64/hlsdk-echoes/build-64" (cd "$PWD/src-dir-64/hlsdk-echoes" && cmake \ -S . \ -B "build-64" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="-m64 -w" \ -DCMAKE_CXX_FLAGS="-m64 -w" \ -D64BIT=ON \ -DGAMEDIR=echoes \ -Wno-dev ) (cd "$PWD/src-dir-64/hlsdk-echoes/build-64" && make -j$(nproc)) cp "$PWD/src-dir-64/hlsdk-echoes/build-64/cl_dll/client_amd64.so" "$PWD/Half-Life-x64/echoes/cl_dlls/client_amd64.so" cp "$PWD/src-dir-64/hlsdk-echoes/build-64/dlls/echoes_amd64.so" "$PWD/Half-Life-x64/echoes/dlls/echoes_amd64.so" # Opposing Force 64bit if [ ! -d "$PWD/src-dir-64/hlsdk-opfor" ]; then git clone --recursive -b opforfixed --single-branch https://github.com/FWGS/hlsdk-portable "$PWD/src-dir-64/hlsdk-opfor" (cd "$PWD/src-dir-64/hlsdk-opfor" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir-64/hlsdk-opfor/build-64" mkdir -p "$PWD/src-dir-64/hlsdk-opfor/build-64" (cd "$PWD/src-dir-64/hlsdk-opfor" && cmake \ -S . \ -B "build-64" \ # -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Debug \ # -DCMAKE_C_FLAGS="-m64 -w" \ -DCMAKE_C_FLAGS="-m64 -g -O0" \ -DCMAKE_CXX_FLAGS="-m64 -w" \ -D64BIT=ON \ -DGAMEDIR=gearbox \ -Wno-dev ) (cd "$PWD/src-dir-64/hlsdk-opfor/build-64" && make -j$(nproc)) bsdtar -xf "$PWD/assets/mody/opfor/gearbox.tar.zst" -C "$PWD/Half-Life-x64/" cp "$PWD/src-dir-64/hlsdk-opfor/build-64/cl_dll/client_amd64.so" "$PWD/Half-Life-x64/gearbox/cl_dlls/" cp "$PWD/src-dir-64/hlsdk-opfor/build-64/dlls/opfor_amd64.so" "$PWD/Half-Life-x64/gearbox/dlls/" # Opposing Force 64bit - jkBoti cp -r "$PWD/Half-Life-x64/valve/addons/" "$PWD/Half-Life-x64/gearbox/" cat << 'EOF' > "$PWD/Half-Life-x64/gearbox/addons/metamod/config.ini" gamedll dlls/opfor_amd64.so EOF # Opposing Force RCBot 64bit (nefunguji s Xash3D) #if [ ! -d "$PWD/src-dir-64/opfor-rcbot" ]; then # git clone --recursive https://github.com/APGRoboCop/rcbotold "$PWD/src-dir-64/opfor-rcbot" # (cd "$PWD/src-dir-64/opfor-rcbot" && git checkout -q 43ecb57) #fi #rm -rf "$PWD/src-dir-64/opfor-rcbot/build-64" #mkdir -p "$PWD/src-dir-64/opfor-rcbot/build-64" #(cd "$PWD/src-dir-64/opfor-rcbot/build-64" && python3 ../configure.py --enable-optimize) #(cd "$PWD/src-dir-64/opfor-rcbot/build-64" && ambuild) # desktop 64bit pro spusteni pres dex (cd "$PWD/Half-Life-x64" && cat < "$PWD/Half-Life-x64.desktop" [Desktop Entry] Name=Half-Life (Xash3D) 64bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game valve' Icon=half-life-x64.png Terminal=false EOF ) (cd "$PWD/Half-Life-x64" && cat < "$PWD/Half-Life-CS-1.6-x64.desktop" [Desktop Entry] Name=Half-Life CS-1.6 (Xash3D) 64bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game cstrike' Icon=half-life-cs16-x64.png Terminal=false EOF ) (cd "$PWD/Half-Life-x64" && cat < "$PWD/Half-Life-Echoes-x64.desktop" [Desktop Entry] Name=Half-Life Echoes (Xash3D) 64bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game echoes' Icon=half-life-echoes-x64.png Terminal=false EOF ) (cd "$PWD/Half-Life-x64" && cat < "$PWD/Half-Life-Opfor-x64.desktop" [Desktop Entry] Name=Half-Life Echoes (Xash3D) 64bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game gearbox' Icon=half-life-opfor-x64.png Terminal=false EOF ) # konfigurace 64bit valve cat << 'EOF' | tee "$PWD/Half-Life-x64/valve/userconfig.cfg" "$PWD/Half-Life-x64/cstrike/userconfig.cfg" "$PWD/Half-Life-x64/echoes/userconfig.cfg" "$PWD/Half-Life-x64/gearbox/userconfig.cfg" > /dev/null sensitivity "14.0" _vgui_menus "1" sv_autosave "0" unbindall bind "TAB" "+showscores" bind "w" "+forward" bind "s" "+back" bind "a" "+moveleft" bind "b" "buy" bind "y" "messagemode" bind "u" "messagemode2" bind "d" "+moveright" bind "SPACE" "+jump" bind "CTRL" "+duck" bind "e" "+use" bind "f" "impulse 100" bind "p" "pause" bind "r" "+reload" bind "MOUSE1" "+attack" bind "MOUSE2" "+attack2" bind "1" "slot1" bind "2" "slot2" bind "3" "slot3" bind "4" "slot4" bind "5" "slot5" bind "6" "slot6" bind "7" "slot7" bind "8" "slot8" bind "9" "slot9" bind "`" "toggleconsole" bind "~" "toggleconsole" bind "f5" "snapshot" bind "f6" "save quick" bind "f9" "load quick" bind "MWHEELUP" "invprev" bind "MWHEELDOWN" "invnext" hud_fastswitch "1" host_writeconfig EOF # konfigurace 64bit cs16 s vnitrnimi Valve boti v ReGameDLL echo 'mp_freezetime "0"' > "$PWD/Half-Life-x64/cstrike/listenserver.cfg" cat << 'EOF' >> "$PWD/Half-Life-x64/cstrike/listenserver.cfg" exec zbot_settings.cfg EOF echo 'sensitivity "14.0"' > "$PWD/Half-Life-x64/cstrike/userconfig.cfg" touch "$PWD/Half-Life-x64/cstrike/motd.txt" #exit 0 #KOMENTAR #: << 'KOMENTAR' ##################################### # Xash3D 32bit verze # potrebne pro spusteni: pacman -Q lib32-sdl2 lib32-opus lib32-libogg lib32-libvorbis lib32-flac lib32-libsndfile lib32-freetype2 lib32-alsa-lib lib32-alsa-plugins pacman -Q lib32-dbus lib32-libxi lib32-libxrandr lib32-libxss mkdir -p "$PWD/Half-Life-x86" if [ ! -d "$PWD/src-dir/xash3d-fwgs-continuous-4102" ]; then git clone https://github.com/FWGS/xash3d-fwgs.git "$PWD/src-dir/xash3d-fwgs-continuous-4102" (cd "$PWD/src-dir/xash3d-fwgs-continuous-4102" && git checkout -q 9f2b895) (cd "$PWD/src-dir/xash3d-fwgs-continuous-4102" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/" rm -rf "$PWD/src-dir/xash3d-fwgs-continuous-4102/build32/" (cd "$PWD/assets/lib32-sdl2-2.30.3/" && ln -sf "libSDL2-2.0.so.0.3000.3" "libSDL2.so") ( export CFLAGS="-w -I/usr/include/SDL2 -Wno-stringop-overflow -Wno-stringop-overread" export CXXFLAGS="-w -I/usr/include/SDL2 -Wno-stringop-overflow -Wno-stringop-overread" export LDFLAGS="-L$PWD/assets/lib32-sdl2-2.30.3 -lSDL2" cd "$PWD/src-dir/xash3d-fwgs-continuous-4102" "./waf" configure --build-type=release \ --32bits \ --enable-packaging \ --enable-all-renderers \ --disable-werror \ --out="build32" \ --prefix="/" >/dev/null ./waf build --out="build32" ) (cd "$PWD/src-dir/xash3d-fwgs-continuous-4102" && ./waf install --out="build32" --destdir="$PWD/dist32" ) mkdir -p "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/Half-Life-x86/valve" cp "$PWD/assets/vgui/vgui.so" "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/Half-Life-x86/" cp "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/bin/xash3d" "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/Half-Life-x86/" cp "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/lib/xash3d/"*.so "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/Half-Life-x86/" cp "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/share/xash3d/valve/extras.pk3" "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/Half-Life-x86/valve/" rm -rf "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/bin" \ "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/lib" \ "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/share" cp -r "$PWD/assets/valve/" "$PWD/Half-Life-x86/" cp -r "$PWD/assets/cstrike/" "$PWD/Half-Life-x86/" unzip -o "$PWD/assets/nav/cs_assault_nav_2026-06-24.zip" -d "$PWD/Half-Life-x86/cstrike/maps" chmod o+r "$PWD/Half-Life-x86/cstrike/maps/cs_assault.nav" cp -r "$PWD/src-dir/xash3d-fwgs-continuous-4102/dist32/Half-Life-x86" "$PWD/" # https://archive.archlinux.org/packages/l/lib32-sdl2/lib32-sdl2-2.30.3-1-x86_64.pkg.tar.zst # curl -s "https://archive.archlinux.org/packages/l/lib32-sdl2/lib32-sdl2-2.30.3-1-x86_64.pkg.tar.zst" | tar --zstd -xf - usr/lib32/libSDL2-2.0.so.0.3000.3 --strip-components=2 -C "$PWD/Half-Life-x86" cp "$PWD/assets/lib32-sdl2-2.30.3/libSDL2-2.0.so.0.3000.3" "$PWD/Half-Life-x86" ( cd "$PWD/Half-Life-x86" || exit 1 ln -sf "libSDL2-2.0.so.0.3000.3" "libSDL2-2.0.so.0" if ldd ./libxash.so | grep -q "libSDL2"; then ln -sf "libSDL2-2.0.so.0.3000.3" "libSDL2-2.0.so.0" else echo "[VAROVÁNÍ] libxash.so nevyžaduje SDL2!" fi ldd ./libxash.so | grep "=>" | grep -E "libav|libsw" | while read -r line; do LIB_PATH=$(echo "$line" | awk '{print $3}') [[ "$LIB_PATH" == /usr/* ]] && cp "$LIB_PATH" ./ done ) objdump -p "$PWD/Half-Life-x86/xash3d" | grep -E 'R(UN)?PATH' # hl client 32bit if [ ! -d "$PWD/src-dir/hlsdk-8c5b284" ]; then git clone --recursive -b master https://github.com/FWGS/hlsdk-portable "$PWD/src-dir/hlsdk-8c5b284" (cd "$PWD/src-dir/hlsdk-8c5b284" && git checkout -q 8c5b284) (cd "$PWD/src-dir/hlsdk-8c5b284" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir/hlsdk-8c5b284/build-32" mkdir -p "$PWD/src-dir/hlsdk-8c5b284/build-32" CFLAGS="-m32 -w" CXXFLAGS="-m32 -w" cmake \ -S "$PWD/src-dir/hlsdk-8c5b284" \ -B "$PWD/src-dir/hlsdk-8c5b284/build-32" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="-m32 -w" \ -DCMAKE_CXX_FLAGS="-m32 -w" \ -D64BIT=OFF \ -DGAMEDIR=valve \ -Wno-dev (cd "$PWD/src-dir/hlsdk-8c5b284/build-32" && make -j$(nproc)) cp "$PWD/src-dir/hlsdk-8c5b284/vgui_support/vgui-dev/lib/vgui.so" "$PWD/src-dir/hlsdk-8c5b284/build-32/cl_dll/" # pokud pouziji boty Bot10 tak nekopiruji cp "$PWD/src-dir/hlsdk-8c5b284/build-32/dlls/hl.so" "$PWD/Half-Life-x86/valve/dlls/" cp "$PWD/src-dir/hlsdk-8c5b284/build-32/cl_dll/client.so" "$PWD/Half-Life-x86/valve/cl_dlls/" cp "$PWD/src-dir/hlsdk-8c5b284/vgui_support/vgui-dev/lib/vgui.so" "$PWD/Half-Life-x86/valve/cl_dlls/" # hl hl.so s boty Bot10 32bit if [ ! -d "$PWD/src-dir/hlsdk-bot10" ]; then git clone --recursive -b bot10 https://github.com/FWGS/hlsdk-portable "$PWD/src-dir/hlsdk-bot10" (cd "$PWD/src-dir/hlsdk-bot10" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir/hlsdk-bot10/build-32" mkdir -p "$PWD/src-dir/hlsdk-bot10/build-32" CFLAGS="-m32 -w" CXXFLAGS="-m32 -w" cmake \ -S "$PWD/src-dir/hlsdk-bot10" \ -B "$PWD/src-dir/hlsdk-bot10/build-32" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="-m32 -w" \ -DCMAKE_CXX_FLAGS="-m32 -w" \ -D64BIT=OFF \ -DGAMEDIR=valve \ -Wno-dev (cd "$PWD/src-dir/hlsdk-bot10/build-32" && make -j$(nproc)) mkdir -p "$PWD/Half-Life-x86/valve/dlls/serverDLL/bot10/" cp "$PWD/src-dir/hlsdk-bot10/build-32/dlls/bot.so" "$PWD/Half-Life-x86/valve/dlls/" cp "$PWD/Half-Life-x86/valve/listenserver.cfg" "$PWD/Half-Life-x86/valve/listenserver.cfg_orig" cat << 'EOF' > "$PWD/Half-Life-x86/valve/listenserver.cfg" mp_teamplay 1 mp_friendlyfire 1 mp_teamlist "scientist;gman" wait; wait; wait; wait; wait; wait; wait; exec boti.cfg EOF # mp_teamlist "scientist;hgrunt;gman;robo" cat << 'EOF' > "$PWD/Half-Life-x86/valve/boti.cfg" addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot wait; wait; wait; wait; wait; addbot EOF # metamod 32bit if [ ! -d "$PWD/src-dir/metamod-fwgs-c0ad71a" ]; then git clone --recursive https://github.com/FWGS/metamod-fwgs.git "$PWD/src-dir/metamod-fwgs-c0ad71a" fi (cd "$PWD/src-dir/metamod-fwgs-c0ad71a" && git checkout -q c0ad71a) rm -rf "$PWD/src-dir/metamod-fwgs-c0ad71a/build-32" mkdir "$PWD/src-dir/metamod-fwgs-c0ad71a/build-32" (cd "$PWD/src-dir/metamod-fwgs-c0ad71a" && \ CFLAGS="-w -m32" \ CXXFLAGS="-w -m32" \ LDFLAGS="-m32" \ cmake -S . -B build-32 \ -DCMAKE_BUILD_TYPE=Release \ -DARCH=i386 \ --log-level=ERROR -Wno-dev ) (cd "$PWD/src-dir/metamod-fwgs-c0ad71a/build-32" && make -j$(nproc) )#> /dev/null 2>&1) # hl jk_botti kompilace 32bit pres metamod if [ ! -d "$PWD/src-dir/jk_botti" ]; then git clone --recursive -b v1.62 https://github.com/Bots-United/jk_botti.git "$PWD/src-dir/jk_botti" (cd "$PWD/src-dir/jk_botti" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir/jk_botti/build-32" mkdir "$PWD/src-dir/jk_botti/build-32" rsync -a --exclude='.git*' --exclude='build-32/' "$PWD/src-dir/jk_botti/" "$PWD/src-dir/jk_botti/build-32/" (cd "$PWD/src-dir/jk_botti/build-32" && make clean) (cd "$PWD/src-dir/jk_botti/build-32" && \ make \ CFLAGS="-m32 -O0 -g -fno-omit-frame-pointer -Wno-write-strings -I./common -I./dlls -I./engine -I./pm_shared -I./metamod -DVER_MAJOR=1 -DVER_MINOR=62 -DVER_NOTE=\\\"release\\\"" \ CXXFLAGS="-m32 -O0 -g -fno-omit-frame-pointer -Wno-write-strings -I./common -I./dlls -I./engine -I./pm_shared -I./metamod -DVER_MAJOR=1 -DVER_MINOR=62 -DVER_NOTE=\\\"release\\\"" \ LDFLAGS="-m32" \ -j$(nproc) ) shopt -s extglob rm -rf "$PWD/src-dir/jk_botti/build-32"/!(addons) shopt -u extglob rm -f "$PWD/src-dir/jk_botti/build-32/addons/jk_botti/dlls/.empty_dir" # hl jk_botti 32bit pres metamod mkdir -p "$PWD/Half-Life-x86/valve/addons/metamod/dlls" cp "$PWD/src-dir/metamod-fwgs-c0ad71a/build-32/metamod/metamod.so" "$PWD/Half-Life-x86/valve/addons/metamod/dlls/" cat << 'EOF' > "$PWD/Half-Life-x86/valve/addons/metamod/plugins.ini" linux addons/jk_botti/dlls/jk_botti_mm_i386.so EOF cat << 'EOF' > "$PWD/Half-Life-x86/valve/addons/metamod/config.ini" gamedll dlls/hl.so EOF mkdir -p "$PWD/Half-Life-x86/valve/addons/jk_botti/dlls/" "$PWD/Half-Life-x86/valve/addons/jk_botti/waypoints/" cp -r "$PWD/src-dir/jk_botti/build-32/addons/jk_botti/dlls/"* "$PWD/Half-Life-x86/valve/addons/jk_botti/dlls/" cp -r "$PWD/src-dir/jk_botti/build-32/addons/jk_botti/waypoints/"* "$PWD/Half-Life-x86/valve/addons/jk_botti/waypoints/" find "$PWD/src-dir/jk_botti/build-32/addons/jk_botti/" -maxdepth 1 -type f -exec cp {} "$PWD/Half-Life-x86/valve/addons/jk_botti/" \; cp "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti(2).cfg" sed -i '/^\s*#/d; /^\s*$/d' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_percent\s\s*[0-9]*/bot_chat_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_taunt_percent\s\s*[0-9]*/bot_taunt_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_whine_percent\s\s*[0-9]*/bot_whine_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_endgame_percent\s\s*[0-9]*/bot_endgame_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_logo_percent\s\s*[0-9]*/bot_logo_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*autowaypoint\s\s*[0-9]*/autowaypoint 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_tag_percent\s\s*[0-9]*/bot_chat_tag_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_drop_percent\s\s*[0-9]*/bot_chat_drop_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_swap_percent\s\s*[0-9]*/bot_chat_swap_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" sed -i 's/^\s*bot_chat_lower_percent\s\s*[0-9]*/bot_chat_lower_percent 0/' "$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" (JKBOTTICFG="$PWD/Half-Life-x86/valve/addons/jk_botti/jk_botti.cfg" grep -q '^\s*mp_friendlyfire' "$JKBOTTICFG" && sed -i 's/^\s*mp_friendlyfire\s\s*[0-9]*/mp_friendlyfire 1/' "$JKBOTTICFG" \ || echo 'mp_friendlyfire 1' >> "$JKBOTTICFG" ) # 32bit hl liblist.gam cat << 'EOF' > "$PWD/Half-Life-x86/valve/liblist.gam" // Valve Game Info file // These are key/value pairs. Certain mods will use different settings. // game "Half-Life" startmap "c0a0" trainmap "t0a0" mpentity "info_player_deathmatch" gamedll_linux "dlls/bot.so" secure "1" type "singleplayer_only" EOF # Velaron cs16-client 32 bit if [ ! -d "$PWD/src-dir/cs16-client-934a366" ]; then git clone --recursive https://github.com/Velaron/cs16-client.git "$PWD/src-dir/cs16-client-934a366" (cd "$PWD/src-dir/cs16-client-934a366" && git checkout -q 934a366) (cd "$PWD/src-dir/cs16-client-934a366" && git submodule update --init --recursive -q) fi sed -i 's/Vector Center(void){ return (GetStartPos() + GetEndPos()) \* 0.5; }/Vector Center(void){ return (pev->origin + pev->angles) \* 0.5; }/g' "$PWD/src-dir/cs16-client-934a366/dlls/effects.h" sed -i 's/return (GetStartPos() + GetEndPos()) \* 0.5f;/return (pev->origin + pev->angles) \* 0.5f;/g' "$PWD/src-dir/cs16-client-934a366/dlls/effects.h" rm -rf "$PWD/src-dir/cs16-client-934a366/build-32" mkdir -p "$PWD/src-dir/cs16-client-934a366/build-32" #(cd "$PWD/src-dir/cs16-client-934a366/build-32" && \ # cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-m32 -w" -DCMAKE_CXX_FLAGS="-m32 -w" -DCMAKE_SHARED_LINKER_FLAGS="-m32" --log-level=ERROR -Wno-dev #) (cd "$PWD/src-dir/cs16-client-934a366/build-32" && \ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="-m32 -w" \ -DCMAKE_CXX_FLAGS="-m32 -w" \ -DCMAKE_SHARED_LINKER_FLAGS="-m32 -Wl,--allow-multiple-definition" \ --log-level=ERROR -Wno-dev ) (cd "$PWD/src-dir/cs16-client-934a366/build-32" && make -j$(nproc)) mkdir -p "$PWD/Half-Life-x86/cstrike/addons/yapb/bin/" cp "$PWD/src-dir/cs16-client-934a366/build-32/3rdparty/ReGameDLL_CS/regamedll/cs.so" "$PWD/Half-Life-x86/cstrike/dlls/cs.so" #cp "$PWD/src-dir/cs16-client-934a366/build-32/3rdparty/yapb/yapb.so" "$PWD/Half-Life-x86/cstrike/addons/yapb/bin/yapb.so" cp "$PWD/src-dir/cs16-client-934a366/build-32/cl_dll/client.so" "$PWD/Half-Life-x86/cstrike/cl_dlls/client.so" cp "$PWD/src-dir/cs16-client-934a366/build-32/3rdparty/mainui_cpp/menu.so" "$PWD/Half-Life-x86/cstrike/cl_dlls/menu.so" cp "$PWD/src-dir/cs16-client-934a366/3rdparty/cs16client-extras/maps/"* "$PWD/Half-Life-x86/cstrike/maps/" # sed -i 's/^sensitivity.*/sensitivity "14.0"/' "$PWD/Half-Life-x86/cstrike/config.cfg" cat << 'EOF' > "$PWD/Half-Life-x86/cstrike/liblist.gam" game "Counter-Strike" url_info "www.counter-strike.net" url_dl "" version "1.6" size "184000000" svonly "0" secure "1" type "multiplayer_only" hlversion "1111" nomodels "1" nohimodel "1" mpentity "info_player_start" gamedll_linux "dlls/cs.so" cldll_linux "cl_dlls/client.so" trainmap "tr_1" EOF cat << 'EOF' > "$PWD/Half-Life-x86/cstrike/valve.rc" console 1 stuffcmds wait; wait; wait; wait; wait; clear exec userconfig.cfg EOF # cs boti YaPB 32bit if [ ! -d "$PWD/src-dir/yapb-4967a22" ]; then git clone --recursive https://github.com/yapb/yapb.git "$PWD/src-dir/yapb-4967a22" (cd "$PWD/src-dir/yapb-4967a22" && git checkout -q 4967a22) (cd "$PWD/src-dir/yapb-4967a22" && git submodule update --init --recursive -q) fi rm -rf "$PWD/src-dir/yapb-4967a22/build-32" mkdir -p "$PWD/src-dir/yapb-4967a22/build-32" (cd "$PWD/src-dir/yapb-4967a22/build-32" && cmake .. \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \ -DCMAKE_CXX_FLAGS="-m32 -O0 -g3 -w" \ -DCMAKE_C_FLAGS="-m32 -O0 -g3 -w" \ -DCMAKE_SHARED_LINKER_FLAGS="-m32" \ -Wno-dev ) (cd "$PWD/src-dir/yapb-4967a22/build-32" && cmake --build . --config Release --parallel $(nproc)) (cd "$PWD/src-dir/yapb-4967a22/build-32" && python3 -c ' with open("libyapb.so", "rb") as f: data = f.read() # 32-bit AVX opkód: c4 e3 51 0a f4 01 (vroundss xmm6,xmm5,xmm4,0x1) # 32-bit SSE4.1 opkód: 66 0f 3a 0a f4 10 (roundss xmm6,xmm4,0x1) avx_op = b"\xc4\xe3\x51\x0a\xf4\x01" sse_op = b"\x66\x0f\x3a\x0a\xf4\x10" if avx_op in data: pocet = data.count(avx_op) data = data.replace(avx_op, sse_op) with open("libyapb.so", "wb") as f: f.write(data) print(f"ÚSPĚCH: Ručně opraveno a nahrazeno {pocet} 32-bitových AVX instrukcí na SSE4.1!") else: print("AVX instrukce nenalezeny nebo už byly upraveny.") ') strip --strip-debug "$PWD/src-dir/yapb-4967a22/build-32/libyapb.so" mkdir -p "$PWD/Half-Life-x86/cstrike/addons/yapb/bin" mkdir -p "$PWD/Half-Life-x86/cstrike/addons/yapb/conf" mkdir -p "$PWD/Half-Life-x86/cstrike/addons/yapb/data/graph" cp "$PWD/src-dir/yapb-4967a22/build-32/libyapb.so" "$PWD/Half-Life-x86/cstrike/addons/yapb/bin/yapb.so" cp -r "$PWD/src-dir/yapb-4967a22/cfg/addons/yapb/conf/." "$PWD/Half-Life-x86/cstrike/addons/yapb/conf/" cp "$PWD/src-dir/yapb-4967a22/cfg/addons/yapb/conf/yapb.cfg" "$PWD/Half-Life-x86/cstrike/addons/yapb/conf/yapb(2).cfg" sed -i '/^\s*\/\//d; /^\s*$/d' "$PWD/Half-Life-x86/cstrike/addons/yapb/conf/yapb.cfg" sed -i -E 's/^yb_difficulty[[:space:]]+.*/yb_difficulty 2/' "$PWD/Half-Life-x86/cstrike/addons/yapb/conf/yapb.cfg" sed -i -E 's/^yb_display_welcome_text[[:space:]]+.*/yb_display_welcome_text "0"/' "$PWD/Half-Life-x86/cstrike/addons/yapb/conf/yapb.cfg" #curl -L -o "$PWD/src-dir/yapb-graph.zip" https://github.com/yapb/graph/archive/refs/heads/master.zip #unzip -jqqo "$PWD/assets/yapb-graph/yapb-graph.zip" "graph-master/graph/*.graph" -d "$PWD/Half-Life-x86/cstrike/addons/yapb/data/graph/" # rozbaleni grafu 64bit ZIP_FILE="$PWD/assets/yapb-graph/yapb-graph.zip" TARGET_DIR="$PWD/Half-Life-x86/cstrike/addons/yapb/data/graph" mkdir -p "$TARGET_DIR" MAP_LIST=$(unzip -p "$ZIP_FILE" "graph-master/DEFAULT.txt" 2>/dev/null) echo "$MAP_LIST" | while read -r map_name || [ -n "$map_name" ]; do map_name=$(echo "$map_name" | tr -d '\r' | xargs) if [[ -z "$map_name" || "$map_name" == \#* ]]; then continue fi graph_file="graph-master/graph/${map_name}.graph" unzip -jqqo "$ZIP_FILE" "$graph_file" -d "$TARGET_DIR" 2>/dev/null if [ $? -eq 0 ]; then echo "Rozbaleno: ${map_name}.graph" else echo "Upozornění: Soubor $graph_file nebyl v archivu nalezen." fi done # YaPB zapis do metamodu 32bit mkdir -p "$PWD/Half-Life-x86/cstrike/addons/metamod/dlls" cp "$PWD/src-dir/metamod-fwgs-c0ad71a/build-32/metamod/metamod.so" "$PWD/Half-Life-x86/cstrike/addons/metamod/dlls/" touch "$PWD/Half-Life-x86/cstrike/addons/metamod/plugins.ini" echo "linux addons/yapb/bin/yapb.so" > "$PWD/Half-Life-x86/cstrike/addons/metamod/plugins.ini" # Echoes 32bit unzip -qo "$PWD/assets/mody/echoes/Echoes_v1.4.zip" "echoes/*" -d "$PWD/Half-Life-x86/" (LIBLISTPATH="$PWD/Half-Life-x86/echoes/liblist.gam" grep -q '^gamedll_linux[[:space:]]' $LIBLISTPATH && sed -i 's/^gamedll_linux .*/gamedll_linux "dlls\/echoes.so"/' $LIBLISTPATH || echo -e '\ngamedll_linux "dlls/echoes.so"' >> $LIBLISTPATH ) if [ ! -d "$PWD/src-dir/hlsdk-echoes" ]; then git clone --recursive -b echoes --single-branch https://github.com/FWGS/hlsdk-portable "$PWD/src-dir/hlsdk-echoes" (cd "$PWD/src-dir/hlsdk-echoes" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir/hlsdk-echoes/build-32" mkdir -p "$PWD/src-dir/hlsdk-echoes/build-32" (cd "$PWD/src-dir/hlsdk-echoes" && CFLAGS="-m32 -w" CXXFLAGS="-m32 -w" cmake \ -S . \ -B "build-32" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="-m32 -w" \ -DCMAKE_CXX_FLAGS="-m32 -w" \ -D64BIT=OFF \ -DGAMEDIR=echoes \ -Wno-dev ) (cd "$PWD/src-dir/hlsdk-echoes/build-32" && make -j$(nproc)) cp "$PWD/src-dir/hlsdk-echoes/build-32/cl_dll/client.so" "$PWD/Half-Life-x86/echoes/cl_dlls/client.so" cp "$PWD/src-dir/hlsdk-echoes/build-32/dlls/echoes.so" "$PWD/Half-Life-x86/echoes/dlls/echoes.so" # Opposing Force 32bit if [ ! -d "$PWD/src-dir/hlsdk-opfor" ]; then git clone --recursive -b opforfixed --single-branch https://github.com/FWGS/hlsdk-portable "$PWD/src-dir/hlsdk-opfor" (cd "$PWD/src-dir/hlsdk-opfor" && git submodule update --init --recursive) fi rm -rf "$PWD/src-dir/hlsdk-opfor/build-32" mkdir -p "$PWD/src-dir/hlsdk-opfor/build-32" (cd "$PWD/src-dir/hlsdk-opfor" && cmake \ -S . \ -B "build-32" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="-m32 -w" \ -DCMAKE_CXX_FLAGS="-m32 -w" \ -D64BIT=OFF \ -DGAMEDIR=gearbox \ -Wno-dev ) (cd "$PWD/src-dir/hlsdk-opfor/build-32" && make -j$(nproc)) bsdtar -xf "$PWD/assets/mody/opfor/gearbox.tar.zst" -C "$PWD/Half-Life-x86/" cp "$PWD/src-dir/hlsdk-opfor/build-32/cl_dll/client.so" "$PWD/Half-Life-x86/gearbox/cl_dlls/" cp "$PWD/src-dir/hlsdk-opfor/build-32/dlls/opfor.so" "$PWD/Half-Life-x86/gearbox/dlls/" # Opposing Force 32bit - jkBoti cp -r "$PWD/Half-Life-x86/valve/addons/" "$PWD/Half-Life-x86/gearbox/" cat << 'EOF' > "$PWD/Half-Life-x86/gearbox/addons/metamod/config.ini" gamedll dlls/opfor.so EOF # desktop pro spusteni pres dex (cd "$PWD/Half-Life-x86" && cat < "$PWD/Half-Life-x86.desktop" [Desktop Entry] Name=Half-Life (Xash3D) 32bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game valve' Icon=half-life-x86.png Terminal=false EOF ) (cd "$PWD/Half-Life-x86" && cat < "$PWD/Half-Life-CS-1.6-x86.desktop" [Desktop Entry] Name=Half-Life CS-1.6 32bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game cstrike' Icon=half-life-cs16-x86.png Terminal=false EOF ) (cd "$PWD/Half-Life-x86" && cat < "$PWD/Half-Life-Echoes-x86.desktop" [Desktop Entry] Name=Half-Life Echoes (Xash3D) 32bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game echoes' Icon=half-life-echoes-x86.png Terminal=false EOF ) (cd "$PWD/Half-Life-x86" && cat < "$PWD/Half-Life-Opfor-x86.desktop" [Desktop Entry] Name=Half-Life Echoes (Xash3D) 32bit Type=Application Categories=Game;Shooter; Exec=sh -c 'cd "\$(dirname "%k")" && ./xash3d -game gearbox' Icon=half-life-opfor-x86.png Terminal=false EOF ) # konfigurace 32bit valve cat << 'EOF' | tee "$PWD/Half-Life-x86/valve/userconfig.cfg" "$PWD/Half-Life-x86/cstrike/userconfig.cfg" "$PWD/Half-Life-x86/echoes/userconfig.cfg" "$PWD/Half-Life-x86/gearbox/userconfig.cfg" > /dev/null sensitivity "14.0" _vgui_menus "1" sv_autosave "0" brightness "1.0" unbindall bind "TAB" "+showscores" bind "w" "+forward" bind "s" "+back" bind "a" "+moveleft" bind "b" "buy" bind "y" "messagemode" bind "u" "messagemode2" bind "d" "+moveright" bind "SPACE" "+jump" bind "CTRL" "+duck" bind "e" "+use" bind "f" "impulse 100" bind "g" "drop" bind "m" "chooseteam" bind "p" "pause" bind "r" "+reload" bind "MOUSE1" "+attack" bind "MOUSE2" "+attack2" bind "1" "slot1" bind "2" "slot2" bind "3" "slot3" bind "4" "slot4" bind "5" "slot5" bind "6" "slot6" bind "7" "slot7" bind "8" "slot8" bind "9" "slot9" bind "`" "toggleconsole" bind "~" "toggleconsole" bind "f5" "snapshot" bind "f6" "save quick" bind "f9" "load quick" bind "MWHEELUP" "invprev" bind "MWHEELDOWN" "invnext" hud_fastswitch "1" host_writeconfig EOF # konfigurace 32bit cs16 s vnitrnimi Valve boti v ReGameDLL echo 'mp_freezetime "0"' > "$PWD/Half-Life-x86/cstrike/listenserver.cfg" cat << 'EOF' >> "$PWD/Half-Life-x86/cstrike/listenserver.cfg" exec zbot_settings.cfg EOF cat << 'EOF' > "$PWD/Half-Life-x86/cstrike/zbot_settings.cfg" // --- NASTAVENI VESTAVENYCH BOTU (ReGameDLL / ZBot) --- bot_quota_mode "fill" bot_quota "10" mp_autoteambalance "1" mp_limitteams "1" bot_join_team "any" bot_difficulty "2" bot_chatter "off" EOF touch "$PWD/Half-Life-x86/cstrike/motd.txt" #KOMENTAR ####################################################### : << 'KOMENTAR' # overeni podpory ffmpeg v xash3d enginu ldd ./libxash.so | grep -E 'libav|libsw' - dodat SDL2 knihovnu do adresáře s hrou - vehicle_ignition.wav find build -name "*.so" KOMENTAR