EQ2Interface

EQ2Interface (https://www.eq2interface.com/forums/index.php)
-   Request (https://www.eq2interface.com/forums/forumdisplay.php?f=25)
-   -   Autoattack timer (https://www.eq2interface.com/forums/showthread.php?t=11124)

gm9 11-17-2008 04:58 AM

Aditu's post above is quite interesting. I see now why Rothgar thinks that a bar counting down the delay is too much of a hack, I wouldn't have thought that the variance would be this big.

So given Aditu's data you will need a way to trigger a progressbar restart even if it has not yet reached zero. While you could do that OnShow of the combat bubbles that wouldn't take care of a dual-wield situation because you could not know whether the second value is from your second weapon or again from your first weapon with a big variance, right? Unless we are certain that the variance always affects both weapons in the same way, but unless they have exactly the same delay that would be unlikely. So unless there is something else that can be used as a trigger which I am not seeing I'd say we need Rothgar's data.

Jida 11-17-2008 11:41 AM

Combat bubbles
 
There is a difference with auto attack combat bubbles and non auto attack combat bubbles.

If you disable all bubbles but your own its easier to see.

The difference is the outline around the numbers that fly above the monsters head.

So, if you can somehow in the UI see the combat bubble spam, and only reset it when you see the appropriate type appear. Then all is well in the world.

gm9 11-17-2008 01:01 PM

Yes, can be done, but how do you take care of dual wield (my post above), I don't think there is any way to differentiate which weapon the bubble is for, is there?

Jida 11-17-2008 01:18 PM

Only time that would be an issue is if the delays are different.

Otherwise its a non issue. because they will be naturally synced. and you just need to reset the timer from the last hit.

Most of the people I know have delays synced for melee weapons.

you switch to ranged attack, you will know that it switched and therefore use the bow/throwing weapon delay.

ananigma 11-17-2008 02:38 PM

How do you get the UI to read Combat Bubbles?

gm9 11-17-2008 02:49 PM

eq2ui_proxyactor.xml, add an OnShow event script to the CombatBubble page to trigger the bar to count down if LowerText has a specific ShadowStyle set (or not set). You probably do not need to read the actual value of the bubble unless there is something else sharing the same ShadowStyle which is not auto-attack related.

Jida 11-17-2008 02:59 PM

Sounds like its all worked out IMO.

If someone uses 2 different delays its worthless.

But most that I know don't care.

dragowulf 11-17-2008 10:21 PM

How can you make the script constant??????? I've noticed that EQ2 does not respond very well to loops.

I made an auto attack timer work, but it only works for when the auto attack is triggered and when you toggle the auto attack on/off the game crashes.

Any ideas?

Drumstix42 11-17-2008 10:23 PM

Post the code, and perhaps we can find a better route?

dragowulf 11-17-2008 10:40 PM

1 Attachment(s)
Ok. I'm using a LocationEffector. To make the delay count down, I took the Size of the movementbar and divided it by the Delay, which equals the Speed of the LocationEffector, which in turn counts down the delay number exactly and perfectly. :p

Code:

<?xml version="1.0" encoding="utf-8"?>
<Page eq2usescomwndcontrols="true" Location="317,572" Name="AutoAttack" PackLocation="center,bottom" ScrollExtent="429,43" Size="429,43" UserMovable="true">
<Page eq2usescomwndcontrols="true" Loaded="true" MaximumSize="429,43" Name="AutoAttackTimer" Press="true" ScrollExtent="429,43" Size="429,43">
<Text AbsorbsInput="false" Font="/TextStyles.Large.LargeStyle" Margin="1,0,2,2" Name="AutoAttackText" PackSize="absolute,fixed" ScrollExtent="429,22" ShadowStyle="/ShadowStylesNew.OutlineDrop.style" Size="429,22" TextAlignment="Center" TextColor="#F0D080">Primary Auto Attack</Text>
<Text AbsorbsInput="false" Color="#00FF40" DynamicData="/GameData.Stats.Primary_Delay" Enabled="false" Font="/TextStyles.Small.SmallStyle" Location="0,22" Name="PrimaryDelayValue" ScrollExtent="39,12" ShadowStyle="/ShadowStylesNew.Drop.style" Size="39,12" TextAlignment="Right" TextAlignmentVertical="Center" UserScrollable="false">10.0</Text>
<Page AbsorbsInput="false" Name="CalcPage">
<Button AbsorbsInput="false" DynamicData="/GameData.Self.AutoAttack" MaximumSize="0,0" Name="AutoAttack" OnShow="SpeedCalc=350/(Parent.Parent.PrimaryDelayValue.Text)
Parent.Parent.MoveRight.Speed=SpeedCalc ## &apos;,0&apos;
Parent.Parent.ProgressPage.ProgressTimer.Visible=false
Parent.Parent.ProgressPage.ProgressTimer.Visible=true" Opacity="0.000" Rotation="0.500" SpeedCalc="35.000" TextMaxLines="0" Visible="false" />
</Page>
<Page AbsorbsInput="false" Location="43,24" Name="ProgressPage" PackLocation="top,left" ScrollExtent="350,8" Size="350,8">
<Page BackgroundOpacity="0.475" Location="68,0" Name="Marker20" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Page BackgroundOpacity="0.475" Location="137,0" Name="Marker40" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Page BackgroundOpacity="0.475" Location="205,0" Name="Marker60" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Page BackgroundOpacity="0.475" Location="274,0" Name="Marker80" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Page BackgroundColor="#FF0000" BackgroundOpacity="1.000" Location="-350,0" Name="ProgressTimer" OnHide="Location=&apos;-350,0&apos;" OnShowEffector="MoveRight" PackSize="a,f" RStyleDefault="ProgressBar" ScrollExtent="350,8" Size="350,8" Visible="false" />
</Page>
<LocationEffector Loop="true" Name="MoveRight" Speed="35,0" />
<RectangleStyle Center="progress_fill" CenterShrinkV="true" CenterStretchH="false" Name="ProgressBar" NorthStretch="false" SouthStretch="false" TitleStretch="false" WestStretch="false" />
<ImageStyle Name="progress_fill">
<ImageFrame Name="progress_fill" Source="images/window_elements_generic.dds" SourceRect="218,464,219,470" />
</ImageStyle>
<Page AbsorbsInput="false" BackgroundOpacity="1.000" Location="40,21" Name="Frame" RStyleDefault="/rectlist.chat_bubble_frame" ScrollExtent="356,14" Size="356,14" />
<Image AbsorbsInput="false" Location="43,24" Name="Bkg" PackSize="absolute,fixed" ScrollExtent="350,8" Size="350,8" SourceRect="220,472,380,478" SourceResource="/images/window_elements_generic.dds" />
</Page>
</Page>


speedycerv 11-17-2008 11:25 PM

nice job on the progress. /cheer

gm9 11-18-2008 02:56 AM

Quote:

Originally Posted by dragowulf (Post 77358)
How can you make the script constant??????? I've noticed that EQ2 does not respond very well to loops.

I made an auto attack timer work, but it only works for when the auto attack is triggered and when you toggle the auto attack on/off the game crashes.

Any ideas?

If you don't care about misses just trigger it from the combat bubble exclusively. Or loop it exactly once (which is no problem even in view of EQ2's loop detection) and assume you won't miss more than once in a row. Increase that number until you have a reasonable likelyhood of success. But keep triggering from the bubble anyway to resync.

dragowulf 11-18-2008 08:23 AM

Quote:

Originally Posted by gm9 (Post 77365)
If you don't care about misses just trigger it from the combat bubble exclusively. Or loop it exactly once (which is no problem even in view of EQ2's loop detection) and assume you won't miss more than once in a row. Increase that number until you have a reasonable likelyhood of success. But keep triggering from the bubble anyway to resync.

I'm not sure how I would do that :confused:. And wouldn't the miss combat bubbles also trigger it???

I already have problems with my code. It only works initially when the first auto attack is triggered, but when you turn off auto attack and then turn it back on it crashes. Maybe there's a flaw in my code.

Maybe someone should take a look. :o
Or
Any ideas???

gm9 11-18-2008 09:14 AM

If there combat bubbles telling you that you missed then you need to trigger from those (assuming a miss consumes an auto-attack). Sorry, I seriously haven't much of a clue about auto-attacking. ;)

dragowulf 11-18-2008 08:14 PM

Quote:

Originally Posted by gm9 (Post 77365)
If you don't care about misses just trigger it from the combat bubble exclusively. Or loop it exactly once (which is no problem even in view of EQ2's loop detection) and assume you won't miss more than once in a row. Increase that number until you have a reasonable likelyhood of success. But keep triggering from the bubble anyway to resync.

