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

Сообщения от Скрипты

Здравствуйте. Впервые знакомлюсь со скриптами.
Можете подсказать скрипт на атаку монстра на глобальной карте (воиспроизведению анимации атаки)
Аватар пользователя
Столкнулся с такой проблемой...

Есть вражеский герой (подвижный). Его смерть приводит к победе в сценарии... но если этот герой погибает на ходу ИИ (сам расшибается об игрока), то после проигрывания ролика и прочего, вместо победы игра выдает консольную ошибку No player!, а смена хода зависает. Если игрок сам нападает на героя, то все работает правильно.

Кто-нибудь знает как это исправить? Плиз)))

Собственно, сама функция:

Trigger(PLAYER_REMOVE_HERO_TRIGGER, 2, "TheEnd")

function TheEnd(hero)
if hero == "RedHeavenHero05" then
StartDialogScene(path.."DialogScenes/DialogFinal/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
SetObjectiveState("Final", OBJECTIVE_COMPLETED)
SetObjectiveState("NecroTown", OBJECTIVE_COMPLETED)
SetObjectiveState("ArantirLive", OBJECTIVE_COMPLETED)
sleep(10)
Win()
end
end
Карты для героев 5

"Плата за любовь"
"Путь некроманта"
"Темные грани"
"Рок Гримхейма"
Аватар пользователя
Это единственный герой противника?
 

К А
Стикеры GBF в Telegram
В ответ пользователю AstralLein
Аватар пользователя
AstralLein
Столкнулся с такой проблемой...

Есть вражеский герой (подвижный). Его смерть приводит к победе в сценарии... но если этот герой погибает на ходу ИИ (сам расшибается об игрока), то после проигрывания ролика и прочего, вместо победы игра выдает консольную ошибку No player!, а смена хода зависает. Если игрок сам нападает на героя, то все работает правильно.

Кто-нибудь знает как это исправить? Плиз)))

Собственно, сама функция:

Trigger(PLAYER_REMOVE_HERO_TRIGGER, 2, "TheEnd")

function TheEnd(hero)
if hero == "RedHeavenHero05" then
StartDialogScene(path.."DialogScenes/DialogFinal/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
SetObjectiveState("Final", OBJECTIVE_COMPLETED)
SetObjectiveState("NecroTown", OBJECTIVE_COMPLETED)
SetObjectiveState("ArantirLive", OBJECTIVE_COMPLETED)
sleep(10)
Win()
end
end

У меня была подобная проблема, если враж. герой разбивался об игрока, то игра как бы была в заморозке (BlockGame). Я решил это, что мол моё событие, которое происходило при смерти этого героя происходило во время хода третьего, левого игрока и всё окей стало. Но если у тебя всего 2 действующих игрока, то тогда не знаю, как это сможет помочь.
Автор карт:
Долина расхитителей
Выбор мира
В ответ пользователю AstralLein
AstralLein
Столкнулся с такой проблемой...

Есть вражеский герой (подвижный). Его смерть приводит к победе в сценарии... но если этот герой погибает на ходу ИИ (сам расшибается об игрока), то после проигрывания ролика и прочего, вместо победы игра выдает консольную ошибку No player!, а смена хода зависает. Если игрок сам нападает на героя, то все работает правильно.

Кто-нибудь знает как это исправить? Плиз)))

Собственно, сама функция:

Trigger(PLAYER_REMOVE_HERO_TRIGGER, 2, "TheEnd")

