Перейти к контенту
KD87

Universal ACDC и другие perl-скрипты

Рекомендуемые сообщения

@mdm64, тут дело вернее всего в версии перла. У меня стоит эта версия, с ней все отлично работает. Пробовал до этого другие какие-то, не помню уже, какие, ничего тоже не получалось, постоянные ошибки.

Изменено пользователем naxac
  • Согласен 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

@naxac, У меня стоит 5.26 версия.У тебя 5.12.3, я сначала поставил 5.10 и всё работало, а потом напрочь забыл, что лучшее враг хорошего...

Изменено пользователем mdm64
Ссылка на комментарий
5 минут назад, mdm64 сказал:

У меня стоит 5.26 версия.

Пробуй установить другую. Например ту что советует @naxac, раз уж у него она работает.

Но сначала попробуй все же скопировать stkutils из ggRC в C:\Perl\lib, это проще и лишним не будет.

Изменено пользователем WolfHeart
  • Нравится 1

WolfHeart.gif

AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Ссылка на комментарий

@WolfHeart, Да, так и сделаю, вернее, уже делаю...Благодарю!:good2:

@WolfHeart

Папку из ggrc скопировал в c:\Perl , поставил версию 5.12.3, ошибка исчезла. Но теперь прога орёт, что не может почему-то открыть section4.bin...

Скрытый текст


D:\0\ggrc>perl ggrc.pl -g1 section4.bin,cop -l1 zaton,jupiter,pripyat,labx8,jupi
ter_underground,darkvalley,digger_stash,l04u_labx18,military,agroprom,agroprom_u
nderground,marsh,escape,red_forest,collector22 -g2 section4nl.bin,cop -l2 garbag
e,limansk,yantar
reading section4.bin...
cannot open section4.bin

D:\0\ggrc>pause
Для продолжения нажмите любую клавишу . . .

Сделал не по инструкции, перенёс section4 из папки gamedata "наружу" к ggrc и вроде как процесс прошёл...вот о чём и говорю, походу авторы инструкций пишут их для самих себя...

Вот что получилось:

Скрытый текст


D:\0\ggrc>perl ggrc.pl -g1 section4.bin,cop -l1 zaton,jupiter,pripyat,labx8,jupi
ter_underground,darkvalley,digger_stash,l04u_labx18,military,agroprom,agroprom_u
nderground,marsh,escape,red_forest,collector22 -g2 section4nl.bin,cop -l2 garbag
e,limansk,yantar
reading section4.bin...
        reading header...
        reading levels...
        reading vertices...
        reading edges...
        reading cross tables...
cross table offset for zaton is 7499315
size = 11107554
cross table offset for jupiter is 18606869
size = 8917968
cross table offset for pripyat is 27524837
size = 2923578
cross table offset for labx8 is 30448415
size = 40734
cross table offset for jupiter_underground is 30489149
size = 246054
cross table offset for darkvalley is 30735203
size = 2165892
cross table offset for digger_stash is 32901095
size = 972
cross table offset for l04u_labx18 is 32902067
size = 45534
cross table offset for military is 32947601
size = 2311980
cross table offset for agroprom is 35259581
size = 2251446
cross table offset for agroprom_underground is 37511027
size = 32136
cross table offset for marsh is 37543163
size = 3173814
cross table offset for escape is 40716977
size = 3749754
cross table offset for red_forest is 44466731
size = 989022
cross table offset for collector22 is 45455753
size = 34668
reading section4nl.bin...
        reading header...
        reading levels...
        reading vertices...
        reading edges...
        reading cross tables...
cross table offset for zaton is 8537660
size = 11107554
cross table offset for jupiter is 19645214
size = 8917968
cross table offset for pripyat is 28563182
size = 2923578
cross table offset for labx8 is 31486760
size = 40734
cross table offset for jupiter_underground is 31527494
size = 246054
cross table offset for darkvalley is 31773548
size = 2165892
cross table offset for digger_stash is 33939440
size = 972
cross table offset for l04u_labx18 is 33940412
size = 45534
cross table offset for military is 33985946
size = 2311980
cross table offset for agroprom is 36297926
size = 2251446
cross table offset for agroprom_underground is 38549372
size = 32136
cross table offset for marsh is 38581508
size = 3173814
cross table offset for escape is 41755322
size = 3749754
cross table offset for red_forest is 45505076
size = 989022
cross table offset for garbage is 46494098
size = 2148444
cross table offset for limansk is 48642542
size = 369192
cross table offset for yantar is 49011734
size = 886320
forming new graph...
        writing level graphs...
Died at ggrc.pl line 683.

D:\0\ggrc>pause
Для продолжения нажмите любую клавишу . . .

 

 

681        if (exists($self->{append_levels}{$level->{level_name}})) {
682            my $dir = 'levels\\'.$level->{level_name}.'';
683            chdir ($dir) or die;
684            my $lg_file = IO::File->new('level.graph', 'w');

Возможно я ошибаюсь, но мне думается, дело в том, что пришлось переименовать второй файл section4.bin в section4nl.bin, иначе их никак в одной папке не разместишь... Но может и не в том дело, не знаю даже...

Изменено пользователем mdm64
  • Нравится 1
Ссылка на комментарий
38 минут назад, mdm64 сказал:

забыл, что лучшее враг хорошего...

Просто скрипты написаны давно, для старых версий перла, поэтому на новых они не всегда работают.

Попробуй stkutils обратно положить..

  • Нравится 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Так,ещё раз сделал не по инструкции, вытащил папку levels "наружу", вот лог.

Скрытый текст


D:\0\ggrc>perl ggrc.pl -g1 section4.bin,cop -l1 zaton,jupiter,pripyat,labx8,jupi
ter_underground,darkvalley,digger_stash,l04u_labx18,military,agroprom,agroprom_u
nderground,marsh,escape,red_forest,collector22 -g2 section4nl.bin,cop -l2 garbag
e,limansk,yantar
reading section4.bin...
        reading header...
        reading levels...
        reading vertices...
        reading edges...
        reading cross tables...
cross table offset for zaton is 7499315
size = 11107554
cross table offset for jupiter is 18606869
size = 8917968
cross table offset for pripyat is 27524837
size = 2923578
cross table offset for labx8 is 30448415
size = 40734
cross table offset for jupiter_underground is 30489149
size = 246054
cross table offset for darkvalley is 30735203
size = 2165892
cross table offset for digger_stash is 32901095
size = 972
cross table offset for l04u_labx18 is 32902067
size = 45534
cross table offset for military is 32947601
size = 2311980
cross table offset for agroprom is 35259581
size = 2251446
cross table offset for agroprom_underground is 37511027
size = 32136
cross table offset for marsh is 37543163
size = 3173814
cross table offset for escape is 40716977
size = 3749754
cross table offset for red_forest is 44466731
size = 989022
cross table offset for collector22 is 45455753
size = 34668
reading section4nl.bin...
        reading header...
        reading levels...
        reading vertices...
        reading edges...
        reading cross tables...
cross table offset for zaton is 8537660
size = 11107554
cross table offset for jupiter is 19645214
size = 8917968
cross table offset for pripyat is 28563182
size = 2923578
cross table offset for labx8 is 31486760
size = 40734
cross table offset for jupiter_underground is 31527494
size = 246054
cross table offset for darkvalley is 31773548
size = 2165892
cross table offset for digger_stash is 33939440
size = 972
cross table offset for l04u_labx18 is 33940412
size = 45534
cross table offset for military is 33985946
size = 2311980
cross table offset for agroprom is 36297926
size = 2251446
cross table offset for agroprom_underground is 38549372
size = 32136
cross table offset for marsh is 38581508
size = 3173814
cross table offset for escape is 41755322
size = 3749754
cross table offset for red_forest is 45505076
size = 989022
cross table offset for garbage is 46494098
size = 2148444
cross table offset for limansk is 48642542
size = 369192
cross table offset for yantar is 49011734
size = 886320
forming new graph...
        writing level graphs...
writing new graph...
        writing levels...
        writing vertices...
        writing edges...
        writing level points...
        writing cross tables...
                writing cross tables for level zaton...
                writing cross tables for level jupiter...
                writing cross tables for level pripyat...
                writing cross tables for level labx8...
                writing cross tables for level jupiter_underground...
                writing cross tables for level darkvalley...
                writing cross tables for level digger_stash...
                writing cross tables for level l04u_labx18...
                writing cross tables for level military...
                writing cross tables for level agroprom...
                writing cross tables for level agroprom_underground...
                writing cross tables for level marsh...
                writing cross tables for level escape...
                writing cross tables for level red_forest...
                writing cross tables for level collector22...
                writing cross tables for level garbage...
                writing cross tables for level limansk...
                writing cross tables for level yantar...
no need to update resource files
done!

D:\0\ggrc>pause
Для продолжения нажмите любую клавишу . . .

Вроде как получилось...Но сформировался файл game.graph.new, а не section4.bin.new....

Теперь что делать, распаковать section4.bin (кстати чем лучше?) и вставить в него game.graph.new или как-то ещё?

 

Если можно, объясните этот пункт инструкции, не совсем понял, особенно на предмет тупого переименования:

Скрытый текст

5) переименовываете game.graph.new в game.graph (ну или в section4.bin, если родительский граф у вас от ЗП),
копируете level.ai и level.gct (если утлитика не совмещена с игрой) и запускаете с ними игру.

