I'm just gonna put this as simply as possible. This is my code for auto-opening bodies. It doesn't work, and I don't know why. So, I need help figuring out what I'm doing wrong (other than not being able to condense the 17859643832689765329847562038476 loops). Halp pl0x. (NOTE: I am using TibiaAPI) (NOTE2: My.Settings.deadlocs is just a stringcollection) (NOTE3: c = client, p = player) (NOTE4: I knew less about programming when I wrote this code than I do now, but I still have no idea what the hell I'm doing with this one)
Code:
My.Settings.deadlocs.Clear()
For Each dead As Creature In c.BattleList.GetCreatures
If dead.HPBar = 0 Then
My.Settings.deadlocs.Add(dead.Location.ToString)
For Each bodyloc As String In My.Settings.deadlocs
For Each square As Tile In c.Map.GetTiles
If square.Location.ToString = bodyloc Then
For Each deadbody As Item In square.Items
If deadbody.Data.Name.Contains("Dead") Or deadbody.Data.Name.Contains("Slain") Or deadbody.Data.Name.Contains("Remains") Then
p.Walk(bodyloc)
c.Inventory.UseItemOnTile(deadbody.Id, square)
Lootitems()
End If
Next
End If
Next
Next
End If
Next
I also tried
Code:
Private Function openbodies2()
Dim list As New List(Of body)
For Each dead As Creature In c.BattleList.GetCreatures
If dead.HPBar = 0 Then
Dim t As Tile = c.Map.GetTile(dead.Location)
Thread.Sleep(200)
Dim b As New body(t.Items.Find(Function(x) x.Data.Name.ToString.ToLower.StartsWith("dead ") Or x.Data.Name.ToString.ToLower.StartsWith("slain ") Or x.Data.Name.ToString.ToLower.StartsWith("remains ") And x.GetFlag(Addresses.DatItem.Flag.IsCorpse) = True).Id, dead.Location, False)
b.itemname = c.Map.GetTile(dead.Location).Items.Find(Function(x) x.Data.Name.ToString.ToLower.StartsWith("dead ") Or x.Data.Name.ToString.ToLower.StartsWith("slain ") Or x.Data.Name.ToString.ToLower.StartsWith("remains ") And x.GetFlag(Addresses.DatItem.Flag.IsCorpse) = True).Name
list.Add(b)
End If
Next
For Each b As body In list
Dim i As New Item(b.ID, b.itemname)
i.OpenAsContainer(CByte(c.Inventory.GetContainers().Count()))
Lootitems()
Next
Return True
End Function
but got the error "Object reference not set to an instance of an object." where it checks the item flag the first time, which I think generated after the bot froze after I killed something, but failed to show until I switched to the Visual Basic window.