| 
| ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм.
 Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
 
 
 |  | » Раскопки обжа на предмет юзабельных вещей | страница 2 |  
	
		|  |  |  |  | Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |  |  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | Главный вопрос, на который так и не увидел ответа: можно ли в обж добавить новые данные (не заменяя старые) в описание звука как на примере добавления новых секторов?
 |  
		|  |  |  |  
		| KWON 
  409 EGP 
     Рейтинг канала: 8(857)
 Репутация: -12
 Сообщения: 171
 Откуда: Україна. Чигирин.
 Зарегистрирован: 24.11.2014
 
      |  | Я такого способа не знаю. 0001-TX_AUDIO имеет стабильные адреса в начале обжа, не уверен, что этот раздел можно добавить еще и в конце. 
 
	  | yakim81 : |  
	  | ведь нам без разницы, какая продолжительность была у старого участка, и где он находился, мы же можем указать новое место начала и новую продолжительность, и всунуть все это в конец 0144.dat. Я правильно понимаю? |  Да. И если неточно обрезан участок из Х3, то можно подогнать новые значения места озвучивания или продолжительности. Запустить игру, послушать, чуть-чуть поменять, опять проверить игрой, вновь подогнать до получения безошибкового звучания.
 _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: KWON (12:35 22-06-2015), всего редактировалось 1 раз
 |  
		|  |  |  |  
		| Shaddie 
  556 EGP 
       Рейтинг канала: 6(438)
 Репутация: 118
 Сообщения: 261
 Откуда: Томск
 Зарегистрирован: 09.09.2004
 
      |  | 
