From e685bdd3e32d27d120f1c0ef97d97e62dc85bfaf Mon Sep 17 00:00:00 2001 From: Exynox Date: Sat, 16 Nov 2024 18:51:55 +0200 Subject: [PATCH] Added a crude build script, DirectX 9 documentation --- README.md | 15 +++++++++- build.bat | 58 ++++++++++++++++++++++++++++++++++++ doc/img/directx-error-1.png | Bin 0 -> 7480 bytes doc/img/directx-error-2.png | Bin 0 -> 7554 bytes 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 build.bat create mode 100644 doc/img/directx-error-1.png create mode 100644 doc/img/directx-error-2.png diff --git a/README.md b/README.md index 51d84373..d25596a5 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,17 @@ while using files from [TMP4's project](https://metin2.dev/topic/27610-40250-ref Except for some work in order to ensure compatibility with the server, this client is pretty much unchanged. - \ No newline at end of file + +## Requirements + +### Installing DirectX 9.0c +The client has been updated to DirectX 9. This means that if DirectX 9 is not installed on your computer, you might be met with one of these error messages: + +![picture](/doc/img/directx-error-1.png) +![picture](/doc/img/directx-error-2.png) + +In this case, simply [download the DirectX End-User Runtimes (June 2010) from Microsoft's website](http://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe) (SHA-1 checksum: `7E5D2E5E1A13FBC47F990CC55CBDB428CD12F759`). This is a self-extracting archive, so simply create a new folder, run the executable and extract its contents to that folder. + +In this working folder, find and run `DXSETUP.exe` in order to start the install. + +After the installation is complete, your client should run without issue. diff --git a/build.bat b/build.bat new file mode 100644 index 00000000..4d501abd --- /dev/null +++ b/build.bat @@ -0,0 +1,58 @@ +@echo off + +ECHO ====================================================== +ECHO The Old Metin2 Project - Automated client build script +ECHO Only use on a clean project directory. +ECHO ====================================================== + +rem SET M2_MSVC_DIR=C:\Program Files\Microsoft Visual Studio\2022\Community\ +rem SET M2_PML_PATH=C:\Users\User\Path\To\PackMakerLite\PackMakerLite.exe + +rem Check the environment variables +VERIFY OTHER 2>nul +SETLOCAL ENABLEEXTENSIONS +IF ERRORLEVEL 1 ECHO Unable to enable extensions +IF NOT DEFINED M2_MSVC_DIR ( + ECHO M2_MSVC_DIR is NOT defined! Please define M2_MSVC_DIR with the path of your local MSVC install. + EXIT /B -1 +) +IF NOT DEFINED M2_PML_PATH ( + ECHO M2_PML_PATH is NOT defined! Please define M2_PML_PATH with the path of your local PackMakerLite executable. + EXIT /B -1 +) +ENDLOCAL + +rem Initialize the MSVC environment +CALL "%M2_MSVC_DIR%\VC\Auxiliary\Build\vcvars32.bat" + +rem Build +msbuild Metin2Client.sln /p:Configuration=Distribute /p:Platform="Win32" + +rem Start assembling the client package +RMDIR /S /Q dist +MKDIR dist\ +COPY /Y build\Distribute\UserInterface.exe dist\metin2.exe + +rem Copy over the data from the bin directory +xcopy bin\ dist\ /Y /Q +DEL /S dist\.gitignore +xcopy bin\BGM\ dist\BGM\ /E /Y /Q +xcopy bin\lib\ dist\lib\ /E /Y /Q +MKDIR dist\mark\ +xcopy bin\miles\ dist\miles\ /E /Y /Q +MKDIR dist\pack\ +COPY /Y bin\pack\Index dist\pack\ +COPY /Y bin\pack\*.rdch dist\pack\ +MKDIR dist\screenshot\ +xcopy bin\upload\ dist\upload\ /E /Y /Q + +rem Build and copy the archives +DEL /F /Q "bin\pack\*.eix" +DEL /F /Q "bin\pack\*.epk" + +FOR /d %%i IN ("bin\pack\*") DO ( + echo Packing %%i + %M2_PML_PATH% --nolog --parallel -p "%%i" +) +MOVE /Y bin\pack\*.eix dist\pack\ +MOVE /Y bin\pack\*.epk dist\pack\ diff --git a/doc/img/directx-error-1.png b/doc/img/directx-error-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cdaa2eb4ed3051c79a7cec3e2cb01b4efe95f154 GIT binary patch literal 7480 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 literal 0 HcmV?d00001 diff --git a/doc/img/directx-error-2.png b/doc/img/directx-error-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f843da1928f1e10bc8e3bfd90eaa41c8bb023115 GIT binary patch literal 7554 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 literal 0 HcmV?d00001