Вытаскиваем карты из клиента, преобразуем их в поля для Kore

FAQ. Ответы на часто задаваемые вопросы.

Модератор: 4epT

Правила форума
Этот раздел является руководством и тут разрешено оставлять сообщения лишь для уточнения и внесения корректив в существующие материалы. Для вопросов существует ряд других разделов.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Вытаскиваем карты из клиента, преобразуем их в поля для Kore

Сообщение piroJOKE »

Вытаскиваем карты из клиента, преобразуем их в поля для OpenKore
(мини-гайд)

Сразу скажу, что в этой процедуре, как правило, нет необходимости. Самодельные карты встречаются редко, т.к. администрация приватных серваков не располагает в 99% случаев ни ресурсами, ни художественным вкусом. И тем не менее... Ага, а еще иногда встречаются серверы, на которых древние, устаревшие версии карт. Вот в этом случае это может пригодиться.
Для полноценного подключения новой карты нужны 3 вещи:
- сама карта .fld
- упоминание о карте в файле tables\maps.txt
- прописаные порталы к этой карте
Для начала идем вот сюда: http://openkore.sourceforge.net/grftool/ , и скачиваем GRF Tool (0.6 Мб); это инструмент для извлечения ресурсов из grf-файлов;

Для работы так же требуется установленный на компутере ActivePerl, http://www.activestate.com/store/activeperl/download (15.2 Мб). Он понадобится нам для исполнения скрипта-конвертора. (Замечание: оказалось, ставить Перл не обязательно, см. эту заметку).

Открываем GRF Tool-ом ваш grf-файл. Ставим фильтр *.gat (карты рельефа местности и проходимость клеточек) - выгружаем все файлы (Ctrl-A, Extract). Ставим другой фильтр - *.rsw (карты высот воды) - и тоже выгружаем их всех в ту же папку. Закрываем GRF Tool; он нам больше тут не понадобится.

Берем из дистрибутива OpenKore скрипт \fields\tools\gat2fld.pl, и ложим его в ту же папку, куда мы только что выгружали карты. Запускаем скрипт, просто покликав на него. Можно идти курить. ;)

Удаляем *.gat, *.rsw и скрипт. Всё, у нас осталась папочка с *.fld-файлами - готовые поля для Kore. Пол-дела уже сделано.

На этом месте я обычно беру какое-то средство для сравнения каталогов, и выясняю, что именно изменилось. Т.е. какие файлы на самом деле изменились. Например, TotalCommader, и встроенная в нем фича "синхронизация каталогов".

Теперь беремся за файл \tables\maps.txt. Мы должны либо дополнить его, либо создать заново. Обратите внимание, у нас получились .fld-файлы, но в maps.txt рудиментально указан перечень .rsw-файлов. Что еще... там через разделители указаны расширенные названия карт, насколько я помню, их писать не обятательно.

Мда... а список карт "с нуля" можно получить, например, дав команду dir *.fld /b > maps.txt (находясь в каталоге с нашими .fld), и потом в текстовом редакторе заменив все .fld на .rsw#mymap#.

Теперь возьмемся за синонимы карт. Я выше кажется говорил, что GRF Tool нам больше не понадобится? Ха-ха, я вас гнусно обманул! Понадобиться, и еще не раз.

Да, а вот сами синонимы лежат в файле resnametable.txt. В нем первое поле каждой строки - это как карту видно в клиенте, а второе - как называется ее файл данных. Ну-с... по моим сведениям, Kore не поддерживает механизма синонимов, поэтому нам просто надо внимательно изучить этот файл, и сделать дубликаты .fld файлов, согласно него - и, включить их в наш maps.txt, если их там еще нет.

(Кстати, в клиенте есть список карт, вот он - mapnametable.txt, казалось бы, достаточно просто переименовать файл в maps.txt, но нет, он почему-то не полный (?!).)

Всё. Поля укладываем в \fields, список карт maps.txt - в \tables, и можно запускаться. Остались правда нерабочими порталы.... Но это уже совсем другая история (см. ниже в теме мини-FAQ по записи порталов).

* * *

Дополнительные материалы: варп через нпц
Вложения
извлечение карт
извлечение карт
extractingmaps.png (5.98 КБ) 12807 просмотров
Последний раз редактировалось piroJOKE Чт май 08, 2008 11:34 am, всего редактировалось 1 раз.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

(....) смежная по смыслу тема: viewtopic.php?t=413 ("Цветные красивые карты локаций в OpenKore")
Последний раз редактировалось piroJOKE Чт дек 06, 2007 2:00 pm, всего редактировалось 1 раз.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

ЗЗЫ: Небольшое, опциональное дополнение. Вы можете хранить карты .fld в сжатом виде, экономя место на диске.
Вот статья про это: viewtopic.php?t=1409 ("Насчет хранения полей .fld в сжатом виде - плюсы и минусы")
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Вытаскиваем карты из клиента, учитывая подстановки из resnametable.txt.

Извлекаем файлы из grf в какой-нибудь каталог; участвуют *.gat, *.rsw, и resnametable.txt. После извлечения они лежат так же, как и в grf-ке, т.е., resnametable ложится прямо в наш каталог, внутри каталога образуется папка data, и там лежат все поля. Преобразуем поля клиента в fld при помощи gat2fld.pl. Удаляем *.gat, *.rsw. В нашем каталоге, рядом с resnametable.txt делаем bat-ник:

grep .rsw resnametable.txt|gsar -F -s".rsw#" -r".fld " > tmp.lst
for /F "eol=; tokens=1,2*" %%i in (tmp.lst) do @copy data\%%j data\%%i
del tmp.lst
pause

