Скрипт телепортации
Руководство по написанию скрипта телепортации и его привязке к объекту в игре Arcanum: Of Steamworks & Magick Obscura
Автор: san-san
Как привязать к объекту (к входу в пещеру) переход на другую локацию, т.е пещеру? Или: Как сделать возможным перемещение путем кораблеплавания или паровоза (например) в новую точку на карте? Или может с помощью телепорта? Мануал по написанию скрипта и его привязке к объекту «телепорт»: вход в пещеру, люк, лестница, паровоз, кольцо телепортации (а в общем-то любой предмет, кликнув (или наступив) на который можно переместиться в другую локацию или в точку с конкретными координатами).
Данный вопрос не единожды возникал на форумах Arcanum, но продолжает возникать вновь и вновь. Ответ Zammy довольно понятный, но не слишком подробный. Попробую дополнить и пояснить. Для начала я его просто процитирую. Потом дополню.
При решении поставленной задачи Вам потребуется следующий инструментарий.
Программы:
- DatBuilder 1.0 (скачивайте по ссылке 259 Кб)
- Любой текстовый редактор (типа «Блокнот»)
- Редакторы WorldEd и ScrMaker (они есть в самой игре)
Для начала — вот что (давным-давно) написал Zammy на форуме Arcanum-City в FAQ.
Q: Как привязать к объекту (к входу в пещеру) переход на другую локацию, т. е. пещеру?
A: Первый шаг — у этого объекта нужно снять флажок «Click through» (в редакторе WorldEd, в диалоге Edit, Flags). Если это вход в пещеру — т. е. не объект, а просто картинка на земле, то надо сделать объект, который выглядит точно так же, как и Ваш вход. (в редакторе эти проходы в разделе с названием что-то типа «Passage»). Теперь при наведении на него курсора в игре, объект будет подсвечиваться. Второй шаг — пишем скрипт перехода на другую карту. Не забывайте, что в скрипте последняя строка должна быть или ’Return & skip default’, или ’Return & run default’. Третий и последний шаг — присоединяем этот скрипт в точку ’USE’ нашего прохода. Теперь при нажатии в игре на этот объект, вызывается скрипт перехода. Всё. В принципе можно пойти другим путём. Понаставить вокруг прохода — TS (Тайл скриптов), и привязать к ним этот же скрипт. Теперь при наступании на землю рядом с проходом Вы, также, будете телепортироваться. Таким же образом делаются лестницы, люки и т.п.
Дополнение: Теперь попробуем всё еще раз поподробней. Сразу — все .dat файлы должны быть распакованы и лежать где-то (НЕ В ИГРЕ!) в том виде, как вы их распаковали. У Вас будет четыре папки-каталога: Arcanum1.dat, Arcanum2.dat, Arcanum3.dat, Arcanum.dat (типа скрин Рис.2). Из каталога Arcanum.dat копируем и перемещаем в каталог с игрой необходимые вам папки с картами (карты — в папке maps). Карта (карты), с которой Вы будете работать должны находиться в папке Arcanum/modules/Arcanum/maps (первый Arcanum — каталог Вашей игры, здесь и везде). Типа — таким образом: Рис.1. (для увеличения изображения — щёлкни по скриншоту). Надеюсь, что пока всё понятно (здесь написано слишком подробно, но эти «мелочи» — основы, без них ничего не получится. То, что кажется очевидным и банальным (на первый взгляд) может представлять значительную проблему).
Теперь открываем редактор WorldEd и находим нужную Вам карту (допустим — основную, Arcanum1-024-fixed). Я уже писал, как её открывать в предыдущем мануале. Повторюсь. Если в редакторе WorldEd Вы увидели (ну и открыли) карту arcanum1-024-fixed — Ура! и можно продолжать. Но. Частая ошибка. — Открыв редактор и выбрав модуль (Arcanum) — вы не видите карты. Зайдите в головное меню и выберете Open (а не open modules) — рис4—5. Пустячок. Но бывает. И часто. Выбрав нужную карту — открываем...
Важно: В этой папке maps после игры появляется масса временных файлов. Если Вы редактируете карту — удаляйте их. Появляются они всегда, так что и удалять их надо так же. Всегда. Иначе в игре Вы своих изменений не увидите. Файлы эти легко узнать, кроме них и папок с картами в /maps больше ничего и нет см. Рис.6. Не выкиньте по ошибке папки с картами. Удалять — только файлы, НЕ ПАПКИ! Если чего не получается — спрашивайте, не стесняйтесь. В первый раз — всё трудно и непонятно.
Писать еще подробней уже не могу (по открытию карты). И идём далее. Попутно отвечаем на вопросик:
Q: Как перемещаться по карте, кроме «+» и «-» сверху?
Zammy: Надо зажечь NumLock и циферками на NumPad’e станет можно перемещаться. Есть ещё способ: над картой есть две ячейки для координат, вписываешь туда X Y ;и нажимаешь ’Set’. Кнопка Home переносит в начало карты.
Разумно и понятно. Добавлю. Координаты всех локаций находятся в файле gamearea.mes по адресу Arcanum/modules/Arcanum/mes/gamearea.mes При перемещении по карте в редакторе из Таранта в Каладон (к примеру) — вбиваете в окошко координат нужные — жмёте «Set». На будущее, найдите этот файл в распакованном архиве Arcanum.dat (адрес аналогичный) и скопируйте его в каталог с игрой.
Наконец добираемся до сути вопроса. Рассмотрим его на примере, чтоб было понятней. Открываем редактор и устанавливаем координаты 92960,82592 — место катастрофы — Рис.7. Фиолетовым — отмечено окошко с координатами и будущий портал — люк (а может он быть могилой, сундуком, паровозом, дверью и т.п. — да, конечно). Расписывать — как поставить предмет на карту — здесь не будем — см.Рис.8, всё в три щелчка. Картинки там во весь экран — не забудьте развернуть... Итак, этот люк — портал, при нажатии на него в игре Вы перенесетесь в указанную Вами точку. Как его сделать. Наводим курсор на люк (см. Рис.9), жмём правую кнопку. В открывшемся меню нажимаем ’edit’.
Попадаем в другое меню — Рис.10. Там много всего. Важное сейчас отмечены разными цветами — расстановка флажков (песня отдельная и сами разберетесь) — пока просто скопируйте — как у меня. Внешний вид (в нашем случае — люк). Если Вы научились ставить на поверхность предметы, то всё ОК, нужный Вам уже стоит, но в данном окошке можно изменить его рисунок. (Сами, опять же поймете — как, не сложно). И самое главное — кнопка ’skripts’. Если флаги Вы расставили — жмите её. Попадаем в очередное меню — рис.11. Как понятно из картинки, в игре присутствует бешеное количество скриптов самого различного назначения. При телепортации задействован скрипт, реализуемый командой ’Use’, кнопку которой мы и жмём — рис.12.
Тут, на этой картинке, немного задержимся. Объяснять подробно про скрипты не буду, никакого места не хватит. Но из этого рисунка ясно, что на всех предметах (и NPC) «висят» какие-то скрипты. Если Вас интересует — какие — данная метода спокойно позволит Вам узнать номер его, найти скрипт и понять принцип его работы. Или просто «клонировать» скрипт, т. е. сделать свой, для своих надобностей «по образу и подобию». Но с пониманием, как данный скрипт работает. «Тупого» клонирования не получится, надо хотя б понимать, что происходит... Что я здесь и делаю. Сначала определимся с папкой и адресом. Все скрипты в игре лежат по адресу Arcanum/data/scr И эта папка у Вас есть уже в игре. Теперь посмотрим распакованный dat-каталог Arcanum2.dat — папку «scr». Это весь скрипт игры. Отвечающие за телепорт — (к примеру — 01261Bates Mansion-to-Tunnel_TEL.scr) с индексом _TEL в конце названия. Их там много, за прототип можно брать почти любой. В своих скриптах рекомендую индексы тоже ставить, чтобы не запутаться. Хорошо, скрипт телепортации найден. НОМЕР СКРИПТА НЕ ДОЛЖЕН ПОВТОРЯТЬСЯ В ИГРЕ! Посмотрите последний в своих каталогах скрипта и присвойте оригинальный (в моём случае на рис. 12 — стоит 8000. Такого в игре нет. Дальше будет 8001 и т.д.) Можно сначала написать скрипт, а потом ставить номер на портал или сперва дать любой (оригинальный) и написать сам скрипт позднее, не важно. Поэтому ставим смело (для примера) 8000, жмём ОК. Всё, несуществующий пока скрипт «висит» на люке. В моём моде он называется 08000Proba_TEL.scr Название не важно, важен — номер. Теперь определимся — а куда ведёт портал. Для этого надо определить:
1. Номер карты, на которую надо попасть. В распакованном dat — архиве находим файл Arcanum.dat/Rules/MapList.mes Копируем его и вставляем в игру — Arcanum/modules/Arcanum/Rules/MapList.mes. Открываем его (текстовым редактором) и смотрим. Выглядит так...{5000}{Arcanum1-024-fixed, 92958,82592, Type: START_MAP, WorldMap: 0}
- {5001}{BessieToonesMine-fixed, 96, 126, WorldMap: 0, Area: 1}
- {5002}{PSchuylers Lev 1-fixed, 96, 126, WorldMap: 0, Area: 21}
- {5003}{PSchuylers Lev 2-fixed, 96, 126, WorldMap: 0, Area: 21}
- {5004}{PSchuylers Lev 3-fixed, 96, 126, WorldMap: 0, Area: 21}
- {5005}{BMC, 672,124, WorldMap: 0, Area: 7}
- {5006}{Wheel Clan,696,96, WorldMap: 0, Area: 9}
- {5007}{Void, 1055, 1055}
- {5008}{Caladons Sewers, 100, 100, WorldMap: 0, Area: 4}
и т. д. и т. п. Первый номер (5000 для главной карты) — искомый.
2. Координаты точки телепорта. Указав курсором на искомое место на карте в окошке координат (рис.7) видим нужные нам координаты.
Записываем редактированную карту и закрываем редактор. Возвращаемся к скрипту.
Для того, чтоб спокойно его открыть, из распакованного архива копируем и вставляем в игру скрипт образец (потом его лучше удалить). Теперь откроем его редактором скрипта ScrMaker (он в корне игры. Выберете в меню ’fale’ пункт ’open’). Смотрим Рис.13. Очевидно, что данный скрипт посылает нас на карту 5000 в координаты X ... и Y... Но это готовый скрипт, нам нужен свой. Сохраняем прототип как... 8000_proba_tel.scr и начинаем его редактировать. В меню ’line’ выбираем первую строчку — ’action’. В выпавшем меню (рис.14) находим строчку ’ teleport...’ — ОК, ’Trigger’ — ОК, ’Number’ — ’5000’ (вводим номер карты) — ОК, ’number’ — ’6750’ (координаты по Х) — ОК, ’number’ — ’4320’ (вводим координаты по Y) — ОК. Появилась Ваша строчка скрипта. Теперь выберите старую «лишнюю» (со старыми координатами) и через то же меню ’line’ удалите ее ’delete’. Получился двухстрочный (не вздумайте удалить вторую строку ’Return &...’) рабочий скрипт телепорта. Сохраняйтесь. Всё. Аналогично делается любой другой скрипт телепортации. Надеюсь, что что-то прояснилось. Осталось проверить портал. Запускайте игру — и удачи. (Не забывайте чистить папку ’maps’ после каждого запуска игры, как я писал выше).
Прописав и этот мануал подумал о нелегком труде писателей. Устал. Заканчиваю. Для начала — вполне достаточно, вопросы — на Форум. Если они появятся — продолжу.
И еще «к слову». Возможно я прописал слишком подробно, рассчитывая всё ж на не слишком продвинутых модеров. Но в данном случае — мелочи решают всё.
Ещё. Если Вы вдумчиво прочитали и разобрались с этим конкретным скриптом — Вы можете клонировать и любой другой, скриптовый язык не сложный и, более-менее понятный. Экспериментируйте.














Для комментирования материалов регистрация на сайте не нужна. Правила публикации: наличие здравого смысла. Спам удаляется, Email комментаторов не публикуется.