BotsHub

12/03/2025 15:02 pepe botika#181
Hi Kronos,

Here you have a better code

Func CreateValuableModsByWeaponTypeMap()
Local $ID_Type_Axe = 2
Local $ID_Type_Bow = 5
Local $ID_Type_Offhand = 12
Local $ID_Type_Hammer = 15
Local $ID_Type_Wand = 22
Local $ID_Type_Shield = 24
Local $ID_Type_Staff = 26
Local $ID_Type_Sword = 27
Local $ID_Type_Dagger = 32
Local $ID_Type_Scythe = 35
Local $ID_Type_Spear = 36

Local $tickedInscriptions = GetComponentsTickedCheckboxes('Inscriptions')
;Local $tickedMods = GetComponentsTickedCheckboxes('Mods')

Local $tickedAxe = GetComponentsTickedCheckboxes('Axe')
Local $tickedBow = GetComponentsTickedCheckboxes('Bow')
Local $tickedDagger = GetComponentsTickedCheckboxes('Dagger')
Local $tickedFocus = GetComponentsTickedCheckboxes('Suffix - Core')
Local $tickedHammer = GetComponentsTickedCheckboxes('Hammer')
Local $tickedScythe = GetComponentsTickedCheckboxes('Scythe')
Local $tickedShield = GetComponentsTickedCheckboxes('Shield')
Local $tickedSpear = GetComponentsTickedCheckboxes('Spear')
Local $tickedStaff = GetComponentsTickedCheckboxes('Staff')
Local $tickedSword = GetComponentsTickedCheckboxes('Sword')
Local $tickedWand = GetComponentsTickedCheckboxes('Wand')


Local $Incriptions_Structs_Array[UBound($tickedInscriptions)]
For $i = 0 To UBound($tickedInscriptions) - 1
Local $varName = $tickedInscriptions[$i]
$varname = StringRegExpReplace($varname,"\(.*?\)","")
Local $pos = StringInStr($varname, ".", 0, -1)
$varname = StringMid($varname, $pos +1)
If StringRight($varname, 1) = " " Then
$varname = StringTrimRight($varname, 1)
EndIf
$varName = 'STRUCT_INSCRIPTION_' & StringUpper(StringReplace($varname, " ", "_"))
$Incriptions_Structs_Array[$i] = Eval($varName)
Next

Local $Axe_Mods_Array = Extract_Mods_Struct($tickedAxe)
Local $Bow_Mods_Array = Extract_Mods_Struct($tickedBow)
Local $Dagger_Mods_Array = Extract_Mods_Struct($tickedDagger)
Local $Focus_Mods_Array = Extract_Mods_Struct($tickedFocus)
Local $Hammer_Mods_Array = Extract_Mods_Struct($tickedHammer)
Local $Scythe_Mods_Array = Extract_Mods_Struct($tickedScythe)
Local $Shield_Mods_Array = Extract_Mods_Struct($tickedShield)
Local $Spear_Mods_Array = Extract_Mods_Struct($tickedSpear)
Local $Staff_Mods_Array = Extract_Mods_Struct($tickedStaff)
Local $Sword_Mods_Array = Extract_Mods_Struct($tickedSword)
Local $Wand_Mods_Array = Extract_Mods_Struct($tickedWand)

_ArrayAdd($Axe_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Bow_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Dagger_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Focus_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Hammer_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Scythe_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Shield_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Spear_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Staff_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Sword_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Wand_Mods_Array, $Incriptions_Structs_Array)


Local Const $All_Weapons_Array = [$ID_Type_Shield, $ID_Type_Offhand, $ID_Type_Wand, $ID_Type_Staff, $ID_Type_Bow, $ID_Type_Axe, $ID_Type_Hammer, $ID_Type_Sword, $ID_Type_Dagger, $ID_Type_Scythe, $ID_Type_Spear]
Local Const $All_Weapons_Mods_Array = [$Shield_Mods_Array, $Focus_Mods_Array, $Wand_Mods_Array, $Staff_Mods_Array, $Bow_Mods_Array, $Axe_Mods_Array, $Hammer_Mods_Array, _
$Sword_Mods_Array, $Dagger_Mods_Array, $Scythe_Mods_Array, $Spear_Mods_Array]
Local Const $Valuable_Incriptions_and_mods_Structs_Array[] = MapFromArrays($All_Weapons_Array, $All_Weapons_Mods_Array)
Return $Valuable_Incriptions_and_mods_Structs_Array
EndFunc

