Hello, on the level “grim determination” i receive message: "Line 37: command’s argument minion should have type unit, but not object: Taric. Hero Placeholder (team humans) can’t command Taric (team ogres)"
My code:
def commandGriffin(friend):
enemy = friend.findNearestEnemy()
if enemy:
hero.command(friend, "attack", enemy)
def commandPeasant(fr):
items = fr.findItems()
item = fr.findNearest(items)
hero.command(fr, "move", item.pos)
# Найти паладина с самым низким количеством здоровья.
def lowestHealthPaladin():
lowestHealth = 99999
lowestFriend = None
friends = hero.findFriends()
for friend in friends:
if friend.type != "paladin":
continue
if friend.health < lowestHealth and friend.health < friend.maxHealth:
lowestHealth = friend.health
lowestFriend = friend
return lowestFriend
def commandPaladin(paladin):
# Полечи паладина с низким количеством здоровья используя lowestHealthPaladin()
needH = lowestHealthPaladin()
if needH:
if paladin.canCast("heal"):
hero.command(paladin, "cast", "heal", needH)
# Ты можешь использовать paladin.canCast ("heal") и command(paladin, "cast", "heal", target)
# Паладины также могут использовать щит: command(paladin, "shield")
hero.command(paladin, "shield")
enemy = paladin.findNearestEnemy()
if enemy:
hero.command(paladin, "attack", enemy)
def commandFriends():
# Командуй своими союзниками.
friends = hero.findFriends()
#pal = 0
for friend in friends:
if friend.type == "peasant":
commandPeasant(friend)
pass
elif friend.type == "griffin-rider":
commandGriffin(friend)
pass
elif friend.type == "paladin":
#if hero.now() < 3 or hero.now() > 15:
#hero.say(friend.name+", "+friend.id)
#pal +=1
commandPaladin(friend)
#if hero.now() < 3 or hero.now() > 15:
# hero.say("Number of paladins: "+pal)
while True:
commandFriends()
#if hero.now() > 9 and hero.now() < 15:
#enemies = hero.findEnemies()
#for enemy in enemies:
#hero.say(enemy.type +", "+ enemy.name +", "+enemy.id)
if hero.gold >= hero.costOf("griffin-rider"):
hero.summon("griffin-rider")
First, please, post your code with radiant, harmonious formatting. For python indents are really important and your code isn’t readable in the current format. How to do it you can read here: FAQ - Check Before Posting
Hm, it looks not bad (non optimal, but not bad). I tried your code and sometimes win, sometimes lose. But I haven’t gotten an error. Could you give some screenshot (with battlefield and who is Taric)?
Ok. I tried to play under your account but I haven’t get this error.
I suppose that you get an event with low probability. While your command your paladins a warlock resurrect a paladin and she changes the team. Could you check it (you can see it on the battlefield)?
Try to click “Завершить” (submit). It will change your random seed. Or write the better code with all alive paladins
May be because i modified code adding: hero.say("message")
before while.
How I can check the fact of ressurect? I tried by checking number of paladins, or their’s name, or enemy name’s. But when hero saying something - this problem doesn’t appear.
So i passed this level with no optimal code including hero.say("message") before while loop (-:
I believe you can check if the paladin has been resurrected by checking paladin.hasEffect(“raise-dead”), I could be wrong though - never really tried it, just pure guess
I have a poor graphics speed, so cannot understand who is whom sometimes. I checked several times without hero.say, and once saw the skull on some unit. I think - you are right about resurected, but i don’t understand way hero.say can help paladin not to be resurected
Hero.say action takes 1s (check description, Action name: “say”. Takes: 1s) so your code simulates your hero speaking for 1s, halting all further actions for that time - thus it affects the outcome of the battle something to keep in mind - don’t use hero.say for debugging purposes during a battle, most of the time
I had the same problem: "command’s argument minion should have type unit, but not object: XXX. Hero Placeholder (team humans) can’t command XXX (team ogres)"
I was decided it by add check: if unit.team == “humans”