well same can be achieved with autoit, is just matter of sending a key to the game client, now using your approach of just spaming or sending a key without checking 1.- if the buff was correctly applied 2.- if the key was even sent (due to lag, other key being processed such as aoe key) 3.- if there is enough mana to cast the skill, seems a lot of hassle for just buffing.
granted, can work on a very specific situation and is patch independent, however if you want to bot and heavily rely on a buff such as guardian wall for def or bloodlust for more dmg output, i shouldnt use it at all.
Buffing using autoit and memory addresses is not that hard to acomplish, and even if the addresses changes every now and then, is just a "read only" memory address, since you are only checking if the buff is active or not so is unlikely that the devs of the game will try to hide it or recode it in a way that is hard to find.
here is a pseudo code or algorithm to implement buffing, something similar of what i do in my private bot:
Code:
function isBuffActive(bufftype)
Buff =memoryRead(BuffTypeAddress)
if Buff > 0 then
return true
else
return false
end if
end func
//implementation
// user selected and filled the required fields for buffing in gui
if Buff is set and not IsBuffActive(bufftype)
then
SendKeyToGameClient(BuffAssociatedKey)
end if
u can also do this checking every 3 mins to save some cpu cycles, and even get in a loop sending continously the key till the buff is active so u can be sure the buff was applied
BuffAddress isnt hard to get using ce, for instance using Bloodlust as an example, just use the buff and search for a value equal to the % of dmg that the buff adds to your char, then take off your weapon and in next search put exact value 0 since the value changed from 20%(at max lvl) to 0% rinse and repeat till u get only one address, and every buff address can be found analogy to bloodlust.
Hope it helps and nevertheless your suggestion and approach was useful