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

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

Всем привет. Решил детство вспомнить, поиграть с редактором героев 5. Ката в закрепе сообщения. Попробовал сделать обновление статуса задания, но почему-то не срабатывает. п.с да, все названия в скрипте принадлежать реальным игровым объектам и файлам карты.
function f()
MessageBox ("/Maps/SingleMissions/FunnyFantasy/Rumour.txt");
SetObjectiveState("Q", OBJECTIVE_COMPLETED)
end

function f1()
MessageBox ("/Maps/SingleMissions/FunnyFantasy/Rumour.txt");
end

Trigger(REGION_ENTER_AND_STOP_TRIGGER, "kamilla", "f");
Вложения 1
1 файл • Общий размер: 15,6 KB
п.с тупанул, надо было у миссии выбрать тип kind manual
Автопереведено
Здравствуйте всем,

Прошу прощения за использование английского языка, я не очень хорошо владею русским :(.

Я хотел бы рассказать о патче, который позволяет использовать скрипты для боёв и городов в многопользовательских играх и играх с одним компьютером!

Вы можете скачать файл патча отсюда: здесь.

Чтобы применить патч к EXE-файлу, скачайте инструмент Deflaktor отсюда: здесь. На этой странице также есть руководство по использованию.

Патч работает как с оригинальным EXE-файлом ToTe, так и с EXE-файлом Quantomas.
Аватар пользователя
Автопереведено
О, это просто замечательно! Столько новых идей, которые можно воплотить в жизнь.
Нет войне.
Автопереведено
Спасибо, @Gerter,

На самом деле, я тоже начинаю интересоваться написанием скриптов. Я вижу, что сообщество добилось больших успехов! Я хотел узнать, есть ли у вас список функций скриптов для боевых действий?

Некоторые из них есть в файле "Editor Documentation\HOMM5_A2_Script_Functions.pdf", но, судя по тому, что я нашел здесь, существует гораздо больше функций, которые не задокументированы. Буду благодарен за любые советы, уроки и ссылки!
Аватар пользователя
I patched my EXE and tested it in hot-seat - it works! So it like a fresh breath for mods like NHF or NAF - we can add so many new features now! Big thanks to you!

@dredknight - there is a good tutorial from Novik - https://yadi.sk/i/9xfu8mh0Acq0kg. It's in russian, but that's best tutorial for combat functions, and it has all functions that avaliable in combat mode

Добавлено через 14 минут
but maybe now it time to make a more complex tutorial about combat functions... i use lots of combat scripts in my maps so maybe i can do it, if it'll be useful.
Нет войне.
Автопереведено
Спасибо, я посмотрю обучающее видео сегодня вечером.

Я быстро учусь на примерах, так что если у вас есть какие-либо работы, которые я мог бы изучить, это тоже будет полезно!

Всего хорошего!
Аватар пользователя
Автопереведено
Я многому научился благодаря сценариям RedHeavenHero, поэтому теперь использую многие его идеи в своих собственных картах. Посмотрите на его работы: /topic/11060/, /topic/13208/ и, возможно, мою карту тоже – /topic/14423/. Также я могу помочь вам в личном сообщении, если захотите
Нет войне.
Автопереведено
Спасибо, я обязательно свяжусь с вами позже :).
Аватар пользователя
Вопрос на миллион душ! Не работают скрипты. Подскажите, где ошибка. Консоль не матерится.
Первое: если город эльфов захватил игрок 2, то ты должен проиграть, но игра продолжается.
function CheckAnpossal()
if GetObjectOwner ('houseElf') == 2 then
sleep(10)
SetObjectiveState('q4', OBJECTIVE_FAILED, 1);
sleep(10)
Loose()
end
end

startThread (CheckAnpossal)

Второе: в течении игры отслеживается, не умер ли юнит в армии героя. Если у героя его нет - проигрыш. Работает. Но после определённого момента сюжета этот юнит должен быть убран из армии и игра должна продолжиться. Не продолжается - проигрываешь. Консоль опять же вроде не материлась.

отслеживание юнита в армии героя (работает):
function lostDragon() ---- Проверка потери дракона
while 1 do
sleep ( 10 );
if GetHeroCreatures("Ohtarig", 83) == 0 and dragon == 1 then
if SetRegionBlocked('CheckAstrid', false) then
SetObjectiveState("q5", OBJECTIVE_FAILED, 1);
sleep ( 10 );
Loose();
break
end;
end;
end;
end
startThread (lostDragon)