Combat bubbles don't work. I just tried and nothing :(

dragowulf 11-18-2008 09:33 PM

When I turn off the autoattack and turn it back on, I get an error. I don't know why or how, but that's what I'm getting. I've tried sooooooooooooooooooooooo many ways around it, but every attempt is a failed one.

The error I get when the client shuts down is:
runtime error R6025
- pure virtual function call

dragowulf 11-19-2008 12:58 AM

I got it to resynch, but it breaks randomly. I'm still not sure how to solve the 6025 error (check my last post) though. That remains a mystery.

Heres my latest code:
Code:

<?xml version="1.0" encoding="utf-8"?>
<Page eq2usescomwndcontrols="true" Location="317,572" Name="AutoAttack" OnHide="Visible=true
show_window Custom.AutoAttack" PackLocation="center,bottom" ScrollExtent="429,43" Size="429,43" UserMovable="true">
<Text AbsorbsInput="false" Font="/TextStyles.Large.LargeStyle" Margin="1,0,2,2" Name="AutoAttackText" PackSize="absolute,fixed" ScrollExtent="429,22" ShadowStyle="/ShadowStylesNew.OutlineDrop.style" Size="429,22" TextAlignment="Center" TextColor="#F0D080">Primary Auto Attack</Text>
<Text AbsorbsInput="false" Color="#00FF40" DynamicData="/GameData.Stats.Primary_Delay" Enabled="false" Font="/TextStyles.Small.SmallStyle" Location="0,22" Name="PrimaryDelayValue" ScrollExtent="39,12" ShadowStyle="/ShadowStylesNew.Drop.style" Size="39,12" TextAlignment="Right" TextAlignmentVertical="Center" UserScrollable="false">2.0</Text>
<Page AbsorbsInput="false" Location="43,24" Name="ProgressPage" PackLocation="top,left" ScrollExtent="350,8" Size="350,8">
<Page BackgroundOpacity="0.475" Location="68,0" Name="Marker20" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Page BackgroundOpacity="0.475" Location="137,0" Name="Marker40" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Page BackgroundOpacity="0.475" Location="205,0" Name="Marker60" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Page BackgroundOpacity="0.475" Location="274,0" Name="Marker80" PackLocation="npn,nfn" ScrollExtent="1,8" Size="1,8" />
<Button AbsorbsInput="false" BackgroundColor="#FFFFFF" BackgroundOpacity="1.000" DynamicData="/GameData.Self.AutoAttack" Location="0,0" Name="CalcTimer" OnShow="Parent.ProgressTimer.Press=true" Opacity="1.000" Rotation="0.500" Size="0,0" Visible="false" />
<Button AbsorbsInput="false" BackgroundColor="#FFFFFF" BackgroundOpacity="1.000" Location="-350,0" Name="ProgressTimer" OnEffectFinished="Location=&apos;-350,0&apos;
Parent.ProgressTimer2.Press=true" OnPress="SpeedCalc=350/Parent.Parent.PrimaryDelayValue.Text
Parent.Parent.MoveRight.Speed=SpeedCalc ## &apos;,0&apos;" OnPressEffector="MoveRight" Opacity="1.000" Rotation="0.500" Size="350,8" Visible="false" />
<Button AbsorbsInput="false" BackgroundColor="#FFFFFF" BackgroundOpacity="1.000" Location="-350,0" Name="ProgressTimer2" OnEffectFinished="Location=&apos;-350,0&apos;
Parent.ProgressTimer.Press=true" OnPress="SpeedCalc=350/Parent.Parent.PrimaryDelayValue.Text
Parent.Parent.MoveRight.Speed=SpeedCalc ## &apos;,0&apos;" OnPressEffector="MoveRight" Opacity="1.000" Rotation="0.500" Size="350,8" Visible="true" />
</Page>
<LocationEffector Name="MoveRight" Speed="0,0" />
<RectangleStyle Center="progress_fill" CenterShrinkV="true" CenterStretchH="false" Name="ProgressBar" NorthStretch="false" SouthStretch="false" TitleStretch="false" WestStretch="false" />
<ImageStyle Name="progress_fill">
<ImageFrame Name="progress_fill" Source="images/window_elements_generic.dds" SourceRect="218,464,219,470" />
</ImageStyle>
<Page AbsorbsInput="false" BackgroundOpacity="1.000" Location="40,21" Name="Frame" RStyleDefault="/rectlist.chat_bubble_frame" ScrollExtent="356,14" Size="356,14" />
<Image AbsorbsInput="false" Location="43,24" Name="Bkg" PackSize="absolute,fixed" ScrollExtent="350,8" Size="350,8" SourceRect="220,472,380,478" SourceResource="/images/window_elements_generic.dds" />
</Page>

