Лоли Никитаdiff=GetDifficulty();
function bitva_1(heroname, objectname)
if heroname == "Raelag" then
StartCombat(heroname, nil, 3, 6, 5+2*diff, 6, 5+2*diff, 6, 5+2*diff, nil);
sleep(5);
RemoveObject('q7');
RemoveObject('q8');
RemoveObject('q9');
end;
end;
Trigger(OBJECT_TOUCH_TRIGGER,'q7','bitva_1');
Trigger(OBJECT_TOUCH_TRIGGER,'q8','bitva_1');
Trigger(OBJECT_TOUCH_TRIGGER,'q9','bitva_1');
Сделал вроде правильно, но латников на герое становится 9, а мне надо 7, как я понял, 5+2*diff - означает 5 латников + количество умноженное на сложность. Если сложность рекрут, то diff=1, и получается на рекруте будет 7 латников, если сложность воин, то diff=2, а там уже 5+2*2=9. Можете пожалуйста объяснить в чем тут ошибка. Заранее спасибо.
Добавлено через 25 минут
Я хотел бы еще кое-что спросить, существует функция OpenCircleFog , она открывает туман войны, и с помощью нее можно открыть часть карты, можно ли с помощью какой-нибудь функции сделать так, чтобы она не открывала, а закрывала туман войны, таким образом не позволяя просматривать герою некоторые места, в которых он уже побывал, и чтоб на миникарте в левом нижнем углу игры тоже не было видно этой части карты?
Простите, это я на автомате ошибся. На рекруте diff будет 0, на воине 1, на ветеране 2, на герое 3, поэтому на рекруте будет в каждом стеке 5 латников, на воине — 7, на ветеране 9 и на герое 11. Но использовать простой GetDifficulty при расчётах зачастую неудобно в связи с её нулевым значением на рекруте, поэтому рекомендую поменять
diff = GetDifficulty();
на
diff = GetDifficulty()+1
. Если вам так надо на герое 7, то напишите внутрь функции перед Start Combat
diff= GetDifficulty()+1;
...
...
local amount=0;
local i=1;
for i,4 do
if diff == i then
amount=i;
end;
end;
...
Вроде, вот так правильно, но это не точно...
А в формуле расчёта числа латников поставь 3+amount. Если не сработает (а я написанному гарантии 100% пока дать не могу — работаю с телефона и потому по памяти), тупо в лоб пропиши условия
diff=GetDifficulty()+1;
...
...
local amount=0;
if diff == 1 then
amount=5;
end;
if diff == 2 then
amount=5;
end;
if diff == 3 then
amount=6;
end;
if diff == 4 then
amount=7
end;
А в формулу расчёта числа латников напиши просто amount.
Выбирай любой способ.
Насчёт закрытия тумана, сколько ни работал, ни разу не видел такой, а потому заявляю — такой функции нет. Но я не застразован от ошибок, может, она и есть. Тогда попробуй либо
CloseCircleFog(x, y, floor, radius, PLAYER_ID);
или спроси в ЛС Jack_of_shadows