Впервые здесь? Я Роха — провести быструю экскурсию?
Ошибка соединенияНеверный запросСтраница устарелаСессия истеклаТребуется входЗапрещеноНе найденоСлишком много запросовВнутренняя ошибка сервераПлохой шлюзСервис недоступенТайм-аут шлюзаВерсия HTTP не поддерживается
Сессия истекла
Ваша сессия истекла. Пожалуйста, войдите снова.
Требуется вход
Для этого нужна учётная запись. Войдите или создайте её — это займёт минуту.
Страница устарела
Токен безопасности отклонён — обычно потому, что страница была открыта слишком долго или вы вошли в систему в другом месте. Ничего не сохранено. Обновите страницу и повторите.
Запрос не выполнен
При обработке вашего запроса возникла проблема.
Проверьте подключение к интернету и попробуйте снова.
Всё-таки я ничего не понял из вашей задачи, ну да ладно. Мой код проходит все k существ (при этом i) не нужно и генерит случайный индекс k до тех пор, пока он есть в массиве индексов. Как только выходит — работает с существом со сгенерированным индексом k
Почему нужна такая проверка с циклом — потому что простой рандом (как у вас) может выдать повторяющиеся значения, а как я понял, так не должно быть. Возможно, неправильно понял.
И вообще, очень странно, что у вас такое не работает и генерит в двух местах. Я запустил холостые принты для k=100 и он нагенерил кучу значений, все разные (ну, я, впрочем, не скроллил все).
Честно, я тем более не понял) Если бы понимал то не обращался бы за помощью 😅 В общем, вот такой финальный вариант этого скрипта на спавн, как раз вот дописал его и занялся уже другим делом(сохранение координат я больше не трогал):
function RespawnUnitsByLuck() if ( GetDate(WEEK) == 2 ) and ( GetDate(DAY_OF_WEEK) == random(6) + 1 ) then local WR_luck = GetHeroStat(WR, STAT_LUCK) local respawns_types = { CREATURE_AIR_ELEMENTAL, CREATURE_PHOENIX, CREATURE_AIR_ELEMENTAL, CREATURE_PHOENIX } local respawns_quantities = { 100 * diff, 10 * diff, 100 * diff, 4 * diff } local respawns_mood = {3, 1, 3, 0} local respawns_courage = {1, 2, 1, 0} local respawns_num = 0 local previous_pos = {} local respawns_id = 0
--Памятка по сложностям чтоб посчитать множители от сложностей: diff = 0.5(easy), 2(normal), 4(veteran), 6(heroic), 10(hardcore) local CanRespawnUnitsByLuck = random(100) + ((10*(WR_luck+1)) * mod((WR_luck+1),diff)) if CanRespawnUnitsByLuck >= mod(70,(WR_luck+2)) + (60+diff) then print("<color=blue>Рандом выдал число <color=yellow>"..CanRespawnUnitsByLuck, "<color=blue>, которое выше или равно порогу. <color=yellow>Респавним юнитов...") elseif CanRespawnUnitsByLuck < mod(70,(WR_luck+2)) + (60+diff) then --( 50 + (10+diff) ) then print("<color=blue>Рандом выдал число <color=red>"..CanRespawnUnitsByLuck, "<color=blue>, которое ниже порога. <color=red>Никого не спавним, выходим из функции...") return end
for i = 1, 20 + diff do local n = random(length(creatures_positions))+1 local x = creatures_positions[n].x local y = creatures_positions[n].y local floor = 0; local badpos = 0;
if IsObjectExists("m"..n) or IsObjectExists("respawns"..n) then badpos = 1 end
if ( badpos == 0 ) and ( IsTilePassable( x, y, floor ) ) then respawns_num = respawns_num + 1 if respawns_num == 20 + diff then print("<color=yellow>Наспавнено максимальное количество юнитов. Выходим из респавнера.") return --если наспавнили больше 20+сложность юнитов то выходим, иначе дичайший переспавн end
local type = random( 3 ) + 1 if ( WR_luck < 3 ) and ( type == 4 ) then type = random( 2 ) + 1 end if ( WR_luck >= 5 ) then respawns_quantities = { 200 * diff, 4 * diff, 200 * diff, 4 * diff } respawns_courage = {1, 0, 1, 0} type = random( 2 ) + 2 end local creaturetype = respawns_types[ type ] local quantity = respawns_quantities[ type ] local mood = respawns_mood[ type ] local courage = respawns_courage[ type ] local respawnsname = 'respawns' .. n; CreateMonster( respawnsname, creaturetype, quantity, x, y, floor, mood, courage, random( 360 ) ); end; end; if respawns_num == 0 then print("<color=brown>Ни одно существо не было заспавнено. Вероятно, все точки спавна заняты.") else print("<color=blue>Респавн завершен. Заспавнено существ: <color=yellow>"..respawns_num) end; end; end;