Func Extract_Mods_Struct($index)
Local $Mods_Array [UBound($index)]
For $i = 0 To UBound($index) - 1
Local $varName = $index[$i]
$varName = StringRegExpReplace($varName,"\(.*?\)","") ;Take out everyth¡ng inside ()

If StringInStr(StringUpper($varName), "VAMPIRIC") Then
If StringInStr($varName, "bow") Or StringInStr($varName, "hammer") Then
$varName = StringRegExpReplace(StringUpper($varName),"VAMPIRI C","vampiric_5")
Else
$varName = StringRegExpReplace(StringUpper($varName),"VAMPIRI C","vampiric_3")
EndIf
EndIf

If StringInStr(StringUpper($varName), "MASTERY") Then
If StringInStr($varName, "axe") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","AXE_MASTERY")
ElseIf StringInStr($varName, "bow") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","MARKSMANSHIP_MASTERY")
ElseIf StringInStr($varName, "dagger") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","DAGGER_MASTERY")
ElseIf StringInStr($varName, "hammer") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","HAMMER_MASTERY")
ElseIf StringInStr($varName, "scythe") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","SCYTHE_MASTERY")
ElseIf StringInStr($varName, "spear") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","SPEAR_MASTERY")
ElseIf StringInStr($varName, "sword") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","SWORDMANSHIP_MASTERY")
ElseIf StringInStr($varName, "staff") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","STAFF_MASTERY")
EndIf
EndIf
Local $pos = StringInStr($varName, ".", 0, -1);Search position of last .
$varName = StringMid($varName, $pos +1);Delete everything before the last .

If StringRight($varName, 1) = " " Then ;Take out any space at the end
$varName = StringTrimRight($varName, 1)
EndIf
$varName = 'STRUCT_MOD_' & StringUpper(StringReplace($varName, " ", "_"));Set everything in uppercase
Info("Varname: " & $varName)
$Mods_Array [$i] = Eval($varName)
Next
Return $Mods_Array
EndFunc

I checked that all the mods and inscriptions got transalated. Now I need to test if they work when going to Merchant.

I see that for Staff they are a lot of masteries as they do not need to be aligned with the main attribute. It's an improvement to do on the GUI and then codify that

Hi Kronos,

Here you have a better code

Func CreateValuableModsByWeaponTypeMap()
Local $ID_Type_Axe = 2
Local $ID_Type_Bow = 5
Local $ID_Type_Offhand = 12
Local $ID_Type_Hammer = 15
Local $ID_Type_Wand = 22
Local $ID_Type_Shield = 24
Local $ID_Type_Staff = 26
Local $ID_Type_Sword = 27
Local $ID_Type_Dagger = 32
Local $ID_Type_Scythe = 35
Local $ID_Type_Spear = 36

Local $tickedInscriptions = GetComponentsTickedCheckboxes('Inscriptions')
;Local $tickedMods = GetComponentsTickedCheckboxes('Mods')

Local $tickedAxe = GetComponentsTickedCheckboxes('Axe')
Local $tickedBow = GetComponentsTickedCheckboxes('Bow')
Local $tickedDagger = GetComponentsTickedCheckboxes('Dagger')
Local $tickedFocus = GetComponentsTickedCheckboxes('Suffix - Core')
Local $tickedHammer = GetComponentsTickedCheckboxes('Hammer')
Local $tickedScythe = GetComponentsTickedCheckboxes('Scythe')
Local $tickedShield = GetComponentsTickedCheckboxes('Shield')
Local $tickedSpear = GetComponentsTickedCheckboxes('Spear')
Local $tickedStaff = GetComponentsTickedCheckboxes('Staff')
Local $tickedSword = GetComponentsTickedCheckboxes('Sword')
Local $tickedWand = GetComponentsTickedCheckboxes('Wand')


Local $Incriptions_Structs_Array[UBound($tickedInscriptions)]
For $i = 0 To UBound($tickedInscriptions) - 1
Local $varName = $tickedInscriptions[$i]
$varname = StringRegExpReplace($varname,"\(.*?\)","")
Local $pos = StringInStr($varname, ".", 0, -1)
$varname = StringMid($varname, $pos +1)
If StringRight($varname, 1) = " " Then
$varname = StringTrimRight($varname, 1)
EndIf
$varName = 'STRUCT_INSCRIPTION_' & StringUpper(StringReplace($varname, " ", "_"))
$Incriptions_Structs_Array[$i] = Eval($varName)
Next

