Cloudrip brawl help

It says I have an infinate loop, the problem is I don’t see it

j = 0
soldierIndex = 0
soldiers = 0
while True:
    item = hero.findNearestItem()
    enemy = hero.findNearestEnemy()
    if enemy and hero.health >= hero.maxHealth / 2:
        while hero.gold >= hero.costOf("soldier"):
            hero.summon("soldier")
        while hero.gold < hero.costOf("soldier"):
            while soldierIndex < len(soldiers):
                soldier = soldiers[soldierIndex]
                hero.command(soldier, "attack", enemy)
                soldierIndex += 1
        hero.attack(enemy)
    if enemy and hero.health < hero.maxHealth / 2:
        while hero.gold >= hero.costOf("soldier"):
            hero.summon("soldier")
        while hero.gold < hero.costOf("soldier"):
            while soldierIndex < len(soldiers):
                soldier = soldiers[soldierIndex]
                hero.command(soldier, "attack", enemy)
                soldierIndex += 1
        hero.consecrate()
        c = pet.isReady("shapeShift")
        if c:
            pet.shapeShift()
    elif item:
        hero.move(item.pos)
    else:
        hero.move({"x" : 60, "y" : 51})

I can see that my hero instantly chooses to target some gold, meaning he is doing something. But, the game says I have no target. (the game puts the little red circle around the nearest coin marking the fact that my hero has targeted it, but the game then stops.)

I also tries using a healing ring to make it so my code isnt always going to the second “if” after a while, but nope. Nothing. It makes it stop at 3 seconds, (a little longer) but it still stops.

I tried putting "pass’ everywhere, and it goes back to .04 seconds until the game stops.

j = 0
soldierIndex = 0
soldiers = 0
while True:
    item = hero.findNearestItem()
    enemy = hero.findNearestEnemy()
    if enemy and hero.health >= hero.maxHealth / 2:
        while hero.gold >= hero.costOf("soldier"):
            hero.summon("soldier")
            pass
        while hero.gold < hero.costOf("soldier"):
            while soldierIndex < len(soldiers):
                soldier = soldiers[soldierIndex]
                hero.command(soldier, "attack", enemy)
                soldierIndex += 1
                pass
            pass
        hero.attack(enemy)
        pass
    
    if enemy and hero.health < hero.maxHealth / 2:
        while hero.gold >= hero.costOf("soldier"):
            hero.summon("soldier")
            k = 1
            pass
        while hero.gold < hero.costOf("soldier") and k :
            while soldierIndex < len(soldiers):
                soldier = soldiers[soldierIndex]
                hero.command(soldier, "attack", enemy)
                soldierIndex += 1
                pass
            pass
        hero.consecrate()
        c = pet.isReady("shapeShift")
        if c:
            pet.shapeShift()
            pass
        pass
    elif item:
        hero.move(item.pos)
        pass
    else:
        hero.move({"x" : 60, "y" : 51})
        pass
    pass

@Chaboi_3000
@Deadpool198
you two have helped before, do you know anything?

I might be able to help.
You might want to use some functions.
Posting all your code in a while loop is very messy.
Also, to command your troops, why not use a for loop?
It’s easier.
Here is a piece of code that makes you summon soldiers, then command them to do stuff.


def command():
    friends = hero.findFriends()
    for friend in friends:
        if friend.type == 'soldier':
            enemy = friend.findNearestEnemy()
            if enemy:
                hero.command(friend, "attack", enemy)

def summon():
    item = hero.findNearestItem()
    
    if hero.gold > 20:
        hero.summon("soldier")
    elif item:
        hero.move(item.pos)
while True:
    command()
    summon()

Do you want to get coins and summon, or do you want to attack?

I want to summon while there are no enemies and attack when there are. But i might have it now

Why not summon in combat?
Soldiers can aid you if your fighting, even if you immediatlly summon them.
Archers, not so much

true, but if i do that they only attack one enemy. I need to command them to attack every single time a new enemy appears

friendIndex = 0
def charge():
    if friend:
        friends = hero.findFriends()
        soldier = friends[friendIndex]
        hero.command(friend, "attack", enemy)
    hero.attack(enemy)
    if hero.isReady("consecrate") == True:
        hero.consecrate()
def collectAndSummon():
    if hero.gold >= hero.costOf("soldier"):
        hero.summon("soldier")
    elif item:
        hero.move(item.pos)
while True:
    friend = hero.findNearest(hero.findFriends())
    enemy = hero.findNearestEnemy()
    item = hero.findNearestItem()
    if enemy:
        charge()
    elif item:
        collectAndSummon()

this is my code right now, and they only attack once as i said.

I am fixing it though

I added some more code and they still only attack once. Am I doing something wrong?

friendIndex = 0
def charge():
    if friend:
        friends = hero.findFriends()
        soldier = friends[friendIndex]
        hero.command(soldier, "attack", enemy)
        friendIndex += 1
    hero.attack(enemy)
    if hero.isReady("consecrate") == True:
        hero.consecrate()
def collectAndSummon():
    if hero.gold >= hero.costOf("soldier"):
        hero.summon("soldier")
    elif item:
        hero.move(item.pos)
while True:
    friend = hero.findNearest(hero.findFriends())
    enemy = hero.findNearestEnemy()
    item = hero.findNearestItem()
    if enemy:
        charge()
    elif item:
        friendIndex = 0
        collectAndSummon()

Look at the code is sent you.
I did FRIEND.findNearestEnemy()
They can attack multiple enemy targets.
I’e tested this code.
Try it.

Some errors in your code:
Consecrate can be used indefinitely:
It heals you, and won’t damage enemies.
Maybe you should only consecrate when you are low.

Just did that, same thing.
Its as if i am only commanding one but I should … oh wait

def command():
    friends = hero.findFriends()
    for friend in friends:
        if friend.type == 'soldier':
            enemy = friend.findNearestEnemy()
            if enemy:
                hero.command(friend, "attack", enemy)

def summon():
    item = hero.findNearestItem()
    
    if hero.gold > 20:
        hero.summon("soldier")
    elif item:
        hero.move(item.pos)
while True:
    command()
    summon()

Use this code.
It will make you get items, summon soldiers, and command them to attack THEIR nearest enemy.
You can customize it to suit your own purposes

1 Like

This should work why is the game telling me the len in len[freinds] should be defined?

friendIndex = 0
def charge():
    if friend:
        while friendIndex < len[friends]:
            friends = hero.findFriends()
            soldier = friends[friendIndex]
            badGuy = friend.findNearestEnemy()
            hero.command(soldier, "attack", badGuy)
            friendIndex += 1
    hero.attack(enemy)
    if hero.isReady("consecrate") == True:
        hero.consecrate()
def collectAndSummon():
    if hero.gold >= hero.costOf("soldier"):
        hero.summon("soldier")
    elif item:
        hero.move(item.pos)
while True:
    friend = hero.findNearest(hero.findFriends())
    enemy = hero.findNearestEnemy()
    item = hero.findNearestItem()
    if enemy:
        charge()
    elif item:
        friendIndex = 0
        collectAndSummon()

also using this code my hero never attacks. If i dont attack then in a later level of the brawl I will lose

You can make it so if there is an enemy, attack it.
If you have enough gold for troops, summon.
Else, get money

thank you 20 chars text