Connection ErrorBad RequestSession ExpiredSign in requiredForbiddenNot FoundToo Many RequestsServer ErrorBad GatewayService UnavailableGateway TimeoutHTTP Version Not Supported
Session Expired
Your session has expired. Please log in to continue.
Sign in required
You need an account to do that. Sign in or create one — it only takes a minute.
Request Failed
We encountered an issue while processing your request.
Please check your internet connection and try again.
Try using the KnowHeroSpell(heroName, spell) function;
I haven't used it, but I recommend giving it a try. Example:
KnowHeroSpell(Raelag, 16, nil);
Or, instead of nil, put false.
why isn't this piece of the function working and how do I fix it?
vh is a variable containing the hero's name. The idea is to reset the hero's move points
Added after 50 minutes Another question: Is there a function that returns an array of creature IDs in the hero's army?
1) extra s. Not Stats, but Stat 2) array — no, there is a function that returns a list with IDs: _1, _2, _3, _4, _5, _6, _7 = GetHeroCreaturesTypes(hero)
1) лишняя s. Not Stats, but Stat 2) массив — нет, there is a function that returns a list with IDs: _1, _2, _3, _4, _5, _6, _7 = GetHeroCreaturesTypes(hero)
Thank you. But this snippet doesn't work for me. The console displays something like "invalid ID=0 (arg1)".
c1, c2, c3, c4, c5, c6, c7=GetHeroCreaturesTypes(heroname);
sleep(1);
if c1~=nil then
c11=GetHeroCreatures(heroname, c1);
else c11=0;
end;
if c2~=nil then
c22=GetHeroCreatures(heroname, c2);
else c22=0;
end;
if c3~=nil then
c33=GetHeroCreatures(heroname, c3);
else c33=0;
end;
if c4~=nil then
c44=GetHeroCreatures(heroname, c4);
else c44=0;
end;
if c5~=nil then
c55=GetHeroCreatures(heroname, c5);
else c55=0;
end;
if c6~=nil then
c66=GetHeroCreatures(heroname, c6);
else c66=0;
end;
if c7~=nil then
c77=GetHeroCreatures(heroname, c7);
else c77=0;
end;
sleep(1);
if c11~=0 then
RemoveHeroCreatures(heroname, c1, intg(c11*0.33));
end;
if c22~=0 then
RemoveHeroCreatures(heroname, c2, intg(c22*0.33));
end;
if c33~=0 then
RemoveHeroCreatures(heroname, c3, intg(c33*0.33));
end;
if c44~=0 then
RemoveHeroCreatures(heroname, c4, intg(c44*0.33));
end;
if c55~=0 then
RemoveHeroCreatures(heroname, c5, intg(c55*0.33));
end;
if c66~=0 then
RemoveHeroCreatures(heroname, c6, intg(c66*0.33));
end;
if c77~=0 then
RemoveHeroCreatures(heroname, c7, intg(c77*0.33));
end;
Thank you! But this snippet doesn't work for me. The console displays something like "invalid ID=0 (arg1)".
c1, c2, c3, c4, c5, c6, c7 = GetHeroCreaturesTypes(heroname); sleep(1); if c1 ~= nil then c11 = GetHeroCreatures(heroname, c1); else c11 = 0; end; if c2 ~= nil then c22 = GetHeroCreatures(heroname, c2); else c22 = 0; end; if c3 ~= nil then c33 = GetHeroCreatures(heroname, c3); else c33 = 0; end; if c4 ~= nil then c44 = GetHeroCreatures(heroname, c4); else c44 = 0; end; if c5 ~= nil then c55 = GetHeroCreatures(heroname, c5); else c55 = 0; end; if c6 ~= nil then c66 = GetHeroCreatures(heroname, c6); else c66 = 0; end; if c7 ~= nil then c77 = GetHeroCreatures(heroname, c7); else c77 = 0; end; sleep(1); if c11 ~= 0 then RemoveHeroCreatures(heroname, c1, intg(c11 * 0.33)); end; if c22 ~= 0 then RemoveHeroCreatures(heroname, c2, intg(c22 * 0.33)); end; if c33 ~= 0 then RemoveHeroCreatures(heroname, c3, intg(c33 * 0.33)); end; if c44 ~= 0 then RemoveHeroCreatures(heroname, c4, intg(c44 * 0.33)); end; if c55 ~= 0 then RemoveHeroCreatures(heroname, c5, intg(c55 * 0.33)); end; if c66 ~= 0 then RemoveHeroCreatures(heroname, c6, intg(c66 * 0.33)); end; if c77 ~= 0 then RemoveHeroCreatures(heroname, c7, intg(c77 * 0.33)); end;
If a slot is empty, the corresponding element is not nil, but 0. Therefore, ~=nil should be replaced with ~=0. The idea is to remove one-third of the army? Then there is a shorter script.
for i=0,6 do local t, n = GetObjectArmySlotCreature(heroname, i) if t ~= 0 then RemoveHeroCreatures(heroname, t, n/3) end end
If the slot is empty, then the corresponding element is not nil, but 0. Therefore, ~=nil should be replaced with ~=0. The idea is to remove one-third of the army? Then there is a shorter script.
for i=0,6 do local t, n = GetObjectArmySlotCreature(heroname, i) if t ~= 0 then RemoveHeroCreatures(heroname, t, n/3) end end
thank you)) And if n/3 is not an integer, will it throw an error? Or should I still use the intg() function?
It won't happen. The functions for army operations round the numbers automatically.
It worked! However, when a hero has only one creature in a particular slot, the function resets, and an error occurs (the number cannot be negative). And probably the last question: how can I, at certain moments, transfer control to another (main) hero from the player (human)? (I mean, move the camera from the secondary hero to the main one and highlight him).
It worked! However, when a hero has only one creature in a particular slot, the function resets, and an error occurs (the number cannot be negative). And probably the last question: how to transfer control to another (main) hero at certain moments. (I.e., move the camera from the secondary hero to the main one and highlight him).
Then you need to use not intg, but ceil. You can move the camera, but you won't be able to highlight him with a frame.
Please help me write a script that, each day, increases the number of units in a specified garrison (for example, +10 for the first slot, +5 for the second, +2 for the third).
Please help me write a script that increases the number of units in a specified garrison each day (for example, +10 for the first slot, +5 for the second, +2 for the third).
Thank you in advance.
function newday() local add = {[0]=10; 5, 2} for i=0,6 do local type, number = GetObjectArmySlotCreature("script name of the garrison", i) if type ~= 0 and addthen AddObjectCreatures("script name of the garrison", type, add) end end end Trigger(0, "newday")