Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Раскопки обжа на предмет юзабельных вещей | страница 3
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 3 из 5
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
Поиск в этой теме:
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей»
yakim81
 305 EGP


Рейтинг канала: 6(417)
Репутация: 18
Сообщения: 220

Зарегистрирован: 07.02.2015
Какая радость, с возвращением! Я пошерстил obj и обнаружил уже свыше 37 мест, где используется два цикла со счетчиком 20 и 10 элементов, но это еще не все места. Я уже писал тов. KWON о двух местах, где цифры 20 и 10 передаются в качестве параметров для функции
Код:

           push       10d ; 0Ah
           push       20d ; 14h
           push       1
           callasm    P_Random ; 000000F5

в функции TFACTORY.Production2();
Если Вы присоединитесь к данной разработке, думаю все получится.
    Добавлено: 13:53 09-07-2016   
yakim81
 305 EGP


Рейтинг канала: 6(417)
Репутация: 18
Сообщения: 220

Зарегистрирован: 07.02.2015
Вопрос на засыпку знающим людям.
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
2. Имеется ли такой же признак у торговой станции?
Если ответ положительный:
3. Имеется ли такой же признак для фабрики игрока?
4. Можно ли использовать этот признак для присвоения его торговой станции?
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?

Где то во внутренностях игры видел заготовки принадлежности сектора игроку. Если можно сделать п. 5, то можно будет сделать и сектор, принадлежащий Игроку так, что бы эта информация отображалась на галактической карте. (моя давняя мечта)
    Добавлено: 15:05 10-07-2016   
AlexYar
 1846 EGP


Рейтинг канала: 6(304)
Репутация: 328
Сообщения: 31404

Зарегистрирован: 26.10.2003
yakim81 :
1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?


В х2 это TSTATION.st_Owner

Может и тут так.

yakim81 :
2. Имеется ли такой же признак у торговой станции?


У всех подклассов должен быть (либо берётся с родительского класса).

yakim81 :
3. Имеется ли такой же признак для фабрики игрока?


Да, игрок - это тоже раса.

yakim81 :
4. Можно ли использовать этот признак для присвоения его торговой станции?


Да.

yakim81 :
5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?


Нет. Товар не имеет принадлежности, а на верфь добавить можно только в виде товара.

yakim81 :
Где то во внутренностях игры видел заготовки принадлежности сектора игроку.


TSECTOR.sec_Owner тоже есть в х2, но чтобы назначить сектор игроку - нужно во многих местах код менять, так как изначально это не было предусмотрено. В оригинале принадлежность сектора назначается во время создания вселенной (на старте новой игры) и потом уже не меняется. В разных меню, в алгоритмах поиска кораблей/станций/товара и прочих местах потом проблемы могут быть.
    Добавлено: 15:27 10-07-2016   
yakim81
 305 EGP


Рейтинг канала: 6(417)
Репутация: 18
Сообщения: 220

Зарегистрирован: 07.02.2015
Т.е. если я правильно понял, то торговая станция как товар отсутствует в XT? но в X2, как я знаю, торговую станцию можно купить на верфи, и она будет принадлежать Игроку?
    Добавлено: 15:57 10-07-2016   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 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
поиграйтесь сами заменяя на верфи разные предприятия.
Возмите оригинальный обж начните игру в Аргон Прайм, сохранитесь на верфи.
Откройте сейв Гекс-редактором, задайте в поиск, например, Аргонский спутниковый завод.
Код встретится два раза. Из таблицы Магната возмите код любой станции.
Замените в найденных двух местах.
Запускаем сохранеку, смотрим чаво случилось.
И будет видно что доки и торговые станции на верфь добавится не захотят.
_________________
Следи за собой, будь осторожен. В.Цой
    Добавлено: 23:56 11-07-2016   
Shaddie
 556 EGP


Рейтинг канала: 6(438)
Репутация: 118
Сообщения: 261
Откуда: Томск
Зарегистрирован: 09.09.2004
yakim81 :
Если Вы присоединитесь к данной разработке, думаю все получится.

Времени мало свободного, но постараюсь помочь. Пока подправил редактор под матрицу 30 на 30. Надо теперь подготовить 001.obj под эти размеры.
_________________
Быстро едешь, тихо понесут...
    Добавлено: 09:11 12-07-2016   
yakim81
 305 EGP


Рейтинг канала: 6(417)
Репутация: 18
Сообщения: 220

Зарегистрирован: 07.02.2015
Shaddie :
yakim81 :
Если Вы присоединитесь к данной разработке, думаю все получится.

Времени мало свободного, но постараюсь помочь. Пока подправил редактор под матрицу 30 на 30. Надо теперь подготовить 001.obj под эти размеры.

Теперь самое главное - заставить игру видеть сектора больше 20 по вертикали и 10 по горизонтали.
Я провел опыт, где добавил на 11 горизонталь сектор, включил отображение всех секторов на карте через чит меню - все сектора отобразились, а вот 11 горизонталь не отобразилась, хотя связь с 10 на 11 горизонт отображалась, но это 00749.bod, проблему с отображением которого мы уже решили.

KWON :
И будет видно что доки и торговые станции на верфь добавится не захотят.


Возможен ли такой вариант - где то в obj должен храниться список станций, которые являются товаром для верфей. Возможно туда нужно добавить торговую станцию в список, или заменить какую нить фабрику на Торговую.
    Добавлено: 09:26 12-07-2016   
Shaddie
 556 EGP


Рейтинг канала: 6(438)
Репутация: 118
Сообщения: 261
Откуда: Томск
Зарегистрирован: 09.09.2004
yakim81 :

Теперь самое главное - заставить игру видеть сектора больше 20 по вертикали и 10 по горизонтали.
Я провел опыт, где добавил на 11 горизонталь сектор, включил отображение всех секторов на карте через чит меню - все сектора отобразились, а вот 11 горизонталь не отобразилась, хотя связь с 10 на 11 горизонт отображалась, но это 00749.bod, проблему с отображением которого мы уже решили.

Подправил генерацию файла 00749.bod из редактора на новые размеры, обновил редактор в теме (еще раз скачать).
_________________
Быстро едешь, тихо понесут...
    Добавлено: 10:01 12-07-2016   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 171
Откуда: Україна. Чигирин.
Зарегистрирован: 24.11.2014
yakim81 :
Где то во внутренностях игры видел заготовки принадлежности сектора игроку. Если можно будет сделать и сектор, принадлежащий Игроку так, что бы эта информация отображалась на галактической карте.


С разрешения Shaddie поделюсь Редактором где можно ставить станции игрока и сделать сектор принадлежащий плаеру.
Также можете взять строку любой станции в "Stations.dat" и поставить после раздела [Player],
добавив её на карту уберите личные корабли класов М5, М4 и ТS иначе это тоже будут Эксперименталы только не М3.

XT Map Editor.7z
 Описание:
Редактор карт со станциями игрока
 Имя файла:  XT Map Editor.7z
 Размер файла:  1.9 MB
 Скачано:  626 раз(а)

_________________
Следи за собой, будь осторожен. В.Цой

Последний раз редактировалось: KWON (13:59 03-05-2017), всего редактировалось 11 раз(а)
    Добавлено: 05:53 23-07-2016   
yakim81
 305 EGP


Рейтинг канала: 6(417)
Репутация: 18
Сообщения: 220

Зарегистрирован: 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
 Имя файла:  001_obj_30x30.ZIP
 Размер файла:  574.27 KB
 Скачано:  569 раз(а)
    Добавлено: 16:34 24-07-2016   
yakim81
 305 EGP


Рейтинг канала: 6(417)
Репутация: 18
Сообщения: 220

Зарегистрирован: 07.02.2015
для отображения карты выше 11 горизонтали и шире 20 вертикали необходимо видимо отредактировать еще 00335.bod и 00365.bod. Пока, к сожалению, нет возможности это провести
Это оказалось не то. У меня закончились мысли...

Последний раз редактировалось: yakim81 (22:39 29-07-2016), всего редактировалось 1 раз
    Добавлено: 16:44 28-07-2016   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 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 раз
    Добавлено: 20:44 27-12-2017   
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
Код:
dobj 001.obj



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

суффикс 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 патча и пример добавления строк неограниченной длины.

xt_obj_l10n_example.7z
 Описание:
 Имя файла:  xt_obj_l10n_example.7z
 Размер файла:  3.02 KB
 Скачано:  498 раз(а)
    Добавлено: 20:37 28-12-2017   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 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
 Скачано:  493 раз(а)

_________________
Следи за собой, будь осторожен. В.Цой

Последний раз редактировалось: KWON (21:13 06-10-2021), всего редактировалось 5 раз(а)
    Добавлено: 03:47 03-01-2018   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 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
 Скачано:  470 раз(а)

_________________
Следи за собой, будь осторожен. В.Цой

Последний раз редактировалось: KWON (11:34 21-10-2018), всего редактировалось 1 раз
    Добавлено: 13:51 05-01-2018   
Non
 802 EGP


Модератор
Рейтинг канала: 6(383)
Репутация: 239
Сообщения: 801

Зарегистрирован: 27.06.2006
Расковырял отключение захвата и отключение бесячего (меня) рандомного повреждения оборудования. Совместимость с сейвами до/после присутствует. Можно поиграть с отключенными, потом вернуть оригинальный обж и продолжить играть.

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

Частично разобрался как подменять стандартные функции кнопок на свои. К примеру заставил F2 запускать добавляемую в конец обжа функцию, чтобы тестировать пошустрее чего делает различный код в XT. Подозрение.

Много чего из обжа X2 очень похоже на XT, я таким образом и понял, какой именно код пропускать в процедуре TSHIP.AttackedBy, чтобы отключить захват. Да.

Подробнее в readme.html внутри архива.
    Добавлено: 23:21 12-01-2018   
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 раз
    Добавлено: 00:27 13-01-2018   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 171
Откуда: Україна. Чигирин.
Зарегистрирован: 24.11.2014
Класс!
Будем разбираться.

Значит, теперь Вам возможно расширение процедур и даже добавлять недоступные объекты на карту?
Тогда посмотрите это сообщение:
http://www.elite-games.ru/conference/viewtopic.php?p=3299124#3299124
Там речь о увеличении количества НЛО и размещение на карту мин и лазерных башен для врага (Пиратам, Ксенонам).
Non :
Частично разобрался как подменять стандартные функции кнопок на свои. К примеру заставил F2 запускать добавляемую в конец обжа функцию, чтобы тестировать пошустрее чего делает различный код в XT.

Т.е. теперь реально запустить насильно любую миссию, да?
_________________
Следи за собой, будь осторожен. В.Цой
    Добавлено: 15:27 13-01-2018   
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 раз(а)
    Добавлено: 17:43 13-01-2018   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 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
 Скачано:  641 раз(а)


Последний раз редактировалось: KWON (16:58 05-12-2018), всего редактировалось 2 раз(а)
    Добавлено: 21:26 13-01-2018   
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей»
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Ты попробуй покомандовать людьми. Либо получится, либо они тебя сами вылечат. (Химик о мании величия)

  » Раскопки обжа на предмет юзабельных вещей | страница 3
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18