Загрузка данных
@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