Вообще код любой процедуры можно увеличить: в нужном месте процедуры вставляется jump на область в конце кода обжа куда и пишется весь дополнительный код (только делать надо это с помощью программ ChekerTwo)
	  | Kwon. : |  
	  | 0001-TX_AUDIO имеет стабильные адреса в начале обжа, не уверен, что этот раздел можно добавить еще и в конце. |  _________________
 Быстро едешь, тихо понесут...
 |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | я сильно прошу не пинать меня сильно, но ткните носом, где можно скачать наборчик для работы с обж? UPD
 Это случаем не этот http://www.elite-games.ru/_egm_scripts/url.php?action=gotourl&url=/downloads/x2/x2_asm_dasm.rar ?
 
 Последний раз редактировалось: yakim81 (18:02 24-06-2015), всего редактировалось 1 раз
 |  
		|  |  |  |  
		| Non 
  802 EGP 
        Рейтинг канала: 6(383)
 Репутация: 239
 Сообщения: 801
 
 Зарегистрирован: 27.06.2006
 
      |  | Я тут брал.   |  
		|  |  |  |  
		| KWON 
  409 EGP 
     Рейтинг канала: 8(857)
 Репутация: -12
 Сообщения: 171
 Откуда: Україна. Чигирин.
 Зарегистрирован: 24.11.2014
 
      |  | 
	  | Shaddie : |  
	  | Вообще код любой процедуры можно увеличить |  А я так и знал, что придет кто то знающий, потому и написал "не уверен".
 А обучалку как так сделать можно? Т.е. создать универсальный асм-код на 110 новых систем а мы подставим свои номера, места и продолжительность звука.
 Как известно раздел 0001-TX_AUDIO имеет два индекса:
 00014C98: 002B 000F              |    2            write      TX_AUDIO.Tscript_eng ; [15d ; 0Fh]
 000298F4: 002B 0010              |    2            write      TX_AUDIO.Tscript_ger ; [16d ; 10h]
 Т.е. озвучивать каждый сектор нужно два раза (если есть 00149.dat)
 Научите где именно ставить jump и в общих чертах структуру добавляемого участка (для обоих ленгвиджей).
 Потому как озвучка новых секторов поможет при атаке на фабрику игрока сразу сориентироваться куда бежать, кого спасать.
 Ещё вопрос. А можно создать файлы 00344 и 00349 - участки названий новых секторов в отдельных файлах без мороки из соундфоржэм.
 И добавить их сюда: ; procedure TX_AUDIO.SetLanguage(arg1); ?
 Ещё непонятно как привязывается видео до звука. Было бы неплохо разобраться.
 Я, озвучивая НЛО-шку, получил изображение Верховного Жреца, хотя около номера звука ничего указывающего на приклеенное видео нет.
 
 Теперь такая информация:
 Озвучивание секторов - вариант Лайт (без соундфорджирвания).
 
 В звуковой разметке есть слова не использованные в ХТ:
 <t id="102036" s="5672975" l="3457"/>На ксенонской станции вас не желают видеть.
 <t id="1100063" s="20619259" l="1839"/>"Добро пожаловать в Храм Гонеров"
 <t id="101376" s="5610929" l="1242"/>Порт Анархии Пиратов
 Можно использовать их для озвучивания новых секторов.
 (Конечно лучше было бы это озвукувание расставить на свои места как приветствия на соответствующих станциях, но не нашёл как.
 Хотя подозреваю что редактировать нужно по адресам файла 2109-TTRADEMENU.txt, где прорисован залёт на станцию.)
 Первое для секторов Ксенона.
 Второе для секторов с новым Гонер темпелом.
 Третье для пир.секторов с новой пир.базой.
 
 Всем новым ксеноским секторам также можно приписать "Энэми сектор":
 <t id="1020120" s="20415079" l="969"/>
 Для новых расовых систем можно использовать просто их название.
 <t id="102021" s="5625175" l="681"/>Aргон
 <t id="102022" s="5626856" l="744"/>Борон
 <t id="102023" s="5630305" l="584"/>Сплит
 <t id="102024" s="5628600" l="705"/>Паранид
 <t id="102025" s="5631889" l="710"/>Телади
 <t id="102026" s="5633599" l="713"/>Ксенон
 Берём номер нового сектора из 44001 прописываем его в резервной области и выбранное место в 00144, и продолжительность переносите туда.
 
 Upgr
 Cтолкнулся с проблемой в обжэ от НД совсем иная разметка звука и выложенный выше файл не подходит (ещё один плачущий смайлик).
 Выход - смотреть значения непосредственно в 0001-TX_AUDIO.txt этого обжа.
 Вот пример сравнения разделов оригинального ХТ и от НД. Места и продолжительности у них полностью свои.
 
   По видимому Егософт поделился исходниками или специальной программой редактирования.
 Нет случайно хакера взломавшего сервер НД (если по честному просить то такая прога наверно недешёвая).
 
 P.S. Извините за безконечное редактирование, всё время появляются давно забытые или новые соображения.
 
 
 
	
		| 0001-TX_AUDIO.rar |  
		| Описание: | 
			
				| Детальный файл русского звука НД |  |  
		| Имя файла: | 0001-TX_AUDIO.rar |  
		| Размер файла: | 465.13 KB |  
		| Скачано: | 582 раз(а) |  _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: KWON (18:21 15-07-2015), всего редактировалось 7 раз(а)
 |  
		|  |  |  |  
		| AlexYar 
  1955 EGP 
                Рейтинг канала: 6(307)
 Репутация: 325
 Сообщения: 33299
 
 Зарегистрирован: 26.10.2003
 
    |  | 
	  | Kwon. : |  
	  | "Добро пожаловать в Храм Гонеров" |  
 Эта фраза используется в ХТ. По крайней мере в НД-версии точно. Подобные фразы можно услышать только если не отключены анимации посадки и стыковочных крюков.
 
 L-комплектации на верфи можно получить обычным релоадом (там при каждой загрузке вроде рандом генерит наличие комплектаций).
 |  
		|  |  |  |  
		| KWON 
  409 EGP 
     Рейтинг канала: 8(857)
 Репутация: -12
 Сообщения: 171
 Откуда: Україна. Чигирин.
 Зарегистрирован: 24.11.2014
 
      |  | 
	  | AlexYar : |  
	  | L-комплектации на верфи можно получить обычным релоадом |  Это тема по модингу, я летаю с 2006 года и игровой процесс сейчас так не захватывает как редактирование.
 _________________
 Следи за собой, будь осторожен. В.Цой
 |  
		|  |  |  |  
		| AlexYar 
  1955 EGP 
                Рейтинг канала: 6(307)
 Репутация: 325
 Сообщения: 33299
 
 Зарегистрирован: 26.10.2003
 
    |  | Для моддинга (ради интереса моддинга) нужно идти в X3-Reunion, там инструментов и возможностей реализации своих идей в тысячу раз больше   И обж можно разобрать в читабельный вид (С-аналог), и потом обратно собрать. К сожалению, в ХТ так нельзя.
 
 Последний раз редактировалось: AlexYar (15:50 03-07-2015), всего редактировалось 1 раз
 |  
		|  |  |  |  
		| KWON 
  409 EGP 
     Рейтинг канала: 8(857)
 Репутация: -12
 Сообщения: 171
 Откуда: Україна. Чигирин.
 Зарегистрирован: 24.11.2014
 
      |  | Перенесу свои вопросы в это сообщение. 
 
	  | Kwon. : |  
	  | К Shaddie. Раз Вы сюда заходите, то есть вопрос по данной теме.
 Когда то давно скачивал Ваш обж для Х2 где убраны комплектации S и M на верфях, а L есть постоянно.
 Раскройте пожалуйста секрет, хочу сделать такое для ХТ.
 А то я нашел только как буквы эти поменять
  . |  
 Есть прикольное решение проблеммы.
 Комплектация "L" будет не всегда но ежесекундно
  . Чтобы понять значение этих слов нужно увидеть.
 По адресу 000A8F1F замените 4В на 4F. (предварительно скопировав обж, как говорят, в надежное место).
 Потом редактором карт, для эксперимента, ставим режим отладки (чтобы хватило на комплектацию "L") и стартовым ставите сектор с любой верфью.
 Главное успеть вовремя нажать стрелочку покупки корабля, а "энтэр" уже можно жать неспеша, когда "Рынок" будет моргать то "-1" то "9".
 
 Теперь серйозно.
 Как я понимаю редактировать нужно в разделе "2037-TFACTORY_SHIPYARD".
 Там есть процедура "GetMSLState", которая отвечает за комплектации.
 Розмещу её здесь:
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
	  | Код: |  
	  | ; === GetMSLState ===============================================
 ; function  TFACTORY_SHIPYARD.GetMSLState();
 ;
 |      TFACTORY_SHIPYARD.GetMSLState:
 000A8EF0: 0055 0005              |    0            setmem     5
 000A8EF4: 0015                   |    0            push       12d ; 0Ch
 000A8EF6: 000A                   |    1            push       1
 000A8EF8: 003C                   |    2            get_object
 000A8EFA: 0057 00009775          |    3            call       ___GetVar ; 00009775
 000A8F00: 0009                   |    1            push       0
 000A8F02: 005A 00000D77          |    2            callasm    P_GetAbsTime ; 00000D77
 000A8F08: 0014                   |    2            push       11d ; 0Bh
 000A8F0A: 000A                   |    3            push       1
 000A8F0C: 003C                   |    4            get_object
 000A8F0E: 0057 00009775          |    5            call       ___GetVar ; 00009775
 000A8F14: 000B                   |    3            push       2
 000A8F16: 005A 000012AC          |    4            callasm    P_CmpTime ; 000012AC
 000A8F1C: 0009                   |    2            push       0
 000A8F1E: 004B                   |    3            if SP[0]>=SP[1] then push 0 else push 1
 000A8F20: 0033 00054796          |    2            if SP[0]=0 then jump L000A8F34
 000A8F26: 0005 0001              |    1            push       SP[0] ; loc1
 000A8F2A: 002A 0002              |    2            mov        SP[1],SP[0] ; loc1
 000A8F2E: 002E 0001              |    2            popx       1
 000A8F32: 0035                   |    1            ret
 000A8F34: 0001 0708              |    1 L000A8F34: pushw      1800d ; 0708h
 000A8F38: 0001 0708              |    2            pushw      1800d ; 0708h
 000A8F3C: 000A                   |    3            push       1
 000A8F3E: 005A 000000F5          |    4            callasm    P_Random ; 000000F5
 000A8F44: 003E                   |    3            add        SP[0],SP[1]
 000A8F46: 0001 03E8              |    2            pushw      1000d ; 03E8h
 000A8F4A: 0040                   |    3            mul        SP[0],SP[1]
 000A8F4C: 0009                   |    2            push       0
 000A8F4E: 005A 00000D77          |    3            callasm    P_GetAbsTime ; 00000D77
 000A8F54: 000B                   |    3            push       2
 000A8F56: 005A 000012B6          |    4            callasm    P_AddTime ; 000012B6
 000A8F5C: 0014                   |    2            push       11d ; 0Bh
 000A8F5E: 000B                   |    3            push       2
 000A8F60: 003C                   |    4            get_object
 000A8F62: 0057 0000974E          |    5            call       ___SetVar ; 0000974E
 000A8F68: 002C                   |    2            pop
 000A8F6A: 000C                   |    1            push       3
 000A8F6C: 000A                   |    2            push       1
 000A8F6E: 005A 000000F5          |    3            callasm    P_Random ; 000000F5
 000A8F74: 002A 0002              |    2            mov        SP[1],SP[0] ; loc1
 000A8F78: 002C                   |    2            pop
 000A8F7A: 0005 0001              |    1            push       SP[0] ; loc1
 000A8F7E: 0015                   |    2            push       12d ; 0Ch
 000A8F80: 000B                   |    3            push       2
 000A8F82: 003C                   |    4            get_object
 000A8F84: 0057 0000974E          |    5            call       ___SetVar ; 0000974E
 000A8F8A: 002C                   |    2            pop
 000A8F8C: 0005 0001              |    1            push       SP[0] ; loc1
 000A8F90: 002A 0002              |    2            mov        SP[1],SP[0] ; loc1
 000A8F94: 002E 0001              |    2            popx       1
 000A8F98: 0035                   |    1            ret
 000A8F9A: 002E 0001              |                 popx       1
 000A8F9E: 0009                   |                 push       0
 000A8FA0: 0035                   |                 ret
 
 |  |  Пилоты посмотрите пожалуйста математически одаренным глазом для подсказать что здесь поменять для решения проблеммы.
 
 И этот запрос тоже не решен:
 
 
	  | Kwon. : |  
	  | Ещё вопрос по наполнению верфей. Перерыл все файлы диз.ас. обжа и ничего не нашел, значит оно находится в той маленькой области (в конце файла), которую дизассемблер не берёт.
 Хочу добавить пир.корабли на все верфи как у Телади.
 |  _________________
 Следи за собой, будь осторожен. В.Цой
 |  
		|  |  |  |  
		| Shaddie 
  556 EGP 
       Рейтинг канала: 6(438)
 Репутация: 118
 Сообщения: 261
 Откуда: Томск
 Зарегистрирован: 09.09.2004
 
      |  | Комплектация "L". 
 Процедура найдена верно "GetMSLState".
 
 Вот в этом участке кода определяется вариант комплектации из 3 значений (число от 1 до 3).
 
 
 
	  | Код: |  
	  | ...
 000A8F6A: 000C                   |    1            push       3
 000A8F6C: 000A                   |    2            push       1
 000A8F6E: 005A 000000F5          |    3            callasm    P_Random ; 000000F5
 000A8F74: 002A 0002              |    2            mov        SP[1],SP[0] ; loc1
 000A8F78: 002C                   |    2            pop
 ...
 
 |  
 Можно заменить на такой код:
 
 
 
	  | Код: |  
	  | ...
 000A8F6A: 000C                   |    1            push       3
 000A8F6C: 002C                   |    0            pop
 000A8F6E: 000C                   |    1            push       3
 000A8F70: 002C                   |    0            pop
 000A8F72: 000C                   |    1            push       3
 000A8F74: 002A 0002              |    2            mov        SP[1],SP[0] ; loc1
 000A8F78: 002C                   |    2            pop
 ...
 
 |  
 000A8F6A-000A8F70 - просто бессмысленный код (разрыва в коде что бы небыло)
 000A8F72 - вот здесь и пишем нужную комплектацию (000A = 1, 000B = 2 или 000C - 3).
 
 добавлено спустя 29 минут:
 
 
	  | Kwon. : |  
	  | Ещё вопрос по наполнению верфей. Перерыл все файлы диз.ас. обжа и ничего не нашел, значит оно находится в той маленькой области (в конце файла), которую дизассемблер не берёт.
 Хочу добавить пир.корабли на все верфи как у Телади.
 |  Смотреть в процедуре TFACTORY_SHIP.Create
 
 
 
	  | Код: |  
	  | function TFACTORY_SHIP.Create(arg1, arg2, arg3, arg4, arg5, arg6)
 {
 2006->Create(arg1, arg2, arg3, arg4, arg5, arg6);
 this->AddProduct(7, global.ShipGTypeToSType(5, arg5));
 this->AddProduct(7, global.ShipGTypeToSType(6, arg5));
 this->AddProduct(7, global.ShipGTypeToSType(7, arg5));
 this->AddProduct(7, global.ShipGTypeToSType(1, arg5));
 if(arg5 == 5)
 {
 this->AddProduct(7, 44);
 }
 this->AddProduct(7, global.ShipGTypeToSType(0, arg5));
 this->___SetVar(11, P_GetAbsTime() + P_Random(3600) * 1000);
 this->___SetVar(12, P_Random(3));
 this->___SetVar(16, -1);
 return(this);
 }
 
 |  
 arg5 - ИД расы
 
 Скорее всего условие и отвечает за наличие пир. кораблей на верфи
 
 
	  | Код: |  
	  | if(arg5 == 5)
 {
 this->AddProduct(7, 44);
 }
 
 |  
 Вот код этого участка:
 
 
	  | Код: |  
	  | 000A941E: 0005 0008              |    0            push       SP[7] ; arg5
 000A9422: 000E                   |    1            push       5
 000A9424: 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 000A9426: 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 000A942C: 0001 002C              |    0            push       44d ; 2Ch
 000A9430: 0010                   |    1            push       7
 000A9432: 000B                   |    2            push       2
 000A9434: 003C                   |    3            get_object
 000A9436: 0057 00000A04          |    4            call       TFACTORY.AddProduct ; 00000A04
 000A943C: 002C                   |    1            pop
 
 |  
 Можно сделать так:
 
 
	  | Код: |  
	  | 000A941E: 0005 0008              |    0            push       SP[7] ; arg5
 000A9422: 002C                   |    1            pop
 000A9424: 000A                   |    0            push       1
 000A9426: 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 000A942C: 0001 002C              |    0            push       44d ; 2Ch
 000A9430: 0010                   |    1            push       7
 000A9432: 000B                   |    2            push       2
 000A9434: 003C                   |    3            get_object
 000A9436: 0057 00000A04          |    4            call       TFACTORY.AddProduct ; 00000A04
 000A943C: 002C                   |    1            pop
 
 |  
 000A9422 меняем на 002C
 000A9424 меняем на 000A
 
 
 
	
		| code_xt.zip |  
		| Описание: | 
			
				| Некоторые процедуры XT в более понятном виде (не исключены ошибки) |  |  
		| Имя файла: | code_xt.zip |  
		| Размер файла: | 93.95 KB |  
		| Скачано: | 611 раз(а) |  _________________
 Быстро едешь, тихо понесут...
 
 Последний раз редактировалось: Shaddie (00:29 19-07-2015), всего редактировалось 2 раз(а)
 |  
		|  |  |  |  
		| KWON 
  409 EGP 
     Рейтинг канала: 8(857)
 Репутация: -12
 Сообщения: 171
 Откуда: Україна. Чигирин.
 Зарегистрирован: 24.11.2014
 
      |  | Вот это да! Спасибо. Будем разбираться. 
 Отчёт.
 
 Всё работает:
 1) "L" есть постоянно, но "S" и "М" тоже
  . 2) Пир.корабль на верфях есть.
 Но, наверно нужно извиниться, не совсем грамотно оформил вопрос:
 "Добавить пир.корабли на все верфи как у Телади", т.е. на аргонскую верфь пират лифтер, на боронскую - пират дельфин и т.д.,
 ради справедливости, раз есть пират ксенонский транспорт (а его перенести на верфь Ксенона) должны быть и остальные.
 
 Upgr
 
 Может как-то увеличить процедуру. Такие мысли:
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
(копирован блок добаления пир.корабля)
 
 Для верфи Аргона
 000A                   |    1            push       1 Argon
 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 0001 002B              |    0            pushw      43d ; 2Bh Pirat argon
 0010                   |    1            push       7
 000B                   |    2            push       2
 003C                   |    3            get_object
 0057 00000A04          |    4            call       TFACTORY.AddProduct
 
 Для верфи Борона
 000B                   |    1            push       2 Boron
 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 0001 002F              |    0            pushw      47d ; 2Fh Pirat boron
 0010                   |    1            push       7
 000B                   |    2            push       2
 003C                   |    3            get_object
 0057 00000A04          |    4            call       TFACTORY.AddProduct
 
 Для верфи Сплита
 000C                   |    1            push       3 Split
 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 0001 002D              |    0            pushw      45d ; 2Dh Pirat split
 0010                   |    1            push       7
 000B                   |    2            push       2
 003C                   |    3            get_object
 0057 00000A04          |    4            call       TFACTORY.AddProduct
 
 Для верфи Паранида
 000D                   |    1            push       4 Paranid
 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 0001 002E              |    0            pushw      46d ; 2Eh Pirat paranid
 0010                   |    1            push       7
 000B                   |    2            push       2
 003C                   |    3            get_object
 0057 00000A04          |    4            call       TFACTORY.AddProduct
 
 Для верфи Телади
 000E                   |    1            push       5 Teladi
 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 0001 0030              |    0            pushw      48d ; 30h Pirat teladi
 0010                   |    1            push       7
 000B                   |    2            push       2
 003C                   |    3            get_object
 0057 00000A04          |    4            call       TFACTORY.AddProduct
 
 Для верфи Ксенона
 000F                   |    1            push       6 Xenon
 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 0001 002C              |    0            pushw      44d ; 2Ch Pirat xenon
 0010                   |    1            push       7
 000B                   |    2            push       2
 003C                   |    3            get_object
 0057 00000A04          |    4            call       TFACTORY.AddProduct
 
 |  
 Новое наблюдение.
 В свете последней информации можно добавить любой недоступный корабль на верфь.
 Я думал что произведя замену новый корабль будет перенесен из верфи телади на верфь пиратов:
 
 
	  | Код: |  
	  | 000A9422: 0010                   |    1            push       7 (Пиратская верфь)
 000A9424: 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 000A9426: 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 000A942C: 0001 0045              |    0            pushw      69d ; 2Ch (Персей)
 
 |  Но оказалось "и овцы сыты, и волки целы" - Персей на пир.верфи а пир.корабль на теладианской верфи остался.
 Значит есть ещё процедура занимающаяся вопросом наполнения Теладийской верфи.
 
 Дальше.
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
Если в файл "Stations.dat" редактора карт там где гонерские станции - [Goner] 
 
