ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Раскопки обжа на предмет юзабельных вещей | страница 3 |
|
|
|
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |
|
|
yakim81
305 EGP
   Рейтинг канала: 6(417) Репутация: 18 Сообщения: 221
Зарегистрирован: 07.02.2015
 |
|
Какая радость, с возвращением! Я пошерстил obj и обнаружил уже свыше 37 мест, где используется два цикла со счетчиком 20 и 10 элементов, но это еще не все места. Я уже писал тов. KWON о двух местах, где цифры 20 и 10 передаются в качестве параметров для функции
Код: |
push 10d ; 0Ah
push 20d ; 14h
push 1
callasm P_Random ; 000000F5
|
в функции TFACTORY.Production2();
Если Вы присоединитесь к данной разработке, думаю все получится.
|
|
|
yakim81
305 EGP
   Рейтинг канала: 6(417) Репутация: 18 Сообщения: 221
Зарегистрирован: 07.02.2015
 |
|
Вопрос на засыпку знающим людям.
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
2. Имеется ли такой же признак у торговой станции?
Если ответ положительный:
3. Имеется ли такой же признак для фабрики игрока?
4. Можно ли использовать этот признак для присвоения его торговой станции?
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?
Где то во внутренностях игры видел заготовки принадлежности сектора игроку. Если можно сделать п. 5, то можно будет сделать и сектор, принадлежащий Игроку так, что бы эта информация отображалась на галактической карте. (моя давняя мечта)
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(307) Репутация: 325 Сообщения: 32751
Зарегистрирован: 26.10.2003
 |
|
yakim81 : |
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
|
В х2 это TSTATION.st_Owner
Может и тут так.
yakim81 : |
2. Имеется ли такой же признак у торговой станции?
|
У всех подклассов должен быть (либо берётся с родительского класса).
yakim81 : |
3. Имеется ли такой же признак для фабрики игрока?
|
Да, игрок - это тоже раса.
yakim81 : |
4. Можно ли использовать этот признак для присвоения его торговой станции?
|
Да.
yakim81 : |
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?
|
Нет. Товар не имеет принадлежности, а на верфь добавить можно только в виде товара.
yakim81 : |
Где то во внутренностях игры видел заготовки принадлежности сектора игроку.
|
TSECTOR.sec_Owner тоже есть в х2, но чтобы назначить сектор игроку - нужно во многих местах код менять, так как изначально это не было предусмотрено. В оригинале принадлежность сектора назначается во время создания вселенной (на старте новой игры) и потом уже не меняется. В разных меню, в алгоритмах поиска кораблей/станций/товара и прочих местах потом проблемы могут быть.
|
|
|
yakim81
305 EGP
   Рейтинг канала: 6(417) Репутация: 18 Сообщения: 221
Зарегистрирован: 07.02.2015
 |
|
Т.е. если я правильно понял, то торговая станция как товар отсутствует в XT? но в X2, как я знаю, торговую станцию можно купить на верфи, и она будет принадлежать Игроку?
|
|
|
KWON
409 EGP
    Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
yakim81 : |
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
2. Имеется ли такой же признак у торговой станции?
3. Имеется ли такой же признак для фабрики игрока?
4. Можно ли использовать этот признак для присвоения его торговой станции?
|
Возьмите редактор, создайте станцию.
Скопируйте обж, вставте тут же (Копия 001.obj).
Откройте редактором "Копия 001.obj" в созданной станции поменяйте свойства:
расу и тип завода или фабрики (осторожно не сместив координаты).
Сохраните. Откройте оба файла Гекс-идитором, сравните.
И будет вам счастье. Можете приписать таким образом игроку любую станцию заменив код какой то расы на код расы игрока (0012).
Список кодов рас:
000A - 1 Argon
000B - 2 Boron
000C - 3 Split
000D - 4 Paranid
000E - 5 Teladi
000F - 6 Xenon
0010 - 7 Pirate
0011 - 8 Goner
0012 - 9 Player
yakim81 : |
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?
|
Вот таблица xmagnat'а:
http://xmagnat. narod.ru/code_obj.html
поиграйтесь сами заменяя на верфи разные предприятия.
Возмите оригинальный обж начните игру в Аргон Прайм, сохранитесь на верфи.
Откройте сейв Гекс-редактором, задайте в поиск, например, Аргонский спутниковый завод.
Код встретится два раза. Из таблицы Магната возмите код любой станции.
Замените в найденных двух местах.
Запускаем сохранеку, смотрим чаво случилось.
И будет видно что доки и торговые станции на верфь добавится не захотят.
_________________ Следи за собой, будь осторожен. В.Цой |
|
|
Shaddie
556 EGP
      Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004
 |
