Перейти к содержанию
Аватар пользователя
#3941
LetoX
Я немного не понимаю эту часть - 

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 потока работающих параллельно(типо) и когда обработка второго цикла по функции ритуала ПОВТОРНО проходит через все слоты, когда второй поток считывает первый слот он ещё не очищен(первым потоком). Вроде как, если убрать цикл в функции или убрать дублирование потоков, всё должно заработать. 
Я сам плохо понимаю в таких скриптах( Поэтому, наверное, и сделал два раза.
LetoX

Типо-

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


Добавлено через 44 секунды
Сейчас я шаманю над скриптом РедХевена по превращению обычных людей в зеленых. Вот это пляски с бубном...

Мои карты:
Падший рыцарь
Сердце Хаоса

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники