Compare commits

...

32 commits

Author SHA1 Message Date
BubbaGumpShrump
fd0a47b358 Merge branch 'default' of https://github.com/BubbaGumpShrump/AutoTrackR2 into 2.07 2025-04-06 21:37:38 -04:00
BubbaGumpShrump
b7e888e351 Themes 2025-04-06 21:37:17 -04:00
BubbaGumpShrump
6d7f789b89
Update README.md 2025-04-06 20:13:50 -04:00
BubbaGumpShrump
12acdc27c0
Update README.md 2025-04-06 20:13:25 -04:00
BubbaGumpShrump
2a4a4ebe42 Merge branch 'default' of https://github.com/BubbaGumpShrump/AutoTrackR2 into 2.07 2025-04-05 10:38:32 -04:00
BubbaGumpShrump
82b9e365c1
Merge pull request from Heavybob/default
Updated Readme and added Git Actions
2025-04-05 10:38:07 -04:00
Heavy Bob
408c071a85 Updated Readme. 2025-04-06 00:13:38 +11:00
Heavy Bob
bab96123c5 Added autohotkey scripts to artifacts 2025-04-06 00:11:12 +11:00
Heavy Bob
a09a99c064 Added autohotkey scripts to artifact 2025-04-06 00:06:04 +11:00
Heavy Bob
bd8bbfb365 Added version to git actions. 2025-04-05 23:21:09 +11:00
Heavy Bob
49dfbb2291 debugging 2025-04-05 23:17:29 +11:00
Heavy Bob
dfc2dd5477 Use correct net framework. 2025-04-05 23:15:25 +11:00
Heavy Bob
e2df69526d Git actions v4 2025-04-05 23:12:03 +11:00
Heavy Bob
1236f8b4d6 Merge branch 'default' of https://github.com/Heavybob/AutoTrackR2 into default 2025-04-05 23:09:16 +11:00
Heavy Bob
b680debb49 Main branch is default not main 2025-04-05 23:09:14 +11:00
Heavy Bob
e5f968633d
Merge branch 'BubbaGumpShrump:default' into default 2025-04-05 23:03:35 +11:00
Heavy Bob
4a001801aa Added git actions 2025-04-05 23:02:42 +11:00
BubbaGumpShrump
388b1b774e Merge branch 'default' of https://github.com/BubbaGumpShrump/AutoTrackR2 into 2.07 2025-03-28 08:52:46 -04:00
BubbaGumpShrump
365a3ba08d
Merge pull request from DorkNormalize/patch_4_1
Update loadout regex for 4.1 event changes
2025-03-28 08:51:54 -04:00
DorkNormalize
1cc397ee34
Merge branch 'default' into patch_4_1 2025-03-28 00:58:58 -07:00
Dork Normalize
69ef954d58 Minor refactor on the regex to make the event more obvious 2025-03-28 00:56:53 -07:00
Dork Normalize
fe565b1abd Update loadouat regex for 4.1 event changes 2025-03-28 00:54:23 -07:00
BubbaGumpShrump
9400a087e2 Location Fix 2025-02-19 16:27:47 -05:00
BubbaGumpShrump
77a3c936fd PU/AC detection fix 2025-02-04 20:19:55 -05:00
BubbaGumpShrump
d59fecfb2b versioning 2025-02-04 19:14:25 -05:00
BubbaGumpShrump
b726fb4b7b Fixed PU detection 2025-02-04 19:13:30 -05:00
scubamount
e002e844a1
hotfix for AC/PU not working 2025-02-04 14:59:16 -08:00
BubbaGumpShrump
18924e67d8
Merge pull request from Heavybob/default
Hotfix for /register-kill/register-kill
2025-02-03 22:17:46 -05:00
Heavy Bob
3022ad03ed Hotfix for /register-kill/register-kill
If someone typed https://apiurl.com/ it would send the request to https://apiurl.com/register-kill/register-kill
I've had to fix too many peoples clients by removing a backslash. Stap it!
2025-02-03 19:31:49 +11:00
BubbaGumpShrump
e43286bde1
Merge pull request from scubamount/master
mainscript.ps1 hotfix
2025-01-17 17:17:15 -05:00
scubamount
e53fdc3c5d
mainscript.ps1 hotfix
FIX: "kills not showing up in the bot, but tracking in the tracker"
2025-01-17 14:13:38 -08:00
BubbaGumpShrump
693904e53c Fix versioning and update button logic 2025-01-16 15:08:29 -05:00
15 changed files with 300 additions and 128 deletions

71
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,71 @@
name: Build and Package
on:
push:
branches: [default]
pull_request:
branches: [default]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Extract version
id: version
run: |
$version = (Select-String -Path "AutoTrackR2/UpdatePage.xaml.cs" -Pattern 'currentVersion = "(.+?)"' | Select-Object -First 1).Matches.Groups[1].Value
echo "version=$version" >> $env:GITHUB_OUTPUT
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: "9.0.x"
- name: Restore dependencies
run: dotnet restore AutoTrackR2.sln
- name: Build
run: dotnet build AutoTrackR2.sln --configuration Release --no-restore
- name: List build output directories
run: |
Write-Host "Listing build output directories:"
Get-ChildItem -Recurse -Directory -Filter "Release" | ForEach-Object { Write-Host $_.FullName }
- name: Create artifacts directory
run: mkdir artifacts
- name: Copy build output
run: |
$releaseDir = Get-ChildItem -Recurse -Directory -Filter "Release" | Select-Object -First 1
if ($releaseDir) {
Write-Host "Copying from: $($releaseDir.FullName)"
Copy-Item "$($releaseDir.FullName)\*" "artifacts\" -Recurse
} else {
Write-Host "No Release directory found"
exit 1
}
- name: Upload application artifact
uses: actions/upload-artifact@v4
with:
name: AutoTrackR2-${{ steps.version.outputs.version }}
path: artifacts/
retention-days: 5
- name: Upload visorwipe script
uses: actions/upload-artifact@v4
with:
name: visorwipe.ahk
path: AutoTrackR2/scripts/visorwipe.ahk
retention-days: 5
- name: Upload videorecord script
uses: actions/upload-artifact@v4
with:
name: videorecord.ahk
path: AutoTrackR2/scripts/videorecord.ahk
retention-days: 5

26
AutoTrackR2/.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,26 @@
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net9.0-windows/AutoTrackR2.dll",
"args": [],
"cwd": "${workspaceFolder}",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}

41
AutoTrackR2/.vscode/tasks.json vendored Normal file
View file

@ -0,0 +1,41 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/AutoTrackR2.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/AutoTrackR2.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/AutoTrackR2.csproj"
],
"problemMatcher": "$msCompile"
}
]
}

Binary file not shown.

Before

(image error) Size: 68 KiB

After

(image error) Size: 297 KiB

Before After
Before After

BIN
AutoTrackR2/Assets/IP.png Normal file

Binary file not shown.

After

(image error) Size: 618 KiB

Binary file not shown.

After

(image error) Size: 114 KiB

Binary file not shown.

After

(image error) Size: 5.3 MiB

View file

@ -17,6 +17,7 @@
<None Remove="Assets\BlightVeil.png" />
<None Remove="Assets\BOBGREL.png" />
<None Remove="Assets\chibifox.png" />
<None Remove="Assets\cinderborn.png" />
<None Remove="Assets\D3VL.png" />
<None Remove="Assets\EMP.png" />
<None Remove="Assets\Gankhub.png" />
@ -26,6 +27,7 @@
<None Remove="Assets\NMOS.png" />
<None Remove="Assets\NW.png" />
<None Remove="Assets\RACKETEERS.png" />
<None Remove="Assets\shadowguard.png" />
<None Remove="Assets\SHADOWMOSES.png" />
<None Remove="Assets\VOX.png" />
<None Remove="Assets\WRITH.png" />
@ -42,9 +44,18 @@
<Resource Include="Assets\BlightVeil.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\cinderborn.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\Gankhub.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\HEX.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\IP.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\NMOS.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
@ -72,9 +83,6 @@
<Resource Include="Assets\AutoTrackR.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\HEX.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\HIT.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
@ -87,6 +95,9 @@
<Resource Include="Assets\RACKETEERS.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\shadowguard.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>
<Resource Include="Assets\SHADOWMOSES.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>