|
yakim81 : |
Если Вы присоединитесь к данной разработке, думаю все получится.
|
Времени мало свободного, но постараюсь помочь. Пока подправил редактор под матрицу 30 на 30. Надо теперь подготовить 001.obj под эти размеры.
_________________ Быстро едешь, тихо понесут... |
|
|
yakim81
305 EGP
   Рейтинг канала: 6(417) Репутация: 18 Сообщения: 221
Зарегистрирован: 07.02.2015
 |
|
Shaddie : |
yakim81 : |
Если Вы присоединитесь к данной разработке, думаю все получится.
|
Времени мало свободного, но постараюсь помочь. Пока подправил редактор под матрицу 30 на 30. Надо теперь подготовить 001.obj под эти размеры.
|
Теперь самое главное - заставить игру видеть сектора больше 20 по вертикали и 10 по горизонтали.
Я провел опыт, где добавил на 11 горизонталь сектор, включил отображение всех секторов на карте через чит меню - все сектора отобразились, а вот 11 горизонталь не отобразилась, хотя связь с 10 на 11 горизонт отображалась, но это 00749.bod, проблему с отображением которого мы уже решили.
KWON : |
И будет видно что доки и торговые станции на верфь добавится не захотят.
|
Возможен ли такой вариант - где то в obj должен храниться список станций, которые являются товаром для верфей. Возможно туда нужно добавить торговую станцию в список, или заменить какую нить фабрику на Торговую.
|
|
|
Shaddie
556 EGP
      Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004
 |
|
yakim81 : |
Теперь самое главное - заставить игру видеть сектора больше 20 по вертикали и 10 по горизонтали.
Я провел опыт, где добавил на 11 горизонталь сектор, включил отображение всех секторов на карте через чит меню - все сектора отобразились, а вот 11 горизонталь не отобразилась, хотя связь с 10 на 11 горизонт отображалась, но это 00749.bod, проблему с отображением которого мы уже решили.
|
Подправил генерацию файла 00749.bod из редактора на новые размеры, обновил редактор в теме (еще раз скачать).
_________________ Быстро едешь, тихо понесут... |
|
|
KWON
409 EGP
    Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
yakim81 : |
Где то во внутренностях игры видел заготовки принадлежности сектора игроку. Если можно будет сделать и сектор, принадлежащий Игроку так, что бы эта информация отображалась на галактической карте.
|
С разрешения Shaddie поделюсь Редактором где можно ставить станции игрока и сделать сектор принадлежащий плаеру.
Также можете взять строку любой станции в "Stations.dat" и поставить после раздела [Player],
добавив её на карту уберите личные корабли класов М5, М4 и ТS иначе это тоже будут Эксперименталы только не М3.
XT Map Editor.7z |
Описание: |
Редактор карт со станциями игрока |
|
Имя файла: |
XT Map Editor.7z |
Размер файла: |
1.9 MB |
Скачано: |
708 раз(а) |
_________________ Следи за собой, будь осторожен. В.Цой
Последний раз редактировалось: KWON (13:59 03-05-2017), всего редактировалось 11 раз(а) |
|
|
yakim81
305 EGP
   Рейтинг канала: 6(417) Репутация: 18 Сообщения: 221
Зарегистрирован: 07.02.2015
 |
|
У меня как обычно две новости.
1. Научил obj залетать на 11 горизонталь без проблем
2. Галактическая карта не видит 11 горизонталь, т.е. вообще не видно где летишь, но корабль Гонеров появился в новом секторе, а это значит, что, при создании кораблей Гонеров, учитываются сектора за матрицей 20х10, В меню чит при добавлении спутников во все системы - спутники добавляются в новые сектора за пределами матрицы 20х10, на карте не видно, но они присутствуют в меню личного имущества.
В прикрепленном файле измененный obj + файл патча с вносимыми изменениями.
Внесены изменения во всех циклах в связке 20+10, в некоторых местах значения передаются в качестве параметров для процедур и функций. заменено все подозрительное.
Запускной файл вылетает с ошибкой при выходе из игры (даже без разницы, открывалась карта или нет)
Редактор карт неверно читает значения из 44001.txt
Если после компиляции ваших obj игра вылетает - виноват компилятор, он переписывает секцию STRG на STRU. После компиляции необходимо в новом obj заменить последнюю секцию на исходную.
001_obj_30x30.ZIP |
Описание: |
|
Имя файла: |
001_obj_30x30.ZIP |
Размер файла: |
574.27 KB |
Скачано: |
646 раз(а) |
|
|
|
yakim81
305 EGP
   Рейтинг канала: 6(417) Репутация: 18 Сообщения: 221