function TheEnd(hero)
if hero == "RedHeavenHero05" then
StartDialogScene(path.."DialogScenes/DialogFinal/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
SetObjectiveState("Final", OBJECTIVE_COMPLETED)
SetObjectiveState("NecroTown", OBJECTIVE_COMPLETED)
SetObjectiveState("ArantirLive", OBJECTIVE_COMPLETED)
sleep(10)
Win()
end
end

Запиши, как я предлагал, через startThread.

function TheEnd()
while IsHeroAlive( "RedHeavenHero05" ) == true do sleep(5) end
sleep(1)
StartDialogScene(path.."DialogScenes/DialogFinal/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
SetObjectiveState("Final", OBJECTIVE_COMPLETED)
SetObjectiveState("NecroTown", OBJECTIVE_COMPLETED)
SetObjectiveState("ArantirLive", OBJECTIVE_COMPLETED)
sleep(10)
Win()
end
(Мог что-то пропустить)
Саму функцию нужно запустить после победы над Весселем.
Карты: Экспедиция ГрувераНаследие ШантириВременной парадоксПоиски рунной сферыПуть возвращения
В ответ пользователю OrnsteinDragonslayer
Аватар пользователя
OrnsteinDragonslayer
У меня была подобная проблема, если враж. герой разбивался об игрока, то игра как бы была в заморозке (BlockGame). Я решил это, что мол моё событие, которое происходило при смерти этого героя происходило во время хода третьего, левого игрока и всё окей стало. Но если у тебя всего 2 действующих игрока, то тогда не знаю, как это сможет помочь.

Три игрока.
Карты для героев 5

"Плата за любовь"
"Путь некроманта"
"Темные грани"
"Рок Гримхейма"
Ребят, подскажите скрипт на то, что бы существо типо атаковало и типо радовалось на карте, для карты очень важно, скажите пж
В ответ пользователю JackBrainPredtech
Аватар пользователя
JackBrainPredtech
Ребят, подскажите скрипт на то, что бы существо типо атаковало и типо радовалось на карте, для карты очень важно, скажите пж

PlayObjectAnimation("скриптовое название юнита", "happy", ONESHOT_STILL);

ONESHOT_STILL - если анимация должна проигрываться лишь 1 раз;
если хочешь, чтобы анимация была постоянной, то нужна другая команда, почитай в руководстве какая конкретно.
Автор карт:
Долина расхитителей
Выбор мира
В ответ пользователю OrnsteinDragonslayer
OrnsteinDragonslayer
PlayObjectAnimation("скриптовое название юнита", "happy", ONESHOT_STILL);

ONESHOT_STILL - если анимация должна проигрываться лишь 1 раз;
если хочешь, чтобы анимация была постоянной, то нужна другая команда, почитай в руководстве какая конкретно.

Читал, и нифига не понял, помогите

Добавлено через 35 минут
OrnsteinDragonslayer
PlayObjectAnimation("скриптовое название юнита", "happy", ONESHOT_STILL);

ONESHOT_STILL - если анимация должна проигрываться лишь 1 раз;
если хочешь, чтобы анимация была постоянной, то нужна другая команда, почитай в руководстве какая конкретно.

Там все на ингл. напишите команды, которые я попросил, если не затруднит...

Добавлено через 8 минут
OrnsteinDragonslayer
PlayObjectAnimation("скриптовое название юнита", "happy", ONESHOT_STILL);

ONESHOT_STILL - если анимация должна проигрываться лишь 1 раз;
если хочешь, чтобы анимация была постоянной, то нужна другая команда, почитай в руководстве какая конкретно.
помогите же
Аватар пользователя
OrnsteinDragonslayer более чем все расписал.

Вы задаете в редакторе скриптовое имя тому, кто должен играть анимацию. После чего копируете в скрипт сию строчку для каждого из этих существ.

PlayObjectAnimation("сюда писать скриптовое имя существа", "happy", IDLE) - для зацикленной радости
PlayObjectAnimation("сюда писать скриптовое имя существа", "attack00", IDLE) - для зацикленной атаки
Карты для героев 5

"Плата за любовь"
"Путь некроманта"
"Темные грани"
"Рок Гримхейма"
В ответ пользователю AstralLein
AstralLein
OrnsteinDragonslayer более чем все расписал.

Вы задаете в редакторе скриптовое имя тому, кто должен играть анимацию. После чего копируете в скрипт сию строчку для каждого из этих существ.

PlayObjectAnimation("сюда писать скриптовое имя существа", "happy", IDLE) - для зацикленной радости
PlayObjectAnimation("сюда писать скриптовое имя существа", "attack00", IDLE) - для зацикленной атаки

Увы, они как стояли яйки чесали, так и продолжают чесать
В ответ пользователю JackBrainPredtech
Аватар пользователя
JackBrainPredtech
Увы, они как стояли яйки чесали, так и продолжают чесать

Фрагмент из моей карты, где дерутся 2 элементаля
function BattleThread()
while (true) do
if (IsObjectExists("elemF")) then
PlayObjectAnimation("elemF", "attack00", ONESHOT);
end
sleep(random(10)+5);
if (IsObjectExists("elemW")) then
PlayObjectAnimation("elemW", "attack00", ONESHOT);
end
sleep(random(10)+5);
end
end

startThread (BattleThread);

Где elemF и elemW - скриптовое название существ. Если вы не знаете, то тыкните в редакторе на нужного юнита, слева в менюшке в строке Name (вроде) дайте ему какое-нибудь название, это названию юзайте и в функции выше.
Автор карт:
Долина расхитителей
Выбор мира

Статистика

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