Anyone home??? lol :p

Jida 11-19-2008 09:14 AM

Quote:

Originally Posted by dragowulf (Post 77474)
When I turn off the autoattack and turn it back on, I get an error. I don't know why or how, but that's what I'm getting. I've tried sooooooooooooooooooooooo many ways around it, but every attempt is a failed one.

The error I get when the client shuts down is:
runtime error R6025
- pure virtual function call

http://support.microsoft.com/kb/125749

I would contact the EQ2 Dev team regarding this issue and send them your logs.

It seems that you inadvertently have found a bug with the interface and virtual function calls.

nluerdarea 11-19-2008 11:21 AM

So, it crashes to desktop randomly?

And you said the miss combat bubbles do not work at all?

dragowulf 11-19-2008 06:07 PM

Quote:

Originally Posted by nluerdarea (Post 77524)
So, it crashes to desktop randomly?

And you said the miss combat bubbles do not work at all?

No it doesn't crash randomly. My code seems to work (besides the code's loop breaking randomly). When I first initiate auto attack I don't crash, it only crashes and gives me the 6025 error when I re-initiate the auto attack.

The combat bubbles do not toggle visiblilty on and off themselves. With a previous version of my code I tried to make them toggle on and off in order to resync the progressbars and I got a 6025 error.

