Register for your free account! | Forgot your password?

You last visited: Today at 16:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Updated GWA2

Discussion on Updated GWA2 within the GW Exploits, Hacks, Bots, Tools & Macros forum part of the Guild Wars category.

Reply
 
Old 06/27/2020, 01:08   #196
 
elite*gold: 0
Join Date: Sep 2014
Posts: 351
Received Thanks: 119
Cool private vs. public...

Quote:
Originally Posted by deroni93 View Post
Is anyone aware of a past or present Stygian Vale bot?

I'm about half way into building one from scratch but I'd rather not invest more time if there's already one that works.

I'm open to sharing the source if anyone wants to help finish it but I'd rather not publish something half baked.

Progress so far;

- Functional GUI and initialise (copied from the Vaettir bot, needs tweaking)
- Starts at GoA, exits outpost.
- Safely paths to quest giver, perhaps too safe, I'm not sure if it's possible to run directly to the quest giver, it sleeps for ~16s to let the group on the right move out of the way.
- Accepts quest + takes buff then moves to the safe spot
- Starts pull from the glitch location. *this needs tweaking
- Starts kill sequence once the enemies are balled, needs some refinement for sure.
- Only loots gemstones at the moment
- Attempts 4 waves, or until death

It uses the Me/A build on PvX

Bots like this might be better off in private... I know the game is almost 20 years old... however,,, publically posting DOA exploits where gems are won, etc... is something that would make the froggy areanet police jump... IMHO... so if u are this capable to produce something of this nature - perhaps u should reconsider posting it... PVP, direct ecto farming and doa gem farming are major red flags from what I have seen and a counter measure will likely follow a release of anything potent in this realm... including but not limited to header updates... rocks dropped directly in bots paths.. or worse - recoding the area or fixing the exploit you have found and others in the community may have been using (in a bot form) which they made from videos seen on YouTube...

-- just want to preserve the community … but you are a great member... and its your right to do as you wish... just may want to re-think it a bit??
phat34 is offline  
Thanks
2 Users
Old 06/30/2020, 20:54   #197
 
elite*gold: 0
Join Date: Jan 2010
Posts: 28
Received Thanks: 45
Quote:
Originally Posted by phat34 View Post
Bots like this might be better off in private... I know the game is almost 20 years old... however,,, publically posting DOA exploits where gems are won, etc... is something that would make the froggy areanet police jump... IMHO... so if u are this capable to produce something of this nature - perhaps u should reconsider posting it... PVP, direct ecto farming and doa gem farming are major red flags from what I have seen and a counter measure will likely follow a release of anything potent in this realm... including but not limited to header updates... rocks dropped directly in bots paths.. or worse - recoding the area or fixing the exploit you have found and others in the community may have been using (in a bot form) which they made from videos seen on YouTube...

-- just want to preserve the community but you are a great member... and its your right to do as you wish... just may want to re-think it a bit??
good point
cortexio is offline  
Thanks
1 User
Old 06/30/2020, 22:58   #198
 
elite*gold: 0
Join Date: Jul 2019
Posts: 103
Received Thanks: 82
Quote:
Originally Posted by phat34 View Post
Bots like this might be better off in private... I know the game is almost 20 years old... however,,, publically posting DOA exploits where gems are won, etc... is something that would make the froggy areanet police jump... IMHO... so if u are this capable to produce something of this nature - perhaps u should reconsider posting it... PVP, direct ecto farming and doa gem farming are major red flags from what I have seen and a counter measure will likely follow a release of anything potent in this realm... including but not limited to header updates... rocks dropped directly in bots paths.. or worse - recoding the area or fixing the exploit you have found and others in the community may have been using (in a bot form) which they made from videos seen on YouTube...

-- just want to preserve the community but you are a great member... and its your right to do as you wish... just may want to re-think it a bit??
Yep, very reason why you never see effective UW farming bots or full run bots like full fow clear,doa, and uw posted. One those bots take a lot of work and also its asking for a ban or fix put in to break them. I fully expect a ban wave coming with the level of bots in gtob right now and pve zones.
list comprehension is offline  
Old 07/01/2020, 15:33   #199
 
elite*gold: 0
Join Date: Apr 2017
Posts: 16
Received Thanks: 7
Quote:
Originally Posted by CoderAndy View Post
@ well if you don't want to use the hook this works for me with the original $mSkillTimer, i posted it to discord for anyone to test it but no luck, i have no problems atm with this code. (Don't forget to use the Ex at the name for testing)

Code:
$mSkillTimer = MemoryRead(GetScannedAddress('ScanSkillTimer', -3))
Code:
Func GetEffectTimeRemainingEx($aEffect)
    If IsArray($aEffect) Then Return 0
    If $aEffect = 0 Then Return 0
    If IsPtr($aEffect) <> 0 Then
        $lTimestamp = MemoryRead($aEffect + 20, 'long')
        $lDuration = MemoryRead($aEffect + 16, 'float')
    ElseIf IsDllStruct($aEffect) <> 0 Then
        $lTimestamp = DllStructGetData($aEffect, 'TimeStamp')
        $lDuration = DllStructGetData($aEffect, 'Duration')
    Else
        Local $lPtr = GetSkillEffectPtrEx($aEffect)
        If $lPtr = 0 Then Return 0
        $lTimestamp = MemoryRead($lPtr + 20, 'long')
        $lDuration = MemoryRead($lPtr + 16, 'float')
    EndIf
    $lReturn = $lDuration * 1000 - (GetSkillTimerEx() - $lTimestamp)
    Return $lReturn
EndFunc

Func GetSkillEffectPtrEx($aSkillID, $aHeroNumber = 0, $aHeroID = GetHeroID($aHeroNumber))
    Local $lOffset[4] = [0, 24, 44, 1296]
    Local $lCount = MemoryReadPtr($mBasePointer, $lOffset)
    ReDim $lOffset[5]
    $lOffset[3] = 1288
    Local $lBuffer
    For $i = 0 To $lCount[1] - 1
        $lOffset[4] = 36 * $i
        $lBuffer = MemoryReadPtr($mBasePointer, $lOffset)
        If $lBuffer[1] = $aHeroID Then
            $lOffset[4] = 28 + 36 * $i
            $lEffectCount = MemoryReadPtr($mBasePointer, $lOffset)
            $lOffset[4] = 20 + 36 * $i
            $lEffectStructAddress = MemoryReadPtr($mBasePointer, $lOffset, 'ptr')
            For $j = 0 To $lEffectCount[1] - 1
                $lEffectSkillID = MemoryRead($lEffectStructAddress[1] + 24 * $j, 'long')
                If $lEffectSkillID = $aSkillID Then Return Ptr($lEffectStructAddress[1] + 24 * $j)
            Next
        EndIf
    Next
EndFunc

Func GetSkillTimerEx()
    Static Local $lExeStart = MemoryRead($mSkillTimer, 'dword')
    Local $lTickCount = DllCall($mKernelHandle, 'dword', 'GetTickCount')[0]
    Return Int($lTickCount + $lExeStart, 1)
EndFunc
Wonderful! Works great! Would you have a solution for GetSkillBarSkillRecharge() ? It's also bugged And this goes beyond my understanding of coding unfortunately
Pmolik1809 is offline  
Old 07/01/2020, 20:22   #200
 
elite*gold: 0
Join Date: Apr 2017
Posts: 30
Received Thanks: 14
Quote:
Originally Posted by list comprehension View Post
Yep, very reason why you never see effective UW farming bots or full run bots like full fow clear,doa, and uw posted. One those bots take a lot of work and also its asking for a ban or fix put in to break them. I fully expect a ban wave coming with the level of bots in gtob right now and pve zones.
they will clear out teqs ha and jq bots but wont fix the problem because it would affect gwtoolbox at this point, everything is so closely tied. i would say releasing any of those bots will end up on teqs website for sale and then him spamming it for sale in kamadan which means immediate public attention. sucks but best to keep your tricks a secret or they get fixed. experienced this many times..
3ampoke is offline  
Old 07/02/2020, 14:11   #201
 
elite*gold: 0
Join Date: Apr 2020
Posts: 19
Received Thanks: 2
I would add that GetSkillBarSkillRecharge() only works sometimes; which is funny when you talk about "code" that should work the same everytime.

Most of the time this returns some weird similar value like "492900010" (instead of, for exemple, 30000 if the skill if 30 seconds away from being back up) and sometimes it returns the correct thing.

It never switches from one to another like that, it appears its more related to something bigger (restarting the machine, something like that)
anyway I too am unsure why it doesn't reliably work...any idea?
sadosan is offline  
Old 07/02/2020, 21:05   #202
 
elite*gold: 0
Join Date: Sep 2018
Posts: 83
Received Thanks: 63
Quote:
Originally Posted by sadosan View Post
I would add that GetSkillBarSkillRecharge() only works sometimes; which is funny when you talk about "code" that should work the same everytime.

Most of the time this returns some weird similar value like "492900010" (instead of, for exemple, 30000 if the skill if 30 seconds away from being back up) and sometimes it returns the correct thing.

It never switches from one to another like that, it appears its more related to something bigger (restarting the machine, something like that)
anyway I too am unsure why it doesn't reliably work...any idea?
Wondering if you maybe need to refresh / fetch your agents before calling this function, as I think it may not be refreshed without updating the agent struct. I have experienced something similar with GetisCasting() - it would not update unless the Agentstruct was updated.
logicdoor is offline  
Old 07/03/2020, 02:15   #203
 
elite*gold: 0
Join Date: Apr 2020
Posts: 19
Received Thanks: 2
Quote:
Originally Posted by logicdoor View Post
Wondering if you maybe need to refresh / fetch your agents before calling this function, as I think it may not be refreshed without updating the agent struct. I have experienced something similar with GetisCasting() - it would not update unless the Agentstruct was updated.
I feel it kinda does that through GetSkillBar() which is called in GetSkillbarSkillRecharge(), by calling
Code:
Func GetHeroID($aHeroNumber)
	         If $aHeroNumber == 0 Then Return GetMyID()
but I could be wrong. Do you suggest something specific? Like recreating the agent struct? Like in GetAgentByID() for exemple?


Thanks for the feedback btw!
sadosan is offline  
Old 07/03/2020, 18:29   #204
 
elite*gold: 0
Join Date: Apr 2020
Posts: 19
Received Thanks: 2
Quote:
Originally Posted by CoderAndy View Post
@

i use this code with the rest that i posted for GetSkillbarSkillRecharge, don't forget the Ex for testing, plz let me know your findings.
Code:
Func GetSkillbarSkillRechargeEx($aSkillSlot, $aHeroNumber = 0, $aPtr = GetSkillbarPtrEx($aHeroNumber))
	$aSkillSlot -= 1
	$lTimestamp = MemoryRead($aPtr + 12 + $aSkillSlot * 20, 'dword')
	If $lTimestamp = 0 Then Return 0
	Return $lTimestamp - GetSkillTimerEx()
EndFunc   ;==>GetSkillbarSkillRechargeEx

Func GetSkillbarPtrEx($aHeroNumber = 0)
	Local $lOffset[5] = [0, 24, 76, 84, 44]
	Local $lHeroCount = MemoryReadPtr($mBasePointer, $lOffset)
	Local $lOffset[5] = [0, 24, 44, 1776]
	For $i = 0 To $lHeroCount[1]
		$lOffset[4] = $i * 188
		Local $lSkillbarStructAddress = MemoryReadPtr($mBasePointer, $lOffset)
		If $lSkillbarStructAddress[1] = GetHeroID($aHeroNumber) Then Return $lSkillbarStructAddress[0]
	Next
EndFunc   ;==>GetSkillbarPtrEx

Now it's back to returning me back values like "4295009907" again... and it will probably work all of the sudden in some runs/hours/reboots. I don't get it

edit some hours later : And now it works of course Old code, your code, both work sometimes and don't other times!
sadosan is offline  
Old 07/04/2020, 04:03   #205
 
elite*gold: 0
Join Date: Apr 2020
Posts: 19
Received Thanks: 2
Code:
Func KeepUpBoon()
	Local $timeRemainingEighthSpell
	Local $timeRemainingSeventhSpell
	$target = GetNearestEnemyToAgent(-2)
	ChangeTarget($target)
	
	If GetSkillbarSkillRechargeEx(8) == 0 and GetEnergy(-2)>=10 Then UseSkillEx(8, -2)
	
	$timeRemainingEighthSpell = GetSkillbarSkillRechargeEx(8)
	Update("skill #8 is " & $timeRemainingEighthSpell / 1000 & " seconds away from being back up")
	If $timeRemainingEighthSpell < 4500 Then
		If GetDistance($target, -2) > 1150 and GetDistance($target, -2) < 1850 Then
			Update("should sleep " & $timeRemainingEighthSpell / 1000 & " seconds for boon #8")
			Move(DllStructGetData(GetAgentByID(-2),'X'), DllStructGetData(GetAgentByID(-2),'Y'))
			Sleep($timeRemainingEighthSpell)
		EndIf
	EndIf
	
	PingSleep(150)
	
	If GetSkillbarSkillRechargeEx(7) == 0 and GetEnergy(-2)>=5 Then UseSkillEx(7, -2)
	
	$timeRemainingSeventhSpell = GetSkillbarSkillRechargeEx(7)
	Update("skill #7 is " & $timeRemainingSeventhSpell / 1000 & " seconds away from being back up")
	If $timeRemainingSeventhSpell < 4500 Then
		If GetDistance($target, -2) > 1150 and GetDistance($target, -2) < 1850 Then
			Update("should sleep " & $timeRemainingSeventhSpell / 1000 & " seconds for boon #7")
			Move(DllStructGetData(GetAgentByID(-2),'X'), DllStructGetData(GetAgentByID(-2),'Y'))
			Sleep($timeRemainingSeventhSpell)
		EndIf
	EndIf