прописать ниже такую строку:
 
//Shipyard
 
360|0|6|2|5|5|5|201,278||
 
то можно ставить Гонерскую верфь. Там будут продаваться корабли Аргона, поэтому раньше в ней надобности не было.
 
Но произвев такую замену:
 
	  | Код: |  
	  | 000A9422: 0011                   |    1            push       8 (Гонерская верфь)
 000A9424: 004F                   |    2            if SP[0]<>SP[1] then push 0 else push 1
 000A9426: 0033 00054A1B          |    1            if SP[0]=0 then jump L000A943E
 000A942C: 0001 0034              |    0            pushw      52d ; 34h (Корабль Гонеров)
 
 |  
добавляем кор. Гонеров, правда купить его нельзя, нет такого класса в процедуре продажи кораблей (;= Input =; function  TMENU_TRADE.Input(arg1, arg2); в радиусе 00133B0C и ниже).
 
Отсюда вывод: Верфь гонеров можна наполнить отдельно от Аргонской.
 
Далее. Что бы кор.гонеров продавался нужно добавить его в классы кораблей доступных на верфи (это в разделе 2217-TMENU_TRADE).
 
Я добавлять пока не умею, иду путем замены.
 
Меняю клас пир. транспортов "IS" на "GO", но шото делаю не всё, потому как пир. кор. уже не купить, и, к сожалению, кор.гонеров тоже.
 
Что не так?:
 
	  | Код: |  
	  | 00133C88: 0013                   |   14            push       10 [b]("GO")[/b]
 00133C8A: 004F                   |   15            if SP[0]<>SP[1] then push 0 else push 1
 00133C8C: 0033 00099E4A          |   14            if SP[0]=0 then jump L00133C9C
 00133C92: 0001 07F7              |   13            pushw      2039d ; 07F3h [b](ТSHIP_GONER)[/b]
 
 |  
Здесь ошибки, думаю, нет, просто прописать нужно ещё где-то что-то.
 
Было так:
 
00133C88: 0012                   |   14            push       9 ("IS")
 
00133C92: 0001 07F3              |   13            pushw      2035d ; 07F3h (TSHIP_TS_PIRATE)
 
Конечно, лучше не заменять а расширить процедуру ассемблированием, т.е. добавить и класс "GO" в продажу.
 
А за наполнением щитов и лазеров указать ему куда идти где роздают щиты и лазеры для ТС например (от адреса 00133B6E (это для ТЛ) и далеко вниз).
 
