Ministerial Commendation is back on the menu boyssssss
Hi Again!
Today I bring a self-edited self-programmed bot for Ministerial Commendations!
The main character proff is Assassin (Working to bring Dervish asap),
Did a bunch of changes, on pickups, movements, even when ahead and created and self party creator if you are lazy to even setup your heroes and it will load a setup automatically,
This one gave a lot of headache but yeah, is working, on HM is really hard tho, the chances of success is really low, on NM it's chance success is around 80% to 85%, depends on Miku a lot, which I couldn't program properly to track her HP and do some healing (I suck at Dll stuff)
Please, download it and test it, any feedback is welcome, also if you can improve some code and share it with everyone that would be great!
Similar function to what the Vaettir Bot does.
I added all the IDs from the items identified in your script to Keep, any item not found in the $ItemsToKeep array and not excluded from being sold by subsequent conditions will be sold.
Code:
; Func Identify($BagIndex)
Local $Bag
Local $I
Local $aItem
$Bag = GetBAG($BagIndex)
For $I = 1 To DllStructGetData($Bag, "slots")
$aItem = GetItemBySlot($BagIndex, $I)
If DllStructGetData($aItem, "ID") = 0 Then ContinueLoop
IdentifyItem($aItem)
Sleep(GetPing()+500)
Next
EndFunc
Func Sell($BagIndex)
Local $aItem
Local $Bag = GetBAG($BagIndex)
Local $SlotCount = DllStructGetData($Bag, "slots")
For $I = 1 To $SlotCount
Out("Selling Item: " & $BagIndex & ", " & $I)
$aItem = GetItemBySlot($BagIndex, $I)
If DllStructGetData($aItem, "ID") = 0 Then ContinueLoop
If CanSell($aItem) Then
SellItem($aItem)
EndIf
Sleep(GetPing()+250)
Next
EndFunc
Func CanSell($aItem)
Local $lModelID = DllStructGetData($aItem, "ModelID")
Local $ItemsToKeep = Array(2511, 19185, 19183, 15557, 22269, 24353, 24354, 921, 929)
For $i = 0 To UBound($ItemsToKeep) - 1
If $lModelID == $ItemsToKeep[$i] Then
Return False
EndIf
EndIf
; Existing CanSell conditions...
Local $LRarity = GetRarity($aItem)
If $lModelID == $Item_ID_Dyes Then
Switch DllStructGetData($aItem, "ExtraID")
Case $Item_ExtraID_BlackDye, $Item_ExtraID_WhiteDye, $Item_ExtraID_PinkDye
Return False
Case Else
Return True
EndSwitch
EndIf
If CheckArrayAllDrops($lModelID) Then Return False
If CheckArrayTomes($lModelID) Then Return False
If CheckArrayMaterials($lModelID) Then Return False
If CheckArrayWeaponMods($lModelID) Then Return False
If CheckArrayGeneralItems($lModelID) Then Return False
If $lModelID == $Item_ID_Glacial_Stones Then Return True
If CheckArrayPscon($lModelID) Then Return False
If $LRarity == $Rarity_Gold Then Return True
If $LRarity == $Rarity_Purple Then Return True
If $LRarity == $Rarity_Blue Then Return True
If $LRarity == $Rarity_White Then Return True
Return True
EndFunc
Hi!
Took your advice and is starting to get some color! Thanks!
It does store all the unid golds on the storage and sells once the chest is full but yeah, not perfect yet,
Took your advice and is starting to get some color! Thanks!
It does store all the unid golds on the storage and sells once the chest is full but yeah, not perfect yet,
KR.
Nitta!
I've just recently returned to GWs to remind myself how great this game is... I remember a few things but not many like what items drop where lol. if you need any help let me know! We can def collaborate and create a beautiful masterpiece
Func LDoA2_10()
; Academy Monk Agent ID = 40
Local $BoolQuestComplete = False
Local $MapID = GetStartMapByJobID(1,1)
Local $lStartExp = GetExperience()
Local $lEndExp
If GetMapID() <> $MapID Then
logFile("Moving to Outpost")
Do
RndTravel($MapID)
rndslp(500)
Until GetMapID() = $MapID
EndIf
PingSleep(200)
_LDoACheck_QuestCompleted()
;~ logFile("GetMyID: "&GetMyID())
;~ logFile("GetCurrentTargetID: "&GetCurrentTargetID())
;~ logFile("GetLoggedIn: "&GetLoggedIn())
;~ logFile("GetPing: "&GetPing())
;~ logFile("Language: "&GetLanguage())
;~ logFile("Region: "&GetRegion())
;~ logFile("BasePointer: "&Hex($mBasePointer))
;~ logFile("District: "&GetDistrict())
;~ logFile("DisplayLanguage: "&GetDisplayLanguage())
;~ logFile("ScanBuildNumber: "&Hex(GetScannedAddress('ScanBuildNumber', 0x2C),8))
;~ logFile("GetBuildNumber: "&GetBuildNumber())
logFile("Gw.exe: "&Hex(ScanForProcess(), 8))
logFile("Going outside")
RandomPath(7428, 5870, 7000, 5350, 50, 1, 4, -1)
WaitForLoad()
If ($tRunInitiated = False) Then
$tRunCompletedInTime = TimerInit()
$tRunInitiated = True
EndIf
logFile("Waiting a moment for Ruric to get ready")
SendChat('Deaths', '/')
If RangerPet_present() Then TogglePetPanel()
PingSleep(5000)
MoveTo(5602, 4559, 30)
PingSleep(200)
logFile("Going to the gate")
PingSleep(200)
MoveTo(4781, 5315, 30)
PingSleep(200)
MoveTo(3955, 6012, 30)
PingSleep(200)
MoveTo(268, 6557, 30)
PingSleep(200)
MoveTo(-622, 7436, 30)
PingSleep(200)
MoveTo(-1871, 8477, 30)
PingSleep(200)
MoveTo(-2832, 9358, 30)
logFile("Waiting a moment at the Tree")
CheckAndUseStone(0)
PingSleep(4000)
MoveTo(-3379, 10530, 30)
MoveTo(-3953, 11105, 30)
If GetNumberOfFoesInRangeOfAgent(-2, 2000) <= 1 Then MoveTo(-4654, 11449, 30)
If GetIsDead(-2) Then Return
logFile("Waiting for Rurik to kill mobs")
If GetIsDead(-2) Then Return
$BoolQuestComplete = CheckQuestCompleted(46)
logFile("Quest Complete Check")
If Not $BoolQuestComplete Then
logFile("Number of foes in range: "&(GetNumberOfFoesInRangeOfAgent(-2, 2000)))
logFile("Quest Not Complete Killing Charr")
Do
If GetIsDead(-2) Then Return
If GetNumberOfFoesInRangeOfAgent(-2, 2000) <= 1 Then ExitLoop
TargetNearestEnemy()
Attack(-1)
AutonomousCasting()
PingSleep(100)
CombatPickUpNearestLoot(1250)
Until (GetNumberOfFoesInRangeOfAgent(-2, 2000) <= 1)
;~ logFile("..")
;~ CheckAndPickUp()
;~ _LDoACheck_QuestCompleted() ; Not needed we check this at start of run
EndIf
PingSleep(200)
Local $lEndExp = GetExperience()
logFile("Exp this run: "&($lEndExp-$lStartExp))
$tRunInitiated = False
EndFunc
basically $BoolQuestComplete wasnt set as intented. checking for the quest id (46) here works.
would be better to put the quest id in the config if it changes in the future to make fixing easier in case something changes with the id but usually quest ids dont change
Originally created by Gloubel
============================================ New Version Summary (Version 2.2.4 (2/4/2024)
Added: Conditional logic to perform different sets of actions based on the comparison of Kurzick and Luxon faction values within the game environment.
New Feature: The script now checks if the player's Kurzick faction points are greater than their Luxon faction points. If true, the script initiates a specific sequence of dialog interactions aiming to cater to players with higher Kurzick affiliations.
Implementation Details: Upon verifying that Kurzick faction points exceed Luxon faction points, the script executes a sequence of dialog commands (0x81, 0x2, 0x84, followed by 0x86) with a 1000 ms sleep interval between each dialog call to ensure proper pacing and execution within the game's interface. If Luxon faction points are greater or equal to Kurzick faction points, the script defaults to a different sequence of dialog interactions (0x85 followed by 0x86), tailored for players with a different faction focus or those whose faction points do not meet the specified condition.
Updated: Each dialog interaction within both branches of the conditional logic now includes a standardized 1000 ms sleep interval to accommodate the game's response times and ensure a smooth user experience.
Enhancements: This update introduces a more dynamic interaction path that acknowledges the player's factional allegiance, enriching the gameplay experience by aligning in-game actions with the player's in-game status and decisions.
GUI Changes
Added Skill Bar Template and Load Skill Bar Button for Future usage
Added Text Box
Minor Adjustments in Size and Location Adjustment of General Config
Prior Version Summary (Version 2.2.3 (1/21/2024)
Update to VQLuxon Function: The VQLuxon function has been revised in this version. It now incorporates a newly introduced HasEffect function for improved efficiency and clarity.
Simplified Effect Checking: Instead of direct calls or complex logic previously used to determine the active state of an effect, the function now makes a straightforward call to HasEffect. This change enhances the readability of the code.
Coordinate Check Implementation: I have integrated additional coordinate checks within specific locations. These checks are designed to contribute to the efficiency of run completion would lack prior.
Prior Version Summary (Version 2.2.2 (1/19/2024) Changelog:
Identified and fixed errors related to updated memory addresses in Guild Wars.
Recoded header calls to align with the new address structure.
Prior Version Summary (Version 2.2.1 (11/20/2023) Enhancements:
Pathfinding Optimization: Resolved a navigation issue due to specific mob spawns. Added movement commands to prevent stalling.
Prior Version Summary (Version 2.2 - 11/16/2023):
Luxon Title Progression Improvement: Fixed an endless loop condition in Luxon title progression.
Acknowledgements:
Special thanks to our community for their valuable contributions.
Previous Iterations:
Version 2.2 (11/16/2023): Loop issue fix in Luxon title progression.
Version 2.1 (11/9/2023): Minor updates and visual enhancements.
Version 2.0 (11/4/2023): Norn VQ adjustments, pickup range updates, and title progression.
(11/2/2023): Fixes in Norn challenges.
(10/30/2023): Resolved LockChest issues; Vanguard title stability confirmed.
(10/29/2023): Fixes for Deldrimor/Norn titles, new features in testing.
Please, download it and test it, any feedback is welcome, also if you can improve some code and share it with everyone that would be great!
Nitta
Hey Nitta, thank you for your effort! i´ve been running this bot for a bit and noticed a few little odd things.
sometimes instead of running to the farm spot the bot attacks the newly spawned group after killing the inital group, then moves on to the farmspot and looses a lot of time. ive also noticed that sometimes the pickup is to slow/ the rezoning to quick as it resigns before it picks up all the drops.
unfortunatly my coding skills arent good enough to fix this, so i thought id share my observations with you.
thank you again for this otherwise amazing bot!
Hey Nitta, thank you for your effort! i´ve been running this bot for a bit and noticed a few little odd things.
sometimes instead of running to the farm spot the bot attacks the newly spawned group after killing the inital group, then moves on to the farmspot and looses a lot of time. ive also noticed that sometimes the pickup is to slow/ the rezoning to quick as it resigns before it picks up all the drops.
unfortunatly my coding skills arent good enough to fix this, so i thought id share my observations with you.
thank you again for this otherwise amazing bot!
Hello!
I've been working on it, I also noticed this and worked hard to fix it,
It seems that the agent was not being picked up properly as Miku and the range was a little bit too big so it found foes nearby even though it didn't have to,
Hi guys, I want to write my own bot, I would like to know how to "register" location when I click somewhere, in order to have all my locations points?
Step 7 outlines how to get coordinates, but i am not sure about getting coordinates based off the location of your cursor. If you are using GWtoolbox you can see your character's current coordinates in real time.