Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#3751
Старый 05.11.2022, 15:56
  #3751
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 226
Регистрация: 24.04.2016
Сообщения: 226
По умолчанию
Re: Скрипты

}{0TT@6bI4То есть у вас от 1 до k заменяются все существа при выполнении какого-то условия с удачей, а вы хотите, чтобы это происходило
а) Непоследовательно
б) Без повторений
в) Со всеми k элементами

Тогда нужен интересный алгоритм:
local used_indexes = {}
for i=1, k do
repeat N=random(k)+1
until not used_indexes[N]
used_indexes[N] = 1;
--Действия с существом с номером N (не k!!)
end

 

Кажется, у тебя тут какая-то ошибка - i никуда не передаётся. Или вместо i должно быть n? Попробовал в игре с твоим вариантом, у меня существа наспавнились в первых двух точках. Хорошо что у них фикс.спавн, иначе игра бы легла от лаггов 😆 

Чуть подправил, запустил ещё раз - теперь монстры-то спавнятся в разных точках, но всё ещё по списку, т.е. запускаю функцию во второй раз и она отспавнивает монстриков на тех же точках.

 

Да, и сразу доп.вопрос. У меня в функции есть такое условие:

local type = random( 3 ) + 1
         if ( WR_luck < 3 ) and ( type == 4 ) then
         type = random( 2 ) + 1
end

До того как занёс эти два условия в скобки, игра их игнорировала. Почему? Когда вообще нужно ставить скобки в условиях?

Азгалор вне форума
Ответить с цитированием