gm9 11-19-2008 06:08 PM

Quote:

Originally Posted by dragowulf (Post 77558)
The combat bubbles do not toggle visiblilty on and off themselves.

What do you mean? OnShow scripting should work, I know I used that in the past, would be strange if they changed that (make sure the page is set to visible=false in the xml).

dragowulf 11-19-2008 06:14 PM

Quote:

Originally Posted by gm9 (Post 77560)
What do you mean? OnShow scripting should work, I know I used that in the past, would be strange if they changed that (make sure the page is set to visible=false in the xml).

I get the error becuase I had the code to toggle that in the auto attack onshow and for some reason it crashes. Use my code and then try it.

gm9 11-19-2008 06:25 PM

Had not looked at your code yet. What you did was to have ProgressTimer call ProgressTimer2 and vice versa in an endless loop. And when you toggle autoattack again you trigger the already running loop again. That's certain to crash the game, you can't do that. Don't ever do endless loops.

dragowulf 11-19-2008 06:27 PM

Quote:

Originally Posted by gm9 (Post 77563)
Had not looked at your code yet. What you did was to have ProgressTimer call ProgressTimer2 and vice versa in an endless loop. And when you toggle autoattack again you trigger the already running loop again. That's certain to crash the game, you can't do that. Don't ever do endless loops.

That is my previous code. It didn't work even with the first ProgressTimer. That was just an experiment (it didn't crash the gaem, but the loop breaks randomly). I still got the crash with JUST the first ProgressTimer.

gm9 11-19-2008 06:29 PM

I looked at the latest code I see, which is post #167?


All times are GMT -5. The time now is 12:40 PM.

vBulletin® - Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© MMOUI