View file

@ -77,7 +77,7 @@
<TextBlock Text="Theme:" Foreground="{DynamicResource TextBrush}" FontSize="16" Margin="0,7,0,5"/>
<Slider x:Name="ThemeSlider"
Minimum="0"
Maximum="20"
Maximum="21"
Value="0"
TickFrequency="1"
IsSnapToTickEnabled="True"

View file

@ -221,15 +221,15 @@ namespace AutoTrackR2
);
ChangeLogo("/Assets/WRITH.png", (Color)ColorConverter.ConvertFromString("#ff0000"));
break;
case 9: // VOX Theme
case 9: // Cinderborn Theme
UpdateThemeColors(
(Color)ColorConverter.ConvertFromString("#C0C0C0"), // Accent/Border
(Color)ColorConverter.ConvertFromString("#E4080A"), // Accent/Border
(Color)ColorConverter.ConvertFromString("#1C1C1C"), // Button
(Color)ColorConverter.ConvertFromString("#424242"), // Background
(Color)ColorConverter.ConvertFromString("#FFD700"), // Text
(Color)ColorConverter.ConvertFromString("#817E79") // AltText
(Color)ColorConverter.ConvertFromString("#000000"), // Background
(Color)ColorConverter.ConvertFromString("#FE934C"), // Text
(Color)ColorConverter.ConvertFromString("#FE934C") // AltText
);
ChangeLogo("/Assets/VOX.png", (Color)ColorConverter.ConvertFromString("#FFD700"));
ChangeLogo("/Assets/cinderborn.png", (Color)ColorConverter.ConvertFromString("#DE5900"));
break;
case 10: // EMP Theme
UpdateThemeColors(
@ -281,15 +281,15 @@ namespace AutoTrackR2
);
ChangeLogo("/Assets/ShadowMoses.png", (Color)ColorConverter.ConvertFromString("#FF69B4"));
break;
case 15: // Mongrel Squad
case 15: // Shadow Guardian
UpdateThemeColors(
(Color)ColorConverter.ConvertFromString("#00416A"), // Accent/Border - NyQuil Dark Blue
(Color)ColorConverter.ConvertFromString("#1B3F5C"), // Button - Midnight Blue
(Color)ColorConverter.ConvertFromString("#002E4D"), // Background - Deep NyQuil Blue
(Color)ColorConverter.ConvertFromString("#B0C4DE"), // Text - Light Steel Blue
(Color)ColorConverter.ConvertFromString("#4F94CD") // AltText - Steel Blue
(Color)ColorConverter.ConvertFromString("#AC9248"), // Accent/Border - NyQuil Dark Blue
(Color)ColorConverter.ConvertFromString("#000920"), // Button - Midnight Blue
(Color)ColorConverter.ConvertFromString("#000000"), // Background - Deep NyQuil Blue
(Color)ColorConverter.ConvertFromString("#B9B9B9"), // Text - Light Steel Blue
(Color)ColorConverter.ConvertFromString("#D20103") // AltText - Steel Blue
);
ChangeLogo("/Assets/Bobgrel.png", (Color)ColorConverter.ConvertFromString("#00BFFF"));
ChangeLogo("/Assets/shadowguard.png", (Color)ColorConverter.ConvertFromString("#E4080A"));
break;
case 16: // Feezy
UpdateThemeColors(
@ -341,6 +341,16 @@ namespace AutoTrackR2
);
ChangeLogo("/Assets/Gankhub.png");
break;
case 21: // IronPoint
UpdateThemeColors(
(Color)ColorConverter.ConvertFromString("#C83300"), // Accent/Border
(Color)ColorConverter.ConvertFromString("#2D2D2D"), // Button
(Color)ColorConverter.ConvertFromString("#161515"), // Background
(Color)ColorConverter.ConvertFromString("#ffffff"), // Text
(Color)ColorConverter.ConvertFromString("#aaaaaa") // AltText
);
ChangeLogo("/Assets/IP.png", (Color)ColorConverter.ConvertFromString("#3F1210"));
break;
}
}

View file

