Highly configurable and responsive World of Warcraft Classic pixel Grind Bot - No DLL injection or memory tampering, just screen capture and input simulation.
177
stars
121
forks
source link
Addon: [1.7.53] - Fix: improved way to detect kills by honoring cell show time. #572
Create a construct which has a fixed update time to periodically update the cell value(COMBAT_LOG_ITERATION_FRAME_CHANGE_RATE) is currently 5 update tick. This is tied to the FPS(higher the number it happens more often)
Make the ability to interrupt the deterministic update flow to react the change instantly meanwhile honouring the periodically update(when a kill happens, don't fully await the 5 update ticks, but rather show the value immediately, but make sure to show the value for the 5 update tick duration)
What left out is to record the actual event time, and based on that recorded time wait for at least COMBAT_LOG_ITERATION_FRAME_CHANGE_RATE duration
The problem:
Below certain amount of stable cell wait time - usually below 5 update tick - the system become unstable and the backend is unable to read with great certainty of the addon produced values. There are many factors such as unstable frame rate.
The code where used the following construct for detecting damageDone, damageTaken, deadGuid values by
The given code were not respected the COMBAT_LOG_ITERATION_FRAME_CHANGE_RATE duration and sometimes ended up showing the cell for 0 or 1 tick time which made the backend impossible to read the values.
its important to mention that, globalTick can overflow the 24bit resolution so have to account for negative subtraction. Based on the in-game FPS. With 60fps it can occurs about every 48-72 hours(if i did the math correctly)
The new code:
Adds more complexity, but it adds more reliability as well.
The original idea:
COMBAT_LOG_ITERATION_FRAME_CHANGE_RATE
) is currently 5 update tick. This is tied to the FPS(higher the number it happens more often)COMBAT_LOG_ITERATION_FRAME_CHANGE_RATE
durationThe problem:
damageDone
,damageTaken
,deadGuid
values byCOMBAT_LOG_ITERATION_FRAME_CHANGE_RATE
duration and sometimes ended up showing the cell for 0 or 1 tick time which made the backend impossible to read the values.globalTick
can overflow the 24bit resolution so have to account for negative subtraction. Based on the in-game FPS. With 60fps it can occurs about every 48-72 hours(if i did the math correctly)The new code: