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

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

В ответ пользователю HeroOfDestiny
Аватар пользователя

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

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

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

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

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

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

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

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

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

В ответ пользователю Азгалор
Аватар пользователя
Азгалор
Попытался загнать в EnableHeroAI героя, которого нет на карте. Скриптовое имя героя в замке совпадает с тем что прописал в скрипте?

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

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

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

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")

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

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

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

В ответ пользователю BlueHeavenHero
Аватар пользователя
BlueHeavenHero, поправь строки со своим скриптовым именем героя чтобы везде стояло имя в галочках, т.е. "Hafad" и "HafadNecro" соответственно. А потом тестируй и пиши если чет не будет работать или же наоборот заработает) Не забудь героя HafadNecro засунуть в резервный пул героев нужного игрока чтобы скрипт не ломался на попытке его задеплоить.
В ответ пользователю Азгалор
Аватар пользователя
Азгалор
BlueHeavenHero, поправь строки со своим скриптовым именем героя чтобы везде стояло имя в галочках, т.е. "Hafad" и "HafadNecro" соответственно. А потом тестируй и пиши если чет не будет работать или же наоборот заработает) Не забудь героя HafadNecro засунуть в резервный пул героев нужного игрока чтобы скрипт не ломался на попытке его задеплоить.
Хафада-некроманта уже давно в резерв засунул, кавычки также поставил. 

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

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

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

Аватар пользователя
BlueHeavenHero, добавлю, что, чтобы бой не завершился по смерти всех существ, вам нужно вызвать заранее функцию EnableAutoFinish(nil)
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
Аватар пользователя
BlueHeavenHero, не знаю кто тут дизлайки лепит, но как я уже написал выше: проверь чтобы всё было правильно, и как верно подметил Хоттабыч - не забудь добавить отключение стандартного боя(если ещё не прописал), а после проверяй скрипты в игре. Ждём ответа по результату.

Статистика

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