Jump to content
Sign in to follow this  
Lax0450

Looping my functions

Recommended Posts

Lax0450

This is one of my first scripts so be patient, but it works almost completely until it gets to Call("Attacking") in the function NT. Am i unable to then recall the original function its being called in such as i have done below? Also if I set NT to something greater than one it just does the NT function over and over. Its possible the problem is with my $conf variable and I'm going to be looking into that a bit more. If you have any suggestions they would be greatly appreciated. If all looks ok then its most likely my $conf variable and ill just fool around with that for a bit.

Here's where I'm having the problem.

#include <IE.au3>
#include <String.au3>
#include <array.au3>
$page=_IEAttach("Blacklist")
$body=_IEBodyReadText($page)

$Conf=_StringBetween( $body, "Confidence: " , "/", -1)
$conf=Number($conf[0])


$LF=_StringBetween( $body, "Life force: " , "/", -1)
$NLF=StringReplace( $LF[0], ",", "")
$NLF=Number($NLF)


$MaxLF=_StringBetween( $body, "LF: "&$LF[0]&"/" , "Conf", -1)
$NMaxLF=StringReplace($MaxLF[0], ",", "")
$NMaxLF=Number($NMaxLF)
$NT=1
$used=0

Func Attacking()
    $conf=_StringBetween( $body, "Confidence: " , "/", -1)
    $conf=Number($conf[0])
    While $conf>0
        _IELinkClickByText($page, "attack")
        If $NLF<$NMaxLF/2 then
            _IELinkClickByText($page, "House")
            _IELinkClickByText($page, "Full Heal")
        EndIf
        _IELinkClickByText($page, "Blacklist")
        $body=_IEBodyReadText($page)
        $conf=_StringBetween( $body, "Confidence: " , "/", -1)
        $conf=Number($conf[0])
        $LF=_StringBetween( $body, "Life force: " , "/", -1)
        $NLF=StringReplace( $LF[0], ",", "")
        $NLF=Number($NLF)
        $MaxLF=_StringBetween( $body, "LF: "&$LF[0]&"/" , "Conf", -1)
        $NMaxLF=StringReplace($MaxLF[0], ",", "")
        $NMaxLF=Number($NMaxLF)
    Wend
    If $used<$NT then
        Call("NT")
    Endif
Endfunc

Func NT()
    $used=$used+1
    _IELinkClickByText($page, "--------'s House")
    _IELinkClickbytext($page, "use")
    _IELinkClickByText($page, "Confirm")
    _IELinkClickByText($page, "Blacklist")
    Call("Attacking")
EndFunc

Call("Attacking")
Edited by Lax0450

Share this post


Link to post
Share on other sites
Paulie

The Call() function has a special purpose, It should not be used to call function regularly. To do that, You should use function notation, ie.

MyFunc($MyParameter)

So You should call your NT() function like this:

If $used<$NT then
        NT() ;Calls NT() with no parameters
Endif

Same applies for Attacking()

Share this post


Link to post
Share on other sites
Lax0450

Thank you very much, i knew it was odd having a function to call my functions but i saw it there so i thought perhaps it was necessary. And would you look at that I found my error after sitting here for hours trying to figure it out after painful test since it takes about 8 mins of runtime to finally see if i fixed my error.

If youre curious:

Error was in the $conf variable, since its constantly changing as the page refreshes the body needed to be refreshed also. So as i redefined the variable i was really doing absolutely nothing. The body text ($body variable) needs to be redefined each time i'm redefining my $conf variable. The reason I couldnt figure it out is that my while loop the $conf variable is changing, but thats because i redefined $body!

Thanks a lot ---- Lax0450

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×