Зарегистрирован: 07.02.2015
 |
|
для отображения карты выше 11 горизонтали и шире 20 вертикали необходимо видимо отредактировать еще 00335.bod и 00365.bod. Пока, к сожалению, нет возможности это провести
Это оказалось не то. У меня закончились мысли...
Последний раз редактировалось: yakim81 (22:39 29-07-2016), всего редактировалось 1 раз |
|
|
KWON
409 EGP
    Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
Благодаря пилоту Non разобрался как можно русифицировать обж, подобно программистам "НовогоДиска"!
Пошаговое описание:
- берем файл 001.obj ;
- создаем папку "UnpackSTR";
- розмещаем в ней XA_ASM.EXE и XA_ASM.INI пилота CheckerTwo;
брать здесь:
ссылка
http://www.elite-games.ru/conference/viewtopic.php?p=3552417#3552417
- cоздаем файл UnpackSTR.asm
с таким содержимым:
Код: |
.title obj_patch
.ident XT
.radix 16d
.loadobj "001.obj"
.section code, abs
.end |
т.е. с нулевым действием;
- в файле XA_ASM.INI выставляем:
StrCrypt = false
- берем мышкой файл "UnpackSTR.asm" и перетаскиваем на XA_ASM.EXE;
- получаем файл UnpackSTR.cod;
- скачиваем хороший гекс редактор (я пользуюсь BreakPoint Software Hex Workshop v6.7);
- открываем им UnpackSTR.cod;
- задаем в поиск гекс-код нахождения текстовой секции STR: 535452 (не адрес-смещение);
эта секция это всегда завершение файла 001.obj
и если вы редактором карт Shaddie добавляли сектора и объекты,
то этот участок смещается в конец файла.
- и о чудо! мы видим знакомые английские и немецкие буквы в место непонятных гекс-кодов которые были раньше в этом месте обжа!
- теперь главная и продолжительная работа:
с помощью гекс-редактора переводим все необходимые нам букафки
секция STR занимает в конце файла 001.obj 44090 байт
так что розбираться придется долго.
- завершив гекс-перевод создадим папку "РackSTR"
- розместим в ней XA_ASM.EXE и XA_ASM.INI пилота CheckerTwo;
- но, теперь в файле XA_ASM.INI выставляем:
StrCrypt = true
- помещаем сюда переведенный файл UnpackSTR.cod;
- переименовываем его в 001.obj;
- берем наш текстовый файл UnpackSTR.asm
и не меняя внутренностей переименуем его теперь в РackSTR.asm;
- берем мышкой файл "РackSTR.asm" и перетаскиваем на XA_ASM.EXE;
- получаем файл РackSTR.cod;
- теперь розмещаем в этой папке GPTH.EXE и GPTH.INI от пилота CheckerTwo;
- дапее берем мышкой файл РackSTR.cod и перетаскиваем на GPTH.EXE;
- получаем РackSTRfix.obj и РackSTRfix.pch;
- переименовываем их в 001.obj и 001.pch;
- потом копируем их в папку "L" игры и проверяем результат. Всё.
Правда теперь грузится игра чего то медленние но зато все переводы работают.
Тут обж моей работы.
посмотрите меню взлома, оно почти на русише.
Восстанов. - это значит презагрузка всей Икс-галактики с возвратом всех станций и кораблей (станции игрока не пострадают),
но потребует несколько минут ожидания (10-15) в зависимости от силы Вашего компа,
не додумайтесь нажать это два раза, замучитесь потом ждать презагрузки карты несколько раз.
Вложение удалено, смотреть обновленную русификацию ниже:
http://www.elite-games.ru/conference/viewtopic.php?p=3553065#3553065
_________________ Следи за собой, будь осторожен. В.Цой
Последний раз редактировалось: KWON (06:26 03-01-2018), всего редактировалось 1 раз |
|
|
Non
802 EGP
       Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
Лучшей альтернативой будет strg abs патчинг с помощью xa_asm.
Доп. информация в посте CheckerTwo
Это удобнее, т.к. результат работы в маленьком текстовом файле.
Ограничения:
- кодировка файла патча CP1251
- длина строки не больше исходной
Важно: в xa_asm.ini выставить опцию StrCrypt = true
Код: |
; Принудительное указание на криптовку секции строк.
; Если ключ не указан - выбор режима "криптовать/не криптовать" остается
; за компилятором. Если ключ указан - то будет выполнятся то, что установлено:
; TRUE - криптовать, FALSE - не криптовать
StrCrypt = true |
Иначе игра после патча обжа будет вылетать.
Как сделать свой перевод этим способом?
1. Добжим оригинальный обж XT
2. Открываем 001.str
В этом файле все строки обжа
3. Находим интересующую строку, к примеру:
Код: |
00002355 : Dear tester.\nYou are able to test Race Campaigning. The notoriety towards the player of the race of this sector is now -300. If you fire one shot at a factory, a campaign is started. Hitting something after a campaign or after a truce starts next campaign. Have fun\n\nOnno Paap |
Номер строки 00002355
Длина исходной строки 279 символов. Учитываем, чтобы наш перевод был не длиннее.
4. Патчим строки по этому шаблону:
Установка указателя на номер строки
суффикс h нужен, чтобы шестнадцатеричный адрес был правильно найден
Замена строки
Код: |
S0002355: .ascii "Строка" |
Номер строки тот же, но первый нуль меняется на S и суффикс h отсутствует
Сама строка в кавычках, строки поддерживаются только в кодировке ASCII
Конечный пример:
Код: |
.title rus_patch
.ident XT
.radix 10d
.loadobj "001.obj"
.section strg, abs
$ = 00002355h
S0002355: .ascii "Уважаемые тестеры.\nВы можете проверить Гонки. Награда победителю этого сектора теперь - 300. Кампания начнется, когда вы выстрелите по фабрике. При выстреле по чему-либо после начала кампании или перемирия перезапустит кампанию. Веселитесь\n\nОнно Паап"
.end |
Как сделать перевод, когда нужно вместить больше символов?
1. Находим команду, вызывающую интересующую нас строку в файле 001.out по номеру строки как в файле 001.str, только первый нуль заменён на S: 00003963 -> S0003963
Код: |
000D579C: 0056 00002355 | 0 get_strg S0002355 ; ; "Dear tester.\nYou are able to test Race Campaigning. The notoriety towards the player of the race of this sector is now -300. If you fire one shot at a factory, a campaign is started. Hitting something after a campaign or after a truce starts next campaign. Have fun\n\nOnno Paap" |
2. Устанавливаем указатель на адрес с вызовом строки и подменяем на вызов своей строки
Код: |
.section code, abs
$ = 000D579Ch
get_strg S000AD6F |
3. Дописываем свою строку неограниченной длины в конец строковой секции.
Код: |
.section strg, con
S000AD6F: .ascii "Dear tester.\nYou are able to test Race Campaigning. The notoriety towards the player of the race of this sector is now -300. If you fire one shot at a factory, a campaign is started. Hitting something after a campaign or after a truce starts next campaign. Have fun\n\nOnno Paap\nHAHAHAHAHA HAH AHH HA AHHA HAHH" |
Ассемблер xa_asm решает, какой будет адрес у строки при дозаписи в конец, основываясь на длине предидущих.
Новая строка в строковой секции патченного обжа:
Код: |
0000AC3B : Dear tester.\nYou are able to test Race Campaigning. The notoriety towards the player of the race of this sector is now -300. If you fire one shot at a factory, a campaign is started. Hitting something after a campaign or after a truce starts next campaign. Have fun\n\nOnno Paap\nHAHAHAHAHA HAH AHH HA AHHA HAHH |
В приложении перевод от KWON в виде asm патча и пример добавления строк неограниченной длины.
|
|
|
KWON
409 EGP
    Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
Спасибо пилоту Non, получилось сделать удлинение записей русификации:
1. Слово "Armageddon" заменено на "Bосстановление всей карты".
Cкрытый текст (кликните здесь для просмотра)
|
2. Слово "Variables" заменено на "Проверить рейтинг (клав. [+])".
Cкрытый текст (кликните здесь для просмотра)
|
3. Также переведено меню очков расовых рейтингов:
Cкрытый текст (кликните здесь для просмотра)
|
4. Ещё скриншот Секретной миссии:
Cкрытый текст (кликните здесь для просмотра)
|
5. Информация о данных на станции игрока:
Cкрытый текст (кликните здесь для просмотра)
|
Весь список русифицированных слов в 001.obj:
Cкрытый текст (кликните здесь для просмотра)
Перевод секции STRG:
00001621 : Неизв. команда!
00002355 : Уважаемые тестеры.\nВы можете проверить Гонки. Награда победителю этого сектора теперь - 300. Кампания начнется, когда вы выстрелите по фабрике. При выстреле по чему-либо после начала кампании или перемирия перезапустит кампанию. Веселитесь\n\nОнно Паап
0000246A : Да
000025D8 : Игрок
0000281A : Бренaн
00002E50 : Ускор. производ
00002E60 : Норм. производ.
00002E71 : Взлом Банка Икс-Галактики на %d%02d
00002E9B : Взлом оборудования!
000030D0 : Цель
0000312A : Камера
000034EC : Нет доступной информационной помощи на эту тему сейчас
000035EC : Нет объектов!
00003704 : %d.%d м/с
00003725 : %d м/с%c
00003770 : %d МВ
00003820 : %d неопределен
0000394B : Показать все сектора
00003963 : Дать заводы игроку
00003978 : Дать спутники
00003987 : Проверить задачи
0000399B : Не нажимать - затрясет!
000039B6 : Взлом галактического банка на %d
00003BC4 : [Л]
00003C23 : %d км
00003CBA : Перемен.
00003D07 : Диалог
00003E26 : Статус: %s
00003E47 : Текущий Приоритет:%d
00003E6B : Мин. Приоритет: %d
00003E8F : Макс. Приоритет: %d
00003EAD : Есть
00003EB2 : Нет
00003EB8 : Вероятность: %s
00003F72 : Квест
0000405A : Настройка
00004081 : Земля - колыбель ума, но мы не можем жить всегда в колыбели.
000040CB : \nЗемля - колыбель ума, но мы не можем жить всегда в колыбели.
00004125 : \n-Koнстантин E. Циолковский\n\nВы поставили бы корабельные паруса против ветров и водотоков, освещая костер под его палубой... Я не имею времени для бессмыслицы.\nВы поставили бы корабельные паруса против ветров и водотоков, освещая костер под его палубой... Я неимею никакого времени для такой бессмыслицы.
00004269 : \n-Наполеон\n\nГлавное - не переставать задавать вопросы.
000042A4 : \nГлавное - не переставать задавать вопросы.
000042DB : \n-Альберт Ейштейн\n\nУм и дух человека растут с Космосом, в котором он позволяет действовать.
0000433D : \nУм и дух человека рустут с космосом, в котором он действует.
0000437F : \n-Крафт А. Ерике \n
00004446 : %s %s Л:%d Щ:%d
00004604 : Усоверш
00004824 : Меню
0000482C : Переменные Квеста %s
00004843 : Знач.
0000485A : Нет перем-х
00004945 : Пилот:***?????
00004954 : ...
00004958 : ..Неизвестный объект**????
00004973 : ..
00004976 : ..*Неизвестно что????
0000498C : Жрец Гонеров...
0000499C : . ? Н-Л-О.................
00005186 : Ты трус! Почему ты улетаешь? Мы думали, что можем доверять тебе!
000051F2 : Отношение Аргона
0000520C : Отношение Сплита
00005226 : Отношение Паранида
00005240 : Отношение Борона
0000525A : Отношение Телади
00005274 : Отношение Пиратов
0000528E : Отношение Гонеров
000052A6 : Количество ведомых:
0000537A : Нападение
00005384 : Нападающих
000093D0 : Восстанов.
000093EC : Запись в журнал
00009419 : Продажа
00009424 : Продать корабль
00009494 : Запись
000094A0 : Запись
000094AA : Введите запись:
000094C0 : Введите запись:
000094D5 : Улучш. судов
000094E3 : Усоверш. судов
00009505 : Имя
0000950A : Нажмите любую клавишу
0000952D : Нажмите любую клавишу
00009565 : Отлично! Хорошие фотографии. Вот деньги - %s Кредитов.
000095AA : Превосходно! Мы удовлетворены твоей работой. Вот деньги - %s кр.
000096B4 : Ручная запись журнала
000099E9 : Ваш
000099ED : Ваш
00009AA6 : Данные производ.цикла
00009ABC : Данные производ.цикла
00009ADA : Врем.цикла
00009AE5 : Врем.цикла
00009AF0 : Сколько производит
00009B03 : Сколько производ
00009B14 : Производство завер.
00009B29 : Производство завершено
00009B5B : Доступно нужных ресурсов
00009B76 : Доступно нужных ресурсов
00009C4A : Зв-д
00009C4F : Солнц
00009C68 : Система удаленной торговли отсутствует
00009C8F : Система удаленной торговли не установлена
00009CF8 : Груз
00009CFE : Груз
00009D17 : %s%s%d%s Кр
00009E33 : Нет доступа
00009E45 : Нет доступа
00009E56 : Да
0000A146 : %scr получите если доставите меня к %s %s в %s секторе %s для работы. %scr оплата за миссию.
0000A1BD : Найдите формулу лекарства от Аргонского Гриппа(сектор Президентский Рубеж) и вернитесь к %s в секторе '%s'. Время-%s час.
0000A239 : Мое имя-доктор %s, и мне нужна Ваша помощь! У нас на станции вспыхнул 'Аргонский Грипп'. Мы слышали, что существует лекарство, и мы должны узнать его формулу. Пожалуйста, летите к торговой станции в секторе 'Президентский Рубеж', где должна быть эта формула. Я даю вам %s час(а,ов). Пожалуйста, быстрее!
0000A44A : Транспорт
0000A456 : Транспортник
0000A46F : Отключить сканер
0000A483 : Закрыть
0000A48E : Oтключить Скан.
0000A49E : Закр.
0000A4A4 : Привет, моё имя %, я коммерционный представитель этой %s станции. Перевезитe меня на станцию %s в Системе %s. Я заплачу Вам %scr за Вашу службу.
0000A545 : Говорит тайная служба Борона. Мы к сожалению сообщаем, что смог убежать пират Мале Ги. Мы попробуем узнать о его новом местопребывании. Мы изведали, что он пошлет Транспортник с Космотабаком через сектор %s. За уничтожение этого транспорта мы платим 20000кр. Поспешите, однако.
0000A6F6 : Говорит тайная служба Борона. Мы получили анонимное указание, что Мале Ги нападет на боронскую коммерционную станцию в секторе %s. Мы платим Вам 50000кр. если Вы успешно обороните станцию. Спасите невиновных боронцев!
0000A824 : Гром
0000A82C : Maлe Ги
0000A843 : Ocминожек II
0000A850 : Бала Ги
0000A868 : Гонер Ван
0000A872 : Кларис
0000A879 : Cтрела
0000A884 : Meлиса Бенкс
0000A951 : Да, Да
0000A995 : Икс-Прото
0000A9A1 : Паранид Персей
0000AC3B : Bосстановление всей карты
0000AC55 : Проверить рейтинг (клав. [+])
|
Можно посмотреть сам пример русифицированного обжа.
Бросил в архив ещё и текстовые файлы заодно.
Rus_001.obj.7z |
Описание: |
Пример русификации 001.obj |
|
Имя файла: |
Rus_001.obj.7z |
Размер файла: |
545.66 KB |
Скачано: |
571 раз(а) |
_________________ Следи за собой, будь осторожен. В.Цой
Последний раз редактировалось: KWON (21:13 06-10-2021), всего редактировалось 5 раз(а) |
|
|
KWON
409 EGP
    Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
Для желающих использовать и русифицировать свой обж а не выложенный пример
предлагается уже переведенный участок обжа - секции STR.
Порядок работы:
1. Скачать файл "Rus OBJ".
2. Открыть гекс-редактором Ваш 001.obj.
3. Задать в поиск гекс-код 535452.
4. Поставить курсор перед буквой S и выделить всё до конца файла (44095 байт).
5. Открыть гекс-редактором файл "Rus OBJ" и просто выделить всё содержимое.
6. Скопировать выделенную область и перенести на выделение Вашего 001.obj.
7. Всё. Сохраните и тестируйте.
UPGR
Или лучше использовать уже готовую программу для русификации XT patch:
http://www.elite-games.ru/conference/viewtopic.php?p=3502247#3502247
Rus OBJ.rar |
Описание: |
Закриптованный участок секции STRG |
|
Имя файла: |
Rus OBJ.rar |
Размер файла: |
38.97 KB |
Скачано: |
562 раз(а) |
_________________ Следи за собой, будь осторожен. В.Цой
Последний раз редактировалось: KWON (11:34 21-10-2018), всего редактировалось 1 раз |
|
|
Non
802 EGP
       Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
Расковырял отключение захвата и отключение бесячего (меня) рандомного повреждения оборудования. Совместимость с сейвами до/после присутствует. Можно поиграть с отключенными, потом вернуть оригинальный обж и продолжить играть.
Сделал более-менее удобную среду с батниками для автоматизации патчинга, создания pch файлов и замены исходного обжа в папке с игрой. Все необходимые утилиты присутствуют.
Частично разобрался как подменять стандартные функции кнопок на свои. К примеру заставил F2 запускать добавляемую в конец обжа функцию, чтобы тестировать пошустрее чего делает различный код в XT.
Много чего из обжа X2 очень похоже на XT, я таким образом и понял, какой именно код пропускать в процедуре TSHIP.AttackedBy, чтобы отключить захват.
Подробнее в readme.html внутри архива.
|
|
|
Non
802 EGP
       Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
