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

Сообщения от Не работают скрипты

Пока нет оценок — будьте первым!
Аватар пользователя
#1
Не знаю, сталкивались ли вы с такой проблемой, но в общем: Я некоторые скрипты скопировал из других форумов и одиночных миссий и вставлял их в редакторе, но при тестировании ничего не происходило (Например: анимация существ, отключение ИИ (чтобы герой вражеский не двигался)

Вот скрипты из карты:
---ВЛАСТЕЛИН КОЛЕЦ: БРАТСТВО КОЛЬЦА (1 - Путь в Бри)---
EnableHeroAI("Necros", nil)

function new_day()
local day = GetDate(DAY)
if day == 1 then
DeployReserveHero("Necros", x, y, 0)
end
end

Trigger(NEW_DAY_TRIGGER, 'new_day')



Trigger(REGION_ENTER_AND_STOP_TRIGGER, "Idle", "hire1")
----------------------ХОББИТЫ--------------------------
PlayObjectAnimation("Hobbit1_work","attack00",IDLE)
PlayObjectAnimation("Hobbit2_work","attack00",IDLE)
----------------------РЕСУРСЫ--------------------------
SetPlayerStartResources(1,0,0,0,0,0,0,0) ;
Аватар пользователя
#2
В функции new_day явно ошибки:
1. Она не будет вызвана для первого дня игры.
2. Параметры функции DeployReserveHero неправильно заданы, то есть ей переданы пустые, ничего не значащие, переменные x и y, а это ошибка. Надо или заменить их на числа или присвоить им некоторые значения.

И надо проверить внутреннее имя героя "Necros", т. к. он не из стандартных.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#3
Да не, ты не понял, у меня ВООБЩЕ скрипты не работают, что бы я не исправлял, один хрен
Аватар пользователя
#4
Алеха, код скрипта выполняется последовательно, любая ошибка приводит к завершению работы интерпретатора и весь дальнейший код выполнен не будет, даже если он правильный. К примеру, если героя с именем "Necros" на карте нет, скрипт слетит на первой строчке EnableHeroAI("Necros", nil) и дальше не пойдет. Распространенные ошибки - точка вместо запятой или наоборот, пропуск закрывающих end'ов и так далее. Включите консоль, там будет написано на какой команде вылетело.
В ответ пользователю Jack_of_shadows
Аватар пользователя
#5
Как же мне тогда исправлять такие проблемы? (Извини за тупизм, если что)
Делаю кампанию "Последний Феникс"
Аватар пользователя
#6
Алеха, есть несколько направлений, в которые можно двигаться:
Писать скрипты в редакторах с проверкой синтаксиса, к примеру HoMM5 MapScriptsEditor. Он как минимум будет сразу же выдавать предупреждение на всякие мелкие опечатки, плюс автодополнение названий функций и подсказка по параметрам (это правда работает немного глючно).
Закомментируйте весь код скрипта, далее раскомментируйте по маленькому кусочку по несколько строк и проверяйте что он работает, или исправляйте его, пока не заработает и только потом переходите к следующему. То, что уже точно работает, можно помечать как-нибудь, чтобы в следующий раз не проверять снова.
Ставьте в коде тестовые отладочные сообщения, вида print('такая-то функция выполнилась'). По ним легко видно какой участок кода был выполнен, какой нет.
Особо удобная штука - отлаживать код не выходя из игры. Создаём в папке "путь_к_героям/data" txt файл в кодировке юникод и с расширением .lua, пишем в нем код, в котором не уверены, в конце файла можно добавить например print('script OK'), загружаем карту, открываем консоль, набираем doFile('название_файла.lua'). Если видим в консоли зеленое сообщение 'script OK', значит код рабочий, если нет - сворачиваем героев, колдуем над файлом, не забываем сохранить, возвращаемся к героям, в консоли вбиваем ту же команду (можно просто нажать кнопку вверх). Повторяем пока код не заработает.
Аватар пользователя
#7
HoMM5 MapScriptsEditor? Где он расположен?
Делаю кампанию "Последний Феникс"
Аватар пользователя
#8
Это сторонняя программа, наберите название в поиске, скачайте по первой или второй ссылке.
Аватар пользователя
#9
doFile('Proverka.lua') написал, пишет, что не знает такой команды
Делаю кампанию "Последний Феникс"
Аватар пользователя
#10
Jack_of_shadows
в кодировке юникод
ANSI же вроде.

Добавлено через 5 минут
Алеха
doFile('Proverka.lua') написал, пишет, что не знает такой команды
Перед скриптовыми командами надо ставить @, если пишешь ее в консоли.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#11
RedHeavenHero
ANSI же вроде.

Добавлено через 5 минут

Перед скриптовыми командами надо ставить @, если пишешь ее в консоли.

1) Нет, Юникод
2) Ясно

Добавлено через 17 минут
Скрипт (анимация) сработал! Он сработал!!! И EnableAiHero работает! А вот ресурсы нет
Делаю кампанию "Последний Феникс"
Аватар пользователя
#12
Такая функция у меня точно работала:
SetPlayerStartResource(PLAYER_1, GOLD, 1000);
В ответ пользователю Jack_of_shadows
Аватар пользователя
#13
Д я уже понял, в чем ошибка, в скрипте указан игрок 1, а у меня игрок 3. Слушай, меня один вопросик заинтересовал: как сделать так, чтобы "назгулы" патрулировали территорию и как только обнаруживали "Фродо", сразу на него нападали?
Делаю кампанию "Последний Феникс"
Аватар пользователя
#14
Таки Юникод не работает.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#15
Таки Юникод не работает.
А проще всего взять любой lua файл из любой карты и поправить его под свои нужды. Я всегда только так и делаю.

Статистика

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

Сейчас на сайте 3 пользователей 1107 гостей