Hallo erst einmal an alle,
ich habe vor 2 Wochen angefangen mit mit autoit zu beschäftigen.Nun stehe ich aber vor meinem ersten Problem
Ich zocke Rift (MMO-Game) - und nein, ich habe nicht vor einen Bot zu bauen, sondern nur eine Auswertung für mich
Wenn ich dort Materialien abbaue, wird das alles in eine Log geschrieben mit folgendem Aufbau
Spoiler anzeigen
21:37:02: xxx hat 0 SEP erhalten
21:37:03: Ihr erhaltet: Aventurin x 4
21:37:04: Ihr erhaltet: [Thalasiterz]
21:37:04: Ihr erhaltet: [Thalasit-Kristall]
21:37:04: Ihr erhaltet: [Funkelblatt] x 4
21:37:06: yyy hat 0 SEP erhalten
21:37:06: Ihr erhaltet: Aventurin x 10
21:37:09: Ihr erhaltet: [Kleiner 5-Sterne-Dimensionsvorrat]
21:37:11: yyy hat 0 SEP erhalten
21:37:11: Ihr erhaltet: Aventurin x 12
21:37:14: Ihr erhaltet: [Zuckerstange]
21:39:28: [yyy] hat Folgendes hergestellt: [Nebulöse Träume]!
21:39:59: Protokoll außerhalb von Kämpfen aktiviert.
21:42:29: *[yyy] winkt Heneth zu.*
21:42:43: *[yyy] winkt yyy freundlich zu.*
21:44:59: [9. Stufe 65][Volturnus@Gelidra]: <Skins on Farm> Infophone: New T3 Skin (1H Sword) in Vault 2! Please note guild vaults are locked from Feb5 to Feb29! Cheers - Volt
21:47:33: [yyy] hat Folgendes hergestellt: [Geläuterter Albtraum]!
21:48:07: yyy hat 0 SEP erhalten
Mich interessieren aber nur die Zeilen, in welchen "Ihr erhaltet:" vorkommt. Weiter möchte ich erreichen, daß nur in meiner Auswertung steht, was ich erhalten habe, also z.B. "[Funkelblatt] x 4". Das habe ich auch schon soweit geschafft. Allerdings wird das eine ellenlange Liste, da er alles mehrmals rein schreibt. Meine Idee war jetzt folgende:
#include <Debug.au3>
#include <File.au3>
#include <Timers.au3>
#include <Misc.au3>
#include <ButtonConstants.au3>
#include <MsgBoxConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <array.au3>
#include <String.au3>
Global $log = (@MyDocumentsDir & '\RIFT\log.txt')
Global $plog = @ScriptDir & "\pickup.txt"
FileOpen($plog, 2)
Global $file = FileRead(@MyDocumentsDir & "\RIFT\log.txt")
Local $zeilen = _FileCountLines($log)
f1()
func f1()
Local $count_log = _FileCountLines($log)
for $i = 1 To $count_log
Global $aResult_u = StringRegExp($file, 'Ihr erhaltet: (.*)', 3)
If Not @error Then
_ArrayDisplay($aResult_u)
$a_temp = StringSplit($aResult_u[UBound($aResult_u) - 1], "@CRLF")
Global $a_split[UBound($aResult_u)][$a_temp[0]]
For $h = 1 To UBound($aResult_u) - 1
$a_temp = StringSplit($aResult_u[$h], "x")
For $j = 1 To $a_temp[0]
$a_split[$h][$j -1] = $a_temp[$j]
Next
Next
_ArrayDelete($a_split, 0)
_ArraySort($a_split)
_FileWriteFromArray($plog, $a_split)
_ArrayDisplay($a_split)
EndIf
f2()
Next
EndFunc
func f2()
_ArrayDisplay($a_split)
EndFunc
Alles anzeigen
Hiermit bekomme ich ein Array, in welchem zuerst nur ausgegeben wird, was ich erhalten habe (also restlicher Mist raus) und ein Array in dem ich die erhaltene Anzahl an Materialien gesplittet habe.
Mein Problem ist jetzt, daß ich in func f2() die Arrays, welche ich in func f1() erstellt habe nicht angezeigt bekomme. <- Gelöst (Funktionsaufruf f2() war nach next)
Ich wollte zu Lernzwecken versuchen in einer extra Funktion die [ ] aus den Arrays zu bekomen.
Und noch eine Frage hätte ich, ist es möglich wenn im 2. Array mehrmals z.B. Funkelblatt x 2, Funkelblatt x 4 etc steht, alles auf eine Zeile zu bekommen und die Multiplikatoren zusammen addiert?
Wie gesagt, ich beschäftige mich erst seit 2 Wochen mit autoit...