После выполнения этого bat-ника папка с полями распухает примерно на 30%, т.к. были созданы копии файлов. По идее, у нас получается полная копия всех полей, какие только есть в клиенте - со всеми возможными подстановками. Разумеется, о maps.txt нужно позаботиться отдельно.

Были использованы инструменты:
GrfTools - для извлечения данных из grf-ки
ActivePerl - для исполнения gat2fld.pl
UnxUtils - GNU шные утилиты от юниха (у нас в Даунлоаде) - оттуда grep, gsar

* * *

Теперь вопрос к знатокам - стоит ли полученное таким образом из kRO Sakray заливать в SVN OpenKore?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

piroJOKE писал(а):Теперь вопрос к знатокам - стоит ли полученное таким образом из kRO Sakray заливать в SVN OpenKore?
Не все. Ибо на Сакрее немного карты не такие как у всех (они когда-то будут такие но пока нет). Потому стоит пихать только те которые с другими клиентами одинаковы. Или даже создать скриптик для заполнения филдов.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Это само собой. ))) Я ж этим безобразием для ОК не первый раз занимаюсь. )))

На самом деле, меня волнуют "клоны", которые занимают лишние 16 Мб. Вот стоит ли ИХ пихать в SVN?

Пример(ы):

new_1-1.fld
new_1-2.fld
new_1-3.fld
new_1-4.fld
new_2-1.fld
new_2-2.fld
new_2-3.fld
new_2-4.fld
new_3-1.fld
...
priest_3-1.fld
pvp_c_room.fld
pvp_n_1-1.fld
pvp_n_1-2.fld
pvp_n_1-3.fld
pvp_n_1-4.fld
pvp_n_1-5.fld
pvp_n_2-1.fld
pvp_n_2-2.fld
...
turbo_n_1.fld
turbo_n_16.fld
turbo_n_4.fld
turbo_n_8.fld
wizard_1-1.fld
...
и т.д. и т.п.

Ы?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

piroJOKE
Возможно. Но например ПВП и Турботрек нах не нужен.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

new_1-1.fld
new_1-2.fld
new_1-3.fld
new_1-4.fld
это же одна и таже карта, и кора это понимает..
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

4epT
Эту-то оно понимает (правда через анальную клоаку), а как насчет остальных job-карт?... :(

Разумеется, оптимальным было бы написать поддержку resnametable для ОК, но мне это не по зубам. :(
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Получено предварительное "добро" на создание дубликатов карт вроде y_airport и т.п., короче, перцы, готовьтесь к распуханию ваших fields-папок метров этак на 10...15! :twisted:

ЗЫ: Вот тут с Кали был разговор: http://forums.openkore.com/viewtopic.ph ... 108#210108
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

(* pJ: о запуске перловских скриптов без установки ActivePerl, средствами ОК *)

мастхев:
piroJOKE писал(а):Ура! Решение найдено!
Итак, положим нам надо запустить перловский скрипт c:\temp\zzzz.pl
Пишем:
start.exe ! c:\temp\zzzz.pl
Всё! :twisted:

ЗЫ: Обнаружилось это на примере запуска Посейдоныча: viewtopic.php?p=49003#49003

ЗЗЫ: Кстати, теперь любой желающий сможет сам выдернуть поля из клиента скриптом \fields\tools\gat2fld.pl
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Re: Вытаскиваем карты из клиента, преобразуем их в поля для Kore

Сообщение piroJOKE »

Небольшой FAQ по записи порталов.

Порталы - точки перехода между картами или зонами внутри одной карты. Без порталов ОК "не знает", как попасть на соседнюю карту.

По умолчанию запись новых порталов в ОК уже включена. (Иногда ОК даже сама записывает новый портал, когда бод случайно наступает на него).

Управляет режимом записи порталов переменная portalRecord 2 в config.txt. Сами порталы записываются в файл portals.txt, а пути между порталами ОК автоматически записывает в portalsLOS.txt.

NB! Записывайте новые порталы в режиме portalRecord 1 (а не в portalRecord 2, который стоит по умолчанию, ибо в режиме portalRecord 2 неверно записываются ассиметричные порталы!).

Чтобы записать новые порталы, лучше всего запустить ОК в режиме wxstart, перевести ai в manual, включить карту и погонять ОК по точкам порталов. Или, как вариант - то же самое проделать в режиме xKore 1.

После записи порталов следует перезапустить ОК, она предложит перекомпилировать порталы, соглашаемся; всё, ОК знает новые пути.

* * *

Q: Новые порталы вроде записал, но отчего-то при перезапуске ОК не запустилась их компиляция, что делать? reload all тоже не помогает.

A: По-моему reload нифига не перечитывает порталы, и уж точно не ре-компилирует их! (не проверял!).

Скомпилировать порталы очень просто. Закрываем ОК. Очищаем содержимое файла \tables\portalsLOS.txt (но не удаляем его!). Запускаем ОК. В этот момент ОК перекомпилирует все порталы заново. Но это может занять несколько минут.

Разумеется, это не нужно делать в каждом экземпляре ОК; можно погонять одного из ботов по всем переходам между картами, скомпилировать его порталы, и скопировать \tables\portals.txt и \tables\portalsLOS.txt в другие экземпляры ОК.

* * *

Q: Часть порталов не записалась, wtf?

A: Да, иногда порталы не записываются с первого раза. Причина не известна. Следует проверять, все ли порталы сохранились (источник, см. картинки).
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Ответить