Загрузка данных


@echo off
chcp 65001 >nul
title Сборка pinkvalley_multiplayer.pk3
cd /d "%~dp0"

echo ==========================================
echo   СБОРКА МУЛЬТИПЛЕЕР-ПАКЕТА
echo ==========================================
echo.

set BUILD=pinkvalley_build

:: Очистка
if exist "%BUILD%" rmdir /s /q "%BUILD%"
if exist "pinkvalley_multiplayer.pk3" del "pinkvalley_multiplayer.pk3"

:: Папки
mkdir "%BUILD%"
mkdir "%BUILD%\zscript"

:: ============================================
:: ZSCRIPT - панель игроков и хоста
:: ============================================
echo Создаю ZScript...

(
echo class PinkValleyNetworkHUD : EventHandler
echo {
echo     int connectedPlayers;
echo     string hostName;
echo     int hostNumber;
echo     int maxPlayers;
echo     bool gameStarted;
echo     
echo     override void WorldLoaded^(WorldEvent e^)
echo     {
echo         connectedPlayers = 0;
echo         hostName = "Ожидание...";
echo         hostNumber = -1;
echo         gameStarted = false;
echo         maxPlayers = GetCVar^("sv_maxplayers"^);
echo         
echo         for ^(int i = 0; i ^< 8; i++^)
echo         {
echo             if ^(PlayerInGame^(i^)^)
echo             {
echo                 connectedPlayers++;
echo                 if ^(i == 0^)
echo                 {
echo                     hostNumber = i;
echo                     hostName = GetCVarString^("name"^);
echo                 }
echo             }
echo         }
echo         
echo         SetTimer^("autostart", 1050^);
echo         Console.Printf^("Хост: "..hostName.." | Игроков: "..connectedPlayers.."/"..maxPlayers^);
echo     }
echo     
echo     override void PlayerEntered^(int player, bool isfromload^)
echo     {
echo         connectedPlayers++;
echo         string name = GetCVarString^("name"^);
echo         string msg = "[+] "..name.." ("..connectedPlayers.."/"..maxPlayers..")";
echo         Console.Printf^(msg^);
echo         SendNetworkEvent^("pv_msg", msg^);
echo         
echo         if ^(connectedPlayers ^>= maxPlayers ^&^& !gameStarted^)
echo         {
echo             SetTimer^("allready", 105^);
echo         }
echo     }
echo     
echo     override void PlayerLeft^(int player, bool isdisconnect^)
echo     {
echo         connectedPlayers--;
echo         string name = GetCVarString^("name"^);
echo         string msg = "[-] "..name.." ("..connectedPlayers.."/"..maxPlayers..")";
echo         Console.Printf^(msg^);
echo         SendNetworkEvent^("pv_msg", msg^);
echo     }
echo     
echo     override void RenderOverlay^(RenderEvent e^)
echo     {
echo         if ^(!multiplayer ^|^| !netgame ^|^| gameStarted^) return;
echo         
echo         SetHudSize^(320, 200, true^);
echo         
echo         // Заголовок
echo         HudMessage^(s:"=== PINK VALLEY ===";
echo             HUDMSG_PLAIN, 101, CR_GOLD, 222.0, 4.0, 0.0^);
echo         
echo         // Хост
echo         HudMessage^(s:"ХОСТ: "..hostName;
echo             HUDMSG_PLAIN, 102, CR_LIGHTGREEN, 222.0, 16.0, 0.0^);
echo         
echo         // Счётчик
echo         string counter = "ИГРОКИ: "..connectedPlayers.." / "..maxPlayers;
echo         HudMessage^(s:counter;
echo             HUDMSG_PLAIN, 103, CR_WHITE, 222.0, 26.0, 0.0^);
echo         
echo         // Статус
echo         string status;
echo         if ^(connectedPlayers ^>= maxPlayers^)
echo             status = "ВСЕ НА МЕСТЕ!";
echo         else
echo             status = "ОЖИДАНИЕ...";
echo         
echo         HudMessage^(s:status;
echo             HUDMSG_PLAIN, 104,
echo             connectedPlayers ^>= maxPlayers ? CR_LIGHTGREEN : CR_ORANGE,
echo             222.0, 36.0, 0.0^);
echo         
echo         // Список игроков
echo         int y = 50;
echo         for ^(int i = 0; i ^< 8; i++^)
echo         {
echo             if ^(PlayerInGame^(i^)^)
echo             {
echo                 string entry = i == 0 ? "> " : "  ";
echo                 entry = entry..GetCVarString^("name"^);
echo                 if ^(i == 0^) entry = entry.." [ХОСТ]";
echo                 
echo                 HudMessage^(s:entry;
echo                     HUDMSG_PLAIN, 110 + i,
echo                     i == 0 ? CR_GOLD : CR_WHITE,
echo                     222.0, y, 0.0^);
echo                 y += 8;
echo             }
echo         }
echo     }
echo     
echo     override void TimerTick^(^)
echo     {
echo         if ^(GetTimer^("autostart"^) ^<= 0 ^&^& !gameStarted^)
echo         {
echo             gameStarted = true;
echo             ConsoleCommand^("countdown 0"^);
echo         }
echo         if ^(GetTimer^("allready"^) ^<= 0 ^&^& !gameStarted^)
echo         {
echo             gameStarted = true;
echo             ConsoleCommand^("countdown 0"^);
echo         }
echo     }
echo     
echo     override void NetworkProcess^(ConsoleEvent e^)
echo     {
echo         if ^(e.Name == "pv_msg"^)
echo         {
echo             string msg = e.Args[0];
echo             SetHudSize^(640, 480, true^);
echo             HudMessage^(s:msg;
echo                 HUDMSG_FADEOUT, 1000, CR_GREEN,
echo                 320.0, 200.0, 3.0, 1.0^);
echo         }
echo     }
echo }
) > "%BUILD%\zscript\pinkvalley_hud.zsc"

:: ============================================
:: CVARINFO
:: ============================================
echo server int pinkvalley_autohost = 0; > "%BUILD%\cvarinfo.txt"

:: ============================================
:: MAPINFO
:: ============================================
(
echo GameInfo
echo {
echo     AddEventHandlers = "PinkValleyNetworkHUD"
echo }
) > "%BUILD%\mapinfo.txt"

:: ============================================
:: УПАКОВКА
:: ============================================
echo Упаковываю PK3...
powershell -Command "Compress-Archive -Path '%BUILD%\*' -DestinationPath 'pinkvalley_multiplayer.zip' -Force"
rename "pinkvalley_multiplayer.zip" "pinkvalley_multiplayer.pk3"
rmdir /s /q "%BUILD%"

echo.
echo ==========================================
echo   ГОТОВО! pinkvalley_multiplayer.pk3
echo ==========================================
echo.
echo   Положи этот файл в папку с игрой
echo   и запускай лаунчер!
echo.
pause