EndFunc
This is the function I use it inside. The code very often loops to it. It originally comes from the Refeather bot for ritualist but I enhanced it.

Basically what happens is that when "it doesn't properly work" it never enters the condition "< 4500" and so doesn't do the rest of the important logic.
isntead of returning something like "25000" (for 25s) it returns some very very high value (10digits?)

which of course prevents the code to enter those conditions.


With your way of using it, it's easy because you wait for it to be recharged. I too in my code check if the skill is recharged by using
Code:
GetSkillbarSkillRechargeEx(n) == 0
and it always works.
it's just when I want to get WHEN is the skill back up that it starts messing around
sadosan is offline  
Old 07/04/2020, 05:47   #206
 
elite*gold: 0
Join Date: Sep 2018
Posts: 83
Received Thanks: 63
Quote:
Originally Posted by sadosan View Post
I feel it kinda does that through GetSkillBar() which is called in GetSkillbarSkillRecharge(), by calling
Code:
Func GetHeroID($aHeroNumber)
	         If $aHeroNumber == 0 Then Return GetMyID()
but I could be wrong. Do you suggest something specific? Like recreating the agent struct? Like in GetAgentByID() for exemple?


Thanks for the feedback btw!
Yes something like this, GetCurrentTarget() did it for me, but it basically calls the agentstruct and updates it. But it is using GetAgentbyID() I think.
logicdoor is offline  
Old 07/04/2020, 13:29   #207
 
elite*gold: 0
Join Date: Apr 2020
Posts: 19
Received Thanks: 2
Lol, you don't understand? I will explain you....

What happens with standard refeather ritualist is that the bot REALLY OFTEN dies because it acts retarded with it's boons.
What it does originally is wait till the effect disapears on you to recast it (very bad) which makes it cast TWO 2 seconds spells right when it aggros a full pack of mobs sometimes, meaning high chance of diying.

My first fix is to cast the boons on reload because it correlates with the spirits cooldown, meaning most of the time (excluding exceptions and fast recasts) he will cast the boons BEFORE or AFTER the fight.

I added another security, which you didn't understand.
If a boon is about to (<4.5s) be back from CD, and IF he is not already in a fight (nearest enemy >1150) but also rather close to an enemy (1150->1850) then Sleep() for the amount of time the boon is cooldown.

With this behavior, I think I have divided the bots death by 3 or 4, its a tremendeous improvement in efficiency to a bot that's already way less efficient than the Dervish version.

Quote:
but before that you already called to cast the skill at 0 recharge and you do the same thing for 2 different skills in the same func ???
if it enters
Code:
 If GetSkillbarSkillRechargeEx(8) == 0 and GetEnergy(-2)>=10 Then UseSkillEx(8, -2)
it wont enter
Code:
If $timeRemainingEighthSpell < 4500 Then


Quote:
then move to your position ???
KeepUpBoons() is called in a loop that has move commands. If I just Sleep(), i will just pause the script but the character will still run to the location he was told to go to.

Quote:
i don't think you can ask from the func to give you < or > times
Of course you can! It does actually work.
It's even how the function says it works, it should return time remaining in miliseconds! Lol...





When GetSkillbarSkillRecharge() works like it should, the bot behaviour is close to perfect, it really looks how a human playing that bar should be.
sadosan is offline  
Old 07/04/2020, 14:02   #208
 
elite*gold: 0
Join Date: Apr 2020
Posts: 19
Received Thanks: 2
Humm im really confused.

First of all
Code:
	If $timeRemainingEighthSpell = 4500 And $timeRemainingSeventhSpell = 4500 Then
wtf? I will never go into that condition, both skills need to be exactly 4500 milliseconds away from being back up? Thats 1 in a milion chances to happen


Second of all, even if I change it to
Code:
	If $timeRemainingEighthSpell < 4500 And $timeRemainingSeventhSpell < 4500 Then
Then it doesn't take into account fast recharges. If one of the two boons has fast recharge, then it will be desynchronized from the other one cooldown and the condition will not be met.







The script itself works perfectly, my problem is only about what
Code:
GetSkillbarSkillRechargeEx()
returns. if it returns the correct value (in miliseconds) consistantly, then the scrips works perfect and handles every needed cases.
sadosan is offline  
Old 07/04/2020, 14:47   #209
 
elite*gold: 0
Join Date: Apr 2020
Posts: 19
Received Thanks: 2
I actually planned to have a small security check with effects duration once I managed to fix GetSkillbarSkillRecharge() to make it very robust...but my hope of getting GetSkillbarSkillRecharge() fixed is vanishing slowly


If I can't get it to work like it should, I will indeed work around with effects timers, in hope the effect functions don't act like GetSkillbarSkillRecharge() by returning wrong values :/
sadosan is offline  
Old 07/05/2020, 16:11   #210
 
elite*gold: 0
Join Date: Feb 2016
Posts: 45
Received Thanks: 38
Fix for the LeaveGroup() and KickHero() functions

Correct headers are;
Code:
Global Const $HEADER_HERO_ADD = 0x21
Global Const $HEADER_HERO_KICK = 0x22
Global Const $HEADER_HEROES_KICK = 0x22
Code:
Func LeaveGroup($aKickHeroes = True)
	If $aKickHeroes Then KickAllHeroes()
	Return SendPacket(0x4, $HEADER_PARTY_LEAVE)
EndFunc   ;==>LeaveGroup

Func KickAllHeroes()
	Return SendPacket(0x8, $HEADER_HEROES_KICK, 0x26)
EndFunc   ;==>KickAllHeroes
I've reworked the GetHeroID function (renamed _GetHeroID), it now returns the HeroID and not an AgentID, I'm not sure if that was intended but hey ho. Without this you won't be able to use the HeroKick functions, or any other functions that require a HeroID.

Code:
Func _GetHeroID($aHeroNumber)
	If $aHeroNumber == 0 Then Return 0
	Local $lOffset[6]
	$lOffset[0] = 0
	$lOffset[1] = 0x18
	$lOffset[2] = 0x4C
	$lOffset[3] = 0x54
	$lOffset[4] = 0x24
	$lOffset[5] = 0x18 * ($aHeroNumber - 1) + 8
	Local $lAgentID = MemoryReadPtr($mBasePointer, $lOffset)
	Return $lAgentID[1]
EndFunc   ;==>GetHeroID
You can store your existing party setup into an .ini config for example.

deroni93 is offline  
Reply


Similar Threads Similar Threads
Leader/followbot - Updated with new GWA2/headers (functional)
07/21/2019 - GW Exploits, Hacks, Bots, Tools & Macros - 29 Replies
EDIT: Updated 6/16/18 Hey all, I updated the follow/leader bot with the new headers (I think there were a few that I didn't bother updating, since the script doesn't seem to use them anywhere). I haven't done extensive testing, but it's working for me so far. Please let me know if you get any errors/crashes, and I'll attempt to fix them. Enjoy!
[GWA2] How to chase after updated header values?
05/20/2018 - GW Bots - 10 Replies
Hi all, First post, but have been following the tips all over this forum for about 6 months since I started writing my own bots. Recently the server headers changed, and although it looks like the community have pulled through and released a new version of GWA2 to reflect it, there are other headers that I'm using, that aren't in the vanilla GWA2 code. SendPacket(0x14, 0x6F, $lItemID, $lQuantity, $lBagID, $aSlot - 1) The above command would have previously told GW to move $lQuantity...
GWA2 A/mo Vaettir Bot; Need Help!!
02/19/2012 - GW Bots - 1 Replies
http://www.elitepvpers.com/forum/gw-exploits-hacks -bots-tools-macros/1568881-gwa-vaettir-mo-farm-bot .html ENGLISH: I can't seem to get this to work. I've spent 3-4 hours, read the entire thread here, tried to search for a detailed guide on how to get this to work but it's not. What I've done was: Downloaded the 2 files shown in the Original Post... "GWA2 A_Mo Vaettirs Farm by bl4ck3lit3.zip" Extracted it to desktop Ran GW.EXE as admin. Set-up assassin with appropriate gear and...



All times are GMT +2. The time now is 16:46.


Powered by vBulletin®
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2021 elitepvpers All Rights Reserved.