И насчёт копирования не очень понял - у меня не появилось этих файлов (level.ai и level.gct).

Изменено пользователем mdm64
Ссылка на комментарий
36 минут назад, mdm64 сказал:

Папку из ggrc скопировал в c:\Perl

 

38 минут назад, WolfHeart сказал:

Но сначала попробуй все же скопировать stkutils из ggRC в C:\Perl\lib, это проще и лишним не будет.

 

3 минуты назад, naxac сказал:

Попробуй stkutils обратно положить..

Да дело не в ней, перл ее не читает, он читает ее из ggRC, так как он ее не удалял, а скопировал. Правда не туда скопировал, но это уже не важно, дело не в ней. Дело скорее всего в батнике.

 

  • Нравится 1

WolfHeart.gif

AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Ссылка на комментарий

@WolfHeart, не туда это как? А куда нужно было?

и ещё раз насчёт переименования section4.bin - это вообще здесь можно делать или нет?

 

P.S. Прошу прощения за назойливые вопросы, но уж очень хочется по-человечески и подробно разобраться, в инструкциях уже почти разочаровался....

Изменено пользователем mdm64
Ссылка на комментарий
4 минуты назад, mdm64 сказал:

не туда это как?

Ты написал, что скопировал в c:\Perl, а нужно было в C:\Perl\lib.

Но это уже не нужно, можешь ее вообще удалить из c:\Perl, так как она нормально читается из папки ggRC.

Просто бывают случаи когда из папки утелиты перл не хочет читать stkutils и в таких случаях помогает перенос ее в C:\Perl\lib.

Изменено пользователем WolfHeart
  • Согласен 1

WolfHeart.gif

AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Ссылка на комментарий
1 минуту назад, mdm64 сказал:

А, это просто неверно написал, разумеется в c:\Perl\Lib...прошу прощения за неточность...

Ничего бывает.

Ну тогда вопрос о том от куда перл читает папку stkutils остается открытым, но не важным, главное что читает. Можно конечно попробовать удалить папку stkutils из c:\Perl\Lib и тем самым убедиться что она читается или нет из ggRC, но это не столь важно.

Дугрое дело на сколько правильно или не правильно работает сам скрипт ggRC. Но тут я тебе не помошник, я никогда им не пользовался, да и он мне без надобности. Предпочитаю SDK.

  • Согласен 1

WolfHeart.gif

AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Ссылка на комментарий

@WolfHeart, Ты и так помогаешь много! За что я искренне благодарен!

А по правильности скрипта - я делал по инструкции и по образцу скрипта в той же инструкции, так что сам не знаю. Попробовал поиском найти в тырнете что-то конкретное по ggRC, да бесполезно, ничего кроме нескольких версий утилиты без внятного описания не нашёл, увы...

К тому же Яндекс, зараза, постоянно подменяет аббревиатуру утилиты при поиске, вместо "работа с утилитой ggrc" норовит искать "работа с утилитой ппКС" и выдаёт редкостную чушь...

Изменено пользователем mdm64
  • Спасибо 1
Ссылка на комментарий
19 минут назад, WolfHeart сказал:

Предпочитаю SDK.

Да я посмотрел, инструмент отличный, только вот не нашёл, как его пользовать для моих пока простых задач. А так да, если локацию, предмет или какое оружие инопланетное сварганить - штука незаменимая...

Ссылка на комментарий
5 минут назад, mdm64 сказал:

только вот не нашёл, как его пользовать для моих пока простых задач.

Ну, в теории, конечно скриптом вроде как должно быть проще (не могу судить так как скриптом не пользовался). Но вот то, что првильно это делать все же с помощю СДК - это 100%.

Присоединение новых локаций с помощью SDK

  • Согласен 1

WolfHeart.gif

AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Ссылка на комментарий

Ну и надеюсь, последний глобальный вопрос по слиянию локаций - на добавленных локациях есть переходы. Переходы между новыми локациями, как я понимаю, сохраняются, поскольку они не затрагивают основных локаций. А вот с переходами с основных локаций на новые и обратно я не очень понял даже из инструкций.

Конкретная ситуация такова, необходимо связать следующие переходы основных локаций и новых:

1. Кордон - Коллектор, Коллектор - Кордон.

2. Кордон - Свалка, Свалка - Кордон.

Со Свалки далее идут переходы на Лиманск и Янтарь (и обратно), как я понимаю, с ними ничего делать не нужно (или я не прав?).

Требуется связать переходы на локациях в п.1 и 2.

При установке любого из минимодов с новыми локациями (1 - с локацией Коллектор,2 - с локациями Свалка, Лиманск, Янтарь) отдельно, переходы нормально действуют, то есть уже связаны с Кордоном и между собой.

Требуется помощь по этому вопросу - где, что и как менять?

@WolfHeart, У меня сразу ранее задававшийся вопрос - какие файлы новой локации требуются и куда их необходимо поместить для правильной работы (чтобы не проходить все этапы создания новой локации "с нуля")?

При наличии этой информации я с большой долей вероятности смогу сделать нужное мне в SDK без больших проблем.

 

И вот какой момент мне не совсем понятен - кроме слияния локаций в section4.bin требуется секции с переходами из дочернего alife_escape.ltx (например) прописать в родительский alife_escape.ltx , и при этом внести в них определённые изменения.

Требуется инструкция по внесению необходимых изменений. Потому как, если я правильно понял инструкцию к ggrc, то там АИ-переходы связываются уже в подготовленных файлах вида alife_escape.ltx и результаты пишутся опять же в section4.bin:

Скрытый текст

АИ-переходы необходимы для оффлайн-навигации неписей между разными локациями. Выбираете два вертекса,
один на одной локации, второй на другой, соединяете связью - переход для непися готов.

Команда:
ggrc.pl [-g1 <имя_графа,номер_билда>] [-ai <vertex1,vertex2>]

-g1 <имя_графа,ключ_билда> - граф для добавления переходов
-ai <vert1,vert2> - соединяемые вертексы, через запятую (без пробелов!).

Пример: ggrc.pl -g1 game.graph,2215 -ai 14,134

На выходе получите файл типа game.graph.new_edge. Это геймграф с готовыми переходами.

Больше ключей не нужно.

 

 

Изменено пользователем mdm64
Ссылка на комментарий

@mdm64, аи-переходы - это переходы между точками графа (вертексами) для перемещения нпс. Есть ещё левел-чейнджеры - они уже служат для перемещения актёра между уровнями. Добавлять нужно и те, и те. 

Левел-чейнджеры добавляются в спавн (section_name = level_changer), а аи-переходы - в граф (в section4.bin в твоём случае)

  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

@naxac, Да, я это понял, благодарю! Просто недоговорил свою мысль...

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

Но требуется, как я понял, ещё после такого дополнения родительского alife_escape.ltx поменять гейм-вертексы, левел-вертексы судя по всему остаются без изменений. И вот здесь я забуксовал...

Если судить по многочисленным постам в темах, то геймвертекс для одной локации во всех секциях должен быть одинаковый, то есть это как бы уникальный идентификатор локации (что к слову, подтверждает старенькая ggtool, запустил её для общего развития и проверки указанного утверждения о геймвертексах).

А вот если судить по тому, что я реально вижу в файлах alife_(имя локации), в том же alife_escape.ltx, то картина немного иная - да, значительная часть вертексов в секциях действительно соответствует значению вертекса, выдаваемого той же ggtool, но также немалая часть вертексов в секциях локации имеет совсем другие номера, что противоречит правилу единого гейм-вертекса для локации. Также непонятно, по какому принципу выставлены вертексы, отличные от общего "вертекса локации".

Собственно, вопрос - чем и как определять и менять гейм-вертексы локаций (кроме нерекомендованного  софта "gg........")?

Также, как и чем (кроме ручного метода) определять и изменять диапазоны номеров для гейм-вертексов и номеров секций в файлах локаций?

Потому как посмотрел и какой-то разумной последовательности увидел (например,номера секций некоторых локаций 4-значные, а некоторых 5-ти и 6-ти значные).

Если что-то забыл спросить по данному вопросу, просьба указать и по возможности ответить...

Ссылка на комментарий

@mdm64, это тебе нужно поменять все вертексы на новые. То есть, разобрать твой новый граф (section4.bin) и посмотреть новый начальный вертекс локации, а потом ко всем game_vertex_id в спавне на этом уровне (alife_локация.ltx) прибавить/отнять необходимое значение (разницу между старым и новым). То же сделать и с путями (если они тебе нужны) - way_локация.ltx. Я это делал луа-скриптом, полностью перезаписывая файлы. Есть вроде acdc с такой функцией, либо отдельный скрипт на перле.

А переходам с локации надо будет изменить dest_-координаты, то есть координаты, на которые переходит ГГ через этот переход. Это если они останутся на прежних местах.

Изменено пользователем naxac
  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
46 минут назад, naxac сказал:

@mdm64, А переходам с локации надо будет изменить dest_-координаты, то есть координаты, на которые переходит ГГ через этот переход. Это если они останутся на прежних местах.

Вот здесь совсем не понял - зачем менять координаты точки назначения, если (например) на локации Кордон они уже прописаны и связаны с локацией, с которой есть переход на Кордон? Или даже при простом добавлении новой готовой локации координаты переходов уже готовые и связанные изменяются?

И есть проблемка - вертексы двух добавляемых локаций оказались одинаковые , а потому даже ggtool одну из локаций в section4 не видит. Как этот вопрос решить?

 

 

Это инструкция из шапки:

Скрытый текст

Зачем нужно: при изменении аи-сетки у объектов изменяются game_vertex_id и level_vertex_id.
Это влечет за собой необходимость повторного снятия данных параметров в игре. Данный режим
позволяет автоматически обновить вертексы у всех секций спавна.

Команда: universal_acdc -update <spawn_name> [common_options]



Команда: universal_acdc -update <spawn_name> [common_options]

 

-update <spawn_name> - all.spawn, для которого надо обновить вертексы.

Режим update требует дополнительной настройки. В папке с acdc есть файл fs_vertex.ltx
В этот файл необходимо вписать путь до локаций с ОБНОВЛЕННОЙ аи-сеткой. Обязательно
должны присутствовать файлы level.ai, level.gct для всех локаций из спавна.
ВНИМАНИЕ! Для нормальной отработки режима геймграф должен быть СТАРЫЙ, использовавшийся
до перекомпиляции. После нормальной отработки режима спавн можно распаковывать уже с НОВЫМ геймграфом.

Просьба - Можно немного более доходчиво объяснить её применительно к моему случаю?

Если я правильно понимаю, это как раз то, о чём я спрашивал выше (или я не прав?).

Установил СДК, настроил по инструкции, посмотрел несколько видеоуроков... Везде одно и то же - декомпилируется в СДК новая локация, вычищается от всех спав-элементов, которых нет в базе СДК (по сути делается пустой), после чего её можно заселить и компилировать в игру. Нигде нет инструкции по элементарному подключению готовых и рабочих, уже настроенных локаций на одной платформе без кардинальных изменений в её содержании. Более того, везде рассматриваются только случаи портирования локаций с других платформ.

Как я понял, даже досконально изучив СДК, для моих задач этот инструмент бесполезен абсолютно.

Если я что-то не понял, с удовольствием выслушаю авторитетное мнение опытных форумчан...

Изменено пользователем mdm64
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

  • Куратор(ы) темы:

AMK-Team.ru

×
×
  • Создать...