$ErrorActionPreference = 'Stop' $root = $PSScriptRoot $src = Join-Path $root 'src\dllmain.cpp' $dist = Join-Path $root 'dist' $output = Join-Path $dist 'version.dll' $vcvars = @( "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat", "C:\Program Files\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvars64.bat", "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" ) | Where-Object { Test-Path $_ } | Select-Object -First 1 if (-not $vcvars) { throw "vcvars64.bat not found - install the MSVC C++ toolset." } New-Item -ItemType Directory -Force -Path $dist | Out-Null Write-Host "Using $vcvars" -ForegroundColor Cyan Write-Host "Compiling version.dll (x64)..." -ForegroundColor Cyan $cl = "cl /nologo /std:c++17 /utf-8 /O2 /MT /EHsc /LD `"$src`" /Fe:`"$output`" /Fo:`"$dist\`" " + "/link /DLL /MACHINE:X64" & cmd /c "`"$vcvars`" >nul && $cl" if ($LASTEXITCODE -ne 0) { throw "build failed ($LASTEXITCODE)" } Remove-Item (Join-Path $dist '*.obj'), (Join-Path $dist 'version.exp'), (Join-Path $dist 'version.lib') -ErrorAction SilentlyContinue Write-Host "" Write-Host "Built $output" -ForegroundColor Green Write-Host "Copy the dist folder contents (plus gadget.dll) into your game directory." -ForegroundColor Green