Мне бы, только бы, понять, разобраться в этом добавлении процедур.
 |  
 А вопросов миллион. Как лирнейская гидра: на один ответ два вопроса.
 
 Есть интересная задумка: увеличить количество НЛО в Икс-галактике.
 В разделе "2017-TGONER" нашел необходимую процедуру "StartShips", но все попытки метода тыка успехом не увенчались.
 И снова тоже обращение посмотреть на код и подсказать где копать:
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
	  | Код: |  
	  | ; === StartShips ================================================
 ; procedure TGONER.StartShips();
 ;
 |      TGONER.StartShips:
 000DBA54: 0055 0006              |    0            setmem     6
 000DBA58: 0009                   |    0            push       0
 000DBA5A: 0009                   |    1            push       0
 000DBA5C: 002A 0002              |    2            mov        SP[1],SP[0] ; loc1
 000DBA60: 002C                   |    2            pop
 000DBA62: 0005 0001              |    1 L000DBA62: push       SP[0] ; loc1
 000DBA66: 0001 0032              |    2            pushw      50d ; 32h
 000DBA6A: 004A                   |    3            if SP[0]<=SP[1] then push 0 else push 1
 000DBA6C: 0033 0006DD5E          |    2            if SP[0]=0 then jump L000DBAC4
 000DBA72: 0031 0006DD42          |    1            jump       L000DBA8C
 000DBA78: 0005 0001              |    1 L000DBA78: push       SP[0] ; loc1
 000DBA7C: 000A                   |    2            push       1
 000DBA7E: 003E                   |    3            add        SP[0],SP[1]
 000DBA80: 002A 0002              |    2            mov        SP[1],SP[0] ; loc1
 000DBA84: 002C                   |    2            pop
 000DBA86: 0031 0006DD2D          |    1            jump       L000DBA62
 000DBA8C: 0009                   |    1 L000DBA8C: push       0
 000DBA8E: 0009                   |    2            push       0
 000DBA90: 0009                   |    3            push       0
 000DBA92: 000C                   |    4            push       3
 000DBA94: 0001 07F7              |    5            pushw      2039d ; 07F7h
 000DBA98: 003A                   |    6            create_object
 000DBA9A: 0057 000009BB          |    6            call       TSHIP_GONER.Create ; 000009BB
 000DBAA0: 0005 0001              |    2            push       SP[0] ; loc2
 000DBAA4: 0033 0006DD59          |    3            if SP[0]=0 then jump L000DBABA
 000DBAAA: 0005 0001              |    2            push       SP[0] ; loc2
 000DBAAE: 000A                   |    3            push       1
 000DBAB0: 003C                   |    4            get_object
 000DBAB2: 0057 00000FE2          |    5            call       TGONER.StartThisShip ; 00000FE2
 000DBAB8: 002C                   |    3            pop
 000DBABA: 002E 0001              |    2 L000DBABA: popx       1
 000DBABE: 0031 0006DD38          |    1            jump       L000DBA78
 000DBAC4: 0009                   |    1 L000DBAC4: push       0
 000DBAC6: 0009                   |    2            push       0
 000DBAC8: 0009                   |    3            push       0
 000DBACA: 000C                   |    4            push       3
 000DBACC: 0001 0814              |    5            pushw      2068d ; 0814h
 000DBAD0: 003A                   |    6            create_object
 000DBAD2: 0057 000009BB          |    6            call       TSHIP_UFO.Create ; 000009BB
 000DBAD8: 0005 0001              |    2            push       SP[0] ; loc2
 000DBADC: 0033 0006DD75          |    3            if SP[0]=0 then jump L000DBAF2
 000DBAE2: 0005 0001              |    2            push       SP[0] ; loc2
 000DBAE6: 000A                   |    3            push       1
 000DBAE8: 003C                   |    4            get_object
 000DBAEA: 0057 00000FE2          |    5            call       TGONER.StartThisShip ; 00000FE2
 000DBAF0: 002C                   |    3            pop
 000DBAF2: 002E 0002              |    2 L000DBAF2: popx       2
 000DBAF6: 0009                   |    0            push       0
 000DBAF8: 0035                   |    1            ret
 
 |  |  Как я понял вот это число отвечает за количество Кор.Гонеров:
 000DBA66: 0001 0032              |                pushw      50d ; 32h
 а это за колич. уфошек?:
 000DBA7C: 000A                   |                push       1
 
 Меняя эту переменную можно уменьшить или увеличить корабли гонеров но не НЛО:
 000DBA6A: 004A                   |                if SP[0]<=SP[1] then push 0 else push 1
 
 Как бы заставить "TSHIP_UFO.Create" идти к коду где генерируются кор.гонеров.
 Понимаю что нада поставить "jump", но как это грамотно сделать?
 
 Продолжение о добавлении НЛО
 
 Нашел интересный выход для данной ситуации.
 В разделе 2000-TGALAXY есть процедура: function TGALAXY.BuildObject.
 Там прописываются все классы объектов которые можно добавить на карту редактором карт.
 Но чтобы что-то добавить нужно чем-то пожертвовать.
 Я взял для этого эксперимента в жертву пиратский корабль (теперь, к сожалению, они пропадут на пир.базах).
 
 Описание процесса замены пир.транспорта на НЛО:
 Нам нужны вот эти три адреса:
 00032E10: 0012                   |    9            push       9
 00032E2C: 0012                   |    9            push       9
 00032E48: 0001 07F3              |   14            pushw      2035d ; 07F3h
 
 0012 - это клас корабля "IS",
 2035d ; 07F3h - раздел свойств корабля (2035-TSHIP_TS_PIRATE).
 
 0012 меняем на 0013 в двух местах, а 07F3 меняем на 0814 т.е. 2068-TSHIP_UFO.
 
 Вот, теперь можна клепать нэлэошки толпами.
 Как? Берем редактор ставим любой корабль (например - аргон элиту).
 Сохраняем карту. Копируем этот файл и вставляем сдесь же.
 Открываем редактором файл "Копия 001.obj" и осторожно, чтоб не сместить координаты расположения,
 заменяем клас и расу аргон элиты например на борон пиранью.
 Гекс-редактором сравниваем эти два файла 001.obj и Копия 001.obj
 Находим такую разницу: 000A000E=000B000F
 В файле 001.obj заменяем 000A000E на 00110013
 0011 - раса Гонеров
 0013 - клас GO
 Запускаем игру, смотрим.
 Желательно НЛО ставить в стартовом секторе поближе к центру, чтоб сразу видеть как оно завелось и поехало.
 
 Таким образом я добавил на карту и башню, и мины, и астронавта, и боевого дрона.
 Правда такая башня не хочет стрелять лучом а мина взорвется только если на неё наехать.
 Но теперь эти мины можно прописать ксенонам или пиратам и обсыпать какие-то объекты на карте.
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
Для добавления мин
 сюда:
 00032E10: 0012
 00032E2C: 0012
 00032E48: 0001 07F3
 записать такое:
 00032E10: 0014
 00032E2C: 0014
 00032E48: 0001 0812
 
 0014 - несуществующий клас для правильного отображения текстуры значка объекта на карте.
 0812 - это свойства мины: 2066-TMINE
 
 А после сравнения обжей записывать вместо кораблей так:
 0010 0010 - это мина пиратов
 или
 000F 0010 - это мина ксенонов
 
 Для обсыпания лазерными башнями, скажем, ворот, тут такая замена:
 00032E10: 0014
 00032E2C: 0014
 00032E48: 0001 07DB
 
 07DB - это 2011-TORBITAL_LASER
 
 И после сравнения обжей записывать вместо кораблей так:
 0010 000E - это башня пиратов
 или
 000F 000E - это башня ксенонов
 
 Если нужно такое в свою собственность тогда первый код расы - 0012.
 
 |  Конечно, умея добавлять процедуры можно поставить любой недоступный объект на карту.
 http://www.elite-games.ru/conference/viewtopic.php?p=3290453#3290453
 
 
	  | Shaddie : |  
	  | Вообще код любой процедуры можно увеличить: в нужном месте процедуры вставляется jump на область в конце кода обжа куда и пишется весь дополнительный код
 (только делать надо это с помощью программ ChekerTwo)
 |  Вот сама процедура пир.транспорта, это её нужно добавить в конец и заменить три параметра.
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
	  | Код: |  
	  | 00032E08: 0031 0001970A          |                 jump       L00032E1C
 00032E0E: 0007                   |    8 L00032E0E: push       SP[0] ; loc8
 00032E10: 0012                   |    9            push       9
 00032E12: 004F                   |   10            if SP[0]<>SP[1] then push 0 else push 1
 00032E14: 0033 0001972F          |    9            if SP[0]=0 then jump L00032E66
 00032E1A: 002C                   |    8            pop
 00032E1C: 000F                   |    7 L00032E1C: push       6
 00032E1E: 0005 000C              |    8            push       SP[11d] ; arg1
 00032E22: 0008                   |    9            get_from_array
 00032E24: 000E                   |    8            push       5
 00032E26: 0005 000D              |    9            push       SP[12d] ; arg1
 00032E2A: 0008                   |   10            get_from_array
 00032E2C: 0012                   |    9            push       9
 00032E2E: 000C                   |   10            push       3
 00032E30: 0005 000F              |   11            push       SP[14d] ; arg1
 00032E34: 0008                   |   12            get_from_array
 00032E36: 000B                   |   11            push       2
 00032E38: 0005 0010              |   12            push       SP[15d] ; arg1
 00032E3C: 0008                   |   13            get_from_array
 00032E3E: 000A                   |   12            push       1
 00032E40: 0005 0011              |   13            push       SP[16d] ; arg1
 00032E44: 0008                   |   14            get_from_array
 00032E46: 000F                   |   13            push       6
 00032E48: 0001 07F3              |   14            pushw      2035d ; 07F3h
 00032E4C: 003A                   |   15            create_object
 00032E4E: 0057 000009BB          |   15            call       TSHIP_TS_PIRATE.Create ; 000009BB
 00032E54: 002A 0008              |    8            mov        SP[7],SP[0] ; loc1
 00032E58: 002C                   |    8            pop
 00032E5A: 0031 00019730          |    7            jump       L00032E68
 
 |  |  
 О переводе обжа.
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
А возможно используя "code.cpp" с помощью ассемблера русифицировать секцию "стринг":          .section   strg, con
 Например для этих слов:
 S000394B:  .ascii     "Show All Sectors in Map"
 S0003963:  .ascii     "Add Player Factories"
 S0003978:  .ascii     "Add Satellites"
 (так сразу будет видно работает или нет)
 Для пробы взять простые слова: "Сектора", "Фабрики", "Спутники"
 (я так понимаю количество символов не должно быть больше чем в оригинале).
 И тогда можно русифицировать остальное, по примерному алгоритму, всё что забыл перевести "Новый диск".
 
 |  UPGRD
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
Новая лишняя информация на тему раскопок обжа. Для создания нового сообщения оно не тянет.
 Так для прикола поставте себе дальность запрыгивания докинг компутэра как в БэТээФе до 10 км:
 
 В двух местах поменяйте это:
 00169908: 0002 0010EFF0          |                pushd      1110000d ;
 00169A5E: 0002 0010EFF0          |                pushd      1110000d ;
 на вот это:
 00169908: 0002 0021DFE0          |                pushd      2220000d ;
 00169A5E: 0002 0021DFE0          |                pushd      2220000d ;
 Проверено - работает.
 
 Такое можно сделать и для транспортэра (вдвое увеличить дальность), но менять аж в 6-ти местах шото неохота.
 Пробуйте сами, если интересно. Это здесь:
 0016C292: 0002 0010EFF0          |                pushd      1110000d ;
 0016C394: 0002 0010EFF0          |                pushd      1110000d ;
 0016C6EA: 0002 0010EFF0          |                pushd      1110000d ;
 0016C7AC: 0002 0010EFF0          |                pushd      1110000d ;
 0016CA62: 0002 0010EFF0          |                pushd      1110000d ;
 0016CB0E: 0002 0010EFF0          |                pushd      1110000d ;
 
 Желающим усилить пиратов можно посоветовать добавить Персей в карательные караваны.
 А Ориноки будут только как защитники пиратских баз.
 По этим адресам:
 000D8DB0: 0001 003D
 000D93AC: 0001 003D
 000DAC9C: 0001 003D
 000DACC2: 0001 003D
 000DB160: 0001 003D
 3D заменить на 45.
 
 |  UPGR again
 
 
	  | yakim81 : |  
	  | когда модифицируешь ехе при пролете врат иногда комп говорит о том, что исполняемый фал был модифицирован и происходит самоуничтожение |  Если сильно правлен ХТ.ехе тогда бывает что при посадке на станцию или вылетании из гипер-врат можно получить сообщение компьютера о запуске режима самоуничтожения.
 Выключение анти-чит режима в экзешнике от этого не спасает.
 Лечение:
 1. Находим эти слова в тесте:
 1100027  "Внимание: X-TENSION исполнительный файл игры изменен"
 1100026  "Запущен режим самоуничтожения"
 2. Дизассемблируем обж и в файле 001.out задаем в поиск "1100027d".
 Получим два результата:
 а) первый при переходе врат:
 000DECFC: 004E                   |    4            if SP[0]=SP[1] then push 0 else push 1
 000DECFE: 0033 0006F6A1          |    3            if SP[0]=0 then jump L000DED4A
 000DED04: 0001 00FA              |    2            pushw      250d ; 0FAh
 000DED08: 0002 0010C8FB          |    3            pushd      1100027d ; 0010C8FBh
 б) второй при посадке на станцию:
 000EDC16: 004E                   |   11            if SP[0]=SP[1] then push 0 else push 1
 000EDC18: 0033 00076E2E          |   10            if SP[0]=0 then jump L000EDC64
 000EDC1E: 0001 00FA              |    9            pushw      250d ; 0FAh
 000EDC22: 0002 0010C8FB          |   10            pushd      1100027d ; 0010C8FBh
 3. Дальше по адресам где стоит код 004E заменяем его на 004F. Всё.
 
 UPGRD new
 В базе данных есть такой вопрос:
 
 
	  | Цитата : |  
	  | Вопрос: Имеют ли расы репутацию друг у друга? Ответ: Да.
 |  Теперь более расширенный ответ:
 
 
	| 
 Начальные рейтинги отношений между расами   (кликните здесь для просмотра)
 |  Источник этой информации:
 
 
	| 
 Cкрытый текст   (кликните здесь для просмотра)
 
	  | Код: |  
	  | // Отношение Аргона к Ксенону.
 00094C50: 002C                   |    2            pop
 00094C52: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094C58: 000F                   |    2            push       6   ...к Ксенону.
 00094C5A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094C5E: 0008                   |    4            get_from_array
 00094C60: 000B                   |    3            push       2
 00094C62: 000A                   |    4            push       1   Отношение Аргона (см.вверх)...
 00094C64: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094C68: 0008                   |    6            get_from_array
 00094C6A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Ксенона к Аргону.
 00094C70: 002C                   |    2            pop
 00094C72: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094C78: 000A                   |    2            push       1   ...к Аргону.
 00094C7A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094C7E: 0008                   |    4            get_from_array
 00094C80: 000B                   |    3            push       2
 00094C82: 000F                   |    4            push       6   Отношение Ксенона (см.вверх)...
 00094C84: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094C88: 0008                   |    6            get_from_array
 00094C8A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Паранида к Ксенону.
 00094C90: 002C                   |    2            pop
 00094C92: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094C98: 000F                   |    2            push       6   ...к Ксенону.
 00094C9A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094C9E: 0008                   |    4            get_from_array
 00094CA0: 000B                   |    3            push       2
 00094CA2: 000D                   |    4            push       4   Отношение Паранида (см.вверх)...
 00094CA4: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094CA8: 0008                   |    6            get_from_array
 00094CAA: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Ксенона к Параниду.
 00094CB0: 002C                   |    2            pop
 00094CB2: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094CB8: 000D                   |    2            push       4   ...к Параниду.
 00094CBA: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094CBE: 0008                   |    4            get_from_array
 00094CC0: 000B                   |    3            push       2
 00094CC2: 000F                   |    4            push       6   Отношение Ксенона (см.вверх)...
 00094CC4: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094CC8: 0008                   |    6            get_from_array
 00094CCA: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Телади к Ксенону.
 00094CD0: 002C                   |    2            pop
 00094CD2: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094CD8: 000F                   |    2            push       6   ...к Ксенону.
 00094CDA: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094CDE: 0008                   |    4            get_from_array
 00094CE0: 000B                   |    3            push       2
 00094CE2: 000E                   |    4            push       5   Отношение Телади (см.вверх)...
 00094CE4: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094CE8: 0008                   |    6            get_from_array
 00094CEA: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Ксенона к Телади.
 00094CF0: 002C                   |    2            pop
 00094CF2: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094CF8: 000E                   |    2            push       5   ...к Телади.
 00094CFA: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094CFE: 0008                   |    4            get_from_array
 00094D00: 000B                   |    3            push       2
 00094D02: 000F                   |    4            push       6   Отношение Ксенона (см.вверх)...
 00094D04: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094D08: 0008                   |    6            get_from_array
 00094D0A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Сплита к Ксенону.
 00094D10: 002C                   |    2            pop
 00094D12: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094D18: 000F                   |    2            push       6   ...к Ксенону.
 00094D1A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094D1E: 0008                   |    4            get_from_array
 00094D20: 000B                   |    3            push       2
 00094D22: 000C                   |    4            push       3   Отношение Сплита (см.вверх)...
 00094D24: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094D28: 0008                   |    6            get_from_array
 00094D2A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Ксенона к Сплиту.
 00094D30: 002C                   |    2            pop
 00094D32: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094D38: 000C                   |    2            push       3   ...к Сплиту.
 00094D3A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094D3E: 0008                   |    4            get_from_array
 00094D40: 000B                   |    3            push       2
 00094D42: 000F                   |    4            push       6   Отношение Ксенона (см.вверх)...
 00094D44: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094D48: 0008                   |    6            get_from_array
 00094D4A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Борона к Ксенону.
 00094D50: 002C                   |    2            pop
 00094D52: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094D58: 000F                   |    2            push       6   ...к Ксенону.
 00094D5A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094D5E: 0008                   |    4            get_from_array
 00094D60: 000B                   |    3            push       2
 00094D62: 000B                   |    4            push       2   Отношение Борона (см.вверх)...
 00094D64: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094D68: 0008                   |    6            get_from_array
 00094D6A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Ксенона к Борону.
 00094D70: 002C                   |    2            pop
 00094D72: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094D78: 000B                   |    2            push       2   ...к Борону.
 00094D7A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094D7E: 0008                   |    4            get_from_array
 00094D80: 000B                   |    3            push       2
 00094D82: 000F                   |    4            push       6   Отношение Ксенона (см.вверх)...
 00094D84: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094D88: 0008                   |    6            get_from_array
 00094D8A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Аргона к Параниду.
 00094D90: 002C                   |    2            pop
 00094D92: 0001 FF9C              |    1            pushw      -100d ; 0FF9Ch   Очки рейтинга.
 00094D96: 000D                   |    2            push       4   ...к Параниду.
 00094D98: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094D9C: 0008                   |    4            get_from_array
 00094D9E: 000B                   |    3            push       2
 00094DA0: 000A                   |    4            push       1   Отношение Аргона (см.вверх)...
 00094DA2: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094DA6: 0008                   |    6            get_from_array
 00094DA8: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Паранида к Аргону.
 00094DAE: 002C                   |    2            pop
 00094DB0: 0001 FF9C              |    1            pushw      -100d ; 0FF9Ch   Очки рейтинга.
 00094DB4: 000A                   |    2            push       1   ...к Аргону.
 00094DB6: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094DBA: 0008                   |    4            get_from_array
 00094DBC: 000B                   |    3            push       2
 00094DBE: 000D                   |    4            push       4   Отношение Паранида (см.вверх)...
 00094DC0: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094DC4: 0008                   |    6            get_from_array
 00094DC6: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Аргона к Сплиту.
 00094DCC: 002C                   |    2            pop
 00094DCE: 0001 FF9C              |    1            pushw      -100d ; 0FF9Ch   Очки рейтинга.
 00094DD2: 000C                   |    2            push       3   ...к Сплиту.
 00094DD4: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094DD8: 0008                   |    4            get_from_array
 00094DDA: 000B                   |    3            push       2
 00094DDC: 000A                   |    4            push       1   Отношение Аргона (см.вверх)...
 00094DDE: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094DE2: 0008                   |    6            get_from_array
 00094DE4: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Сплита к Аргону.
 00094DEA: 002C                   |    2            pop
 00094DEC: 0001 FF9C              |    1            pushw      -100d ; 0FF9Ch   Очки рейтинга.
 00094DF0: 000A                   |    2            push       1   ...к Аргону.
 00094DF2: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094DF6: 0008                   |    4            get_from_array
 00094DF8: 000B                   |    3            push       2
 00094DFA: 000C                   |    4            push       3   Отношение Сплита (см.вверх)...
 00094DFC: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094E00: 0008                   |    6            get_from_array
 00094E02: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Борона к Параниду.
 00094E08: 002C                   |    2            pop
 00094E0A: 0001 FF9C              |    1            pushw      -100d ; 0FF9Ch   Очки рейтинга.
 00094E0E: 000D                   |    2            push       4   ...к Параниду.
 00094E10: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094E14: 0008                   |    4            get_from_array
 00094E16: 000B                   |    3            push       2
 00094E18: 000B                   |    4            push       2   Отношение Борона (см.вверх)...
 00094E1A: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094E1E: 0008                   |    6            get_from_array
 00094E20: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Паранида к Борону.
 00094E26: 002C                   |    2            pop
 00094E28: 0001 FF9C              |    1            pushw      -100d ; 0FF9Ch   Очки рейтинга.
 00094E2C: 000B                   |    2            push       2   ...к Борону.
 00094E2E: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094E32: 0008                   |    4            get_from_array
 00094E34: 000B                   |    3            push       2
 00094E36: 000D                   |    4            push       4   Отношение Паранида (см.вверх)...
 00094E38: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094E3C: 0008                   |    6            get_from_array
 00094E3E: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Аргона к Пиратам.
 00094E44: 002C                   |    2            pop
 00094E46: 0009                   |    1            push       0   Очки рейтинга.
 00094E48: 0010                   |    2            push       7   ...к Пиратам.
 00094E4A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094E4E: 0008                   |    4            get_from_array
 00094E50: 000B                   |    3            push       2
 00094E52: 000A                   |    4            push       1   Отношение Аргона (см.вверх)...
 00094E54: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094E58: 0008                   |    6            get_from_array
 00094E5A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Пиратов к Аргону.
 00094E60: 002C                   |    2            pop
 00094E62: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094E68: 000A                   |    2            push       1   ...к Аргону.
 00094E6A: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094E6E: 0008                   |    4            get_from_array
 00094E70: 000B                   |    3            push       2
 00094E72: 0010                   |    4            push       7   Отношение Пиратов (см.вверх)...
 00094E74: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094E78: 0008                   |    6            get_from_array
 00094E7A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Паранида к Пиратам.
 00094E80: 002C                   |    2            pop
 00094E82: 0009                   |    1            push       0   Очки рейтинга.
 00094E84: 0010                   |    2            push       7   ...к Пиратам.
 00094E86: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094E8A: 0008                   |    4            get_from_array
 00094E8C: 000B                   |    3            push       2
 00094E8E: 000D                   |    4            push       4   Отношение Паранида (см.вверх)...
 00094E90: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094E94: 0008                   |    6            get_from_array
 00094E96: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Пиратов к Параниду.
 00094E9C: 002C                   |    2            pop
 00094E9E: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094EA4: 000D                   |    2            push       4   ...к Параниду.
 00094EA6: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094EAA: 0008                   |    4            get_from_array
 00094EAC: 000B                   |    3            push       2
 00094EAE: 0010                   |    4            push       7   Отношение Пиратов (см.вверх)...
 00094EB0: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094EB4: 0008                   |    6            get_from_array
 00094EB6: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Телади к Пиратам.
 00094EBC: 002C                   |    2            pop
 00094EBE: 0009                   |    1            push       0   Очки рейтинга.
 00094EC0: 0010                   |    2            push       7   ...к Пиратам.
 00094EC2: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094EC6: 0008                   |    4            get_from_array
 00094EC8: 000B                   |    3            push       2
 00094ECA: 000E                   |    4            push       5   Отношение Телади (см.вверх)...
 00094ECC: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094ED0: 0008                   |    6            get_from_array
 00094ED2: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Пиратов к Телади.
 00094ED8: 002C                   |    2            pop
 00094EDA: 0009                   |    1            push       0   Очки рейтинга.
 00094EDC: 000E                   |    2            push       5   ...к Телади.
 00094EDE: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094EE2: 0008                   |    4            get_from_array
 00094EE4: 000B                   |    3            push       2
 00094EE6: 0010                   |    4            push       7   Отношение Пиратов (см.вверх)...
 00094EE8: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094EEC: 0008                   |    6            get_from_array
 00094EEE: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Сплита к Пиратам.
 00094EF4: 002C                   |    2            pop
 00094EF6: 0009                   |    1            push       0   Очки рейтинга.
 00094EF8: 0010                   |    2            push       7   ...к Пиратам.
 00094EFA: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094EFE: 0008                   |    4            get_from_array
 00094F00: 000B                   |    3            push       2
 00094F02: 000C                   |    4            push       3   Отношение Сплита (см.вверх)...
 00094F04: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094F08: 0008                   |    6            get_from_array
 00094F0A: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Пиратов к Сплиту.
 00094F10: 002C                   |    2            pop
 00094F12: 0009                   |    1            push       0   Очки рейтинга.
 00094F14: 000C                   |    2            push       3   ...к Сплиту.
 00094F16: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094F1A: 0008                   |    4            get_from_array
 00094F1C: 000B                   |    3            push       2
 00094F1E: 0010                   |    4            push       7   Отношение Пиратов (см.вверх)...
 00094F20: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094F24: 0008                   |    6            get_from_array
 00094F26: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Борона к Пиратам.
 00094F2C: 002C                   |    2            pop
 00094F2E: 0009                   |    1            push       0   Очки рейтинга.
 00094F30: 0010                   |    2            push       7   ...к Пиратам.
 00094F32: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094F36: 0008                   |    4            get_from_array
 00094F38: 000B                   |    3            push       2
 00094F3A: 000B                   |    4            push       2   Отношение Борона (см.вверх)...
 00094F3C: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094F40: 0008                   |    6            get_from_array
 00094F42: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Пиратов к Борону.
 00094F48: 002C                   |    2            pop
 00094F4A: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094F50: 000B                   |    2            push       2   ...к Борону.
 00094F52: 0004 0012              |    3            readvar    global.ga_Races ; [18d ; 12h]
 00094F56: 0008                   |    4            get_from_array
 00094F58: 000B                   |    3            push       2
 00094F5A: 0010                   |    4            push       7   Отношение Пиратов (см.вверх)...
 00094F5C: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094F60: 0008                   |    6            get_from_array
 00094F62: 0057 00000B6D          |    5            call       SetNotoriety ; 00000B6D
 
 // Отношение Ксенона к Игроку.
 00094F68: 002C                   |    2            pop
 00094F6A: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00094F70: 0012                   |    2            push       9   ...к Игроку.
 00094F72: 000B                   |    3            push       2
 00094F74: 000F                   |    4            push       6   Отношение Ксенона (см.вверх)...
 00094F76: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094F7A: 0008                   |    6            get_from_array
 00094F7C: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Паранида к Игроку.
 00094F82: 002C                   |    2            pop
 00094F84: 0001 FF97              |    1            pushw      -105d ; 0FF97h   Очки рейтинга.
 00094F88: 0012                   |    2            push       9   ...к Игроку.
 00094F8A: 000B                   |    3            push       2
 00094F8C: 000D                   |    4            push       4   Отношение Паранида (см.вверх)...
 00094F8E: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094F92: 0008                   |    6            get_from_array
 00094F94: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Сплита к Игроку.
 00094F9A: 002C                   |    2            pop
 00094F9C: 0001 FF9B              |    1            pushw      -101d ; 0FF9Bh   Очки рейтинга.
 00094FA0: 0012                   |    2            push       9   ...к Игроку.
 00094FA2: 000B                   |    3            push       2
 00094FA4: 000C                   |    4            push       3   Отношение Сплита (см.вверх)...
 00094FA6: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094FAA: 0008                   |    6            get_from_array
 00094FAC: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Аргона к Игроку.
 00094FB2: 002C                   |    2            pop
 00094FB4: 0009                   |    1            push       0   Очки рейтинга.
 00094FB6: 0012                   |    2            push       9   ...к Игроку.
 00094FB8: 000B                   |    3            push       2
 00094FBA: 000A                   |    4            push       1   Отношение Аргона (см.вверх)...
 00094FBC: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094FC0: 0008                   |    6            get_from_array
 00094FC2: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Борона к Игроку.
 00094FC8: 002C                   |    2            pop
 00094FCA: 0001 0064              |    1            pushw      100d ; 64h   Очки рейтинга.
 00094FCE: 0012                   |    2            push       9   ...к Игроку.
 00094FD0: 000B                   |    3            push       2
 00094FD2: 000B                   |    4            push       2   Отношение Борона (см.вверх)...
 00094FD4: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094FD8: 0008                   |    6            get_from_array
 00094FDA: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Телади к Игроку.
 00094FE0: 002C                   |    2            pop
 00094FE2: 0009                   |    1            push       0   Очки рейтинга.
 00094FE4: 0012                   |    2            push       9   ...к Игроку.
 00094FE6: 000B                   |    3            push       2
 00094FE8: 000E                   |    4            push       5   Отношение Телади (см.вверх)...
 00094FEA: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00094FEE: 0008                   |    6            get_from_array
 00094FF0: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Гонеров, в версии 1.0, к Игроку.
 00094FF6: 002C                   |    2            pop
 00094FF8: 0009                   |    1            push       0   Очки рейтинга.
 00094FFA: 0012                   |    2            push       9   ...к Игроку.
 00094FFC: 000B                   |    3            push       2
 00094FFE: 0011                   |    4            push       8   Отношение Гонеров в версии 1.0 (см.вверх)...
 00095000: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00095004: 0008                   |    6            get_from_array
 00095006: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Пиратов к Игроку.
 0009500C: 002C                   |    2            pop
 0009500E: 0002 FFF0BDC0          |    1            pushd      -1000000d ; 0FFF0BDC0h   Очки рейтинга.
 00095014: 0012                   |    2            push       9   ...к Игроку.
 00095016: 000B                   |    3            push       2
 00095018: 0010                   |    4            push       7   Отношение Пиратов (см.вверх)...
 0009501A: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 0009501E: 0008                   |    6            get_from_array
 00095020: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 
 // Отношение Гонеров к Игроку.
 00095026: 002C                   |    2            pop
 00095028: 0001 0064              |    1            pushw      100d ; 64h   Очки рейтинга.
 0009502C: 0012                   |    2            push       9   ...к Игроку.
 0009502E: 000B                   |    3            push       2
 00095030: 0011                   |    4            push       8   Отношение Гонеров (см.вверх)...
 00095032: 0004 0012              |    5            readvar    global.ga_Races ; [18d ; 12h]
 00095036: 0008                   |    6            get_from_array
 00095038: 0057 00000B7A          |    5            call       SetGroupNotoriety ; 00000B7A
 0009503E: 002C                   |    2            pop
 
 |  |  
 Лучший из лучших гекс-редактор для правки обжа экстэна:
 _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: KWON (21:22 06-10-2021), всего редактировалось 14 раз(а)
 |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | 
	  | aL144 : |  
	  | В 1.3 только исправление последних косяков 1.2, ченджлог в шапке, из сторонних модификаций ХТНЛ ничего не брал, все свое   В новых секторах специально не во всех новая музыка, чтобы атмосфера ХТ была и в новых секторах.
 Мод пока не планирую развивать, я все мечтаю о крутом программере, который расширит мне матрицу секторов игры вдвое. Т.е. чтобы вместо 200 поместилось 800 секторов
   |  
 Перечитал тут намедни Структура данных X-Tension и Редактор карт и решил заняться археологией + некромантией.
 В итоге порылся в дезассемблированном obj и пришел к выводу, что процедура
 
	  | Код: |  
	  | procedure TGALAXY.Build(arg1); |  отвечающая за создание карты, содержит код
 
 
	| 
 Код процедуры procedure TGALAXY.Build(arg1);   (кликните здесь для просмотра)
 
	  | Код: |  
	  | L0009494A: push       1 get_strg   S0000928 ;  ; "Loadings"
 push       2
 callasm    P_ViewEBMFullscreen ; 00000931
 pop
 push       1000d ; 03E8h
 writevar   global.gs_DelayFactor ; [16d ; 10h]
 pop
 push       20d ; 14h
 push       1
 callasm    SE_ArrayAlloc ; 00000AE1
 writevar   global.ga_Sectors ; [17d ; 11h]
 pop
 push       0
 push       0
 mov        SP[1],SP[0] ; loc1
 pop
 L00094980: push       SP[0] ; loc1
 push       20d ; 14h
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L00094A28
 jump       L000949A8
 
 L00094994: push       SP[0] ; loc1
 push       1
 add        SP[0],SP[1]
 mov        SP[1],SP[0] ; loc1
 pop
 jump       L00094980
 
 L000949A8: push       10d ; 0Ah
 push       1
 callasm    SE_ArrayAlloc ; 00000AE1
 push       SP[1] ; loc1
 readvar    global.ga_Sectors ; [17d ; 11h]
 put_to_array
 pop
 push       0
 push       0
 mov        SP[1],SP[0] ; loc2
 pop
 L000949C8: push       SP[0] ; loc2
 push       10d ; 0Ah
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L00094A1E
 jump       L000949F0
 
 L000949DC: push       SP[0] ; loc2
 push       1
 add        SP[0],SP[1]
 mov        SP[1],SP[0] ; loc2
 pop
 jump       L000949C8
 
 L000949F0: push       SP[0] ; loc2
 push       SP[2] ; loc1
 push       2
 push       2001d ; 07D1h
 create_object
 call       TSECTOR.Create ; 000009BB
 push       SP[1] ; loc2
 push       SP[3] ; loc1
 readvar    global.ga_Sectors ; [17d ; 11h]
 get_from_array
 put_to_array
 pop
 jump       L000949DC
 
 L00094A1E: popx       1
 jump       L00094994
 
 L00094A28: push       0
 pop
 push       0
 mov        SP[1],SP[0] ; loc1
 pop
 L00094A34: push       SP[0] ; loc1
 push       20d ; 14h
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L00094AB2
 jump       L00094A5C
 
 L00094A48: push       SP[0] ; loc1
 push       1
 add        SP[0],SP[1]
 mov        SP[1],SP[0] ; loc1
 pop
 jump       L00094A34
 
 L00094A5C: push       0
 push       0
 mov        SP[1],SP[0] ; loc2
 pop
 L00094A66: push       SP[0] ; loc2
 push       10d ; 0Ah
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L00094AA8
 jump       L00094A8E
 
 L00094A7A: push       SP[0] ; loc2
 push       1
 add        SP[0],SP[1]
 mov        SP[1],SP[0] ; loc2
 pop
 jump       L00094A66
 
 L00094A8E: push       SP[0] ; loc2
 push       SP[2] ; loc1
 readvar    global.ga_Sectors ; [17d ; 11h]
 get_from_array
 get_from_array
 popx       1
 jump       L00094A7A
 
 L00094AA8: popx       1
 jump       L00094A48
 |  |  и что-то мне подсказывает, что команды
 push       20d ; 14h
 push       10d ; 0Ah
 с последющим
 callasm    SE_ArrayAlloc ; 00000AE1
 отвечает за создание массива карты галактики и записывает в глобальную переменную writevar   global.ga_Sectors ; [17d ; 11h]
 а вот такая конструкция
 
 
	  | Код: |  
	  | if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L00094AA8
 
 |  
 на мой взгляд проверяет переполнение (перелет/закольцовывание) и возвращает курсор на начало строки/столбца.Возможно признак отображения сектора на карте
 
 Я конечно не сильный программист и дизассемблерщик, и могу ошибаться по поводу назначения данных команд, но выглядит довольно логично.
 
 Просьба разрабам Редактора карт, добавьте пару строк на юге и пару колонок на востоке, увеличить в обже (опять же я без опыта его редактирования да и недостаток времени) эти значения
 push       20d ; 14h
 push       10d ; 0Ah
 
 в нескольких местах (я насчитал шесть) и попробовать дорисовать сектор и проверить... Если мои предположения верны - можно будет получить сколь угодно большую карту
   с девизом - Даешь карту Elite:Dangerous в X-Tension
   
 UPD Кстати, кто-то когда-то спрашивал по поводу задержки меню...
 мне кажется,
 
 
	  | Код: |  
	  | push       1000d ; 03E8h
 writevar   global.gs_DelayFactor ; [16d ; 10h]
 |  Вот этот кусок задает задержку в 1сек для меню галактической карты
 
 Последний раз редактировалось: yakim81 (15:42 22-06-2016), всего редактировалось 4 раз(а)
 |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | я все это читал, но нигде не написано, что товарищи в прошлом пытались найти и изменить значение размера матрицы - т.е. увеличить массив секторов. Я же нашел (как мне кажется) где эти значения могут храниться, и если увеличить изначальную матрицу, то галактика от этого не перестанет быть замкнутой, а вот размер ее может увеличиться
 К сожалению мне не хватает ни времени, ни умений изменять obj вручную, т.е. конечно можно по смещению увеличить, ради эксперимента
 
 push 20d ; 14h
 push 10d ; 0Ah
 
 вот эти значения, но вот добавить новый сектор - тут я увы
 
 Посмотрите, пожалуйста, для подтверждения информации, просто у меня нету чем...
 если есть дезассемблированный обж для X2 - гляньте функцию создания галактической карты. Там, судя по сообщениям из форума 300 секторов. Поэтому инициализация матрицы будет с другими параметрами. Т.к. я в нее не играл вообще, даже не представляю себе ее параметры, но они больше, чем в XT. проверьте эту информацию, и скажите мне
 
 
 
	| 
 ДА. ВОТ оно   (кликните здесь для просмотра)
 