Мда блин, это жестко.
С чего собственно началась эта тема, и на что мозгов хватило только сейчас.
Анимация меню + блокировка управления побеждена.
Помимо уничтожения бодов с анимацией по раскопкам CheckerTwo (Open/Close), есть ещё подляна в обже.
Код: |
000F1136: 0031 00078825 | 1 L000F1136: jump L000F1052
000F113C: 0006 000A | 1 L000F113C: read TMENU.me_Mask ; [10d ; 0Ah]
000F1140: 0033 000788A9 | 2 if SP[0]=0 then jump L000F115A
000F1146: 0001 03E8 | 1 push 1000d ; 03E8h
000F114A: 000A | 2 push 1
000F114C: 005A 000000C5 | 3 callasm P_Delay ; 000000C5 |
000F1146 - вот она наша подляна, задержка в 1000 мс.
Простенький патчик для обжа через xa_asm:
Код: |
.title 001.obj
.ident XT
.radix 10d
.loadobj "001.obj"
.section code, abs
$ = 000F1146h
push 50d
.end |
Значение ниже 50 не рекомендую, я тестил.
Теперь значительно быстрее загружаю сейв и тестирую новые изменения. До чего дойду..
...
Дошёл до Ксенонского безумия.
В процедуре TRACE.Logic можно снизить таймауты. Ксенонские карательные отряды будут создаваться не раз в 40-55 секунд, а раз в 2-3 секунды. Верфь больше не закроет свой шлюз
Код: |
; 000D49C2: 0001 2710 | 2 L000D49C2: push 10000d ; 2710h
; 000D49C6: 0001 61A8 | 3 push 25000d ; 61A8h
$ = 000D49C2h
push 1000d
push 1500d
; 000D49EC: 0001 7530 | 2 push 30000d ; 7530h
$ = 000D49ECh
push 1000d |
Последний раз редактировалось: Non (02:19 13-01-2018), всего редактировалось 1 раз |
|
|
KWON
409 EGP
    Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
Класс!
Будем разбираться.
Значит, теперь Вам возможно расширение процедур и даже добавлять недоступные объекты на карту?
Тогда посмотрите это сообщение:
http://www.elite-games.ru/conference/viewtopic.php?p=3299124#3299124
Там речь о увеличении количества НЛО и размещение на карту мин и лазерных башен для врага (Пиратам, Ксенонам).
Non : |
Частично разобрался как подменять стандартные функции кнопок на свои. К примеру заставил F2 запускать добавляемую в конец обжа функцию, чтобы тестировать пошустрее чего делает различный код в XT.
|
Т.е. теперь реально запустить насильно любую миссию, да?
_________________ Следи за собой, будь осторожен. В.Цой |
|
|
Non
802 EGP
       Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
KWON : |
Значит, теперь Вам возможно расширение процедур и даже добавлять недоступные объекты на карту?
|
Расширение процедур тема непростая. При добавлении своего кода через jump в конец и jump обратно нужно правильно поработать со стеком (иногда ещё и правильно увеличить размер стека - setmem). В этом сильно помогает транслятор XC->XASM, который в целом генерирует корректный для XT код, за исключением нескольких отличий в именах встроенных функций и т.д.
Самое оптимальное для abs патчинга оригинального обжа, чего мне удавалось получить в X2 это:
1. Взять оригинальную процедуру.
2. Собрать с ней обж и задобжить его.
3. Изменить процедуру, собрать с ней обж и задобжить его.
4. diff'ом сравнить изменения в XASM коде, куда надо вставлять jump'ы, как изменился setmem и т.д.
Такой подход не прокатил с функцией _Init в X2 например. Всё вроде бы корректно, но _Init перестаёт работать.
Я думаю что в своей левой процедуре, генерируемой транслятором XC->XASM, возможно потом немного подправленной под XT, можно вольно воротить чего угодно.
Один минус - не понятно как запустить её только один раз при старте игры / загрузке сохранёнки.
Глобальные переменные .vint роняют игру при загрузке с сохранёнки. А они нужны, допустим, чтобы установить флаг, запускалась ли твоя процедура, или нет. Но можно придумать и другой флаг, может даже созданный астероид по особым координатам , надо только немного подумать.
KWON : |
Т.е. теперь реально запустить насильно любую миссию, да?
|
Думаю вполне. Нужно найти место где она запускается и с какими аргументами (если такие есть) и запустить её по образу и подобию в своей процедуре.
Расскажу немного, как транслятор XC->XASM сильно может упростить понимание происходящего в XASM коде обжа. Также рекомендую почитать транслированный в XC обж X2, почти все функции 1 в 1.
Разберу до безобразия примитивную тестовую функцию, написанную на XC.
Код: |
#include "inc/xt.h";
.func Testing
function Testing()
{
var PlShip=TCLIENT.GetPlayerShip()->GetObjectID();
SA_MoveObjectIntoContainer(SA_AllocObject(9,3), PlShip);
} |
Она добавляет на корабль игрока щит на 125МВт на низком уровне, игнорируя добавление товара в трюм и т.д.
Код: |
Testing:
setmem 5 ; Размер стека
push 0 ;1 Нули толкаются в стек, когда функция запускается без параметров
push 0 ;2 Т.к. после запуска функция уничтожает верхнюю ячейку стека
push 2100d ;3 Это номер класса TClient
call59 TCLIENT.GetPlayerShip ;2 Здесь вызов функции съел 2100d и 0, вернул PlayerShip и остался первый 0
call GetObjectID ;1 Здесь вызов функции съел 0 и Playership, вернул PlayershipObjectID
push SP[0] ;2 В стек запихивается копия PlayershipObjectID, их теперь там две
push 3 ;3 В стек толкается 3 из SA_AllocObject(9,3)
push 9 ;4 В стек толкается 9 из SA_AllocObject(9,3), читать проще задом наперёд
push 2 ;5 Теперь в стек толкается 2, означает что параметров для SA_AllocObject 2
callasm SA_AllocObject ;3 Съедает 3 последние значения из стека (3, 9, 2) и возвращает в стек объект
push 2 ;4 Теперь в стеке две копии PlayershipObjectID, объект из SA_AllocObject и 2
callasm SA_MoveObjectIntoContainer ;2 Эта функция съедает 2 (кол-во параметров), PlayershipObjectID и объект(щит)
pop ;1 Уничтожается возвращённое SA_MoveObjectIntoContainer значение (наверное 0)
pop ;0 Уничтожается исходный PlayershipObjectID
push 0 ;1 Толкается 0
ret ;0 Возвращается этот 0, т.к. функция всегда что-то возвращает |
Кстати, если транслировать код без определения переменной через var или var:=, то он получается короче и копия Playership уже не толкается в стек, используется исходная:
Код: |
SA_MoveObjectIntoContainer(SA_AllocObject(9,3), TCLIENT.GetPlayerShip()->GetObjectID()); |
Код: |
Testing:
setmem 4
push 0
push 0
push 2100d
call59 TCLIENT.GetPlayerShip
call GetObjectID
push 3
push 9
push 2
callasm SA_AllocObject
push 2
callasm SA_MoveObjectIntoContainer
pop
push 0
ret |
Последний раз редактировалось: Non (18:47 13-01-2018), всего редактировалось 8 раз(а) |
|
|
KWON
409 EGP
    Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
Non : |
В процедуре TRACE.Logic можно снизить таймауты.
Ксенонские карательные отряды будут создаваться не раз в 40-55 секунд, а раз в 2-3 секунды.
Верфь больше не закроет свой шлюз
|
Да, крутая вещь - бесконечность Караванов Ксенонов.
Наверно теперь можно поправить плач всех экстэнщиков о вопиющей "активности" пиратов?
Вот, попробовал в 6-ти местах поменять 15000 на 1000.
И что вы думаете...
заворушились пиратики:
Код: |
000D89D6: 0001 3A98 | 5 pushw 15000d ; 3A98h
000D89DA: 0001 3A98 | 6 pushw 15000d ; 3A98h
000D9EC6: 0001 3A98 | pushw 15000d ; 3A98h
000D9ECA: 0001 3A98 | pushw 15000d ; 3A98h
000DA4F8: 0001 3A98 | pushw 15000d ; 3A98h
000DA4FC: 0001 3A98 | pushw 15000d ; 3A98h |
AgressionLevel.7z |
Описание: |
Уровень генерации вражеских кораблей |
|
Имя файла: |
AgressionLevel.7z |
Размер файла: |
335.88 KB |
Скачано: |
737 раз(а) |
Последний раз редактировалось: KWON (16:58 05-12-2018), всего редактировалось 2 раз(а) |
|
|
|
|
|
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Наведи на любой свой корабль и посмотри, кто там пилот (X-T). Как ни странно - Бреннан. Нас окружают Бреннаны... (заметил Fletch)
|
» Раскопки обжа на предмет юзабельных вещей | страница 3 |
|