Local $Axe_Mods_Array = Extract_Mods_Struct($tickedAxe)
Local $Bow_Mods_Array = Extract_Mods_Struct($tickedBow)
Local $Dagger_Mods_Array = Extract_Mods_Struct($tickedDagger)
Local $Focus_Mods_Array = Extract_Mods_Struct($tickedFocus)
Local $Hammer_Mods_Array = Extract_Mods_Struct($tickedHammer)
Local $Scythe_Mods_Array = Extract_Mods_Struct($tickedScythe)
Local $Shield_Mods_Array = Extract_Mods_Struct($tickedShield)
Local $Spear_Mods_Array = Extract_Mods_Struct($tickedSpear)
Local $Staff_Mods_Array = Extract_Mods_Struct($tickedStaff)
Local $Sword_Mods_Array = Extract_Mods_Struct($tickedSword)
Local $Wand_Mods_Array = Extract_Mods_Struct($tickedWand)

_ArrayAdd($Axe_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Bow_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Dagger_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Focus_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Hammer_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Scythe_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Shield_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Spear_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Staff_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Sword_Mods_Array, $Incriptions_Structs_Array)
_ArrayAdd($Wand_Mods_Array, $Incriptions_Structs_Array)


Local Const $All_Weapons_Array = [$ID_Type_Shield, $ID_Type_Offhand, $ID_Type_Wand, $ID_Type_Staff, $ID_Type_Bow, $ID_Type_Axe, $ID_Type_Hammer, $ID_Type_Sword, $ID_Type_Dagger, $ID_Type_Scythe, $ID_Type_Spear]
Local Const $All_Weapons_Mods_Array = [$Shield_Mods_Array, $Focus_Mods_Array, $Wand_Mods_Array, $Staff_Mods_Array, $Bow_Mods_Array, $Axe_Mods_Array, $Hammer_Mods_Array, _
$Sword_Mods_Array, $Dagger_Mods_Array, $Scythe_Mods_Array, $Spear_Mods_Array]
Local Const $Valuable_Incriptions_and_mods_Structs_Array[] = MapFromArrays($All_Weapons_Array, $All_Weapons_Mods_Array)
Return $Valuable_Incriptions_and_mods_Structs_Array
EndFunc

Func Extract_Mods_Struct($index)
Local $Mods_Array [UBound($index)]
For $i = 0 To UBound($index) - 1
Local $varName = $index[$i]
$varName = StringRegExpReplace($varName,"\(.*?\)","") ;Take out everyth¡ng inside ()

If StringInStr(StringUpper($varName), "VAMPIRIC") Then
If StringInStr($varName, "bow") Or StringInStr($varName, "hammer") Then
$varName = StringRegExpReplace(StringUpper($varName),"VAMPIRI C","vampiric_5")
Else
$varName = StringRegExpReplace(StringUpper($varName),"VAMPIRI C","vampiric_3")
EndIf
EndIf

If StringInStr(StringUpper($varName), "MASTERY") Then
If StringInStr($varName, "axe") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","AXE_MASTERY")
ElseIf StringInStr($varName, "bow") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","MARKSMANSHIP_MASTERY")
ElseIf StringInStr($varName, "dagger") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","DAGGER_MASTERY")
ElseIf StringInStr($varName, "hammer") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","HAMMER_MASTERY")
ElseIf StringInStr($varName, "scythe") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","SCYTHE_MASTERY")
ElseIf StringInStr($varName, "spear") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","SPEAR_MASTERY")
ElseIf StringInStr($varName, "sword") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","SWORDMANSHIP_MASTERY")
ElseIf StringInStr($varName, "staff") Then
$varName = StringRegExpReplace(StringUpper($varName),"MASTERY ","STAFF_MASTERY")
EndIf
EndIf
Local $pos = StringInStr($varName, ".", 0, -1);Search position of last .
$varName = StringMid($varName, $pos +1);Delete everything before the last .

If StringRight($varName, 1) = " " Then ;Take out any space at the end
$varName = StringTrimRight($varName, 1)
EndIf
$varName = 'STRUCT_MOD_' & StringUpper(StringReplace($varName, " ", "_"));Set everything in uppercase
$Mods_Array [$i] = Eval($varName)
Next
Return $Mods_Array
EndFunc