; procedure TGALAXY.Build(arg1);
 ;
 TGALAXY.Build:
 setmem     8
 push       SP[3] ; arg1
 push       -3d ; 0FFFDh
 if SP[0]<>SP[1] then push 0 else push 1
 if SP[0]=0 then jump L0000DD7C
 push       0
 ret
 
 L0000DD7C: push       0
 callasm    P_InitLoadingScreen ; 0000169A
 pop
 push       0
 callasm    P_ShowNextLoadingScreen ; 00001644
 pop
 push       1000d ; 03E8h
 writevar   global.gs_DelayFactor ; [22d ; 16h]
 pop
 push       0
 write      TGALAXY.gal_IsBuild ; [0]
 pop
 push       20d ; 14h
 push       1
 callasm    SE_ArrayAlloc ; 00000001
 writevar   global.ga_Sectors ; [23d ; 17h]
 pop
 push       0
 push       0
 mov        SP[1],SP[0] ; loc1
 pop
 L0000DDBC: push       SP[0] ; loc1
 push       20d ; 14h
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L0000DE64
 jump       L0000DDE4
 
 L0000DDD0: push       SP[0] ; loc1
 push       1
 add        SP[0],SP[1]
 mov        SP[1],SP[0] ; loc1
 pop
 jump       L0000DDBC
 
 L0000DDE4: push       15d ; 0Fh
 push       1
 callasm    SE_ArrayAlloc ; 00000001
 push       SP[1] ; loc1
 readvar    global.ga_Sectors ; [23d ; 17h]
 put_to_array
 pop
 push       0
 push       0
 mov        SP[1],SP[0] ; loc2
 pop
 L0000DE04: push       SP[0] ; loc2
 push       15d ; 0Fh
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L0000DE5A
 jump       L0000DE2C
 
 L0000DE18: push       SP[0] ; loc2
 push       1
 add        SP[0],SP[1]
 mov        SP[1],SP[0] ; loc2
 pop
 jump       L0000DE04
 
 L0000DE2C: push       SP[0] ; loc2
 push       SP[2] ; loc1
 push       2
 push       2001d ; 07D1h
 create_object
 call       TSECTOR.Create ; 0000101B
 push       SP[1] ; loc2
 push       SP[3] ; loc1
 readvar    global.ga_Sectors ; [23d ; 17h]
 get_from_array
 put_to_array
 pop
 jump       L0000DE18
 
 L0000DE5A: popx       1
 jump       L0000DDD0
 
 L0000DE64: push       0
 pop
 push       0
 callasm    SE_TableAlloc ; 0000055C
 write      TGALAXY.gal_Products ; [4]
 pop
 push       0
 callasm    SE_TableAlloc ; 0000055C
 write      TGALAXY.gal_Resources ; [5]
 pop
 push       0
 pop
 push       20d ; 14h
 push       1
 callasm    SE_ArrayAlloc ; 00000001
 writevar   global.ga_Races ; [24d ; 18h]
 pop
 push       2000000d ; 001E8480h
 push       763d ; 02FBh
 push       1266d ; 04F2h
 push       2
 callasm    SE_ReadText ; 000000CB
 push       14d ; 0Eh
 push       3
 push       2005d ; 07D5h
 |  Вырезано из X2 та же функция. И тут параметры идут
 
 push       20d ; 14h
 push       15d ; 0Fh
 
 что подтверждает мои догадки по поводу размера
 
 UPD. осталось только подтвердить конкретным путем - изменить obj в размерах и дорисовать сектор и залететь туда ))
 
 Последний раз редактировалось: yakim81 (21:13 22-06-2016), всего редактировалось 3 раз(а)
 |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | Я тут глянул, он не был на форуме уже почти год. Может у кого есть его контакты, попросить подправить редактор в виду новых возможностей? |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | В общем, после некоторых опытов с данными переменными удалось установить, что максимальная матрица (предполагаемая) может иметь максимум 31х31 секторов, дальше возможности упираются в интерпретатор. В любом случае, при выставлении больших значений, начинает ломаться структура obj. Как то так. Написал уважаемому Shaddie письмо, с просьбой увеличить матрицу в его редакторе, что бы можно было проверить мои предположения. Буду ждать ответа.
 |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | 
 Я тут покумекал и пришел к выводу:
 obj использует некий вид шифрации/сжатия байт-кода (я тут не силён). Если посмотреть этот же код с расшифровкой байт-кода, то можно увидеть, что операция
 
 
	  | Код: |  
	  | 00094966: 001D                   |    0            push       20d ; 14h |  занимает один байт-код 001D, и расшифровывается как 001Dh - 0009h = 0014h
 а если нам надо закинуть в стек большее число, то используется две комманды
 
 
	  | Код: |  
	  | 000949FA: 0001 07D1              |    5            pushw      2001d ; 07D1h |  и занимают 2 байт-кода, при этом ничего не отнимается.
 В принципе, если процедуру эту полностью заменить на свою (потому как простая замена аргумента приводит к смещению адресов) - методы есть, то можно (чисто теоретически) получить любой размер матрицы
   
 PS. Просьба к модераторам перенести последние посты, не относящиеся к теме XTNL в раздел Редактор карт или Раскопки обжа, где они будут более логично смотреться по смыслу, начиная с этого сообщения
 
 Последний раз редактировалось: yakim81 (16:34 24-06-2016), всего редактировалось 2 раз(а)
 |  
		|  |  |  |  
		| KWON 
  409 EGP 
     Рейтинг канала: 8(857)
 Репутация: -12
 Сообщения: 171
 Откуда: Україна. Чигирин.
 Зарегистрирован: 24.11.2014
 
      |  | 
	  | yakim81 : |  
	  | Если посмотреть этот же код с расшифровкой байт-кода, то можно увидеть, что операция 
 
	  | Код: |  
	  | 00094966: 001D                   |    0            push       20d ; 14h |  занимает один байт-код 001D, и расшифровывается как 001Dh - 0009h = 0014h
 а если нам надо закинуть в стек большее число, то используется две комманды
 
 
	  | Код: |  
	  | 000949FA: 0001 07D1              |    5            pushw      2001d ; 07D1h |  и занимают 2 байт-кода, при этом ничего не отнимается.
 |  Правильно. А если нужно 4 байта, тогда пишут так (возьму Ваши цифры для примера):
 
 
	  | Код: |  
	  | 000949FA: 0002 0000 07D1 |  Допишу.
 Тут доходчивые объяснения:
 http://www.elite-games.ru/conference/viewtopic.php?p=674372#674372
 _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: KWON (09:40 25-06-2016), всего редактировалось 1 раз
 |  
		|  |  |  |  
		| yakim81 
  305 EGP 
    Рейтинг канала: 6(417)
 Репутация: 18
 Сообщения: 222
 
 Зарегистрирован: 07.02.2015
 
      |  | В общем печальные новости у меня. Вчера провел эксперимент на XTNL, добавил вручную сектор на 10-ю горизонталь с северными вратам, установил южные врата на 9-й горизонтали, попробовал влететь - ожидаемо очутился на 1-й горизонтали без корабля (там же северных ворот нету).
 Но я не отчаялся, и начал изучать obj на предмет кода
 
 
	  | Код: |  
	  | push       20d ; 14h
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump
 |  и
 
 
	  | Код: |  
	  | push       10d ; 0Ah
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump
 |  Вот тут я и понял, что все мои потуги никчемны.
 Не достаточно просто указать карте размеры, таким кодом исписана добрая часть игрового кода - встречается везде и всюду: расстановка станций, в процедуре поиска больших кораблей (если в доп меню установлена галочка восстанавливать ксенонские М0), для транспорта - поиск товара для фабрики, для пиратов - поиск цели для зондер-команды, вообще вся "фоновая симуляция" игрушки.
 В некоторых процедурах, размер галактики передается подпрограмме в качестве аргументов, при чем бывает, что вертикаль обрабатывается в основной процедуре, а горизонталь передается в качестве аргумента в другую подпрограмму.
 И тут я опечалился совсем. Проверить все места - не в моих силах, а получить половину галактики неработоспособной - не в моих интересах.
 Посему изыскания в данной области временно приостанавливаю, в виду нехватки времени, но с правом возобновления изысканий (ближе к осени решится вопрос с работой, и, возможно, появится больше времени (главное, что бы его не стало меньше
  )) 
 Кстати, участок
 
 
	  | Код: |  
	  | L00094980: push       SP[0] ; loc1
 push       20d ; 14h
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L00094A28
 jump       L000949A8
 
 |  банальный цикл for или while
 |  
		|  |  |  |  
		| Shaddie 
  556 EGP 
       Рейтинг канала: 6(438)
 Репутация: 118
 Сообщения: 261
 Откуда: Томск
 Зарегистрирован: 09.09.2004
 
      |  | 
	  | yakim81 : |  
	  | В общем печальные новости у меня. Вчера провел эксперимент на XTNL, добавил вручную сектор на 10-ю горизонталь с северными вратам, установил южные врата на 9-й горизонтали, попробовал влететь - ожидаемо очутился на 1-й горизонтали без корабля (там же северных ворот нету).
 Но я не отчаялся, и начал изучать obj на предмет кода
 
 
	  | Код: |  
	  | push       20d ; 14h
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump
 |  и
 
 
	  | Код: |  
	  | push       10d ; 0Ah
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump
 |  Вот тут я и понял, что все мои потуги никчемны.
 Не достаточно просто указать карте размеры, таким кодом исписана добрая часть игрового кода - встречается везде и всюду: расстановка станций, в процедуре поиска больших кораблей (если в доп меню установлена галочка восстанавливать ксенонские М0), для транспорта - поиск товара для фабрики, для пиратов - поиск цели для зондер-команды, вообще вся "фоновая симуляция" игрушки.
 В некоторых процедурах, размер галактики передается подпрограмме в качестве аргументов, при чем бывает, что вертикаль обрабатывается в основной процедуре, а горизонталь передается в качестве аргумента в другую подпрограмму.
 И тут я опечалился совсем. Проверить все места - не в моих силах, а получить половину галактики неработоспособной - не в моих интересах.
 Посему изыскания в данной области временно приостанавливаю, в виду нехватки времени, но с правом возобновления изысканий (ближе к осени решится вопрос с работой, и, возможно, появится больше времени (главное, что бы его не стало меньше
  )) 
 Кстати, участок
 
 
	  | Код: |  
	  | L00094980: push       SP[0] ; loc1
 push       20d ; 14h
 if SP[0]<=SP[1] then push 0 else push 1
 if SP[0]=0 then jump L00094A28
 jump       L000949A8
 
 |  банальный цикл for или while
 |  Всем привет!
 Собственно и зашел, что бы что то похожее написать. Что бы изменить размеры матрицы галактики нужно менять не в паре мест.
 Собственно сама карта хранится в виде массива размером в 20 элементов, где каждый элемент это то же массив размером в 10 элементов, а вот тут каждый элемент это уже объект сектор (TSECTOR):
 
 
 
	  | Код: |  
	  | function TGALAXY.Build(arg1) {
 if(arg1 >= 0)
 {
 return(0);
 }
 P_ViewEBMFullscreen("Loadings", 1);
 global.gs_DelayFactor = 1000;
 global.ga_Sectors = SE_ArrayAlloc(20);
 loc1 = 0;
 for(loc1 < 20; loc1 = loc1 + 1)
 {
 global.ga_Sectors[loc1] = SE_ArrayAlloc(10);
 loc2 = 0;
 for(loc2 < 10; loc2 = loc2 + 1)
 {
 global.ga_Sectors[loc1][loc2] = new(TSECTOR)->Create(loc1, loc2);
 }
 }
 ...
 
 |  
 Исправлять нужно по всему коду, как минимум в тех местах где идет обращение к глобальной переменной global.ga_Sectors.
 
 Исходники редактора могу поискать - там думаю реально изменить размер матрицы (возможно сразу предусмотрел такую возможность и там размеры вынесены в константы).
 _________________
 Быстро едешь, тихо понесут...
 
 Последний раз редактировалось: Shaddie (15:50 08-07-2016), всего редактировалось 1 раз
 |  
		|  |  |  |  |  |  
		|  |  |  |  | Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |  
		|  |  
        | К списку каналов | Наверх страницы |  | Цитата не в тему:  Так нам же обещали радость, вот мы и пришли. (резонно заметил BabyWolf) 
 
 |  | » Раскопки обжа на предмет юзабельных вещей | страница 2 |  |