@ -1,4 +1,4 @@
$TrackRver = "2.06"
$TrackRver = "2.09"
# Path to the config file
$appName = "AutoTrackR2"
@ -32,41 +32,37 @@ $videoRecord = $config.VideoRecord
$offlineMode = $config.OfflineMode
if ($offlineMode -eq 1){
$offlineMode = $true
$offlineMode = $true
} else {
$offlineMode = $false
$offlineMode = $false
}
Write-Output "PlayerName=OfflineMode: $offlineMode"
if ($videoRecord -eq 1){
$videoRecord = $true
$videoRecord = $true
} else {
$videoRecord = $false
$videoRecord = $false
}
Write-Output "PlayerName=VideoRecord: $videoRecord"
if ($visorWipe -eq 1){
$visorWipe = $true
$visorWipe = $true
} else {
$visorWipe = $false
$visorWipe = $false
}
Write-Output "PlayerName=VisorWipe: $visorWipe"
If (Test-Path $logFilePath) {
Write-Output "PlayerName=Logfile found"
Write-Output "PlayerName=Logfile found"
} else {
Write-Output "Logfile not found."
Write-Output "Logfile not found."
}
If ($null -ne $apiUrl){
if ($apiUrl -notlike "*/register-kill") {
if ($apiUrl -like "*/"){
$apiUrl = $apiUrl + "register-kill"
}
if ($apiUrl -notlike "*/"){
$apiUrl = $apiUrl + "/register-kill"
}
}
Write-output "PlayerName=$apiURL"
if ($apiUrl -notlike "*/register-kill") {
$apiUrl = $apiUrl.TrimEnd("/") + "/register-kill"
}
Write-output "PlayerName=$apiURL"
}
# Ship Manufacturers
@ -93,9 +89,9 @@ $prefixes = @(
# Define the regex pattern to extract information
$killPattern = "<Actor Death> CActor::Kill: '(?<EnemyPilot>[^']+)' \[\d+\] in zone '(?<EnemyShip>[^']+)' killed by '(?<Player>[^']+)' \[[^']+\] using '(?<Weapon>[^']+)' \[Class (?<Class>[^\]]+)\] with damage type '(?<DamageType>[^']+)'"
$puPattern = '<\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z> \[Notice\] <ContextEstablisherTaskFinished> establisher="CReplicationModel" message="CET completed" taskname="StopLoadingScreen" state=[^ ]+ status="Finished" runningTime=\d+\.\d+ numRuns=\d+ map="megamap" gamerules="SC_Default" sessionId="[a-f0-9\-]+" \[Team_Network\]\[Network\]\[Replication\]\[Loading\]\[Persistence\]'
$acPattern = "ArenaCommanderFeature"
$loadoutPattern = '\[InstancedInterior\] OnEntityLeaveZone - InstancedInterior \[(?<InstancedInterior>[^\]]+)\] \[\d+\] -> Entity \[(?<Entity>[^\]]+)\] \[\d+\] -- m_openDoors\[\d+\], m_managerGEID\[(?<ManagerGEID>\d+)\], m_ownerGEID\[(?<OwnerGEID>[^\[]+)\]'
$puPattern = '<\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z> \[Notice\] <ContextEstablisherTaskFinished> establisher="CReplicationModel" message="CET completed" taskname="StopLoadingScreen" state=[^\s()]+\(\d+\) status="Finished" runningTime=\d+\.\d+ numRuns=\d+ map="megamap" gamerules="SC_Default" sessionId="[a-f0-9\-]+" \[Team_Network\]\[Network\]\[Replication\]\[Loading\]\[Persistence\]'
$loadoutPattern = '<Jump Drive State Changed>.*.adam: (?<ShipName>.*.) in'
$acPattern = "Requesting Mode Change" # "ArenaCommanderFeature"
$shipManPattern = "^(" + ($prefixes -join "|") + ")"
# $loginPattern = "\[Notice\] <AccountLoginCharacterStatus_Character> Character: createdAt [A-Za-z0-9]+ - updatedAt [A-Za-z0-9]+ - geid [A-Za-z0-9]+ - accountId [A-Za-z0-9]+ - name (?<Player>[A-Za-z0-9_-]+) - state STATE_CURRENT" # KEEP THIS INCASE LEGACY LOGIN IS REMOVED
$loginPattern = "\[Notice\] <Legacy login response> \[CIG-net\] User Login Success - Handle\[(?<Player>[A-Za-z0-9_-]+)\]"
@ -122,7 +118,7 @@ if (Test-Path "$scriptFolder\Kill-Log.csv") {
$currentDate = Get-Date
$dateFormat = "dd MMM yyyy HH:mm UTC"
foreach ($kill in $historicKills) {
$killDate = [datetime]::ParseExact($kill.KillTime, $dateFormat, [System.Globalization.CultureInfo]::InvariantCulture)
$killDate = [datetime]::ParseExact($kill.KillTime.Trim(), $dateFormat, [System.Globalization.CultureInfo]::InvariantCulture)
If ($killdate.year -eq $currentDate.Year -and $killdate.month -eq $currentDate.Month) {
$global:killTally++
}
@ -152,19 +148,13 @@ Do {
}
# Get Loadout
if ($line -match $loadoutPattern) {
$entity = $matches['Entity']
$ownerGEID = $matches['OwnerGEID']
If ($ownerGEID -eq $global:userName -and $entity -match $shipManPattern) {
$tryloadOut = $entity
If ($tryloadOut -match $cleanupPattern){
If ($matches['ShipName'] -match $cleanupPattern){
if ($null -ne $matches[1]){
$global:loadOut = $matches[1]
}
}
}
}
Write-Output "PlayerShip=$global:loadOut"
}
Write-Output "PlayerShip=$global:loadOut"
If ($line -match $versionPattern){
$global:GameVersion = $matches['gameversion']
@ -254,15 +244,18 @@ function Read-LogEntry {
if ($damageType -eq "Bullet" -or $weapon -like "apar_special_ballistic*") {
$ship = "Player"
$enemyShip = "Player"
$global:got_location = "NONE"
}
If ($ship -match $cleanupPattern){
$ship = $matches[1]
}
if ($ship -notmatch $shipManPattern){
$ship = "Player"
$global:got_location = "NONE"
}
If ($enemyShip -notmatch $shipManPattern -and $enemyShip -notlike "Passenger" ) {
$enemyShip = "Player"
$global:got_location = "NONE"
}
# Repeatedly remove all suffixes
@ -370,6 +363,7 @@ function Read-LogEntry {
# Create an object to hold the data
$killData = [PSCustomObject]@{
Kill = "Kill"
KillTime = $killTime
EnemyPilot = $enemyPilot
EnemyShip = $enemyShip
@ -469,18 +463,15 @@ function Read-LogEntry {
}
#Set loadout
if ($line -match $loadoutPattern) {
$entity = $matches['Entity']
$ownerGEID = $matches['OwnerGEID']
if ($line -match $loadoutPattern) {
If ($matches['ShipName'] -match $cleanupPattern){
if ($null -ne $matches[1]){
$global:loadOut = $matches[1]
}
}
Write-Output "PlayerShip=$global:loadOut"
}
If ($ownerGEID -eq $global:userName -and $entity -match $shipManPattern) {
$tryloadOut = $entity
If ($tryloadOut -match $cleanupPattern){
$global:loadOut = $matches[1]
}
Write-Output "PlayerShip=$global:loadOut"
}
}
}
@ -517,4 +508,4 @@ finally {
$reader.Close()
$fileStream.Close()
}
#>
#>

View file

@ -9,7 +9,7 @@ namespace AutoTrackR2
{
public partial class UpdatePage : UserControl
{
private string currentVersion = "v2.06-release";
private string currentVersion = "v2.09";
private string latestVersion;
public UpdatePage()
@ -86,8 +86,8 @@ namespace AutoTrackR2
private bool IsNewVersionAvailable(string currentVersion, string latestVersion)
{
// Compare version strings (you can implement more complex version parsing logic if needed)
return string.Compare(currentVersion, latestVersion, StringComparison.Ordinal) < 0;
// Return true if the versions are different
return !currentVersion.Equals(latestVersion, StringComparison.Ordinal);
}
private async void InstallButton_Click(object sender, RoutedEventArgs e)

View file

@ -0,0 +1,2 @@
; AutoHotkey v2 script to press Win + Alt + G
Send("{LWin Down}{Alt Down}g{Alt Up}{LWin Up}") ; Simulate pressing Win + Alt + G

View file

@ -0,0 +1,2 @@
; AutoHotkey v2 script to press Alt + X
Send("{Alt Down}x{Alt Up}") ; Simulate pressing Alt + X

148
README.md
View file

@ -1,90 +1,108 @@
AutoTrackR2 - Star Citizen Kill-Tracking Tool
# AutoTrackR2 - Star Citizen Kill-Tracking Tool
AutoTrackR2 is a powerful and customizable kill-tracking tool for Star Citizen. Designed with gankers and combat enthusiasts in mind, it integrates seamlessly with the game to log, display, and manage your kills, providing detailed information and optional API integration for advanced tracking.
🚀 Features
Log File Integration: Point to Star Citizen's live game.log to track kills in real-time.
## Testimonials
API Integration (Optional):
Configure a desired API to send kill data for external tracking or display.
Secure your data with an optional API key.
https://www.youtube.com/watch?v=bE6_MYY7ARU
Video Clipping (Optional):
Set a path to your clipping software to save kills automatically.
## Features
Visor Wipe Integration:
Automates visor wiping using an AutoHotkey script (visorwipe.ahk).
Requires AutoHotkey v2.
Script must be placed in C:\Users\<Username>\AppData\Local\AutoTrackR2\.
- **Log File Integration**: Point to Star Citizen's live game.log to track kills in real-time.
- **API Integration (Optional)**:
- Configure a desired API to send kill data for external tracking or display.
- Secure your data with an optional API key.
- **Video Clipping (Optional)**:
- Set a path to your clipping software to save kills automatically.
- **Visor Wipe Integration (Optional)**:
- Automates visor wiping using an AutoHotkey script (`visorwipe.ahk`).
- Requires AutoHotkey v2.
- Script must be placed in `%LOCALAPPDATA%\AutoTrackR2\`.
- **Video Record Integration (Optional)**:
- Customize the `videorecord.ahk` script for your specific video recording keybinds.
- Requires AutoHotkey v2.
- Script must be placed in `%LOCALAPPDATA%\AutoTrackR2\`
- **Offline Mode**:
- Disables API submissions. The tool will still scrape and display information from the RobertsSpaceIndustries website for the profile of whomever you have killed.
- **Custom Themes**:
- Easily add or modify themes by adjusting the `ThemeSlider_ValueChanged` function in `ConfigPage.xaml.cs`.
- Update the ThemeSlider maximum value in `ConfigPage.xaml` to reflect the number of themes added.
Video Record Integration:
Customize the videorecord.ahk script for your specific video recording keybinds.
Requires AutoHotkey v2.
Script must be placed in C:\Users\<Username>\AppData\Local\AutoTrackR2\
## Setup
Offline Mode:
Disables API submissions. The tool will still scrape and display information from the RobertsSpaceIndustries website for the profile of whomever you have killed.
1. **Prerequisites**:
Custom Themes:
Easily add or modify themes by adjusting the ThemeSlider_ValueChanged function in ConfigPage.xaml.cs.
Update the ThemeSlider maximum value in ConfigPage.xaml to reflect the number of themes added.
- Windows 10 or later
- .NET Framework 4.7.2 or higher
- Star Citizen installed
- AutoHotkey v2 (optional - only needed for visor wipe and video recording features):
- Download from the official website at https://www.autohotkey.com/
- Install AutoHotkey v2 (not v1.x as they are not compatible)
- Verify installation by right-clicking on your desktop and confirming "New > AutoHotkey v2 Script" appears in the context menu
📁 Configuration
Log File:
Specify the path to Star Citizen's game.log.
2. **Installation Steps**:
API Settings (Optional):
- Download the latest release package from the releases page
- Run the installer and follow the on-screen instructions
- Launch AutoTrackR2 after installation completes
API URL: Provide the endpoint for posting kill data.
3. **Initial Configuration**:
- Open the Configuration panel within the application
- Set the path to your Star Citizen game.log file (typically found in `[Star Citizen Install Path]\LIVE\game.log`)
- Configure API settings if desired (leave blank for offline mode)
- Set up video clipping paths if using this feature
- If using AutoHotkey features, verify the scripts are properly placed in the `%LOCALAPPDATA%\AutoTrackR2\` location
API Key: Secure access to the API with your unique key.
## Configuration
Video Clipping Path (Optional):
Set the directory where your clipping software saves kills.
- **Log File**:
- Specify the path to Star Citizen's `game.log`.
- **API Settings (Optional)**:
- API URL: Provide the endpoint for posting kill data.
- API Key: Secure access to the API with your unique key.
- **Video Clipping Path (Optional)**:
- Set the directory where your clipping software saves kills.
- **Visor Wipe Setup (Optional)**:
- Place `visorwipe.ahk` in `%LOCALAPPDATA%\AutoTrackR2\`.
- AutoHotkey v2 is required.
- **Video Recording Setup (Optional)**:
- Modify `videorecord.ahk` to use the keybinds of your video recording software.
- Place `videorecord.ahk` in `%LOCALAPPDATA%\AutoTrackR2\`.
- AutoHotkey v2 is required.
- **Offline Mode**:
- Enable to disable API submission. Restart the tracker to apply changes.
Visor Wipe Setup:
Place visorwipe.ahk in C:\Users\<Username>\AppData\Local\AutoTrackR2\.
AutoHotkey v2 is required.
## Privacy & Data Usage
Video Recording Setup:
Modify videorecord.ahk to use the keybinds of your video recording software.
Place videorecord.ahk in C:\Users\<Username>\AppData\Local\AutoTrackR2\.
AutoHotkey v2 is required.
- **No Personal Data Collection**:
- AutoTrackR2 does not collect or store personal or system information, other than common file paths to manage necessary files.
- **Access and Permissions**:
- The tool reads its own `config.ini` and the `game.log` from Star Citizen. It will also create a CSV file of all your logged kills, stored locally on your machine in the `%LOCALAPPDATA%\AutoTrackR2\` folder.
- **Optional Data Submission**:
- Data is only sent to an API if explicitly configured by the user. Offline Mode disables all outgoing submissions.
- **Killfeed Scraping**:
- The program scrapes the profile page of killed players to display their information locally. This feature remains active even in Offline Mode.
Offline Mode:
Enable to disable API submission. Restart the tracker to apply changes.
## Customization
🛡️ Privacy & Data Usage
No Personal Data Collection:
AutoTrackR2 does not collect or store personal or system information, other than common file paths to manage necessary files.
Access and Permissions:
The tool reads its own config.ini and the game.log from Star Citizen. It will also create a CSV file of all your logged kills, stored locally on your machine in the AppData folder.
Optional Data Submission:
Data is only sent to an API if explicitly configured by the user. Offline Mode disables all outgoing submissions.
Killfeed Scraping:
The program scrapes the profile page of killed players to display their information locally. This feature remains active even in Offline Mode.
⚙️ Installation
Download the latest release from the releases page.
Follow the setup instructions included in the installer.
Configure the tool using the settings outlined above.
💡 Customization
To customize themes or behaviors:
Add Themes:
Update the ThemeSlider_ValueChanged function in ConfigPage.xaml.cs with your desired colors and logos.
Adjust the ThemeSlider maximum value in ConfigPage.xaml to match the number of themes.
- **Add Themes**:
- Update the `ThemeSlider_ValueChanged` function in `ConfigPage.xaml.cs` with your desired colors and logos.
- Adjust the ThemeSlider maximum value in `ConfigPage.xaml` to match the number of themes.
- **Modify AHK Scripts (Optional)**:
- Edit `visorwipe.ahk` and `videorecord.ahk` to fit your specific keybinds and preferences.
Modify AHK Scripts:
Edit visorwipe.ahk and videorecord.ahk to fit your specific keybinds and preferences.
## Support
📞 Support
For questions, issues, or feature requests, please visit discord.gg/griefernet.
For questions, issues, or feature requests:
- Join our Discord server: [discord.gg/griefernet](https://discord.gg/griefernet)
- Report bugs through the Discord's #autotrackr-bugs channel
- For urgent issues, you can escalate in Discord by tagging moderators
## License
🔒 License
AutoTrackR2 is released under the GNU v3 License.
GRIEFERNET VICTORY!