У меня появился вопрос! Как заставить героя сидеть в замке?
Сообщения от Скрипты для начинающих
Сажаем героя в замок и в скриптах пишем: EnableHeroAI( "скриптовое имя героя", nil )
А что это значит?
Value was NIL when getting global with name 'Ingvar'
Wrong type of argument 1, when calling function 'EnableHeroAI'
Благодарю вас! Но тут возникла проблема
Value was NIL when getting global with name 'Ingvar'
Wrong type of argument 1, when calling function 'EnableHeroAI'
1. Так же как к герою, только нужно вместо Combat Script опуститься пониже в свойствах города и использовать строку script
2. Не знаю сработает ли с молитвой, но попробуй UnitCastGlobalSpell( GetDefenderHero(), SPELL_PRAYER). Не забудь выдать скилл Молитва герою.
3. StartDialogScene("ссылка на ролик","функция")
Попытался загнать в EnableHeroAI героя, которого нет на карте. Скриптовое имя героя в замке совпадает с тем что прописал в скрипте?
Странно имена совпадают, я написал скрипт в городе и просто
Странно имена совпадают, я написал скрипт в городе и просто
HeroOfDestiny, скриптовое имя героя в скриптах без скобок написал. И зачем-то прописал команду на блок героя для управления AI в боевом скрипте. Там она работать не будет.
Исправь строку в скрипте на EnableHeroAI( "Ingvar", nil ) а из боевого скрипта её вообще удали.
HeroOfDestiny, скриптовое имя героя в скриптах без скобок написал. И зачем-то прописал команду на блок героя для управления AI в боевом скрипте. Там она работать не будет.
Исправь строку в скрипте на EnableHeroAI( "Ingvar", nil ) а из боевого скрипта её вообще удали.
Ох уж эти скрипты) Знак пропустил игра сразу ноет)
Ну а вам, как всегда спасибо!
Да в принципе легко) Резервируем героя-некроманта, делаем квест на сохранение главного героя технически пустым(OBJECTIVE_KIND_MANUAL) чтобы контролировать его работу через скрипты. В скриптах же напишем такое:
NowNecromancer = 0 --Условие, которое выдадим когда героя сделаем некромантом
function prim_save_gg( heroName ) --название функции по этому квесту можешь сделать другим) Это так, чтобы было понятней
if ( heroName == Duncan ) and NowNecromancer ~= 1 then --Duncan взят для примера. Вставишь сюда скриптовое имя своего героя
SetObjectiveState("скриптовое имя квеста", OBJECTIVE_FAILED) --фейлим квест на сохранение главного героя
sleep(10) --дадим время чтобы игрок увидел провал квеста и осознал что он потерял главного героя
Loose() --фейлим миссию, ведь наш герой погиб до того как стал некромантом
elseif ( heroName == Duncan ) and NowNecromancer == 1 then --теряем героя с полученным условие что мы теперь некромант и от этого не проигрываем
print("Всё окей, условие есть. Помер и помер, с кем ни бывает? Теперь я некромант, пойду что ли черепами закуплюсь")
end
if ( heroName == DuncanNecro ) and NowNecromancer == 1 then --наш герой - некромант, условие что мы его сделали некромантом выполнено
SetObjectiveState("скриптовое имя квеста", OBJECTIVE_FAILED) --фейлим квест на сохранение главного героя
sleep(10) --дадим время чтобы игрок увидел провал квеста и осознал что он потерял главного героя
Loose() --фейлим миссию, ведь наш герой погиб уже после того как стал некромантом
end
end
function TransformToNecromancer() --тут пропишем что именно произойдёт после чего ГГ станет некромантом. Откуда она будет вызываться - это уже тоже тебе решать)
--всякая всячина автора, ктож знает какие у него условия?
NowNecromancer = 1 --выдадим условие чтобы игра не зафейлилась после удаления гг
sleep(2) --на всякий случай, дадим игре переварить полученную информацию
DeployReserveHero("DuncanNecro", x, y, GROUND/UNDERGROUND) --ставим нового гг чтобы игра не зафейлилась если вдруг у игрока ток один герой и нет замка с таверной
sleep(2) --тоже на всякий случай, дадим игре всё обработать
RemoveObject("Duncan") --безболезненно удаляем гг
end
Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_1, "prim_save_gg") --триггер на отслеживание потерь героев игроком PLAYER_1Пробуй)
NowNecromancer = 0
function PrimSaveGG(heroName)
if (heroName == Hafad) and NowNecromanser ~= 1
then SetObjectiveState("prim1", OBJECTIVE_FAILED)
sleep(10)
Loose()
elseif (heroName == Hafad) and NowNecromanser == 1
end;
if (heroName == HafadNecro) and NowNecromanser == 1
then SetObjectiveState("prim1", OBJECTIVE_FAILED)
sleep(10)
Loose()
end;
end;
function TransformGG()
NowNecromanser = 1
sleep(2)
DeployReserveHero("HafadNecro", 31, 93, GROUND)
sleep(2)
RemoveObject("Hafad")
end;
Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_1, "PrimSaveGG")
BlueHeavenHero, поправь строки со своим скриптовым именем героя чтобы везде стояло имя в галочках, т.е. "Hafad" и "HafadNecro" соответственно. А потом тестируй и пиши если чет не будет работать или же наоборот заработает) Не забудь героя HafadNecro засунуть в резервный пул героев нужного игрока чтобы скрипт не ломался на попытке его задеплоить.
Статистика
Сейчас на сайте 10 пользователей 1369 гостей
Посетители сегодня 33
- Валера 111
- Граф Орлов
- Джек
- Драккошка
- Дугал
- Злобный Ящур
- Небо
- Нэйко
- Саргон
- ALVYDAS
- Arandor
- AstralLein
- burymm
- Dark Jack
- dotahcxun
- elizbar1967
- fktifzobr@mail.ru
- Golvek
- Happy Life
- Heroist
- Hottler
- HwKeeper
- IchGViji
- kcfgogbfalgfl
- LifeForm
- Narron
- Niksan4ik
- OrnsteinDragonslayer
- PingWing
- Ple-Sen
- Sir Syddan
- Siverfale
- Valery59