Skip to content

Commit 451135d

Browse files
authored
merging
1 parent d2456a1 commit 451135d

13 files changed

Lines changed: 1079 additions & 0 deletions
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
# This script automates the pressing of the 'V' key every 10 seconds in a Windows environment.
3+
# Ensure the script is run with appropriate permissions
4+
# and that the target application is in focus.
5+
6+
# Note: THIS SCRIPT IS FOR EDUCATIONAL PURPOSES ONLY.
7+
# USING THIS WILL GET YOU BANNED FROM EVE ONLINE.
8+
9+
# Load the required assembly
10+
Add-Type -AssemblyName System.Windows.Forms
11+
12+
# Function to simulate key press
13+
function Send-Key {
14+
param (
15+
[Parameter(Mandatory = $true)]
16+
[System.Windows.Forms.Keys]$key
17+
)
18+
19+
Add-Type -TypeDefinition @"
20+
using System;
21+
using System.Runtime.InteropServices;
22+
public class Keyboard {
23+
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
24+
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
25+
}
26+
"@
27+
28+
# Define key down and key up event constants
29+
$KEYEVENTF_KEYDOWN = 0x0000
30+
$KEYEVENTF_KEYUP = 0x0002
31+
32+
# Press key down
33+
[Keyboard]::keybd_event([byte]$key, 0, $KEYEVENTF_KEYDOWN, 0)
34+
# Release key up
35+
[Keyboard]::keybd_event([byte]$key, 0, $KEYEVENTF_KEYUP, 0)
36+
}
37+
38+
# Example of pressing the 'V' key every 10 seconds
39+
while ($true) {
40+
Send-Key -key ([System.Windows.Forms.Keys]::V)
41+
Start-Sleep -Seconds 10
42+
}
43+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Section to store log file path and keywords to detect
2+
$chatlogPath = "$env:userprofile\Documents\EVE\logs\Chatlogs"
3+
# edit keyword list to add or remove keywords to detect in local chat log
4+
# keywords are not case sensitive and will match any part of the line.
5+
$keywordList = @("wtb") # Add your keywords here, separated by commas
6+
7+
# Function to get the latest local chat log file
8+
function Get-LatestLocalChatLog {
9+
return Get-ChildItem -Path $chatlogPath -Filter "Local_*.txt" |
10+
Sort-Object LastWriteTime -Descending |
11+
Select-Object -First 1
12+
}
13+
14+
# Function to send a message to Discord webhook (optional)
15+
16+
function DiscordPing {
17+
param (
18+
[string]$keyword,
19+
[string]$line
20+
)
21+
22+
}
23+
24+
######################################
25+
26+
# Discord webhook URL (optional)
27+
# Uncomment the following line to enable Discord notifications
28+
$webhookUrl = ".env" # Replace with your Discord webhook URL
29+
30+
$payload = @{
31+
content = "Keyword detected: $keyword`nMessage: $line"
32+
username = "Chat Monitor"
33+
} | ConvertTo-Json -Depth 3
34+
35+
try {
36+
Invoke-RestMethod -Uri $webhookUrl -Method Post -Body $payload -ContentType "application/json"
37+
} catch {
38+
Write-Warning "Failed to send Discord notification: $($_.Exception.Message)"
39+
}
40+
41+
##########################
42+
43+
# Error handling to check its available.
44+
45+
Write-Host "Local Chat Monitor Active" -ForegroundColor Green
46+
$currentLog = Get-LatestLocalChatLog
47+
if (-not $currentLog) {
48+
Write-Error "No Local chat logs found. Are you sure EVE has chat logging enabled?"
49+
exit
50+
}
51+
52+
# Once the log file is found, initialize variables
53+
54+
$lastFileSize = (Get-Item $currentLog.FullName).Length
55+
$alreadySeen = @{}
56+
Write-Host "Monitoring $($currentLog.FullName) for new messages..." -ForegroundColor Green
57+
58+
while ($true) {
59+
# Check for new log file
60+
$newLog = Get-LatestLocalChatLog
61+
if ($newLog.FullName -ne $currentLog.FullName) {
62+
Write-Host "`nNew log file detected: $($newLog.Name)" -ForegroundColor Yellow
63+
$currentLog = $newLog
64+
$lastFileSize = 0 # Reset file size for the new log
65+
$alreadySeen = @{} # Clear seen messages for the new log
66+
Write-Host "Now monitoring $($currentLog.FullName)" -ForegroundColor Green
67+
continue
68+
}
69+
70+
try {
71+
# Log file comparison and reading log file - discovered that cant use streamreader as it locks the file and prevents eve from writing to it.
72+
# This is a workaround to read the file without locking it - using Get-Content with -Tail
73+
# Get the current file size and read new lines if the file has grown
74+
$currentFileSize = (Get-Item $currentLog.FullName).Length
75+
if ($currentFileSize -gt $lastFileSize) {
76+
$newContent = Get-Content -Path $currentLog.FullName -Tail ($currentFileSize - $lastFileSize)
77+
$lastFileSize = $currentFileSize
78+
79+
foreach ($line in $newContent) {
80+
foreach ($keyword in $keywordList) {
81+
if ($line -match $keyword -and -not $alreadySeen.ContainsKey($line)) {
82+
Write-Host "[$((Get-Date).ToString('HH:mm:ss'))] Match: $keyword -> $line" -ForegroundColor Magenta
83+
$alreadySeen[$line] = $true
84+
}
85+
}
86+
}
87+
}
88+
} catch {
89+
Write-Warning "Error reading log file: $($_.Exception.Message)"
90+
Start-Sleep -Seconds 1
91+
}
92+
93+
Start-Sleep -Milliseconds 100
94+
}

