Перейти к содержанию

Сообщения от Скрипты для начинающих

В ответ пользователю HeroOfDestiny
Аватар пользователя
3 года назад

HeroOfDestiny
У меня появился вопрос! Как заставить героя сидеть в замке?
Сажаем героя в замок и в скриптах пишем: EnableHeroAI( "скриптовое имя героя", nil )
В ответ пользователю Азгалор
Аватар пользователя
3 года назад
Азгалор

Сажаем героя в замок и в скриптах пишем: EnableHeroAI( "скриптовое имя героя", nil )

Благодарю вас! Но тут возникла проблема

А что это значит?
Value was NIL when getting global with name 'Ingvar'
Wrong type of argument 1, when calling function 'EnableHeroAI'
В ответ пользователю HeroOfDestiny
Аватар пользователя
3 года назад
HeroOfDestiny

Благодарю вас! Но тут возникла проблема

Value was NIL when getting global with name 'Ingvar'
Wrong type of argument 1, when calling function 'EnableHeroAI'
Попытался загнать в EnableHeroAI героя, которого нет на карте. Скриптовое имя героя в замке совпадает с тем что прописал в скрипте?
В ответ пользователю Азгалор
Аватар пользователя
3 года назад
Азгалор
1. Так же как к герою, только нужно вместо Combat Script опуститься пониже в свойствах города и использовать строку script
2. Не знаю сработает ли с молитвой, но попробуй UnitCastGlobalSpell( GetDefenderHero(), SPELL_PRAYER). Не забудь выдать скилл Молитва герою.
3. StartDialogScene("ссылка на ролик","функция")
Спасибо за помощь. 
В ответ пользователю Азгалор
Аватар пользователя
3 года назад
Азгалор
Попытался загнать в EnableHeroAI героя, которого нет на карте. Скриптовое имя героя в замке совпадает с тем что прописал в скрипте?

Странно имена совпадают, я написал скрипт в городе и просто
В ответ пользователю HeroOfDestiny
Аватар пользователя
3 года назад
HeroOfDestiny

Странно имена совпадают, я написал скрипт в городе и просто
Скинь тогда карту, посмотрю в чем траблы. Если хочешь, можешь в личку.
Аватар пользователя
3 года назад
 

Вот, надеюсь разберёшься.
P.s. Я не понял как отправить личное сообщение с файлом(
Вложения 1
1 файл • Общий размер: 29,1 KB
Аватар пользователя
3 года назад

HeroOfDestiny, скриптовое имя героя в скриптах без скобок написал. И зачем-то прописал команду на блок героя для управления AI в боевом скрипте. Там она работать не будет.

Исправь строку в скрипте на EnableHeroAI( "Ingvar", nil ) а из боевого скрипта её вообще удали.

В ответ пользователю Азгалор
Аватар пользователя
3 года назад
Азгалор

HeroOfDestiny, скриптовое имя героя в скриптах без скобок написал. И зачем-то прописал команду на блок героя для управления AI в боевом скрипте. Там она работать не будет.

Исправь строку в скрипте на EnableHeroAI( "Ingvar", nil ) а из боевого скрипта её вообще удали.


Ох уж эти скрипты) Знак пропустил игра сразу ноет)
Ну а вам, как всегда спасибо!
В ответ пользователю Азгалор
Аватар пользователя
3 года назад
Азгалор

Да в принципе легко) Резервируем героя-некроманта, делаем квест на сохранение главного героя технически пустым(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
Аватар пользователя
3 года назад
BlueHeavenHero, поправь строки со своим скриптовым именем героя чтобы везде стояло имя в галочках, т.е. "Hafad" и "HafadNecro" соответственно. А потом тестируй и пиши если чет не будет работать или же наоборот заработает) Не забудь героя HafadNecro засунуть в резервный пул героев нужного игрока чтобы скрипт не ломался на попытке его задеплоить.
В ответ пользователю Азгалор
Аватар пользователя
3 года назад
Азгалор
BlueHeavenHero, поправь строки со своим скриптовым именем героя чтобы везде стояло имя в галочках, т.е. "Hafad" и "HafadNecro" соответственно. А потом тестируй и пиши если чет не будет работать или же наоборот заработает) Не забудь героя HafadNecro засунуть в резервный пул героев нужного игрока чтобы скрипт не ломался на попытке его задеплоить.
Хафада-некроманта уже давно в резерв засунул, кавычки также поставил. 
Аватар пользователя
3 года назад
BlueHeavenHero, добавлю, что, чтобы бой не завершился по смерти всех существ, вам нужно вызвать заранее функцию EnableAutoFinish(nil)
Аватар пользователя
3 года назад
BlueHeavenHero, не знаю кто тут дизлайки лепит, но как я уже написал выше: проверь чтобы всё было правильно, и как верно подметил Хоттабыч - не забудь добавить отключение стандартного боя(если ещё не прописал), а после проверяй скрипты в игре. Ждём ответа по результату.
Аватар пользователя
3 года назад
Кто лепит дизлайки можно увидеть в Панели управления

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 5 пользователей 1384 гостей