Ive been working on a very large "bot" for a game that I play. Basically all it does is parse two log files that alternate as the logs are being used by the game you cant parse them while its being written to.
Anyhow my code is starting to get very bulky and starting to take more time to process than I would lilke. So if anybody is good at stuff like this any suggestions would be apreciated.
Here is the bulk of the processing
Code:Private Sub Sendmessage(msg As String)
Dim lHwnd As Long
Dim lRetVal As Long
Dim i As Integer
Dim character As String
lHwnd = FindWindow("HGClass", "NODBOT V1.53 Beta")
If lHwnd Then
lRetVal = PostMessage(lHwnd, WM_KEYDOWN, VK_RETURN, &H1)
For i = 1 To Len(msg)
character = Mid$(msg, i, 1)
lRetVal = PostMessage(lHwnd, WM_CHAR, ByVal Asc(character), 0&)
Next
lRetVal = PostMessage(lHwnd, WM_KEYDOWN, VK_RETURN, &H1)
End If
End Sub
Private Sub findword2()
Dim parse() As String
Dim temp As String
Dim Entering() As String
Dim killed() As String
Dim killed2() As String
Dim i As Integer
Dim re As New RegExp, m As Match
Dim t As String
Dim JoinInv() As String
Dim JInv As String
Dim x As Integer
Dim killbox() As String
Dim item_index As Long
Open "C:\Program Files\Sony\Station\Infantry\nodbot\bhl\bhl2.log" For Input As #1
Do Until EOF(1)
Line Input #1, temp
parse = Split(temp, vbTab)
'0 = message type'
'1 = sent to'
'2 = sender'
'3 = message'
Entering = Split(parse(3), "Entering: ")
If InStr(parse(0), "8") > 0 Then
killed = Split(parse(3), " killed by ")
t = killed(0)
re.Pattern = "\(*\d\d*\)$"
re.Global = True
For Each m In re.Execute(t)
killed2 = Split(killed(0), m.Value)
item_index = SendMessage2(List1.hwnd, LB_FINDSTRING, -1, killed2(0))
Next
If item_index > 0 Then
killbox = Split(List1.List(item_index), " ::: ")
List1.List(item_index) = killbox(0) & " ::: " & killbox(1) + 1
Else
List1.AddItem killed2(0) + " ::: " + "1"
End If
End If
If playd.Value = 1 And InStr(parse(0), "8") > 0 Then
killed = Split(parse(3), " killed by ")
t = killed(0)
re.Pattern = "\(*\d\d*\)$"
re.Global = True
For Each m In re.Execute(t)
killed2 = Split(killed(0), m.Value)
Sendmessage ":" + killed2(0) + ": " + pdmes.Text
Next
End If
If joinkeyon.Value = True And InStr(parse(0), "2") > 0 And InStr(parse(3), joinkey.Text) > 0 Then
Sendmessage ":" + parse(2) + ":*unspec"
End If
If joininvon.Value = True And InStr(parse(0), "2") > 0 And InStr(parse(3), joinkey.Text) > 0 Then
JInv = one.Text
JoinInv = Split(JInv, ",")
For x = 0 To UBound(JoinInv)
Sendmessage ":" + parse(2) + ":" + "*prize " + JoinInv(x)
Next
End If
If ent1e.Value = 1 And InStr(parse(0), "9") > 0 Then
Sendmessage ":" + Entering(1) + ": " + ent1.Text
End If
If ent2e.Value = 1 And InStr(parse(0), "9") > 0 Then
Sendmessage ":" + Entering(1) + ": " + ent2.Text
End If
If ent3e.Value = 1 And InStr(parse(0), "9") > 0 Then
Sendmessage ":" + Entering(1) + ": " + ent3.Text
End If
If ent4e.Value = 1 And InStr(parse(0), "9") > 0 Then
Sendmessage ":" + Entering(1) + ": " + ent4.Text
End If
If InStr(parse(0), "2") > 0 And InStr(parse(3), key1.Text) > 0 Then
Sendmessage key1t.Text
End If
If InStr(parse(0), "2") > 0 And InStr(parse(3), key2.Text) > 0 Then
Sendmessage key2t.Text
End If
If InStr(parse(0), "2") > 0 And InStr(parse(3), key3.Text) > 0 Then
Sendmessage key3t.Text
End If
Loop
Close #1
End Sub
