DethKarz: Difference between revisions

From LANCommander
(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...")
 
No edit summary
 
Line 2: Line 2:
{{Game.InfoBox
{{Game.InfoBox
|Cover = cover.jpg
|Cover = cover.jpg
|Developers =
|Publishers =
|Release Date =
|Release Date =
{{Game.InfoBox.ReleaseDate|Windows|December 18, 1998}}
{{Game.InfoBox.ReleaseDate|Windows|December 18, 1998}}
|Genres =
|Genres =
{{Game.InfoBox.Genre|Simulator}}
{{Game.InfoBox.Genre|Simulator}}{{Game.InfoBox.Genre|Racing}}
{{Game.InfoBox.Genre|Racing}}
|PCGamingWiki = DethKarz}}
| PCGamingWiki = DethKarz
}}


{{Game.ActionBox
{{Game.ActionBox
|Actions =  
|Actions =  
{{Game.ActionBox.Row|Name = Play|Path = Dethkarz.exe|Arguments = |WorkingDirectory = |Primary = True}}
{{Game.ActionBox.Row|Name = Play|Path = {InstallDir}\Dethkarz.exe|Arguments = |WorkingDirectory = |Primary = True}}
}}
}}


{{Game.Scripts.NameChange
{{Game.Scripts.NameChange
Line 19: Line 22:
|Description = 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.
|Description = 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.
|RequiresAdmin = False
|RequiresAdmin = False
|Contents = <syntaxhighlight lang="powershell" line>
|Contents =
$NewName = $args[0]
<syntaxhighlight lang="powershell" line>
$InstallDir = $PSScriptRoot
# Converts a string to a UTF16-encoded byte array. This looks like ASCII characters separated by 0x00 in most cases.
 
$bytes = ConvertTo-StringBytes -Input $NewPlayerAlias -Utf16 1 -MaxLength 12
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
Edit-PatchBinary -FilePath "$InstallDirectory\Data\dk.db" -Offset 0xf0b88 -Data $bytes
</syntaxhighlight>
</syntaxhighlight>
}}
}}

Latest revision as of 02:08, 6 January 2024

Release Date
Windows: December 18, 1998
Genres
SimulatorRacing
View at PCGamingWiki

Actions

Name Path Arguments Working Directory Primary
Play {InstallDir}\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.

# Converts a string to a UTF16-encoded byte array. This looks like ASCII characters separated by 0x00 in most cases.
$bytes = ConvertTo-StringBytes -Input $NewPlayerAlias -Utf16 1 -MaxLength 12

Edit-PatchBinary -FilePath "$InstallDirectory\Data\dk.db" -Offset 0xf0b88 -Data $bytes