Ключевой момент сюжета(не работает, как нужно):
function PokaAstrida()
SetRegionBlocked ('CheckAstrid', false, 1)
dragon = 0
RemoveHeroCreatures('Ohtarig', 83, 1)
StartDialogScene("/Maps/SingleMissions/ChoiseOTW1/Test/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
StartCombat('Ohtarig', nil, 1, 41, 1, nil, nil, nil, nil)
sleep(5)
MessageBox("/Maps/SingleMissions/ChoiseOTW1/MagiPoka.txt");
sleep(5)
SetObjectiveState("q5", OBJECTIVE_FAILED);
Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", nil);
sleep(5)
RemoveObject('lich1')
RemoveObject('lich2')
RemoveObject('lich3')
end

Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", 'PokaAstrida');

Подскажите пожалуйста, где я не в ту сторону подумал
Автор карт:
Долина расхитителей
Выбор мира
Аватар пользователя
Первое: если город эльфов захватил игрок 2, то ты должен проиграть, но игра продолжается.
While забыли, у вас однократная проверка там.
Не продолжается - проигрываешь
А настройки квеста q5 правильные? Может, он сам инициирует проигрыш.
Ну и хорошо бы сделать так, чтобы в функции lostDragon выходить из цикла, когда dragon==0, чтобы не было постоянных бессмысленных проверок.
 

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

А настройки квеста q5 правильные? Может, он сам инициирует проигрыш.
Ну и хорошо бы сделать так, чтобы в функции lostDragon выходить из цикла, когда dragon==0, чтобы не было постоянных бессмысленных проверок.

Во истину, теперь когда город ЛЭ захвачен - и кв проваливается и игра проиграна.
Но другую проблему я так и не решил. Задание q5 в редакторе корректное, кайнд_мануал в условиях, не думаю, что корень проблемы там.
А как мне остановить цикл этот?
Так де немного подредактировал эту фунцкию в надежде на исправление, однако провал. На всякий случай скину еще раз, чтобы не искать.

SetRegionBlocked ('CheckAstrid', true)

function lostDragon() ---- Проверка потери дракона
while 1 do
sleep ( 10 );
if GetHeroCreatures("Ohtarig", 83) == 0 and dragon == 1 and
SetRegionBlocked('CheckAstrid', false) then
SetObjectiveState("q5", OBJECTIVE_FAILED, 1);
sleep ( 10 );
Loose();
break
end;
end;
end;
startThread (lostDragon)

И, собственно момент, когда дракон должен пропасть из армии, квест по его сохранению провалится, но игра должна продолжиться.
function PokaAstrida()
SetRegionBlocked ('CheckAstrid', false, 1)
dragon = 0
RemoveHeroCreatures('Ohtarig', 83, 1)
StartDialogScene("/Maps/SingleMissions/ChoiseOTW1/Test/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
StartCombat('Ohtarig', nil, 1, 41, 1, nil, nil, nil, nil)
sleep(5)
MessageBox("/Maps/SingleMissions/ChoiseOTW1/MagiPoka.txt");
sleep(5)
SetObjectiveState("q5", OBJECTIVE_FAILED);
Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", nil);
sleep(5)
RemoveObject('lich1')
RemoveObject('lich2')
RemoveObject('lich3')
end

Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", 'PokaAstrida');

Здесь всё работает до того момента, когда ты выходишь из боя. Далее, как я полагаю, идёт проверка наличия юнита - его нет - проиграл.
Автор карт:
Долина расхитителей
Выбор мира
Аватар пользователя
настройку задания 'q5' CanUncomplete чекни. Кажется, нужно true, чтобы не было луза при провале.
and SetRegionBlocked('CheckAstrid', false)

не оч понимаю суть этой проверки. здесь всегда будет 1, если регион существует
Нет войне.
В ответ пользователю Gerter
Аватар пользователя
Gerter
настройку задания 'q5' CanUncomplete чекни. Кажется, нужно true, чтобы не было луза при провале.
and SetRegionBlocked('CheckAstrid', false)

не оч понимаю суть этой проверки. здесь всегда будет 1, если регион существует

Действительно, было false, поставил на true. Но бтв это проблему не решило. Вот чо консоль говорит в этот момент (EWA стоит если шо).

А про проверку региона - я уж отчаился и какой-то кривой костыль поставил, чтобы вместе с коэфф. менялся, но как-то бесполезно.
Автор карт:
Долина расхитителей
Выбор мира
Помогите новичку со скриптом.

function MakeHeroes()
DeployReserveHero("Mardigo", 17, 161, 0);

end;


Trigger(REGION_ENTER_AND_STOP_TRIGGER, "Start", "MakeHeroes");

function podkrep()
MessageBox(Вы обнаружили отряд союзных мятежников, которые уничтожили пограничный город.);
MoveCamera(28, 148, 0, 50, 0, 0, 1, 1);

end;


Trigger(REGION_ENTER_AND_STOP_TRIGGER, "gorod", "podkrep");


Что должен сделать скрипт?
1. При входе на определенную локацию спавнит ласло
2. При входе на определенную локацию показывает месседж бокс в котором написанно о том что вы нашли подкрепление, и камера плавно летит на указанные координаты

В игре в скрипте выбивает ошибку

Статистика

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

Сейчас на сайте 6 пользователей 1312 гостей