Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#3156
Старый 22.05.2020, 23:20
  #3156
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
По умолчанию
Re: Скрипты

Лоли Никита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
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием