|
|
|
Канал X4: Foundations »
Модовый и скриптовый отсек X4: Foundations: «Ковыряем движок и всё такое» |
|
|
Shadowman
265 EGP
   Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1395 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003
 |
|
eliseeff : |
дифф сделаю примерно за 5 секунд луа-скриптом, который я уже написал
|
А поделиться здесь нет желания?
|
|
|
eliseeff
268 EGP
      Рейтинг канала: 2(21) Репутация: 5 Сообщения: 932
Зарегистрирован: 07.03.2015
 |
|
Shadowman : |
eliseeff : |
дифф сделаю примерно за 5 секунд луа-скриптом, который я уже написал
|
А поделиться здесь нет желания?
|
А надо?
Это ж луа-скрипт, набыдлокоженный в моих собственных целях. Пути файлов жестко прописаны, целевая папка - тоже. Интерфейс отсутствует.
Но задачу свою выполняет. Сравнивает правленый файл с оригинальным и выдает два файла: первый - содержит только все несовпадающие строки, а второй - готовый дифф из этих строк.
Ну и во время работы пишет дебаг-мессаги, если в правленом файле содержатся "лишние" строки или пейджи, отсутствующие в оригинале. В результирующие файлы эти строки не включаются.
Если все-таки надо - я могу еще немного его подшаманить для бОльшего удобства использования, да выложить. Мне не жалко.
|
|
|
Shadowman
265 EGP
   Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1395 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003
 |
|
eliseeff : |
Это ж луа-скрипт, набыдлокоженный в моих собственных целях. Пути файлов жестко прописаны, целевая папка - тоже. Интерфейс отсутствует.
|
Я знаю, о чём прошу. Сам писал когда-то такое на люа для преобразования дампа базы в эксель. А еще - делал автоматическую правку связанных текстовиков для одной игрушки (один файл поменяли, измененные данные из него нужно распихать по нескольким другим файлам). Запускал прямо в SciTE.
Интересно посмотреть на решения. Могу и свое показать, если интересно.
|
|
|
eliseeff
268 EGP
      Рейтинг канала: 2(21) Репутация: 5 Сообщения: 932
Зарегистрирован: 07.03.2015
 |
|
Shadowman : |
Интересно посмотреть на решения.
|
Понял. Тады вот мой непричесанный "коленочный" вариант, который, собсна, юзаю уже который месяц:
Cкрытый текст (кликните здесь для просмотра)
Код: |
local function ruprint(...)
local result = {}
for _, text in ipairs({...}) do
local tbl = {text:byte(1, #text)}
for i = #tbl - 1, 1, -1 do
if tbl[i] == 208 and tbl[i + 1] > 143 and tbl[i + 1] < 192 then
tbl[i + 1] = tbl[i + 1] - 16
table.remove(tbl, i)
elseif tbl[i] == 208 and tbl[i + 1] == 129 then
tbl[i + 1] = 240
table.remove(tbl, i)
elseif tbl[i] == 209 and (tbl[i + 1] > 127 and tbl[i + 1] < 144 or tbl[i + 1] == 145) then
tbl[i + 1] = tbl[i + 1] + 96
table.remove(tbl, i)
end
end
table.insert(result, string.char(table.unpack(tbl)))
end
print(table.unpack(result))
end
local function Make_Table(in_data)
local out_data = {pnums = {}}
for page_string in in_data:gmatch("%<page%s.-%/page%>") do
local page = tonumber(page_string:match("page%sid=%D(%d+)%D"))
if out_data[page] then
ruprint("ОШИБКА! Дубликат: page id = " .. page)
else
out_data[page] = {}
table.insert(out_data.pnums, page)
end
out_data[page].header = page_string:match("%<page%sid.-%>")
out_data[page].id = page
out_data[page].tlines = out_data[page].tlines or {}
out_data[page].tnums = {}
for line in page_string:gmatch("%<t%sid.-%/t%>") do
local line_num = tonumber(line:match("t%sid=%D(%d+)%D"))
if out_data[page].tlines[line_num] then
ruprint("ОШИБКА! Дубликат: page id = " .. page .. ", t id = " .. line_num)
else
table.insert(out_data[page].tnums, line_num)
end
local line_text = line:match("%>(.-)%<")
out_data[page].tlines[line_num] = line_text
end
table.sort(out_data[page].tnums, function(a, b) return a < b end)
end
table.sort(out_data.pnums, function(a, b) return a < b end)
in_data = nil
return out_data
end
local ref_file = io.open("D:/SteamLibrary/steamapps/common/X4 Foundations/unpack/t/0001-L007.xml")
local refer = ref_file:read("a")
io.close(ref_file)
local refertable = Make_Table(refer)
local check_file = io.open("C:/Users/eliseeff/Documents/X4/0001-L007-assemble_noNPC.xml")
local check = check_file:read("a")
io.close(check_file)
local checktable = Make_Table(check)
outtext = [[<?xml version="1.0" encoding="UTF-8"?>
<language id="7">
]]
outtext2 = [[<?xml version="1.0" encoding="utf-8"?>
<diff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
]]
for _, page in ipairs(checktable.pnums) do
find = false
if not refertable[page] then
ruprint("ОШИБКА! Несуществующая страница (page id = " .. tostring(page) .. ")")
else
for _, tid in ipairs(checktable[page].tnums) do
if not refertable[page].tlines[tid] then
ruprint("ВНИМАНИЕ! Несуществующая строка (page id = " .. tostring(page) .. ", t id = " .. tostring(tid) .. ")")
elseif checktable[page].tlines[tid] ~= refertable[page].tlines[tid] then
if not find then
find = true
outtext = outtext .. " " .. refertable[page].header .. string.char(0xD, 0xA)
end
outtext = outtext .. [[ <t id="]] .. tostring(tid) .. [[">]] .. checktable[page].tlines[tid] .. [[</t>]] .. string.char(0xD, 0xA)
outtext2 = outtext2 .. [[ <replace sel="//page[@id=']] .. tostring(page) .. [[']/t[@id=']] .. tostring(tid) .. [[']/text()">]] .. checktable[page].tlines[tid] .. [[</replace>]] .. string.char(0xD, 0xA)
end
end
end
outtext = outtext .. (find and ([[ </page>]] .. string.char(0xD, 0xA)) or "")
end
outtext = outtext .. [[</language>]]
outtext2 = outtext2 .. [[</diff>]]
local diff_file = io.open("E:/XR/lua-5.3.4_Win64_bin/Diff/0001-L007.xml", "w")
io.output(diff_file)
io.write(outtext)
io.close(diff_file)
diff_file = io.open("E:/XR/lua-5.3.4_Win64_bin/Diff/mod/0001-L007.xml", "w")
io.output(diff_file)
io.write(outtext2)
io.close(diff_file) |
|
В принципе, может пригодиться функция ruprint в самом верху. Через нее можно выводить символы кириллицы, которые через штатную функцию print выводятся в консоль кракозябами. Это я баловался как-то на досуге, а здесь использовал "патамушта уже было".
Твой вариант тоже гляну с интересом.
|
|
|
Shadowman
265 EGP
   Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1395 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003
 |
|
Спасибо!
Ну, тут это точно постить смысла нет, ибо совершенно не по теме Х4. Как найду - в ЛС скину.
|
|
|
~Aenigma~
60 EGP Репутация: 2 Сообщения: 58 Откуда: планета Земля Зарегистрирован: 08.03.2019
 |
|
Ребята, а какой параметр отвечает за голос непися?
Допустим,
Код: |
character_argon_female_pilot_01_macro |
- это внешняя модель. А голос?
И что вот это такое?
И вот эти параметры?
Код: |
known="1" read="0" page="10404" id="[0x22525] |
И какое максимальное значение параметра навыка (которое соответствует 5 звёздам), 15?
_________________ Vox audita latet, littera scripta manet!
Последний раз редактировалось: ~Aenigma~ (23:06 22-09-2019), всего редактировалось 1 раз |
|
|
anDron
571 EGP
      Рейтинг канала: 4(93) Репутация: 54 Сообщения: 5943 Откуда: Новосибирск Зарегистрирован: 27.11.2013
 |
|
Чет желающих нема, но не гоже девушку динамить.
~Aenigma~ : |
character_argon_female_pilot_01_macro
- это внешняя модель. А голос?
И что вот это такое?
|
Праально. Код - просто частный/личный [буквенный] идентификатор.
~Aenigma~ : |
И вот эти параметры?
known="1" read="0" page="10404" id="[0x22525]
|
Известен игроку. Параметры не показывать. Вякать, как на текстовой странице 10404 прописано (это и есть подвязка к звуку). По ИД (евонному) будут прописаны всевозможные связанные скрипты (в савке их видно).
Со "звезданутостью" - верно.
добавлено спустя 3 минуты:
Вот куды ведет указааный текст{10404,0}
Последний раз редактировалось: anDron (19:37 22-09-2019), всего редактировалось 2 раз(а) |
|
|
~Aenigma~
60 EGP Репутация: 2 Сообщения: 58 Откуда: планета Земля Зарегистрирован: 08.03.2019
 |
|
Решила поэкспериментировать, так что буду мучить вопросами, т.к. программист из меня нулевой.
_________________ Vox audita latet, littera scripta manet! |
|
|
~Aenigma~
60 EGP Репутация: 2 Сообщения: 58 Откуда: планета Земля Зарегистрирован: 08.03.2019
 |
|
Хм, обнаружила, что одна внешняя модель генерирует несколько внешних видов непися. Например,
Код: |
character_argon_female_trader_01_macro |
может сгенерировать как девушку в шлеме, так и без. А какой параметр за это отвечает?
Ещё вопрос. Как генерируются имена? Ну понятно, что случайно берутся имя и фамилия из какой-то базы данных. А её можно отредактировать без излишней трудоёмкости (глубокого ковыряния в движке)? Например, чтоб в космосе летали Иваны Царевичи и Василисы Прекрасные?
И обнаружила ещё, что неписи, которые сидят в трюмах кораблей, в сохранении указываются только как модели с показателями навыков, без имён. Поиск имени по сохранению ничего не даёт. Но как так, ведь непись имя имеет и оно как-то сохраняется за ним?
Сильно не пинайте.
_________________ Vox audita latet, littera scripta manet!
Последний раз редактировалось: ~Aenigma~ (07:31 24-09-2019), всего редактировалось 2 раз(а) |
|
|
anDron
571 EGP
      Рейтинг канала: 4(93) Репутация: 54 Сообщения: 5943 Откуда: Новосибирск Зарегистрирован: 27.11.2013
 |
|
Я на этот вопрос могу выдать только слово-предположение - seed. Но не видел ни одного поста, где бы его расписывали.
Ждем что скажет студия...
|
|
|
Shadowman
265 EGP
   Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1395 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003
 |
|
~Aenigma~ : |
Поиск имени по сохранению ничего не даёт. Но как так, ведь непись имя имеет и оно как-то сохраняется за ним?
|
Именно так. И еще голос "где-то там". Есть уникальный сид, сгенерированный движком при создании персонажа; вся информация о навыках и типаже (вот этом вот macro...) - в сейве.
А закрепленные за сидом имя и готовая модель - где-то в ресурсах. Как сид преобразуется во внешний вид, голос и имя - это к разработчикам.
~Aenigma~ : |
Ну понятно, что случайно берутся имя и фамилия из какой-то базы данных. А её можно отредактировать без излишней трудоёмкости (глубокого ковыряния в движке)? Например, чтоб в космосе летали Иваны Царевичи и Василисы Прекрасные?
|
Можно, в сейве если. Только зачем? И потом слетит это дело, если его, например, из пилотского кресла выгнать или если спрячется в недра.
~Aenigma~ : |
неписи, которые сидят в трюмах кораблей, в сохранении указываются только как модели с показателями навыков, без имён
|
Да, имя есть только у непися, находящегося на мостике, палубе, т.е. у тех, у кого обрабатывается геометрия в пространстве.
Последний раз редактировалось: Shadowman (19:14 26-09-2019), всего редактировалось 1 раз |
|
|
~Aenigma~
60 EGP Репутация: 2 Сообщения: 58 Откуда: планета Земля Зарегистрирован: 08.03.2019
 |
|
Shadowman : |
Именно так. И еще голос "где-то там". Есть уникальный сид, сгенерированный движком при создании персонажа; вся информация о навыках и типаже (вот этом вот macro...) - в сейве.
А закрепленные за сидом имя и готовая модель - где-то в ресурсах. Как сид преобразуется во внешний вид, голос и имя - это к разработчикам.
|
Угу, я это уже поняла.
Вообще, генерация персонажей у них как-то диковато реализована. Голос берётся "откуда-то там" и т.д.
Получается, что у персонажа гарантированно можно изменить только уровень навыков, а остальное непредсказуемо? Печаль...
Хорошо было бы узнать алгоритм, по которому формируется seed.
Shadowman : |
И потом слетит это дело, если его, например, из пилотского кресла выгнать или если спрячется в недра.
|
Угу, слетает. В сейве в name остаётся прописанным, но в игре меняется на случайное.
Shadowman : |
Да, имя есть только у непися, находящегося на мостике, палубе, т.е. у тех, у кого обрабатывается геометрия в пространстве.
|
_________________ Vox audita latet, littera scripta manet! |
|
|
Shadowman
265 EGP
   Рейтинг канала: 3(31) Репутация: 42 Сообщения: 1395 Откуда: Альфа Центавра Зарегистрирован: 03.12.2003
 |
|
На самом деле, уровень навыков влияет чуть больше чем никак.
У кэпов и десанта еще как-то влияет, а у остальных... Мнения расходятся.
Вплоть до 2.50 не замечал, чтобы особо что-то менял экипаж новисов и экипаж космоволчар, например, на майнере или торгаше. Кэп - тот да, влияет.
Плюс, десантура элитного левела режет обшивку на порядок дольше новисов. И это не собрались исправить до сих пор. Капец.
Я поставил мод, ну потому что это бред полный. И как-то обидно неск.м-цев качать взвод десанта, чтобы потом упереться в такое.
|
|
|
Quazar XX
64 EGP
 Рейтинг канала: 1(3) Репутация: 1 Сообщения: 266 Откуда: ULAS J1120 Зарегистрирован: 08.05.2014
 |
|
А не подскажите в каком каталоге находятся загрузочные экраны? Хочу добавить новые)
_________________ i7 930 3.5 Ггц, ram kingston 24 Гб, GTX 970, SSD WD + HDD SAMSUNG (временно) |
|
|
Shuulo
100 EGP
 Рейтинг канала: 3(32) Репутация: 7 Сообщения: 628
Зарегистрирован: 23.11.2011
 |
|
ЛЕОПАРД : |
В том, что не будет скайрима из иксов.
|
Конечно не будет, как и небыло из всех предыдущих частей.
Молдинг в х4 позволяет на порядок более обширные и интересные вещи делать чем в предшествующих играх, так что не понимаю негатива. Ах да, это же ру-комьюнити, запамятовал.
Насколько я помню, 30ка нужна
Последний раз редактировалось: Shuulo (12:12 15-10-2019), всего редактировалось 1 раз |
|
|
eliseeff
268 EGP
      Рейтинг канала: 2(21) Репутация: 5 Сообщения: 932
Зарегистрирован: 07.03.2015
 |
|
Shuulo : |
Моддинг в х4 позволяет на порядок более обширные и интересные вещи делать чем в предшествующих играх, так что не понимаю негатива. Ах да, это же ру-комьюнити, запамятовал.
|
Тут ситуация двоякая.
Что касается геймплея - абсолютно согласен! Возможности расширились необычайно.
А вот что касается моделлинга - ситуация абсолютно обратная. Пересобрать что-нибудь из уже имеющихся в игре кусков - да, еще можно. Создать же что-то новое - инструментарий отсутствует.
P.S. И да - я слоупок.
|
|
|
DNA78
429 EGP
     Репутация: 73 Сообщения: 1268 Откуда: Кыргызстан Зарегистрирован: 12.11.2008
 |
|
eliseeff : |
Что касается геймплея - абсолютно согласен! Возможности расширились необычайно.
|
А, что, разве в х4 появился сриптредактор, со списком всех возможных команд, описанием движка, всех игровых типов и т.д., и т.п.? Может быть они и необычайно расширились, но для кого и кто об этом знает. Кроме как недоделанной приблуды для ковыряния игровых кишков - ничего нет. Ни какой информации об этом нет.
Вот товарищ Shuulo говорит, что есть прям много, много хороших модов ииии посмотрел, ничего более менее стоящего не нашёл, кроме как какого-то продвинутого торговца. Этой игре уже сколько - год, а X-R 2 или 3 и что, ни одного стороннего корабля или объекта, или эффекта так и не было добавлено в игру, ни одной маломальской миссии так и не было написано. О чём вы ввобще здесь?
_________________ Очевидное-невероятное |
|
|
eliseeff
268 EGP
      Рейтинг канала: 2(21) Репутация: 5 Сообщения: 932
Зарегистрирован: 07.03.2015
 |
|
DNA78 : |
О чём вы ввобще здесь?
|
Это вы о чем здесь, молодой человек? Вы вообще искали эту информацию?
Вот это читали?
Вот здесь и здесь были?
Вы в ресурсах игры в лайбрарях файлы scriptproperties изучали?
Да инфы сейчас столько, сколько в иксах никогда не было!
Модов почему мало? А потому что мододелы в большинстве своем, как и вы, предпочитают ныть и лить слезы, что нет инфы, нежели эту самую инфу, которая ЕСТЬ, найти и изучить...
|
|
|
DNA78
429 EGP
     Репутация: 73 Сообщения: 1268 Откуда: Кыргызстан Зарегистрирован: 12.11.2008
 |
|
Моддинг в Х4
_________________ Очевидное-невероятное |
|
|
ЛЕОПАРД
89 EGP
 Рейтинг канала: 1(4) Репутация: 22 Сообщения: 307
Зарегистрирован: 05.04.2011
 |
|
Я думаю, что если бы был какой нибудь софт для ковыряния ресурсов игры, то уже были бы какие-никакие моды/скрипты и т.д. Не путать с распаковщиком! "Софт для ковыряния" - я имел ввиду, что-то типа X3 Editor и ему подобные. Либо Script Editor со всеми командами из игры.
Понятное дело, что тут сильно переработаны кораблики, т.к. тут и внутри-корабельные сцены не в единичном количестве. Но все же, если бы был хоть какойнить софт, то народ бы уже чуть по-чуть начал бы изучение структуры и иерархии файлов с игры. А дальше - появлялись бы мелкие ФАКи и, глядишь, начали бы появляться первые пробники норм модов.
Но если прикинуть, что почти всю софтину под моддинг для предыдущих частей серии пилил народ из комьюнити, то от самих разрабов вряд ли стоит что-то ждать, тем более годное. Тому подтверждение - неоднократные обращения о помощи в кодинге игры. Я сейчас не только себя в пример беру, но все же. Тут если не появятся сверх умные головы, которые смогут "на коленке" "раскатать" игровой двиг, то про моддинг и его поддержку от разрабов можно забыть и забить, и ждать какой нибудь аддон в будущем, по типу новой части "X4 Перезагрузка".
Последний раз редактировалось: ЛЕОПАРД (23:25 30-10-2019), всего редактировалось 1 раз |
|
|
|
|
|
Канал X4: Foundations ->
Модовый и скриптовый отсек X4: Foundations: «Ковыряем движок и всё такое» |
|