I see that for Staffs the are different Mastery suffixes as they do not need to be aligned with main attribute. This is something to improve on GUI and the codificated on Sctruct

Also please add me as contributor so I can upload the heroes stuff and this, so you can work on improve it. At the moment I cannot do a pull request as it says I'm not contributor
12/03/2025 23:49 Kronos8#182
/!\ Due to recent update, all bots are broken (that include toolbox, autoit, python bots ...) /!\
Enjoy that timeout by playing the game the way it is supposed to ! :)

Hey @[Only registered and activated users can see links. Click Here To Register...], thanks for your work :D
Unfortunately due to GW update, it will have to wait a little bit before I try it out.
12/05/2025 14:52 Spartanzz#183
How hard would it be to add a pre-searing charr shrine/northlands clear?

EDIT: Obv once its back and running
12/06/2025 01:22 Kronos8#184
@[Only registered and activated users can see links. Click Here To Register...] it's probably not very complicated to write though not sure how difficult it is to make it survive against charrs
12/09/2025 19:44 eternalzx#185
Hi, Kronos.

Thank you so much for the awesome bot. Since the reforge update was recent. I am inquiring on whether your bot will be updated to be usable again.
12/09/2025 22:37 assanka#186
Hello, I installed the latest version of AutoIt.
I downloaded the bot’s ZIP file.
I launched AutoIt3.
But when I run, for example, the Lightbringer farm, here is what it says:

22:33:03 - GW Bot Hub 1.0
22:33:06 - Initializing...
22:33:06 - Starting...
22:33:07 - Balancing character's gold level
22:33:07 - Balancing character's gold
22:33:07 - Not enough gold in chest, get some.
22:33:07 - Inventory full, pausing.
22:33:07 - Starting run 1
22:33:07 - Setting up farm
22:33:07 - Travelling to Remains of Sahlahja (outpost)

And nothing happens after that.
12/10/2025 21:59 uK Cooki3#187
Quote:
Originally Posted by assanka View Post
Hello, I installed the latest version of AutoIt.
I downloaded the bot’s ZIP file.
I launched AutoIt3.
But when I run, for example, the Lightbringer farm, here is what it says:

22:33:03 - GW Bot Hub 1.0
22:33:06 - Initializing...
22:33:06 - Starting...
22:33:07 - Balancing character's gold level
22:33:07 - Balancing character's gold
22:33:07 - Not enough gold in chest, get some.
22:33:07 - Inventory full, pausing.
22:33:07 - Starting run 1
22:33:07 - Setting up farm
22:33:07 - Travelling to Remains of Sahlahja (outpost)

And nothing happens after that.
Since the GW Reforged update bots have not been updated yet.
12/15/2025 23:35 Tabula Assault#188
ayyyeee papi can we get a working version :thinking:
12/20/2025 00:47 Kronos8#189
Hello, bot has been fixed.
Please report if there are still some things failing.
Only one I am aware of right now is material merchant selling/buying.
Cheers :cool:
12/20/2025 09:35 benj3913#190
Is an update to the bot planned to work on Reforged?

Quote:
Originally Posted by Kronos8 View Post
Hello, bot has been fixed.
Please report if there are still some things failing.
Only one I am aware of right now is material merchant selling/buying.
Cheers :cool:


Do you have a download link?
Edit: I have found

Quote:
Originally Posted by Kronos8 View Post
Hello, bot has been fixed.
Please report if there are still some things failing.
Only one I am aware of right now is material merchant selling/buying.
Cheers :cool:

Which option should I select to store the gold in the chest and have the bot restart automatically?
12/20/2025 19:28 Jaggz691#191
Awesome update, thanks again!

Looks like we are having issues teleporting to eye of the north to sell/empty bags. For me this happens when using the Kurzick bot. I saw that there was a material trader issue, unsure if its linked.
12/20/2025 20:05 Dlasmith921#192
Quote:
Originally Posted by Kronos8 View Post
Hello, bot has been fixed.
Please report if there are still some things failing.
Only one I am aware of right now is material merchant selling/buying.
Cheers :cool:
Nice work! I'm going to try it out today. Cheers
12/20/2025 20:10 Jorisk#193
any idea when there wil be a pre searing LDoA bot added? apperantly MMOmarket sells em but only for 3 months which is insane :D
12/20/2025 20:53 pgpavel#194
is there any working Tut Bot?
12/21/2025 13:15 benj3913#195
Does a bot exist for farming chests in the snowball fight?