Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#3864
Старый 19.08.2023, 13:42
  #3864
^
LetoX
 
Аватар для LetoX
📖
Регистрация: 16.11.2017
Сообщения: 67
Регистрация: 16.11.2017
Сообщения: 67
По умолчанию
Re: Скрипты

Я немного не понимаю эту часть - 

for i=0,6 do
     local type, num = GetObjectArmySlotCreature("ritual", i)
     if (type >= 30 and type <= 42 and mod(type, 2) == 0) or (type >= 152 and type <= 158) then
          startThread(NecroRitual)
          SetObjectOwner("ritual", PLAYER_2)
     end
end. 

и потом в функции ритуала - 

for i=0,6 do
    local type, num = GetObjectArmySlotCreature("ritual", i)
    if GetObjectArmySlotCreature("ritual", i) == 30 then
        RemoveObjectCreatures('ritual', type, num, i) ...

Зачем ты на каждый слот ставишь героя владельцем? По идее это можно сделать вне цикла. и почему ты на каждый слот начинаешь новый поток? Я скрипт не запускал, но выглядит так, будто ты на два слота стартуешь 2 потока работающих параллельно(типо) и когда обработка второго цикла по функции ритуала ПОВТОРНО проходит через все слоты, когда второй поток считывает первый слот он ещё не очищен(первым потоком). Вроде как, если убрать цикл в функции или убрать дублирование потоков, всё должно заработать. 



Типо-

        MakeHeroInteractWithObject(hero, "ritual")
        sleep(10)
        startThread(NecroRitual)
        SetObjectOwner("ritual", PLAYER_2)
        local x,y = GetObjectPosition(Hero) ...
А, и это чисто эстетически, но раз ты берёшь имя героя из функции, то почему пишешь в других местах "Hafad"? 
LetoX вне форума
Ответить с цитированием