DethKarz

From LANCommander
Revision as of 00:27, 1 August 2023 by DoctorDalek (talk | contribs) (Created page with "Category:Games {{Game.InfoBox |Cover = cover.jpg |Release Date = {{Game.InfoBox.ReleaseDate|Windows|December 18, 1998}} |Genres = {{Game.InfoBox.Genre|Simulator}} {{Game.InfoBox.Genre|Racing}} | PCGamingWiki = DethKarz }} {{Game.ActionBox |Actions = {{Game.ActionBox.Row|Name = Play|Path = Dethkarz.exe|Arguments = |WorkingDirectory = |Primary = True}} }} {{Game.Scripts.NameChange |Name = Name Change Script |Description = Dethkarz stores the name of the player for m...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Release Date
Windows: December 18, 1998
Genres
Simulator

Racing

View at PCGamingWiki

Actions

Name Path Arguments Working Directory Primary
Play Dethkarz.exe True

Name Change Script

Dethkarz stores the name of the player for multiplayer in the dk.db file as a raw ASCII string with a max length of 12. This offset might change if this file changes in size at all.

$NewName = $args[0]
$InstallDir = $PSScriptRoot

function Get-AsciiBytes([string]$InputString, [int]$MaxLength)
{
    if ($InputString.Length -gt $MaxLength)
    {
        $InputString = $InputString.Substring(0, $MaxLength)
    }

    $bytes = [System.Text.Encoding]::ASCII.GetBytes($InputString)
    $array = @()
    $count = 0

    $extraPadding = $MaxLength - $bytes.Length

    foreach ($byte in $bytes)
    {
        if ($count -lt $MaxLength)
        {
            $array += $byte
            $count++
        }
    }

    for ($i = $count; $i -lt $MaxLength; $i++)
    {
        $array += 0x00
    }

    return $array
}

function Patch-Binary([byte[]]$Data, [int]$Offset, [string]$FilePath)
{
    $bytes = [System.IO.File]::ReadAllBytes($FilePath)

    for ($i = 0; $i -lt $Data.Length; $i++)
    {
        $bytes[$Offset + $i] = $Data[$i]
    }

    [System.IO.File]::WriteAllBytes($FilePath, $bytes)
}

$rawBytes = Get-AsciiBytes -InputString $newName -MaxLength 12

Patch-Binary -FilePath "$InstallDir\Data\dk.db" -Offset 0xf0b88 -Data $rawBytes