Development/intel-update-new.ps1

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Idea is to shorten and ease the process of generating a Tripwire recon note from D-Scan results in EVE Online.
2+
# Usage: Copy D-Scan results to clipboard, run this script, and it will generate a formatted recon note.
3+
# Paste to tripwire - job done.
4+
# Note - Beta Script - to be expanded/set to production 2025 - @ScottishDex/Dexomus Viliana - @MacGuinessWDS/Ryan Ruby
5+
# Do not use in production without testing and validation (And CCP will find out and slice off things)
6+
7+
Add-Type -AssemblyName PresentationCore # Core module - (discovered through jabbing at AI)
8+
9+
#Target ship list from Json file
10+
11+
$shipJson = Get-Content -Path "eve_ships.json" -Raw | ConvertFrom-Json
12+
$shipList = $shipJson.ships
13+
14+
#Get clipboard content
15+
$clipboard = [Windows.Clipboard]::GetText()
16+
if (-not $clipboard) {
17+
Write-Error "❌ Clipboard is empty."
18+
exit 1
19+
}
20+
# Integrated error handling for empty clipboard
21+
22+
$lines = $clipboard -split "`r?`n" # Split clipboard content into lines to read each D-Scan result
23+
24+
# Filtering lines that match any of the target patterns - used for testing against D-Scan results.
25+
$matchedLines = @()
26+
foreach ($line in $lines) {
27+
foreach ($pattern in $targetPatterns) {
28+
if ($line -like "*$shipList*") {
29+
$matchedLines += $line
30+
break
31+
}
32+
}
33+
}
34+
35+
# System name extraction - regex only for wormhole systems
36+
$system = ($lines -join "`n") -match '(^J\d{6}$)\s+'; if ($matches) { $matches[1] } else { "Non-Wormhole System" }
37+
38+
# Timestamp
39+
$timestamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm") + " UTC"
40+
41+
# To do list - customize to suit wormhole navigation and trim nonsense (again, generated by chat gpt due to lazyness)
42+
$note = if ($matchedLines.Count -gt 0) {
43+
@"
44+
**🛰️ Tripwire Recon – $system**
45+
📍 Status: Contacts detected.
46+
47+
📡 D-Scan Intel:
48+
$($matchedLines -join "`n")
49+
50+
🕓 Time: $timestamp
51+
🧭 Scout: [YourNameHere]
52+
"@
53+
} else {
54+
@"
55+
**🛰️ Tripwire Recon – $system**
56+
📍 Status: No targets of interest detected.
57+
58+
📡 D-Scan checked for:
59+
$($targetPatterns -join ", ")
60+
61+
🕓 Time: $timestamp
62+
🧭 Scout: [YourNameHere]
63+
"@
64+
}
65+
66+
# Fires the note to clipboard and saves it to a file with a timestamp - paste to Tripwire or any other tool you use for recon notes.
67+
# Additional options are web hook? Double I can get access?
68+
69+
$note | Set-Clipboard
70+
$note | Out-File -FilePath "TripwireRecon_$($system)_$(Get-Date -Format 'yyyyMMdd_HHmm').txt"
71+
Write-Host "`n✅ Recon note generated and copied to clipboard."

Development/market-order-test.ps1

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
2+
3+
$tritaniumId = 34
4+
$regionId = 10000002
5+
$jitaStationId = 60003760
6+
7+
# For the above look at how I can get a json file with the data of all stations and regions and cross reference it with the IDs above.
8+
# User input for region and station IDs can be replaced with a lookup from a JSON file containing all regions and stations.
9+
10+
11+
# Function to fetch market orders
12+
function Get-MarketOrders {
13+
param (
14+
[string]$orderType # 'buy' or 'sell'
15+
)
16+
17+
$orders = @()
18+
$page = 1
19+
20+
do {
21+
$url = "https://esi.evetech.net/latest/markets/$regionId/orders/?order_type=$orderType&type_id=$tritaniumId&page=$page"
22+
23+
# Print URL for debugging
24+
Write-Host "Fetching ${orderType} page ${page}: ${url}"
25+
26+
try {
27+
$response = Invoke-RestMethod -Uri $url -Method Get
28+
} catch {
29+
Write-Warning "Failed to fetch page ${page}: $(${_})"
30+
break
31+
}
32+
33+
if (-not $response) { break }
34+
35+
# Filter Jita 4-4
36+
$filtered = $response | Where-Object { $_.location_id -eq $jitaStationId }
37+
$orders += $filtered
38+
39+
# If less than 1000 orders, it was the last page
40+
if ($response.Count -lt 1000) { break }
41+
42+
$page++
43+
} while ($true)
44+
45+
return $orders
46+
}
47+
48+
# Fetch buy and sell orders
49+
$buyOrders = Get-MarketOrders -orderType "buy"
50+
$sellOrders = Get-MarketOrders -orderType "sell"
51+
52+
# Sort and display
53+
$topBuys = $buyOrders | Sort-Object price -Descending | Select-Object -First 5
54+
$topSells = $sellOrders | Sort-Object price | Select-Object -First 5
55+
56+
Write-Host "`nTop 5 Jita Buy Orders for Tritanium:`n"
57+
$topBuys | Format-Table price, volume_remain, duration, issued
58+
59+
Write-Host "`nTop 5 Jita Sell Orders for Tritanium:`n"
60+
$topSells | Format-Table price, volume_remain, duration, issued
61+
62+
# Streamline above code for potential future use
63+
# Baseline module for API interaction?

Development/sdk-extraction.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
$uri = "https://eve-static-data-export.s3-eu-west-1.amazonaws.com/tranquility/sde.zip"
2+
$output = "$env:userprofile/sde.zip"
3+
Invoke-WebRequest -Uri $uri -OutFile $output
4+
Expand-Archive -Path $output -DestinationPath ".\sde"

Development/server-check.ps1

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
$uri = "https://esi.evetech.net/latest/status/"
2+
try {
3+
$resp = Invoke-RestMethod -Uri $uri -Method Get -ErrorAction Stop
4+
Write-Host "EVE Online Server Status: Online"
5+
write-host "Players - $($resp.players)"
6+
write-host "Start Time - $($resp.start_time)"
7+
}
8+
catch {
9+
Write-Host "Failed to retrieve server status: $($_.Exception.Message)"
10+
}

Development/test-guid.ps1

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
Add-Type -AssemblyName PresentationFramework
2+
3+
[xml]$xaml = @"
4+
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
5+
Title="Tripwire Recon Note" Height="200" Width="400">
6+
<StackPanel Margin="10">
7+
<TextBlock Text="Scout Name:" Margin="0,0,0,5"/>
8+
<TextBox Name="ScoutName" Height="25" Margin="0,0,0,10"/>
9+
<Button Name="SubmitBtn" Content="Generate Note" Width="120" HorizontalAlignment="Left"/>
10+
</StackPanel>
11+
</Window>
12+
"@
13+
14+
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
15+
$window = [Windows.Markup.XamlReader]::Load($reader)
16+
17+
$scoutBox = $window.FindName("ScoutName")
18+
$submitBtn = $window.FindName("SubmitBtn")
19+
20+
$submitBtn.Add_Click({
21+
$scout = $scoutBox.Text
22+
[System.Windows.MessageBox]::Show("Recon note will be generated for: $scout")
23+
$window.Close()
24+
})
25+
26+
$window.ShowDialog() | Out-Null

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 ScottishDex
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)