In Guild Wars 2 hat man die Möglichkeit auf API-Calls. Die Antwort eines solchen Calls kann man für seine Zwecke nutzen. So hat man z.B. die Möglichkeit auf einen Event-Listener. Im Grunde ist das nichts anderes als „Ich schicke Anfragen an den API-Server, schau mir das Resultat an und wenn da was dabei ist, was ich suche, informiere ich mich.“
Das macht folgendes Powershell-Script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | $world_id = "2206" <# 2206 = Millersund https://api.guildwars2.com/v1/world_names.json?lang=de Liste aller Server #> $events = @{ Balthasar="2555EFCB-2927-4589-AB61-1957D9CC70C8"; Behemoth="31CEBA08-E44D-472F-81B0-7143D73797F5"; Feuerelement="33F76E9E-0BB6-46D0-A3A9-BE4CDFC4A3A4"; Golem="9AA133DC-F630-4A0E-BB5D-EE34A2B306C2"; Jormag="0464CB9E-1848-4AAA-BA31-4779A959DD71"; Megazerstörer="C876757A-EF3E-4FBE-A484-07FF790D9B05"; Tequatl="568A30CF-8512-462F-9D67-647D69BEFAED"; Zerschmetterer="03BF176A-D59F-49CA-A311-39FC6F533F2F"; Modnir="E6872A86-E434-4FC1-B803-89921FF0F6D6"; Admiral_Taidha="242BD241-E360-48F1-A8D9-57180E146789"; Schauflerkommissar="95CA969B-0CC6-4604-B166-DBCCE125864F"; Dschungelwurm="C5972F64-B894-45B4-BC31-2DEEA6B7C033"; } $status = "Active" do { foreach($key in $events.GetEnumerator()){ $date = get-date -Format HH:mm:ss $event_id = $key.Value $event_name = $key.Name $url = "https://api.guildwars2.com/v1/events.json?event_id=$event_id&world_id=$world_id" $result = Invoke-RestMethod $url $stat = $result.events.state "$date : Listening on Event $event_name. Event in State $stat" if ($stat -eq $status) { Write-Host "$event_name hat begonnen. Schicke Nachricht!" -foregroundcolor red [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $sound = new-Object System.Media.SoundPlayer; $sound.SoundLocation="C:\WINDOWS\Media\notify.wav"; $sound.Play(); [System.Windows.Forms.MessageBox]::Show("$event_name hat soeben begonnen" , "$event_name") $events.Remove("$event_name") } sleep 5 } } until ($events -eq $null) |
Ich checke gerne die Events die eine Daily-Truhe abwerfen. Wenn ein solches Event startet, wird ein Sound abgespielt und ein Fenster öffnet sich. Wenn das Event einmal aktiv war, wird es aus der Liste der zu prüfenden Events gelöscht. Das macht das Script so lang, bis kein Event mehr vorhanden ist.
Anzupassen gibt es da eigentlich nur die $world_id. Diese ist aktuell auf Millersund gesetzt.