Приветствуем Вас, Прохожий (Guest) | RSS
  • Страница 1 из 1
  • 1
Модератор форума: FairYng, Saltov  
Работа скриптов в Disciples III
Вансан Дата: Воскресенье, 15.05.2011, 06:38 | Сообщение # 1
Scrolls Keeper
Группа: Хранитель (Keeper)
Сообщений: 973
Репутация: 724
Статус: Offline
В этой теме предлагаю обсуждать тонкости работы со скриптами в редакторе Disciples III всех мастей.
Можно публиковать варианты описаний - какой скрипт что делает, либо предлагать дополнять уже существующие описания в модуле FAQ.
Если вы обнаружили, что какой-либо скрипт странно работает при определенных условиях, либо на какой-то конкретной версии игры - пишите сюда, всё это обязательно попадёт в мануалы.

Absit invidia verbo.
Nayred Дата: Воскресенье, 15.05.2011, 08:45 | Сообщение # 2
Группа: Последователь (Disciple)
Сообщений: 370
Репутация: 197
Статус: Offline
MoveCamera(X,X,X,X,X);
по видимому, гекс, время подлета к точке (в сек), время задержки, расстояние, угол (как в SetCamera)
OnUnit, очевидно, аналогично, только вместо гекса ID юнита.
С ReleaseCamera и MoveCameraBack не совсем понятно. Возможно, какая-то из этих команд отвечает за возвращение камеры назад в случае применения MoveCamera без параметра "время задержки". Причем одна из этих команд при каких-то условиях намертво вешает интерфейс игры, насколько я помню.

Quote
TownLock(X);
TownUnlock(X);

Парные команды. В случае применения на столицу (указывается центральный гекс):
- она перестает давать ресурсы (с задержкой в ход, правда)
- нельзя строить
- нельзя изучать заклинания
- кастовать вроде тоже нельзя
С заходом я забыл (проверял, но для своей карты загородил вход кустами, пока столица блокирована), вроде бы зайти можно, но нанять, лечить, открыть магазин нельзя.
После разблокирования, похоже, есть крайне неприятный баг: если сохранить-загрузить игру, столица снова будет заблокирована.


Сообщение отредактировал Cayren - Воскресенье, 15.05.2011, 09:00
wachutuchief Дата: Воскресенье, 15.05.2011, 09:42 | Сообщение # 3
Группа: Последователь (Disciple)
Сообщений: 126
Репутация: 91
Статус: Offline
ReleaseCamera; - принудительно мгновенно возвращает камеру в то положение, которое было до того, как камеру "захватил" скрипт.
Например: если в MoveCamera или SetCamera мы специально установили ОЧЕНЬ большое время задержки (скажем, чтобы камера не скакала во время диалога, даже если читать его будет тормоз и по слогам), то можно поставить эту команду, чтобы срабатывала по завершению диалога. У меня сейчас почти все скриптовые сцены так сделаны.

MoveCameraBack(время); - то же самое, но возвращает плавно. Единственный параметр - время, которое камера бедет ползти в изначальное положение.

AddMapObject ("имя объекта", гекс, поворот); - Ставит на карту объект декора. Название можно посмотреть в редакторе, но не все совпадают (в случае, если указано неверно, целевой гекс на карте станет черным. Угол поворота можно посмотреть, поставив объект, затем навести курсор и зажать CTRL.
Есть баг: после загрузки карты, настроки поворота объекта сбиваются. Используйте зацикленные квесты, стирающие и ставящие объект заново с нужным поворотом в конце каждого хода. Пока это единственное известное мне решение.

ClearNodeObject(гекс); - очищает гекс от объектов (впринципе, описание есть в хэлпе редактора).

SetQuestStatus("имя квеста", "true/false"); - принудительно как выключает (false), так и включает (true) квест. Можно использовать, как для создания нелинейности, так и для зацикливания квестов.

QuestCycle(999, "имя квеста", "имя квеста"); - зацикливает квест, имя которого указанно во втором и третьем параметрах (скорее всего, нужно указать только один раз, но мне было лом тестить - работало и так). Первый параметр - число повторений, кажется.

Версия: орды 1.4


In a world that I don't want to know
With a message that I never want to send
To be free from all of this
I want you to quicken my end

Disturbed


Сообщение отредактировал wachutuchief - Воскресенье, 15.05.2011, 09:50
Вансан Дата: Пятница, 20.05.2011, 09:09 | Сообщение # 4
Scrolls Keeper
Группа: Хранитель (Keeper)
Сообщений: 973
Репутация: 724
Статус: Offline
Quote (Cayren)
TownLock(X); TownUnlock(X);

А для обычного города что происходит? Также блочится магазин, лечение..? А найм юнитов?
Кто нибудь может точно протестировать работу скрипта, можно ли наверняка заходить в город, кастовать заклы, и все прочие варианты?
Quote (wachutuchief)
AddMapObject
уже есть, добавлю про баг)
Quote (wachutuchief)
ClearNodeObject
- уже есть.
Про квесты - добавлю)


MoveCamera, TownLock, TownUnlock - добавил.
Quote (wachutuchief)
Используйте зацикленные квесты, стирающие и ставящие объект заново с нужным поворотом в конце каждого хода.
Кстати, можешь выложить пример такого скрипта? Для наглядности так сказать)
Вопросы про обычные города всё ещё в силе. <_<

Absit invidia verbo.
wachutuchief Дата: Пятница, 20.05.2011, 12:25 | Сообщение # 5
Группа: Последователь (Disciple)
Сообщений: 126
Репутация: 91
Статус: Offline
Quote (Вансан)
Кстати, можешь выложить пример такого скрипта? Для наглядности так сказать)
По памяти)

Создаем квест "имя квеста"
В условиях срабатывания выбираем End Turn. Параметров указывать не надо, иначе не сработает.

В самом скрипте пишем:
//Стираем наш поставленный скриптом объект
ClearNodeObject(центральный гекс нашего стираемого объекта)
//Ставим его заново
AddMapObject ("имя нашего объекта", его гекс, поворот);
//Зацикливаем наш квест
QuestCycle(999, "имя квеста", "имя квеста");

Все вроде. Будет выполняться 999 (по идее - я не проверял все 999 :D ) раз в конце каждого хода.

Можно вместо QuestCycle пользоваться командой SetQuestStatus с параметром true. Тогда будет повторяться бесконечно.

Все добавил. Вансан.


In a world that I don't want to know
With a message that I never want to send
To be free from all of this
I want you to quicken my end

Disturbed


Сообщение отредактировал wachutuchief - Пятница, 20.05.2011, 12:32
  • Страница 1 из 1
  • 1
Поиск: