| 
| ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм.
 Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
 
 
 |  | » Раскопки обжа на предмет юзабельных вещей | страница 3 |  
	
		|  |  |  |  | Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |  |  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 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
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | Вопрос на засыпку знающим людям. 1. Есть ли место в obj или каком другом месте, где прописывается принадлежность фабрики или завода той или иной расе?
 2. Имеется ли такой же признак у торговой станции?
 Если ответ положительный:
 3. Имеется ли такой же признак для фабрики игрока?
 4. Можно ли использовать этот признак для присвоения его торговой станции?
 5. Можно ли всунуть торговую станцию в товары на верфь и присваивать ей признак принадлежности Игроку?
 
 Где то во внутренностях игры видел заготовки принадлежности сектора игроку. Если можно сделать п. 5, то можно будет сделать и сектор, принадлежащий Игроку так, что бы эта информация отображалась на галактической карте. (моя давняя мечта)
 |  
		|  |  |  |  
		| AlexYar 
  1955 EGP 
                Рейтинг канала: 6(307)
 Репутация: 325
 Сообщения: 33299
 
 Зарегистрирован: 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
 Сообщения: 222
 
 Зарегистрирован: 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
 Сообщения: 222
 
 Зарегистрирован: 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 |  
		| Скачано: | 733 раз(а) |  _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: KWON (13:59 03-05-2017), всего редактировалось 11 раз(а)
 |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 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 |  
		| Скачано: | 673 раз(а) |  |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 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 |  
		| Скачано: | 604 раз(а) |  _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: 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 |  
		| Скачано: | 590 раз(а) |  _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: 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 |  
		| Скачано: | 772 раз(а) |  
 Последний раз редактировалось: KWON (16:58 05-12-2018), всего редактировалось 2 раз(а)
 |  
		|  |  |  |  |  |  
		|  |  |  |  | Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |  
		|  |  
        | К списку каналов | Наверх страницы |  | Цитата не в тему:  Посмотрел сколько трафика за сегодня набежало - 9.73 Mb и поймал себя на мысли "ну вот ещё килобайт 300 посижу и пора спать" (Star Bat) 
 
 |  | » Раскопки обжа на предмет юзабельных вещей | страница 3 |  |