Создание модов для игры Арканум: мануал, уроки, советы, рекомендации
Руководство по написанию скрипта телепортации и его привязке к объекту в игре Арканум
Как привязать к объекту (к входу в пещеру) переход на другую локацию, т.е пещеру? Или: Как сделать возможным перемещение путем кораблеплавания или паровоза (например) в новую точку на карте? Или может с помощью телепорта? Мануал по написанию скрипта и его привязке к объекту «телепорт»: вход в пещеру, люк, лестница, паровоз, кольцо телепортации (а в общем-то любой предмет, кликнув (или наступив) на который можно переместиться в другую локацию или в точку с конкретными координатами).
Данный вопрос не единожды возникал на форумах Arcanum, но продолжает возникать вновь и вновь. Ответ Zammy довольно понятный, но не слишком подробный. Попробую дополнить и пояснить. Для начала я его просто процитирую. Потом& дополню.
При решении поставленной задачи Вам потребуется следующий инструментарий.
Редакторы 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. (для увеличения изображения — щёлкни по скриншоту). Надеюсь, что пока всё понятно (здесь написано слишком подробно, но эти «мелочи» — основы, без них ничего не получится. То, что кажется очевидным и банальным (на первый взгляд) может представлять значительную проблему).
Рис.1
Рис.2
Теперь открываем редактор WorldEd и находим нужную Вам карту (допустим — основную, Arcanum1-024-fixed). Я уже писал, как её открывать в предыдущем мануале. Повторюсь. Если в редакторе WorldEd Вы увидели (ну и открыли) карту arcanum1-024-fixed — Ура! и можно продолжать. Но. Частая ошибка. — Открыв редактор и выбрав модуль (Arcanum) — вы не видите карты. Зайдите в головное меню и выберете Open (а не open modules) — рис4–5. Пустячок. Но бывает. И часто. Выбрав нужную карту — открываем…
Важно: В этой папке maps после игры появляется масса временных файлов. Если Вы редактируете карту — удаляйте их. Появляются они всегда, так что и удалять их надо так же. Всегда. Иначе в игре Вы своих изменений не увидите. Файлы эти легко узнать, кроме них и папок с картами в /maps больше ничего и нет см. Рис.6. Не выкиньте по ошибке папки с картами. Удалять — только файлы, НЕ ПАПКИ! Если чего не получается — спрашивайте, не стесняйтесь. В первый раз — всё трудно и непонятно. На Форум.
Рис.4
Рис.5
Рис.6
Писать еще подробней уже не могу (по открытию карты). И идём далее. Попутно отвечаем на вопросик:
Q: Как перемещаться по карте, кроме «+» и «-» сверху?
Zammy: Надо зажечь NumLock и циферками на NumPade станет можно перемещаться. Есть ещё способ: над картой есть две ячейки для координат, вписываешь туда X Y ;и нажимаешь Set. Кнопка Home переносит в начало карты.
Разумно и понятно. Добавлю. Координаты всех локаций находятся в файле gamearea.mes по адресу Arcanum/modules/Arcanum/mes/gamearea.mes При перемещении по карте в редакторе из Таранта в Каладон (к примеру) — вбиваете в окошко координат нужные — жмёте «Set». На будущее, найдите этот файл в распакованном архиве Arcanum.dat (адрес аналогичный) и скопируйте его в каталог с игрой.
Наконец добираемся до сути вопроса. Рассмотрим его на примере, чтоб было понятней. Открываем редактор и устанавливаем координаты 92960,82592 — место катастрофы — Рис.7. Фиолетовым — отмечено окошко с координатами и будущий портал — люк (а может он быть могилой, сундуком, паровозом, дверью и т.п. — да, конечно). Расписывать — как поставить предмет на карту — здесь не будем — см.Рис.8, всё в три щелчка. Картинки там во весь экран — не забудьте развернуть… Итак, этот люк — портал, при нажатии на него в игре Вы перенесетесь в указанную Вами точку. Как его сделать. Наводим курсор на люк (см. Рис.9), жмём правую кнопку. В открывшемся меню нажимаем edit.
Рис.7
Рис.8
Рис.9
Попадаем в другое меню — Рис.10. Там много всего. Важное сейчас отмечены разными цветами — расстановка флажков (песня отдельная и сами разберетесь) — пока просто скопируйте — как у меня. Внешний вид (в нашем случае — люк). Если Вы научились ставить на поверхность предметы, то всё ОК, нужный Вам уже стоит, но в данном окошке можно изменить его рисунок. (Сами, опять же поймете — как, не сложно). И самое главное — кнопка skripts. Если флаги Вы расставили — жмите её. Попадаем в очередное меню — рис.11. Как понятно из картинки, в игре присутствует бешеное количество скриптов самого различного назначения. При телепортации задействован скрипт, реализуемый командой Use, кнопку которой мы и жмём — рис.12.
Рис.10
Рис.11
Рис.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}
и т. д. и т. п. Первый номер (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 после каждого запуска игры, как я писал выше).
Рис. 13
Рис. 14
Прописав и этот мануал подумал о нелегком труде писателей. Устал. Заканчиваю. Для начала — вполне достаточно, вопросы — на Форум. Если они появятся — продолжу.
И еще «к слову». Возможно я прописал слишком подробно, рассчитывая всё ж на не слишком продвинутых модеров. Но в данном случае — мелочи решают всё.
Ещё. Если Вы вдумчиво прочитали и разобрались с этим конкретным скриптом — Вы можете клонировать и любой другой, скриптовый язык не сложный и, более-менее понятный. Экспериментируйте.
Вопросы, замечания и предложения по поводу прочитанного можно высказать на форуме.