ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
 
  |  
|   » Раскопки обжа на предмет юзабельных вещей | страница 4 |  
 
	
		 | 
		 | 
		 | 
	 
	| 
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |  
	| 
	 |  
	 |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Осилил старт в случайном секторе.  
 
 
Запуск кода на XC в папке inc происходит вместо вот этого в процедуре TClient.Run
 
	  | Код: | 
	 
	
	  000DE1D4: 0006 0005              |   11            read       TCLIENT.cl_StartsectorY ; [5]
 
000DE1D8: 0006 0004              |   12            read       TCLIENT.cl_StartsectorX ; [4]
 
000DE1DC: 0004 0011              |   13            readvar    global.ga_Sectors ; [17d ; 11h]
 
000DE1E0: 0008                   |   14            get_from_array
 
000DE1E2: 0008                   |   13            get_from_array
 
000DE1E4: 000A                   |   12            push       1
 
000DE1E6: 0001 0834              |   13            push       2100d ; 0834h
 
000DE1EA: 0059 0006EE82 0000290D |   14            call59     TCLIENT.EnterSector ;
 
000DE1F4: 002C                   |   12            pop
 
000DE1F6: 0009                   |   11            push       0
 
000DE1F8: 002C                   |   12            pop
 
000DE1FA: 0006 0005              |   11            read       TCLIENT.cl_StartsectorY ; [5]
 
000DE1FE: 0006 0004              |   12            read       TCLIENT.cl_StartsectorX ; [4]
 
000DE202: 0004 0011              |   13            readvar    global.ga_Sectors ; [17d ; 11h]
 
000DE206: 0008                   |   14            get_from_array
 
000DE208: 0008                   |   13            get_from_array
 
000DE20A: 000A                   |   12            push       1
 
000DE20C: 0006 0001              |   13            read       TCLIENT.cl_Player ; [1]
 
000DE210: 0057 0000290D          |   14            call       EnterSector ; 0000290D
 
000DE216: 002C                   |   12            pop
 
000DE218: 0009                   |   11            push       0
 
000DE21A: 002C                   |   12            pop | 
	 
 
 
 
А вот собственно сам код:
 
	  | Код: | 
	 
	
	  GetRandomSector:
 
{
 
  var x, y;
 
  P_Delay(1000);
 
  while
 
  {
 
    x=P_Random(20);
 
    y=P_Random(10);
 
    if(global.ga_Sectors[x][y]->GetOwner())
 
    {
 
      break;
 
    }
 
  }
 
  TCLIENT.EnterSector(global.ga_Sectors[x][y]);
 
  TCLIENT.GetPlayer()->EnterSector(global.ga_Sectors[x][y]);
 
}
 
jump ContinueTClientRun; | 
	 
 
 
 
Брать тут
        	  | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Решил покодить на асме.  
 
 
Сделал старт со случайным кораблём М4-М5, запуск глобальной функции Testing из patch.xc при старте игры / загрузке сохранения, иными словами любого произвольного кода, который там будет написан.  
 
И максимальные апгрейды скорости / поворота для NPC.
 
Ксенонские К теперь пипецки опасны.  
 
А как весело они таранят пирбазу, если случайно стартовал в Ксенонском секторе.  
 
 
Все обновления по-прежнему доступны во вложении в первом посте.   
 
 
 
Старт со случайным кораблём
 
	  | Код: | 
	 
	
	             .section   code, abs
 
 
; 000DE038: 0009                   |   11 L000DE038: push       0
 
; 000DE03A: 000A                   |   12            push       1
 
; 000DE03C: 000F                   |   13            push       6
 
; 000DE03E: 0009                   |   14            push       0
 
; 000DE040: 0009                   |   15            push       0
 
; 000DE042: 0009                   |   16            push       0
 
; 000DE044: 000F                   |   17            push       6
 
; 000DE046: 0001 07E8              |   18            push       2024d ; 07E8h
 
; 000DE04A: 003A                   |   19            create_object
 
; 000DE04C: 0057 000009BB          |   19            call       TSHIP_M4.Create ; 000009BB
 
; 000DE052: 002B 0002              |   12            write      TCLIENT.cl_Ship ; [2]
 
; 000DE056: 002C                   |   12            pop
 
$ = 000DE038h
 
           jump       GetRandomShip
 
 
$ = 000DE056h
 
GetRandomShipRet:
 
 
           .section   code, con
 
 
GetRandomShip:
 
           push       2
 
           push       1
 
           callasm    P_Random
 
           push       6
 
           add        SP[0], SP[1] ; 0 class (var)
 
 
           push       0 ; 1 regular / TL
 
 
           push       4
 
           push       1
 
           callasm    P_Random
 
           push       1
 
           add        SP[0], SP[1] ; 2 race
 
 
           push       SP[2] ; 3 class (var)
 
 
           push       0 ; 4
 
           push       0 ; 5
 
           push       0 ; 6
 
           push       6 ; 7
 
           push       2018 ; 8
 
 
           push       SP[8] ; 9 class (var)
 
           add        SP[0],SP[1]
 
           create_object
 
           call       TSHIP_M3.Create
 
           .word      2Bh, 2 ; write TClient.cl_Ship
 
           pop
 
           jump       GetRandomShipRet | 
	 
 
 
 
Автозапуск глобальной функции Testing из patch.xc
 
	  | Код: | 
	 
	
	             .section   code, abs
 
; 000DE244: 002E 0007              |   11            popx       7
 
; 000DE248: 0054                   |    4            end_critical
 
$ = 000DE244h
 
           jump       NewGame
 
NewGameRet:
 
 
; 0002BC4A: 002C                   |    1            pop
 
; 0002BC4C: 0009                   |    0            push       0
 
; 0002BC4E: 0035                   |    1            ret
 
$ = 0002BC4Ah
 
           jump       LoadSave
 
 
 
           .section   code, con
 
NewGame:
 
           popx       7
 
           push       0
 
           call58     global.Testing
 
           pop
 
           end_critical
 
           jump       NewGameRet
 
 
LoadSave:
 
           pop
 
           push       0
 
           call58     global.Testing
 
           pop
 
           push       0
 
           ret | 
	 
 
 
 
Максимальные апгрейды NPC
 
	  | Код: | 
	 
	
	             .section   code, abs
 
 
; 000ABF04: 0011                   |    1            push       8
 
; 000ABF06: 0005 0002              |    2            push       SP[1] ; loc1
 
; 000ABF0A: 000B                   |    3            push       2
 
; 000ABF0C: 005A 0000175E          |    4            callasm    P_RandomLowNorm ; 0000175E
 
$ = 000ABF04h
 
           push       0
 
           pop
 
           push       0
 
           pop
 
           push       0
 
           pop
 
           push       SP[0]
 
 
; 000ABF3C: 0011                   |    1            push       8
 
; 000ABF3E: 0005 0002              |    2            push       SP[1] ; loc1
 
; 000ABF42: 000B                   |    3            push       2
 
; 000ABF44: 005A 0000175E          |    4            callasm    P_RandomLowNorm ; 0000175E
 
$ = 000ABF3Ch
 
           push       0
 
           pop
 
           push       0
 
           pop
 
           push       0
 
           pop
 
           push       SP[0] | 
	 
 
        	 
  Последний раз редактировалось: Non (23:52 17-01-2018), всего редактировалось 1 раз | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Согласен. Нифига не понятно - автоматически запускается произвольный код, и че?   
 
 
Тогда пример.  
 
 
Функция Testing, она же произвольный код.
 
 
Разместит игрока поближе к южным воротам. Создаст нам новый сектор под Danna's Chance (пиратский). Подсоединит воротами новый сектор. Создаст в нём солнце, планету и 200 астероидов со случайными координатами, моделькой и ресурсом.
 
 
И всё это на любой сохранёнке.  
 
Привет интерактивность.
 
Добавлено: Или не совсем на любой. Всё оно конечно создаёт, только со звуком в новом секторе происходит какая-то фигня. А в новой игре норм..
 
Добавлено ещё: Похоже всё дело было в том, что сектору обязательно нужно установить владельца. На сохранёнке сделанной в оригинальной игре теперь со звуком всё нормально.
 
 
Так можно и случайную карту сделать, на самом деле. Может и сделаю, когда-нибудь.  
 
 
Вся эта ерунда сейчас подключена во вложении в первом посте.
 
Начало новой игры разместит игрока в секторе, в котором происходит добавление ворот и создаст собсна новый сектор.
 
 
	  | Код: | 
	 
	
	  function Testing()
 
{
 
  // Задержка 5 секунд
 
  P_Delay(5000);
 
 
  // Чтобы наш код не запускался более одного раза в сохранёнке
 
  // Используем неиспользуемую существующую глобальную переменную
 
  if(global.ga_ClientID==339)
 
  {return(0);}
 
  global.ga_ClientID=339;
 
 
  // Поставим корабль игрока поближе к воротам
 
  SA_SetPos(TCLIENT.GetPlayerShip()->GetObjectID(), 0, 0, -6800000);
 
 
  // Создадим новый сектор
 
  var x = 4;
 
  var y = 7;
 
  var sector = global.ga_Sectors[x][y] = new(TSECTOR)->Create(x, y);
 
  // Установим владельца сектора (необходимо для его нормальной работы)
 
  sector->SetOwner(global.ga_Races[7]);
 
 
  // Создадим солнце
 
  var sun = new(TSUN)->Create(
 
    14400000*2, // x
 
    360000*2, // y
 
    28800000*2, // z
 
    255,        // r
 
    255,        // g
 
    255         // b
 
  );
 
  // Добавим его в сектор
 
  sun->AddTo(sector);
 
 
  // Создадим планету
 
  var planet = new(TPLANET)->Create(
 
    28800000*30, // x
 
    360000*2,   // y
 
    12000000*2, // z
 
    3           // подтип планеты, текстура
 
  );
 
  planet->AddTo(sector);
 
 
  // Создадим ворота
 
  var gate = new(TGATE)->Create(
 
    0,       // x
 
    0,       // y
 
    7200000, // z
 
    0        // тип ворот: С/N 0; Ю/S 1; З/W 2; В/E 3
 
  );
 
  // Добавим их в сектор
 
  gate->AddTo(sector);
 
 
  // Создадим ворота в существующем секторе, чтобы соединить его с новым
 
  // Ворота южные
 
  gate=new(TGATE)->Create(0, 0, -7200000, 1);
 
  gate->AddTo(global.ga_Sectors[4][6]);
 
 
  // Создадим 200 астероидов по случайным координатам в новом секторе
 
  var asteroid, ast;
 
  for(ast=0; ast<200; ast=ast+1)
 
  {
 
    asteroid = new(TASTEROID)->Create(
 
      P_Random(14400000) - 7200000, // x
 
      P_Random(14400000) - 7200000, // y
 
      P_Random(14400000) - 7200000, // z
 
      P_Random(3),                  // подтип астероида (модель)
 
      P_Random(2),                  // ресурс астероида (руда, кремний)
 
      P_Random(50)                  // количество минерала
 
    );
 
    asteroid->AddTo(sector);
 
  }
 
} | 
	 
 
        	 
  Последний раз редактировалось: Non (17:25 18-01-2018), всего редактировалось 8 раз(а) | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Запись в файл в папке с игрой прямо из кода обжа.  
 
 
	  | Код: | 
	 
	
	  var file = SE_FOpen("test.txt", "w");
 
SE_FPrintf(file, "test test");
 
SE_FClose(file); | 
	 
 
 
 
После исполнения игрой этого кода в папке с игрой создастся файл test.txt с содержанием "test test".
 
 
SE_FPrintf поддерживает форматирование:
 
	  | Код: | 
	 
	
	  | SE_FPrintf(file, "number: %d", variable); | 
	 
 
 
Если переменная variable содержала 5, то в файле будет
 
 
 
SE_FPrintf и SE_SPrintf разные функции. Первая для записи форматированного текста сразу в файл. Вторая для записи форматированного текста в строку.
 
 
Можно в своей функции использовать строку, дополняемую содержимым переменных по мере исполнения кода, чтобы записать значение всех переменных в один файл.
 
 
	  | Код: | 
	 
	
	  var string = "";
 
string = string + SE_SPrintf("variable1: %d\n", variable1);
 
...
 
string = string + SE_SPrintf("variable2: %d\n", variable2); | 
	 
 
 
 
И получим в файле что-то вроде:
 
	  | Код: | 
	 
	
	  variable1: 5
 
variable2: -199659 | 
	 
 
 
 
Для чего это может быть полезно, спросите вы?
 
 
Отлаживать свой код, записывать в файл содержимое переменных.
 
 
Динамически записывать имена секторов при генерации случайной карты сразу в языковой файл.  
        	 
  Последний раз редактировалось: Non (18:23 18-01-2018), всего редактировалось 3 раз(а) | 
		 
		
		| 
		
		 | 
         
     |  
	
		Shepard
   503 EGP
        Рейтинг канала: 4(54) Репутация: 101 Сообщения: 3397  Откуда: из безумного и бесконечного Зарегистрирован: 02.02.2010
       | 
         | 
		Вот бы путь до земли раскопать...или сектор земной выдернуть из XBTF
        	 _________________ and Nothing Else Matters...  | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		
	  | Shepard : | 
	 
	
	  | 
Вот бы путь до земли раскопать...или сектор земной выдернуть из XBTF
 | 
	 
 
 
Это не сложно. Можно создать аналогичный по образу и подобию и воткнуть туда земной авианосец. Тока чё дальше?  
 
 
Можно даже симулировать XBTF-шный прыжок в X-вселенную со случайно генерированной картой, в теории.  
 
Не знаю как с озвучкой, но cut-сцена прыжка со злыми молниями есть. Я её даже в X2 прикручивал на обже.
        	 
  Последний раз редактировалось: Non (16:09 19-01-2018), всего редактировалось 1 раз | 
		 
		
		| 
		
		 | 
         
     |  
	
		Shepard
   503 EGP
        Рейтинг канала: 4(54) Репутация: 101 Сообщения: 3397  Откуда: из безумного и бесконечного Зарегистрирован: 02.02.2010
       | 
         | 
		Пофиксить врата в Триумфе, запилить путь к земле, а там 
	  | Non : | 
	 
	
	  
симулировать XBTF-шный прыжок в X-вселенную со случайно генерированной картой, в теории. Улыбка
 
Не знаю как с озвучкой, но cut-сцена прыжка со злыми молниями есть
 | 
	 
 
  
        	 _________________ and Nothing Else Matters...  | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Пытаюсь пересобрать обж XT полностью, чтобы можно было пожоще откорректировать через XC.
 
 
Поправил из 38 ошибок 34. Осталось 4 вызова локальных процедур/функций, альтернативы которым не понимаю где искать:
 
	  | Код: | 
	 
	
	   pass2:(001_fixed.asm:302745) Err: Undefined identifier 'SetLatency'.
 
 
 pass2:(001_fixed.asm:313080) Err: Undefined identifier 'Debug'.
 
 
 pass2:(001_fixed.asm:383527) Err: Undefined identifier 'IsDisabled'.
 
 
 pass2:(001_fixed.asm:384059) Err: Undefined identifier 'IsDisabled'. | 
	 
 
 
 
	| 
 
 Контекст SetLatency (TClient.Init)   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  ;
 
; === Init ======================================================
 
; procedure TCLIENT.Init(arg1);
 
;
 
TCLIENT.Init:
 
           setmem     4
 
           get_strg   S000281A ;  ; "BRENNAN"
 
           get_strg   S000086E ;  ; "%s"
 
           push       2
 
           callasm    SE_SPrintf ; 000003C2
 
           write      TCLIENT.cl_UserName ; [41d ; 29h]
 
           pop
 
           push       1
 
           write      TCLIENT.cl_UID ; [42d ; 2Ah]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_CutScene ; [0]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_Player ; [1]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_Ship ; [2]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_New ; [3]
 
           pop
 
           push       1
 
           write      TCLIENT.cl_StartsectorX ; [4]
 
           pop
 
           push       3
 
           write      TCLIENT.cl_StartsectorY ; [5]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_SunInst ; [6]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_WarpRequest ; [7]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_WarpPID ; [8]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_AutoPilotMode ; [9]
 
           pop
 
           read       TCLIENT.cl_WarpSectorX ; [10d ; 0Ah]
 
           pop
 
           read       TCLIENT.cl_WarpSectorY ; [11d ; 0Bh]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_DateString ; [12d ; 0Ch]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_LastKey ; [13d ; 0Dh]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_Killed ; [14d ; 0Eh]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_Leave ; [15d ; 0Fh]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_NextCheatLaser ; [17d ; 11h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_NextCheatShield ; [18d ; 12h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_ScreenGrabbing ; [19d ; 13h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_CutTake ; [16d ; 10h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_ActiveMenu ; [24d ; 18h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_Mask ; [34d ; 22h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_LoadGame ; [35d ; 23h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_InputLocked ; [36d ; 24h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_cheatactive ; [44d ; 2Ch]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_cheatactivatestate ; [45d ; 2Dh]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_FastForward ; [39d ; 27h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_Autopilot ; [51d ; 33h]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_DockingHangar ; [52d ; 34h]
 
           pop
 
           readvar    global.ga_IsNetworkActive ; [23d ; 17h]
 
           if SP[0]=0 then jump L000DDBC4
 
           readvar    global.ga_IsServer ; [19d ; 13h]
 
           if SP[0]=0 then push 1 else push 0
 
           if SP[0]=0 then jump L000DDB6E
 
           push       0
 
           pop
 
L000DDB6E: push       SP[3] ; arg1
 
           push       1
 
           callasm    Net_CreatePlayer ; 00002822
 
           writevar   global.ga_ClientID ; [22d ; 16h]
 
           pop
 
           readvar    global.ga_ClientID ; [22d ; 16h]
 
           if SP[0]=0 then jump L000DDBBE
 
           readvar    global.ga_ClientID ; [22d ; 16h]
 
           push       1
 
           callasm    Net_GetPlayerName ; 00002833
 
           readvar    global.ga_ClientID ; [22d ; 16h]
 
           push       2
 
           push       2009d ; 07D9h
 
           create_object
 
           call       TPLAYER.Create ; 000009BB
 
           write      TCLIENT.cl_Player ; [1]
 
           pop
 
           push       0
 
           push       1
 
           read       TCLIENT.cl_Player ; [1]
 
           call       SetLatency ; 00002845
 
           pop
 
L000DDBBE: jump       L000DDBFA
 
 
L000DDBC4: push       1
 
           writevar   global.ga_ClientID ; [22d ; 16h]
 
           pop
 
           push       SP[3] ; arg1
 
           readvar    global.ga_ClientID ; [22d ; 16h]
 
           push       2
 
           push       2009d ; 07D9h
 
           create_object
 
           call       TPLAYER.Create ; 000009BB
 
           write      TCLIENT.cl_Player ; [1]
 
           pop
 
           read       TCLIENT.cl_Player ; [1]
 
           push       9
 
           readvar    global.ga_Races ; [18d ; 12h]
 
           put_to_array
 
           pop
 
           push       0
 
           pop
 
L000DDBFA: push       1
 
           write      TCLIENT.cl_New ; [3]
 
           pop
 
           push       0
 
           write      TCLIENT.cl_Alert ; [23d ; 17h]
 
           pop
 
           push       0
 
           push       5000d ; 1388h
 
           call59     TUPGRADEMASTER.Set ;
 
           pop
 
           push       0
 
           push       3001d ; 0BB9h
 
           call59     TQUESTMASTER.Set ;
 
           pop
 
           push       0
 
           ret | 
	 
 
 
 
 | 
 
 
 
 
	| 
 
 Контекст Debug (TClient.Input)   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  ;
 
; === Input =====================================================
 
; function  TCLIENT.Input(arg1);
 
;
 
...
 
000E5E9C: 0031 00072F55          |                 jump       L000E5EB2
 
000E5EA2: 0007                   |    6 L000E5EA2: push       SP[0] ; loc6
 
000E5EA4: 0001 01A5              |    7            push       421d ; 01A5h
 
000E5EA8: 004F                   |    8            if SP[0]<>SP[1] then push 0 else push 1
 
000E5EAA: 0033 00072F75          |    7            if SP[0]=0 then jump L000E5EF2
 
000E5EB0: 002C                   |    6            pop
 
000E5EB2: 0009                   |    5 L000E5EB2: push       0
 
000E5EB4: 005A 00002E0C          |    6            callasm    P_GetTimeWarpFactor ; 00002E0C
 
000E5EBA: 0001 FF9C              |    6            push       -100d ; 0FF9Ch
 
000E5EBE: 004B                   |    7            if SP[0]>=SP[1] then push 0 else push 1
 
000E5EC0: 0033 00072F6C          |    6            if SP[0]=0 then jump L000E5EE0
 
000E5EC6: 0009                   |    5            push       0
 
000E5EC8: 002C                   |    6            pop
 
000E5ECA: 0009                   |    5            push       0
 
000E5ECC: 005A 00002E0C          |    6            callasm    P_GetTimeWarpFactor ; 00002E0C
 
000E5ED2: 000A                   |    6            push       1
 
000E5ED4: 003F                   |    7            sub        SP[0],SP[1]
 
000E5ED6: 000A                   |    6            push       1
 
000E5ED8: 005A 00002CC0          |    7            callasm    P_SetTimeWarpFactor ; 00002CC0
 
000E5EDE: 002C                   |    6            pop
 
000E5EE0: 000A                   |    5 L000E5EE0: push       1
 
000E5EE2: 002A 0006              |    6            mov        SP[5],SP[0] ; loc1
 
000E5EE6: 002E 0005              |    6            popx       5
 
000E5EEA: 0035                   |    1            ret
 
 
000E5EEC: 0031 00072F7D          |                 jump       L000E5F02
 
000E5EF2: 0007                   |    6 L000E5EF2: push       SP[0] ; loc6
 
000E5EF4: 0001 0044              |    7            push       68d ; 44h
 
000E5EF8: 004F                   |    8            if SP[0]<>SP[1] then push 0 else push 1
 
000E5EFA: 0033 00073063          |    7            if SP[0]=0 then jump L000E60CE
 
000E5F00: 002C                   |    6            pop
 
000E5F02: 0053                   |    5 L000E5F02: begin_critical
 
000E5F04: 0032 0007305A          |    6            if SP[0]<>0 then jump L000E60BC
 
000E5F0A: 0009                   |    5            push       0
 
000E5F0C: 005A 00001F8B          |    6            callasm    SA_GetTrackingAim ; 00001F8B
 
000E5F12: 0005 0001              |    6            push       SP[0] ; loc6
 
000E5F16: 0033 00072FA1          |    7            if SP[0]=0 then jump L000E5F4A
 
000E5F1C: 0005 0001              |    6            push       SP[0] ; loc6
 
000E5F20: 000A                   |    7            push       1
 
000E5F22: 005A 00000F28          |    8            callasm    SA_GetEventObject ; 00000F28
 
000E5F28: 0005 0001              |    7            push       SP[0] ; loc7
 
000E5F2C: 0033 00072F9C          |    8            if SP[0]=0 then jump L000E5F40
 
000E5F32: 0009                   |    7            push       0
 
000E5F34: 0005 0002              |    8            push       SP[1] ; loc7
 
000E5F38: 0057 00002E20          |    9            call       Debug ; 00002E20
 
000E5F3E: 002C                   |    8            pop
 
000E5F40: 002E 0001              |    7 L000E5F40: popx       1
 
000E5F44: 0031 00073057          |    6            jump       L000E60B6
 
... | 
	 
 
 
 
 | 
 
 
 
 
	| 
 
 Контекст IsDisabled (TMENU_QUESTS.SpecialUpdate)   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  0011D226: 0009                   |   11 L0011D226: push       0
 
0011D228: 0033 0008EA19          |   12 L0011D228: if SP[0]=0 then jump L0011D43A
 
0011D22E: 0005 000B              |   11            push       SP[10d] ; loc1
 
0011D232: 0006 0015              |   12            read       TMENU.me_SelectedLine ; [21d ; 15h]
 
0011D236: 004F                   |   13            if SP[0]<>SP[1] then push 0 else push 1
 
0011D238: 0033 0008E949          |   12            if SP[0]=0 then jump L0011D29A
 
0011D23E: 000A                   |   11            push       1
 
0011D240: 0006 0040              |   12            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D244: 0001 0100              |   13            push       256d ; 0100h
 
0011D248: 0005 0008              |   14            push       SP[7] ; loc7
 
0011D24C: 0006 0040              |   15            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D250: 0040                   |   16            mul        SP[0],SP[1]
 
0011D252: 0006 003F              |   15            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D256: 003E                   |   16            add        SP[0],SP[1]
 
0011D258: 0009                   |   15            push       0
 
0011D25A: 000E                   |   16            push       5
 
0011D25C: 003C                   |   17            get_object
 
0011D25E: 0057 00003419          |   18            call       ShowRect ; 00003419
 
0011D264: 002C                   |   12            pop
 
0011D266: 000A                   |   11            push       1
 
0011D268: 0006 0040              |   12            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D26C: 0001 0080              |   13            push       128d ; 80h
 
0011D270: 0005 0008              |   14            push       SP[7] ; loc7
 
0011D274: 0006 0040              |   15            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D278: 0040                   |   16            mul        SP[0],SP[1]
 
0011D27A: 0006 003F              |   15            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D27E: 003E                   |   16            add        SP[0],SP[1]
 
0011D280: 0001 0100              |   15            push       256d ; 0100h
 
0011D284: 000E                   |   16            push       5
 
0011D286: 003C                   |   17            get_object
 
0011D288: 0057 00003419          |   18            call       ShowRect ; 00003419
 
0011D28E: 002C                   |   12            pop
 
0011D290: 0005 0001              |   11            push       SP[0] ; loc11
 
0011D294: 002B 0044              |   12            write      TMENU_QUESTS.meq_SelectedQuestID ; [68d ; 44h]
 
0011D298: 002C                   |   12            pop
 
0011D29A: 0009                   |   11 L0011D29A: push       0
 
0011D29C: 000A                   |   12            push       1
 
0011D29E: 0001 0FA0              |   13            push       4000d ; 0FA0h
 
0011D2A2: 0005 0004              |   14            push       SP[3] ; loc11
 
0011D2A6: 003E                   |   15            add        SP[0],SP[1]
 
0011D2A8: 0057 00003D9A          |   14            call       TQUEST.GetTextID ; 00003D9A
 
0011D2AE: 000A                   |   12            push       1
 
0011D2B0: 005A 000002FD          |   13            callasm    SE_ReadText ; 000002FD
 
0011D2B6: 0056 000043A1          |   12            get_strg   S00043A1 ;  ; "%-35s"
 
0011D2BC: 000B                   |   13            push       2
 
0011D2BE: 005A 000003C2          |   14            callasm    SE_SPrintf ; 000003C2
 
0011D2C4: 002A 000B              |   12            mov        SP[10d],SP[0] ; loc2
 
0011D2C8: 002C                   |   12            pop
 
0011D2CA: 0006 0015              |   11            read       TMENU.me_SelectedLine ; [21d ; 15h]
 
0011D2CE: 0005 000C              |   12            push       SP[11d] ; loc1
 
0011D2D2: 004F                   |   13            if SP[0]<>SP[1] then push 0 else push 1
 
0011D2D4: 0005 0006              |   12            push       SP[5] ; loc7
 
0011D2D8: 0006 0040              |   13            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D2DC: 0040                   |   14            mul        SP[0],SP[1]
 
0011D2DE: 0006 003F              |   13            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D2E2: 003E                   |   14            add        SP[0],SP[1]
 
0011D2E4: 0006 0041              |   13            read       TMENU.me_XOff ; [65d ; 41h]
 
0011D2E8: 0005 000D              |   14            push       SP[12d] ; loc2
 
0011D2EC: 000D                   |   15            push       4
 
0011D2EE: 003C                   |   16            get_object
 
0011D2F0: 0057 00003008          |   17            call       ShowText ; 00003008
 
0011D2F6: 002C                   |   12            pop
 
0011D2F8: 0009                   |   11            push       0
 
0011D2FA: 0001 0FA0              |   12            push       4000d ; 0FA0h
 
0011D2FE: 0005 0003              |   13            push       SP[2] ; loc11
 
0011D302: 003E                   |   14            add        SP[0],SP[1]
 
0011D304: 0057 00003E3B          |   13            call       TQUEST.GetPriority ; 00003E3B
 
0011D30A: 0005 0002              |   12            push       SP[1] ; loc11
 
0011D30E: 0056 000043A7          |   13            get_strg   S00043A7 ;  ; "%3d %3d"
 
0011D314: 000C                   |   14            push       3
 
0011D316: 005A 000003C2          |   15            callasm    SE_SPrintf ; 000003C2
 
0011D31C: 002A 000B              |   12            mov        SP[10d],SP[0] ; loc2
 
0011D320: 002C                   |   12            pop
 
0011D322: 0006 0015              |   11            read       TMENU.me_SelectedLine ; [21d ; 15h]
 
0011D326: 0005 000C              |   12            push       SP[11d] ; loc1
 
0011D32A: 004F                   |   13            if SP[0]<>SP[1] then push 0 else push 1
 
0011D32C: 0005 0006              |   12            push       SP[5] ; loc7
 
0011D330: 0006 0040              |   13            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D334: 0040                   |   14            mul        SP[0],SP[1]
 
0011D336: 0006 003F              |   13            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D33A: 003E                   |   14            add        SP[0],SP[1]
 
0011D33C: 0001 0100              |   13            push       256d ; 0100h
 
0011D340: 0006 0041              |   14            read       TMENU.me_XOff ; [65d ; 41h]
 
0011D344: 003E                   |   15            add        SP[0],SP[1]
 
0011D346: 0005 000D              |   14            push       SP[12d] ; loc2
 
0011D34A: 000D                   |   15            push       4
 
0011D34C: 003C                   |   16            get_object
 
0011D34E: 0057 00003008          |   17            call       ShowText ; 00003008
 
0011D354: 002C                   |   12            pop
 
0011D356: 0005 000A              |   11            push       SP[9] ; loc2
 
0011D35A: 000A                   |   12            push       1
 
0011D35C: 005A 00000DD2          |   13            callasm    SE_FreeString ; 00000DD2
 
0011D362: 002C                   |   12            pop
 
0011D364: 0009                   |   11            push       0
 
0011D366: 0001 0FA0              |   12            push       4000d ; 0FA0h
 
0011D36A: 0005 0003              |   13            push       SP[2] ; loc11
 
0011D36E: 003E                   |   14            add        SP[0],SP[1]
 
0011D370: 0057 000043AF          |   13            call       IsDisabled ; 000043AF
 
0011D376: 0033 0008E9BF          |   12            if SP[0]=0 then jump L0011D386
 
0011D37C: 0001 0044              |   11            push       68d ; 44h
 
0011D380: 0031 0008E9C1          |   12            jump       L0011D38A
 
 
0011D386: 0001 0045              |   11 L0011D386: push       69d ; 45h
 
0011D38A: 0005 0002              |   12 L0011D38A: push       SP[1] ; loc11
 
0011D38E: 0009                   |   13            push       0
 
0011D390: 0001 0BB9              |   14            push       3001d ; 0BB9h
 
0011D394: 0059 000B266C 00002CD4 |   15            call59     TQUESTMASTER.GetCurrentQuest ;
 
0011D39E: 004F                   |   14            if SP[0]<>SP[1] then push 0 else push 1
 
0011D3A0: 0033 0008E9D4          |   13            if SP[0]=0 then jump L0011D3B0
 
0011D3A6: 0001 002A              |   12            push       42d ; 2Ah
 
0011D3AA: 0031 0008E9E7          |   13            jump       L0011D3D6 | 
	 
 
 
 
 | 
 
 
 
 
	| 
 
 Мои изменения   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  diff --git a/001.asm b/001_fixed.asm
 
index 03c07c5..49b45a9 100644
 
--- a/001.asm
 
+++ b/001_fixed.asm
 
@@ -45260,7 +45260,7 @@ TX_AUDIO.LoopMusic:
 
            push       0
 
            push       0
 
            get_object
 
-           call       GetModVolume ; 00009F0C
 
+           call       GetMODVolume ; 00009F0C
 
            push       5
 
            if SP[0]<SP[1] then push 0 else push 1
 
            if SP[0]=0 then jump L0002B3E2
 
@@ -45842,7 +45842,7 @@ L0002BA30: push       0
 
            call       GetEnvironment ; 00001192
 
            push       0
 
            get_object
 
-           call       GetModVolume ; 00009F0C
 
+           call       GetMODVolume ; 00009F0C
 
            push       5
 
            if SP[0]<SP[1] then push 0 else push 1
 
            if SP[0]=0 then jump L0002BA64
 
@@ -53026,7 +53026,7 @@ L00031318: push       SP[0] ; loc2
 
            get_from_array
 
            push       0
 
            push       SP[1] ; loc3
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L000314F0
 
            push       0
 
            push       SP[1] ; loc3
 
@@ -53310,7 +53310,7 @@ L00031664: push       SP[0] ; loc2
 
            get_from_array
 
            push       0
 
            push       SP[1] ; loc3
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            push       0
 
            if SP[0]<>SP[1] then push 0 else push 1
 
            if SP[0]<>0 then jump L000316AA
 
@@ -271814,7 +271814,7 @@ TSHIP_M0.SetDisowned:
 
            if SP[0]=0 then jump L000C6AB2
 
            push       0
 
            push       SP[4] ; arg1
 
-           call       GetSerial ; 0000207D
 
+           call       GetID ; 0000207D
 
            push       0
 
            push       SP[1] ; loc1
 
            read       TSHIP_M0.shm0_Guns ; [60d ; 3Ch]
 
@@ -292383,7 +292383,7 @@ L000D6182: push       SP[24d] ; arg1
 
 
 
 L000D619E: push       0
 
            read       TRACE.ra_CampaignAmbassador ; [15d ; 0Fh]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            mov        SP[2],SP[0] ; loc20
 
            pop
 
            push       SP[1] ; loc20
 
@@ -292777,7 +292777,7 @@ TRACE.CampaignCheck:
 
            push       0
 
            push       SP[2] ; loc1
 
            call       GetOwner ; 0000035D
 
-           call       getID ; 00002506
 
+           call       GetID ; 00002506
 
            read       TRACE.ra_ID ; [1]
 
            if SP[0]=SP[1] then push 0 else push 1
 
            if SP[0]=0 then jump L000D66D0
 
@@ -294620,7 +294620,7 @@ L000D7E70: push       SP[0] ; loc11
 
            pop
 
            push       0
 
            push       SP[2] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            if SP[0]=0 then jump L000D7ED6
 
            push       0
 
            push       0
 
@@ -294642,7 +294642,7 @@ L000D7EE4: jump       L000D7E70
 
 L000D7EEA: push       SP[5] ; loc6
 
            push       0
 
            push       SP[3] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            push       SP[6] ; loc8
 
            call       SendSquad ; 000012E5
 
@@ -294689,7 +294689,7 @@ L000D7F6A: push       SP[0] ; loc11
 
            pop
 
            push       0
 
            push       SP[2] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            if SP[0]=0 then jump L000D7FD0
 
            push       0
 
            push       0
 
@@ -294711,7 +294711,7 @@ L000D7FDE: jump       L000D7F6A
 
 L000D7FE4: push       SP[5] ; loc6
 
            push       0
 
            push       SP[3] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            push       SP[6] ; loc8
 
            call       SendSquad ; 000012E5
 
@@ -295692,7 +295692,7 @@ L000D8A4A: push       1
 
            pop
 
            push       0
 
            push       SP[1] ; loc10
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L000D8AB6
 
            push       0
 
            push       SP[1] ; loc10
 
@@ -296163,7 +296163,7 @@ L000D9046: push       1
 
            pop
 
            push       0
 
            push       SP[1] ; loc10
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L000D90B2
 
            push       0
 
            push       SP[1] ; loc10
 
@@ -377471,7 +377471,7 @@ TMENU_CUSTOMINPUT.ExitMenu:
 
            get_object
 
            push       1
 
            read       TMENU.me_Object ; [32d ; 20h]
 
-           call       MenuExit ; 00003D6D
 
+           call       ExitMenu ; 00003D6D
 
            pop
 
            push       0
 
            push       2210d ; 08A2h
 
@@ -396149,7 +396149,7 @@ L001270AC: push       SP[4] ; loc2
 
            if SP[0]=0 then jump L001270EE
 
            push       0
 
            push       SP[1] ; loc6
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L001270EE
 
            push       1
 
            jump       L001270F0
 
@@ -432693,7 +432693,7 @@ L00144040: push       SP[0] ; loc2
 
            if SP[0]=0 then jump L0014407C
 
            push       0
 
            push       SP[1] ; loc3
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L0014407C
 
            push       1
 
            jump       L0014407E
 
@@ -495324,7 +495324,7 @@ L00173C16: push       0
 
            push       0
 
            push       0
 
            read       TQUEST_005.qq_gShip ; [18d ; 12h]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            mov        SP[1],SP[0] ; loc2
 
            pop
 
            push       SP[0] ; loc2
 
@@ -495348,7 +495348,7 @@ L00173C16: push       0
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       1
 
            read       TQUEST_005.qq_gShip ; [18d ; 12h]
 
            call       SetSafePos ; 000025B7
 
@@ -500391,12 +500391,12 @@ L00177D6C: push       700d ; 02BCh
 
            pop
 
            push       0
 
            read       TQUEST_018.qq_gStartAtGate ; [16d ; 10h]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       0
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetSafePos ; 000010B9
 
            pop
 
@@ -505850,7 +505850,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetShield ; 00001068
 
            pop
 
@@ -505884,7 +505884,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetExtraSpeed ; 000017E9
 
            pop
 
@@ -505902,7 +505902,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetExtraRotSpeed ; 000017FA
 
            pop
 
@@ -505947,7 +505947,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            call       Activate ; 00000E6A
 
            pop
 
            push       0
 
@@ -506372,7 +506372,7 @@ L0017C962: push       0
 
            if SP[0]=0 then jump L0017C9C2
 
            push       0
 
            read       TQUEST_036.qq_gNear_Obj_Pos ; [38d ; 26h]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       SP[2] ; loc3
 
            push       2
 
            callasm    SA_SetSafePos ; 000010B9
 
@@ -517860,7 +517860,7 @@ L00185870: push       0
 
            callasm    SA_GetShipTypeMaxShieldType ; 0000169D
 
            push       2
 
            push       SP[4] ; loc2
 
-           call       addshield ; 00005436
 
+           call       AddShield ; 00005436
 
            pop
 
            push       7
 
            readvar    global.ga_Races ; [18d ; 12h]
 
@@ -519888,7 +519888,7 @@ L001872CA: push       0
 
            callasm    SA_GetShipTypeMaxShieldType ; 0000169D
 
            push       2
 
            push       SP[3] ; loc2
 
-           call       addshield ; 00005436
 
+           call       AddShield ; 00005436
 
            pop
 
            push       3
 
            readvar    global.ga_Races ; [18d ; 12h]
 
@@ -527839,7 +527839,7 @@ L0018D694: push       0
 
            if SP[0]=0 then jump L0018D6C2
 
            push       0
 
            push       SP[1] ; loc8
 
-           call       GetEnviroment ; 000055A2
 
+           call       GetEnvironment ; 000055A2
 
            mov        SP[1],SP[0] ; loc8
 
            pop
 
            jump       L0018D694
 
@@ -530855,7 +530855,7 @@ L0018FD18: push       0
 
            if SP[0]=0 then jump L0018FD40
 
            push       0
 
            get_object
 
-           call       OffertextParty ; 000055D8
 
+           call       OfferTextParty ; 000055D8
 
            ret
 
 
 
 L0018FD40: push       0
 
@@ -530879,7 +530879,7 @@ L0018FD64: push       0
 
            if SP[0]=0 then jump L0018FD8C
 
            push       0
 
            get_object
 
-           call       OffertextParty ; 000055D8
 
+           call       OfferTextParty ; 000055D8
 
            ret
 
 
 
 L0018FD8C: push       0
 
@@ -530980,7 +530980,7 @@ L0018FEAC: push       0
 
            if SP[0]=0 then jump L0018FED4
 
            push       0
 
            get_object
 
-           call       OffertextParty ; 000055D8
 
+           call       OfferTextParty ; 000055D8
 
            ret
 
 
 
 L0018FED4: push       0
 
@@ -535503,7 +535503,7 @@ L001936B2: push       0
 
            push       SP[2] ; loc6
 
            push       2
 
            push       SP[13d] ; arg1
 
-           call       AddMaxRockets ; 00005638
 
+           call       AddMaxRocket ; 00005638
 
            pop
 
            push       0
 
            pop
 
@@ -541697,7 +541697,7 @@ L0019822E: push       -5000d ; 0EC78h
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       SP[3] ; loc1
 
            push       3
 
            callasm    SA_SetRelation ; 00005629
 
@@ -548036,7 +548036,7 @@ L0019CEEA: if SP[0]=0 then jump L0019CF6A
 
            pop
 
 L0019CF2E: push       0
 
            get_object
 
-           call       AbortMenu ; 00005661
 
+           call       Destruct ; 00005661
 
            pop
 
            push       0
 
            write      TQUEST.qu_Priority ; [1] | 
	 
 
 
 
 | 
 
 
        	  | 
		 
		
		| 
		
		 | 
         
     |  
	
		KWON
   409 EGP
      Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171  Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
       | 
         | 
		Здравствуйте.
 
 
	  | Non : | 
	 
	
	  | 
Пытаюсь пересобрать обж XT полностью, чтобы можно было пожоще откорректировать через XC.
 | 
	 
 
 
Класс! Будем ждать хороших новостей.
 
 
Мои поздравления с Избранием достойного и талантливого Модератора!   
 
 
Решил поделиться достижениями Модератора Non    
 
благосклонно откликнувшемуся на мои прошения.
 
 
Я добавил Лаунчер для снижения возни с переименованиями и удалениями файлов.
 
 
Работа одного из примеров тестирования патчера:
 
 
1. Разместить в корне игры около исполняемого файла X-Tension.exe содержимое папки "xt_obj_patching":
 
- директории: "inc" и "tools";
 
- файлы: patch.cmd, cleanup.cmd, patch.asm, patch.xc;
 
- X_Launcher.exe.
 
2. Также Ваш 001.obj нужно из папки |L| поместить около патчера patch.cmd.
 
3. Запустить лаунчер.
 
Нажать кнопки [Start] и потом [Finish].
 
Он сам переименует и перебросит новые файлы в папку |L|.
 
4. Всё запускайте игру, тестируйте.
 
Ваши обжи не пострадают а будут переименованы в 001.obj.BackUp и 001.pch.BackUp
 
 
Там в файле "patch.xc" такие достижения которых нельзя достичь редактором карт:
 
- Добавление недоступных кораблей.
 
- Присваивание команд поведения кораблей.
 
- Кораблям Ксенона можно поставить расу Аргона и такие подобные изменения.
 
- В трюм корабля можно добавить любое содержимое.
 
- Разбрасывание мин и лазерных башен от вражеских рас в любой сектор.
 
- Запуск Большого количества НЛО по всей карте,
 
при их сбивании можно получать различные ракеты.
 
 
Я так вижу возможности патчера пилота Non безграничны,
 
правда, для математически одаренных,
 
а я выступаю только в роли подачи идей    .
	
  
	
	
		| XT_obj_patching_Non_V2.7z | 
	 
	
		|  Описание: | 
		
			
			
				| Тестовые примеры редактирования карты от  модератора Non, версия-2 | 
			 
			 
		 | 
	 
	
		|  Имя файла: | 
		 XT_obj_patching_Non_V2.7z | 
	 
	
		|  Размер файла: | 
		 755.69 KB | 
	 
	
		|  Скачано: | 
		 648 раз(а) | 
	 
	 
	
	
		| xt_obj_patching_Non.7z | 
	 
	
		|  Описание: | 
		
			
			
				| Тестовые примеры редактирования карты от  пилота Non | 
			 
			 
		 | 
	 
	
		|  Имя файла: | 
		 xt_obj_patching_Non.7z | 
	 
	
		|  Размер файла: | 
		 654.59 KB | 
	 
	
		|  Скачано: | 
		 639 раз(а) | 
	 
	 
        	 _________________ Следи за собой, будь осторожен. В.Цой 
  Последний раз редактировалось: KWON (21:48 25-02-2018), всего редактировалось 1 раз | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Вы вроде читали readme.html?   Там написано, чтобы patch.cmd автоматически закидывал обжи в папку с игрой после компиляции - нужно раскоментировать в patch.cmd строки копирования файлов и указать в начале папку с игрой.  
 
 
	
 Что раскоментировать в patch.cmd???7       (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  @echo off
 
 
REM ============================================================================
 
REM                 Укажите путь к папке с игрой по примеру
 
REM ============================================================================
 
set x_tension_path=D:\games\x-tension <--- Здесь указать папку с игрой
 
 
 
if exist patch.xc (
 
  tools\xc.exe patch.xc
 
)
 
 
if exist patch.asm (
 
  tools\xa_asm.exe patch.asm
 
)
 
 
if exist patch.cod (
 
  tools\gpth.exe patch.cod
 
  del patch.cod
 
)
 
 
if exist patchfix.obj (
 
  REM move "patchfix.obj" "%x_tension_path%\l\001.obj" <--- Вот эти
 
  REM move "patchfix.pch" "%x_tension_path%\l\001.pch" <--- Убрать REM
 
) | 
	 
 
 
 
 | 
 
 
 
 
Лучше помогите разобраться с последними двумя ошибками.
 
 
SetLatency был оказывается нужен для сетевой игры, которая не реализована.
 
А Debug тоже в принципе не нужен для обычной игры.
 
Удалил соответствующий код и осталось только две ошибки в, как мне кажется, критичной для игры функции TMENU_QUESTS.SpecialUpdate()
 
 
Там два вызова локальной функции IsDisabled, которая видимо после нескольких обж-патчей от ES перестала существовать. Я её упоминания нигде не нашёл.
 
 
Код 0057 000043AF. И вот этого адреса перехода 000043AF нигде нет, только в двух местах вызова. Как это должно у них работать...   
 
 
	| 
 
 Код функции TMENU_QUESTS.SpecialUpdate   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  ;
 
; === SpecialUpdate =============================================
 
; procedure TMENU_QUESTS.SpecialUpdate();
 
;
 
                                 |      TMENU_QUESTS.SpecialUpdate:
 
0011D120: 0055 0012              |    0            setmem     18d ; 12h
 
0011D124: 0009                   |    0            push       0
 
0011D126: 0009                   |    1            push       0
 
0011D128: 0009                   |    2            push       0
 
0011D12A: 0009                   |    3            push       0
 
0011D12C: 0009                   |    4            push       0
 
0011D12E: 0009                   |    5            push       0
 
0011D130: 0009                   |    6            push       0
 
0011D132: 0006 000B              |    7            read       TMENU.me_FirstLineInfo ; [11d ; 0Bh]
 
0011D136: 0005 0001              |    8            push       SP[0] ; loc8
 
0011D13A: 0006 000D              |    9            read       TMENU.me_PageLinesInfo ; [13d ; 0Dh]
 
0011D13E: 003E                   |   10            add        SP[0],SP[1]
 
0011D140: 000A                   |    9            push       1
 
0011D142: 003F                   |   10            sub        SP[0],SP[1]
 
0011D144: 0005 0002              |    9            push       SP[1] ; loc8
 
0011D148: 0033 0008E8A7          |   10            if SP[0]=0 then jump L0011D156
 
0011D14E: 000A                   |    9            push       1
 
0011D150: 0031 0008E8A8          |   10            jump       L0011D158
 
 
0011D156: 0009                   |    9 L0011D156: push       0
 
0011D158: 003F                   |   10 L0011D158: sub        SP[0],SP[1]
 
0011D15A: 0005 0002              |    9            push       SP[1] ; loc8
 
0011D15E: 0009                   |   10            push       0
 
0011D160: 004B                   |   11            if SP[0]>=SP[1] then push 0 else push 1
 
0011D162: 0033 0008E8CD          |   10            if SP[0]=0 then jump L0011D1A2
 
0011D168: 0005 0003              |    9            push       SP[2] ; loc7
 
0011D16C: 0006 0040              |   10            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D170: 0040                   |   11            mul        SP[0],SP[1]
 
0011D172: 0006 003F              |   10            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D176: 003E                   |   11            add        SP[0],SP[1]
 
0011D178: 0006 0041              |   10            read       TMENU.me_XOff ; [65d ; 41h]
 
0011D17C: 0001 026D              |   11            push       621d ; 026Dh
 
0011D180: 000A                   |   12            push       1
 
0011D182: 005A 000002FD          |   13            callasm    SE_ReadText ; 000002FD
 
0011D188: 000C                   |   12            push       3
 
0011D18A: 003C                   |   13            get_object
 
0011D18C: 0057 00003523          |   14            call       TMENU.ShowText1 ; 00003523
 
0011D192: 002C                   |   10            pop
 
0011D194: 0005 0003              |    9            push       SP[2] ; loc7
 
0011D198: 000A                   |   10            push       1
 
0011D19A: 003E                   |   11            add        SP[0],SP[1]
 
0011D19C: 002A 0004              |   10            mov        SP[3],SP[0] ; loc7
 
0011D1A0: 002C                   |   10            pop
 
0011D1A2: 0009                   |    9 L0011D1A2: push       0
 
0011D1A4: 0001 0BB9              |   10            push       3001d ; 0BB9h
 
0011D1A8: 0059 000B2673 00004394 |   11            call59     TQUESTMASTER.GetNumQuests ;
 
0011D1B2: 0009                   |   10            push       0
 
0011D1B4: 000A                   |   11            push       1
 
0011D1B6: 002A 0002              |   12            mov        SP[1],SP[0] ; loc11
 
0011D1BA: 002C                   |   12            pop
 
0011D1BC: 0005 0001              |   11 L0011D1BC: push       SP[0] ; loc11
 
0011D1C0: 0005 0003              |   12            push       SP[2] ; loc10
 
0011D1C4: 004C                   |   13            if SP[0]<SP[1] then push 0 else push 1
 
0011D1C6: 0033 0008EA23          |   12            if SP[0]=0 then jump L0011D44E
 
0011D1CC: 0031 0008E8EF          |   11            jump       L0011D1E6
 
 
0011D1D2: 0005 0001              |   11 L0011D1D2: push       SP[0] ; loc11
 
0011D1D6: 000A                   |   12            push       1
 
0011D1D8: 003E                   |   13            add        SP[0],SP[1]
 
0011D1DA: 002A 0002              |   12            mov        SP[1],SP[0] ; loc11
 
0011D1DE: 002C                   |   12            pop
 
0011D1E0: 0031 0008E8DA          |   11            jump       L0011D1BC
 
 
0011D1E6: 0001 0FA0              |   11 L0011D1E6: push       4000d ; 0FA0h
 
0011D1EA: 0005 0002              |   12            push       SP[1] ; loc11
 
0011D1EE: 003E                   |   13            add        SP[0],SP[1]
 
0011D1F0: 000A                   |   12            push       1
 
0011D1F2: 005A 0000041F          |   13            callasm    SE_ObjectExists ; 0000041F
 
0011D1F8: 0033 0008EA20          |   12            if SP[0]=0 then jump L0011D448
 
0011D1FE: 0005 000B              |   11            push       SP[10d] ; loc1
 
0011D202: 0005 0005              |   12            push       SP[4] ; loc8
 
0011D206: 004D                   |   13            if SP[0]>SP[1] then push 0 else push 1
 
0011D208: 0033 0008E90F          |   12            if SP[0]=0 then jump L0011D226
 
0011D20E: 0005 000B              |   11            push       SP[10d] ; loc1
 
0011D212: 0005 0004              |   12            push       SP[3] ; loc9
 
0011D216: 004C                   |   13            if SP[0]<SP[1] then push 0 else push 1
 
0011D218: 0033 0008E90F          |   12            if SP[0]=0 then jump L0011D226
 
0011D21E: 000A                   |   11            push       1
 
0011D220: 0031 0008E910          |   12            jump       L0011D228
 
 
0011D226: 0009                   |   11 L0011D226: push       0
 
0011D228: 0033 0008EA19          |   12 L0011D228: if SP[0]=0 then jump L0011D43A
 
0011D22E: 0005 000B              |   11            push       SP[10d] ; loc1
 
0011D232: 0006 0015              |   12            read       TMENU.me_SelectedLine ; [21d ; 15h]
 
0011D236: 004F                   |   13            if SP[0]<>SP[1] then push 0 else push 1
 
0011D238: 0033 0008E949          |   12            if SP[0]=0 then jump L0011D29A
 
0011D23E: 000A                   |   11            push       1
 
0011D240: 0006 0040              |   12            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D244: 0001 0100              |   13            push       256d ; 0100h
 
0011D248: 0005 0008              |   14            push       SP[7] ; loc7
 
0011D24C: 0006 0040              |   15            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D250: 0040                   |   16            mul        SP[0],SP[1]
 
0011D252: 0006 003F              |   15            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D256: 003E                   |   16            add        SP[0],SP[1]
 
0011D258: 0009                   |   15            push       0
 
0011D25A: 000E                   |   16            push       5
 
0011D25C: 003C                   |   17            get_object
 
0011D25E: 0057 00003419          |   18            call       ShowRect ; 00003419
 
0011D264: 002C                   |   12            pop
 
0011D266: 000A                   |   11            push       1
 
0011D268: 0006 0040              |   12            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D26C: 0001 0080              |   13            push       128d ; 80h
 
0011D270: 0005 0008              |   14            push       SP[7] ; loc7
 
0011D274: 0006 0040              |   15            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D278: 0040                   |   16            mul        SP[0],SP[1]
 
0011D27A: 0006 003F              |   15            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D27E: 003E                   |   16            add        SP[0],SP[1]
 
0011D280: 0001 0100              |   15            push       256d ; 0100h
 
0011D284: 000E                   |   16            push       5
 
0011D286: 003C                   |   17            get_object
 
0011D288: 0057 00003419          |   18            call       ShowRect ; 00003419
 
0011D28E: 002C                   |   12            pop
 
0011D290: 0005 0001              |   11            push       SP[0] ; loc11
 
0011D294: 002B 0044              |   12            write      TMENU_QUESTS.meq_SelectedQuestID ; [68d ; 44h]
 
0011D298: 002C                   |   12            pop
 
0011D29A: 0009                   |   11 L0011D29A: push       0
 
0011D29C: 000A                   |   12            push       1
 
0011D29E: 0001 0FA0              |   13            push       4000d ; 0FA0h
 
0011D2A2: 0005 0004              |   14            push       SP[3] ; loc11
 
0011D2A6: 003E                   |   15            add        SP[0],SP[1]
 
0011D2A8: 0057 00003D9A          |   14            call       TQUEST.GetTextID ; 00003D9A
 
0011D2AE: 000A                   |   12            push       1
 
0011D2B0: 005A 000002FD          |   13            callasm    SE_ReadText ; 000002FD
 
0011D2B6: 0056 000043A1          |   12            get_strg   S00043A1 ;  ; "%-35s"
 
0011D2BC: 000B                   |   13            push       2
 
0011D2BE: 005A 000003C2          |   14            callasm    SE_SPrintf ; 000003C2
 
0011D2C4: 002A 000B              |   12            mov        SP[10d],SP[0] ; loc2
 
0011D2C8: 002C                   |   12            pop
 
0011D2CA: 0006 0015              |   11            read       TMENU.me_SelectedLine ; [21d ; 15h]
 
0011D2CE: 0005 000C              |   12            push       SP[11d] ; loc1
 
0011D2D2: 004F                   |   13            if SP[0]<>SP[1] then push 0 else push 1
 
0011D2D4: 0005 0006              |   12            push       SP[5] ; loc7
 
0011D2D8: 0006 0040              |   13            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D2DC: 0040                   |   14            mul        SP[0],SP[1]
 
0011D2DE: 0006 003F              |   13            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D2E2: 003E                   |   14            add        SP[0],SP[1]
 
0011D2E4: 0006 0041              |   13            read       TMENU.me_XOff ; [65d ; 41h]
 
0011D2E8: 0005 000D              |   14            push       SP[12d] ; loc2
 
0011D2EC: 000D                   |   15            push       4
 
0011D2EE: 003C                   |   16            get_object
 
0011D2F0: 0057 00003008          |   17            call       ShowText ; 00003008
 
0011D2F6: 002C                   |   12            pop
 
0011D2F8: 0009                   |   11            push       0
 
0011D2FA: 0001 0FA0              |   12            push       4000d ; 0FA0h
 
0011D2FE: 0005 0003              |   13            push       SP[2] ; loc11
 
0011D302: 003E                   |   14            add        SP[0],SP[1]
 
0011D304: 0057 00003E3B          |   13            call       TQUEST.GetPriority ; 00003E3B
 
0011D30A: 0005 0002              |   12            push       SP[1] ; loc11
 
0011D30E: 0056 000043A7          |   13            get_strg   S00043A7 ;  ; "%3d %3d"
 
0011D314: 000C                   |   14            push       3
 
0011D316: 005A 000003C2          |   15            callasm    SE_SPrintf ; 000003C2
 
0011D31C: 002A 000B              |   12            mov        SP[10d],SP[0] ; loc2
 
0011D320: 002C                   |   12            pop
 
0011D322: 0006 0015              |   11            read       TMENU.me_SelectedLine ; [21d ; 15h]
 
0011D326: 0005 000C              |   12            push       SP[11d] ; loc1
 
0011D32A: 004F                   |   13            if SP[0]<>SP[1] then push 0 else push 1
 
0011D32C: 0005 0006              |   12            push       SP[5] ; loc7
 
0011D330: 0006 0040              |   13            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D334: 0040                   |   14            mul        SP[0],SP[1]
 
0011D336: 0006 003F              |   13            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D33A: 003E                   |   14            add        SP[0],SP[1]
 
0011D33C: 0001 0100              |   13            push       256d ; 0100h
 
0011D340: 0006 0041              |   14            read       TMENU.me_XOff ; [65d ; 41h]
 
0011D344: 003E                   |   15            add        SP[0],SP[1]
 
0011D346: 0005 000D              |   14            push       SP[12d] ; loc2
 
0011D34A: 000D                   |   15            push       4
 
0011D34C: 003C                   |   16            get_object
 
0011D34E: 0057 00003008          |   17            call       ShowText ; 00003008
 
0011D354: 002C                   |   12            pop
 
0011D356: 0005 000A              |   11            push       SP[9] ; loc2
 
0011D35A: 000A                   |   12            push       1
 
0011D35C: 005A 00000DD2          |   13            callasm    SE_FreeString ; 00000DD2
 
0011D362: 002C                   |   12            pop
 
0011D364: 0009                   |   11            push       0
 
0011D366: 0001 0FA0              |   12            push       4000d ; 0FA0h
 
0011D36A: 0005 0003              |   13            push       SP[2] ; loc11
 
0011D36E: 003E                   |   14            add        SP[0],SP[1]
 
0011D370: 0057 000043AF          |   13            call       IsDisabled ; 000043AF
 
0011D376: 0033 0008E9BF          |   12            if SP[0]=0 then jump L0011D386
 
0011D37C: 0001 0044              |   11            push       68d ; 44h
 
0011D380: 0031 0008E9C1          |   12            jump       L0011D38A
 
 
0011D386: 0001 0045              |   11 L0011D386: push       69d ; 45h
 
0011D38A: 0005 0002              |   12 L0011D38A: push       SP[1] ; loc11
 
0011D38E: 0009                   |   13            push       0
 
0011D390: 0001 0BB9              |   14            push       3001d ; 0BB9h
 
0011D394: 0059 000B266C 00002CD4 |   15            call59     TQUESTMASTER.GetCurrentQuest ;
 
0011D39E: 004F                   |   14            if SP[0]<>SP[1] then push 0 else push 1
 
0011D3A0: 0033 0008E9D4          |   13            if SP[0]=0 then jump L0011D3B0
 
0011D3A6: 0001 002A              |   12            push       42d ; 2Ah
 
0011D3AA: 0031 0008E9E7          |   13            jump       L0011D3D6
 
 
0011D3B0: 0009                   |   12 L0011D3B0: push       0
 
0011D3B2: 0001 0FA0              |   13            push       4000d ; 0FA0h
 
0011D3B6: 0005 0004              |   14            push       SP[3] ; loc11
 
0011D3BA: 003E                   |   15            add        SP[0],SP[1]
 
0011D3BC: 0057 00003EA4          |   14            call       Evaluate ; 00003EA4
 
0011D3C2: 0033 0008E9E5          |   13            if SP[0]=0 then jump L0011D3D2
 
0011D3C8: 0001 002B              |   12            push       43d ; 2Bh
 
0011D3CC: 0031 0008E9E7          |   13            jump       L0011D3D6
 
 
0011D3D2: 0001 002D              |   12 L0011D3D2: push       45d ; 2Dh
 
0011D3D6: 0056 000043BA          |   13 L0011D3D6: get_strg   S00043BA ;  ; "%c %c"
 
0011D3DC: 000C                   |   14            push       3
 
0011D3DE: 005A 000003C2          |   15            callasm    SE_SPrintf ; 000003C2
 
0011D3E4: 002A 000B              |   12            mov        SP[10d],SP[0] ; loc2
 
0011D3E8: 002C                   |   12            pop
 
0011D3EA: 0006 0015              |   11            read       TMENU.me_SelectedLine ; [21d ; 15h]
 
0011D3EE: 0005 000C              |   12            push       SP[11d] ; loc1
 
0011D3F2: 004F                   |   13            if SP[0]<>SP[1] then push 0 else push 1
 
0011D3F4: 0005 0006              |   12            push       SP[5] ; loc7
 
0011D3F8: 0006 0040              |   13            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D3FC: 0040                   |   14            mul        SP[0],SP[1]
 
0011D3FE: 0006 003F              |   13            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D402: 003E                   |   14            add        SP[0],SP[1]
 
0011D404: 0001 0140              |   13            push       320d ; 0140h
 
0011D408: 0006 0041              |   14            read       TMENU.me_XOff ; [65d ; 41h]
 
0011D40C: 003E                   |   15            add        SP[0],SP[1]
 
0011D40E: 0005 000D              |   14            push       SP[12d] ; loc2
 
0011D412: 000D                   |   15            push       4
 
0011D414: 003C                   |   16            get_object
 
0011D416: 0057 00003008          |   17            call       ShowText ; 00003008
 
0011D41C: 002C                   |   12            pop
 
0011D41E: 0005 000A              |   11            push       SP[9] ; loc2
 
0011D422: 000A                   |   12            push       1
 
0011D424: 005A 00000DD2          |   13            callasm    SE_FreeString ; 00000DD2
 
0011D42A: 002C                   |   12            pop
 
0011D42C: 0005 0005              |   11            push       SP[4] ; loc7
 
0011D430: 000A                   |   12            push       1
 
0011D432: 003E                   |   13            add        SP[0],SP[1]
 
0011D434: 002A 0006              |   12            mov        SP[5],SP[0] ; loc7
 
0011D438: 002C                   |   12            pop
 
0011D43A: 0005 000B              |   11 L0011D43A: push       SP[10d] ; loc1
 
0011D43E: 000A                   |   12            push       1
 
0011D440: 003E                   |   13            add        SP[0],SP[1]
 
0011D442: 002A 000C              |   12            mov        SP[11d],SP[0] ; loc1
 
0011D446: 002C                   |   12            pop
 
0011D448: 0031 0008E8E5          |   11 L0011D448: jump       L0011D1D2
 
 
0011D44E: 0005 000B              |   11 L0011D44E: push       SP[10d] ; loc1
 
0011D452: 0005 0004              |   12            push       SP[3] ; loc9
 
0011D456: 000A                   |   13            push       1
 
0011D458: 003E                   |   14            add        SP[0],SP[1]
 
0011D45A: 004B                   |   13            if SP[0]>=SP[1] then push 0 else push 1
 
0011D45C: 0033 0008EA84          |   12            if SP[0]=0 then jump L0011D510
 
0011D462: 0005 0005              |   11            push       SP[4] ; loc7
 
0011D466: 000A                   |   12            push       1
 
0011D468: 003F                   |   13            sub        SP[0],SP[1]
 
0011D46A: 002A 0006              |   12            mov        SP[5],SP[0] ; loc7
 
0011D46E: 002C                   |   12            pop
 
0011D470: 0006 0040              |   11            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D474: 0001 0100              |   12            push       256d ; 0100h
 
0011D478: 0005 0007              |   13            push       SP[6] ; loc7
 
0011D47C: 0006 0040              |   14            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D480: 0040                   |   15            mul        SP[0],SP[1]
 
0011D482: 0006 003F              |   14            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D486: 003E                   |   15            add        SP[0],SP[1]
 
0011D488: 0009                   |   14            push       0
 
0011D48A: 000D                   |   15            push       4
 
0011D48C: 003C                   |   16            get_object
 
0011D48E: 0057 0000364B          |   17            call       ShowRect3 ; 0000364B
 
0011D494: 002C                   |   12            pop
 
0011D496: 0006 0040              |   11            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D49A: 0001 0080              |   12            push       128d ; 80h
 
0011D49E: 0005 0007              |   13            push       SP[6] ; loc7
 
0011D4A2: 0006 0040              |   14            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D4A6: 0040                   |   15            mul        SP[0],SP[1]
 
0011D4A8: 0006 003F              |   14            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D4AC: 003E                   |   15            add        SP[0],SP[1]
 
0011D4AE: 0001 0100              |   14            push       256d ; 0100h
 
0011D4B2: 000D                   |   15            push       4
 
0011D4B4: 003C                   |   16            get_object
 
0011D4B6: 0057 0000364B          |   17            call       ShowRect3 ; 0000364B
 
0011D4BC: 002C                   |   12            pop
 
0011D4BE: 0001 026E              |   11            push       622d ; 026Eh
 
0011D4C2: 000A                   |   12            push       1
 
0011D4C4: 005A 000002FD          |   13            callasm    SE_ReadText ; 000002FD
 
0011D4CA: 002A 000B              |   12            mov        SP[10d],SP[0] ; loc2
 
0011D4CE: 002C                   |   12            pop
 
0011D4D0: 000A                   |   11            push       1
 
0011D4D2: 000C                   |   12            push       3
 
0011D4D4: 0005 000C              |   13            push       SP[11d] ; loc2
 
0011D4D8: 000C                   |   14            push       3
 
0011D4DA: 005A 00003081          |   15            callasm    SA_MatTextWidth ; 00003081
 
0011D4E0: 002A 0008              |   12            mov        SP[7],SP[0] ; loc5
 
0011D4E4: 002C                   |   12            pop
 
0011D4E6: 0005 0005              |   11            push       SP[4] ; loc7
 
0011D4EA: 0006 0040              |   12            read       TMENU.me_YSpacing ; [64d ; 40h]
 
0011D4EE: 0040                   |   13            mul        SP[0],SP[1]
 
0011D4F0: 0006 003F              |   12            read       TMENU.me_YOff ; [63d ; 3Fh]
 
0011D4F4: 003E                   |   13            add        SP[0],SP[1]
 
0011D4F6: 0001 017E              |   12            push       382d ; 017Eh
 
0011D4FA: 0005 0009              |   13            push       SP[8] ; loc5
 
0011D4FE: 003F                   |   14            sub        SP[0],SP[1]
 
0011D500: 0005 000C              |   13            push       SP[11d] ; loc2
 
0011D504: 000C                   |   14            push       3
 
0011D506: 003C                   |   15            get_object
 
0011D508: 0057 00003523          |   16            call       TMENU.ShowText1 ; 00003523
 
0011D50E: 002C                   |   12            pop
 
0011D510: 0005 000B              |   11 L0011D510: push       SP[10d] ; loc1
 
0011D514: 002B 000C              |   12            write      TMENU.me_TotalLinesInfo ; [12d ; 0Ch]
 
0011D518: 002C                   |   12            pop
 
0011D51A: 0005 000B              |   11            push       SP[10d] ; loc1
 
0011D51E: 002A 000C              |   12            mov        SP[11d],SP[0] ; loc1
 
0011D522: 002E 000B              |   12            popx       11d ; 0Bh
 
0011D526: 0035                   |    1            ret
 
 
0011D528: 002E 000B              |                 popx       11d ; 0Bh
 
0011D52C: 0009                   |                 push       0
 
0011D52E: 0035                   |                 ret | 
	 
 
 
 
 | 
 
 
 
 
	| 
 
 Изменения asm файла   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  diff --git a/001.asm b/001_fixed.asm
 
index 0039992..19798b0 100644
 
--- a/001.asm
 
+++ b/001_fixed.asm
 
@@ -1,12 +1,11 @@
 
 ; --- Decompiler OBJ files. Version x03.29b (XBTF/XT/X2/X3).
 
 ; --- (c) 2005-2011, DF, Blueboar, Shaddie, CheckerTwo
 
-; --- Generated from 001.obj,  01.02.2018 5:23:59
 
+; --- Generated from 001.obj,  01.02.2018 3:45:27
 
 ; --- Script XT compiled: 28.04.2001 13:41:59
 
 ; 
 
            .title     001.obj
 
            .ident     XT
 
            .radix     10d
 
-           .loadobj   "001.obj"
 
            .extern    B3D_InstAddToScene, B3D_InstAlloc, B3D_InstDeleteFromScene
 
            .extern    B3D_InstFree, B3D_InstGetFlags, B3D_InstSetBody, B3D_InstSetFlags
 
            .extern    B3D_InstSetInvis, B3D_InstSetOverrideEffect, B3D_InstSetPos
 
@@ -45261,7 +45260,7 @@ TX_AUDIO.LoopMusic:
 
            push       0
 
            push       0
 
            get_object
 
-           call       GetModVolume ; 00009F0C
 
+           call       GetMODVolume ; 00009F0C
 
            push       5
 
            if SP[0]<SP[1] then push 0 else push 1
 
            if SP[0]=0 then jump L0002B3E2
 
@@ -45843,7 +45842,7 @@ L0002BA30: push       0
 
            call       GetEnvironment ; 00001192
 
            push       0
 
            get_object
 
-           call       GetModVolume ; 00009F0C
 
+           call       GetMODVolume ; 00009F0C
 
            push       5
 
            if SP[0]<SP[1] then push 0 else push 1
 
            if SP[0]=0 then jump L0002BA64
 
@@ -53027,7 +53026,7 @@ L00031318: push       SP[0] ; loc2
 
            get_from_array
 
            push       0
 
            push       SP[1] ; loc3
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L000314F0
 
            push       0
 
            push       SP[1] ; loc3
 
@@ -53311,7 +53310,7 @@ L00031664: push       SP[0] ; loc2
 
            get_from_array
 
            push       0
 
            push       SP[1] ; loc3
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            push       0
 
            if SP[0]<>SP[1] then push 0 else push 1
 
            if SP[0]<>0 then jump L000316AA
 
@@ -271815,7 +271814,7 @@ TSHIP_M0.SetDisowned:
 
            if SP[0]=0 then jump L000C6AB2
 
            push       0
 
            push       SP[4] ; arg1
 
-           call       GetSerial ; 0000207D
 
+           call       GetID ; 0000207D
 
            push       0
 
            push       SP[1] ; loc1
 
            read       TSHIP_M0.shm0_Guns ; [60d ; 3Ch]
 
@@ -292384,7 +292383,7 @@ L000D6182: push       SP[24d] ; arg1
 
 
 
 L000D619E: push       0
 
            read       TRACE.ra_CampaignAmbassador ; [15d ; 0Fh]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            mov        SP[2],SP[0] ; loc20
 
            pop
 
            push       SP[1] ; loc20
 
@@ -292778,7 +292777,7 @@ TRACE.CampaignCheck:
 
            push       0
 
            push       SP[2] ; loc1
 
            call       GetOwner ; 0000035D
 
-           call       getID ; 00002506
 
+           call       GetID ; 00002506
 
            read       TRACE.ra_ID ; [1]
 
            if SP[0]=SP[1] then push 0 else push 1
 
            if SP[0]=0 then jump L000D66D0
 
@@ -294621,7 +294620,7 @@ L000D7E70: push       SP[0] ; loc11
 
            pop
 
            push       0
 
            push       SP[2] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            if SP[0]=0 then jump L000D7ED6
 
            push       0
 
            push       0
 
@@ -294643,7 +294642,7 @@ L000D7EE4: jump       L000D7E70
 
 L000D7EEA: push       SP[5] ; loc6
 
            push       0
 
            push       SP[3] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            push       SP[6] ; loc8
 
            call       SendSquad ; 000012E5
 
@@ -294690,7 +294689,7 @@ L000D7F6A: push       SP[0] ; loc11
 
            pop
 
            push       0
 
            push       SP[2] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            if SP[0]=0 then jump L000D7FD0
 
            push       0
 
            push       0
 
@@ -294712,7 +294711,7 @@ L000D7FDE: jump       L000D7F6A
 
 L000D7FE4: push       SP[5] ; loc6
 
            push       0
 
            push       SP[3] ; loc10
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            push       SP[6] ; loc8
 
            call       SendSquad ; 000012E5
 
@@ -295693,7 +295692,7 @@ L000D8A4A: push       1
 
            pop
 
            push       0
 
            push       SP[1] ; loc10
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L000D8AB6
 
            push       0
 
            push       SP[1] ; loc10
 
@@ -296164,7 +296163,7 @@ L000D9046: push       1
 
            pop
 
            push       0
 
            push       SP[1] ; loc10
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L000D90B2
 
            push       0
 
            push       SP[1] ; loc10
 
@@ -302716,38 +302715,7 @@ TCLIENT.Init:
 
            push       0
 
            write      TCLIENT.cl_DockingHangar ; [52d ; 34h]
 
            pop
 
-           readvar    global.ga_IsNetworkActive ; [23d ; 17h]
 
-           if SP[0]=0 then jump L000DDBC4
 
-           readvar    global.ga_IsServer ; [19d ; 13h]
 
-           if SP[0]=0 then push 1 else push 0
 
-           if SP[0]=0 then jump L000DDB6E
 
-           push       0
 
-           pop
 
-L000DDB6E: push       SP[3] ; arg1
 
-           push       1
 
-           callasm    Net_CreatePlayer ; 00002822
 
-           writevar   global.ga_ClientID ; [22d ; 16h]
 
-           pop
 
-           readvar    global.ga_ClientID ; [22d ; 16h]
 
-           if SP[0]=0 then jump L000DDBBE
 
-           readvar    global.ga_ClientID ; [22d ; 16h]
 
-           push       1
 
-           callasm    Net_GetPlayerName ; 00002833
 
-           readvar    global.ga_ClientID ; [22d ; 16h]
 
-           push       2
 
-           push       2009d ; 07D9h
 
-           create_object
 
-           call       TPLAYER.Create ; 000009BB
 
-           write      TCLIENT.cl_Player ; [1]
 
-           pop
 
-           push       0
 
            push       1
 
-           read       TCLIENT.cl_Player ; [1]
 
-           call       SetLatency ; 00002845
 
-           pop
 
-L000DDBBE: jump       L000DDBFA
 
-
 
-L000DDBC4: push       1
 
            writevar   global.ga_ClientID ; [22d ; 16h]
 
            pop
 
            push       SP[3] ; arg1
 
@@ -302765,7 +302733,7 @@ L000DDBC4: push       1
 
            pop
 
            push       0
 
            pop
 
-L000DDBFA: push       1
 
+           push       1
 
            write      TCLIENT.cl_New ; [3]
 
            pop
 
            push       0
 
@@ -313065,138 +313033,7 @@ L000E5EF2: push       SP[0] ; loc6
 
            if SP[0]<>SP[1] then push 0 else push 1
 
            if SP[0]=0 then jump L000E60CE
 
            pop
 
-L000E5F02: begin_critical
 
-           if SP[0]<>0 then jump L000E60BC
 
-           push       0
 
-           callasm    SA_GetTrackingAim ; 00001F8B
 
-           push       SP[0] ; loc6
 
-           if SP[0]=0 then jump L000E5F4A
 
-           push       SP[0] ; loc6
 
-           push       1
 
-           callasm    SA_GetEventObject ; 00000F28
 
-           push       SP[0] ; loc7
 
-           if SP[0]=0 then jump L000E5F40
 
-           push       0
 
-           push       SP[1] ; loc7
 
-           call       Debug ; 00002E20
 
-           pop
 
-L000E5F40: popx       1
 
-           jump       L000E60B6
 
-
 
-L000E5F4A: push       0
 
-           push       0
 
-           push       0
 
-           mov        SP[2],SP[0] ; loc7
 
-           pop
 
-L000E5F56: push       SP[1] ; loc7
 
-           push       20d ; 14h
 
-           if SP[0]<=SP[1] then push 0 else push 1
 
-           if SP[0]=0 then jump L000E60B2
 
-           jump       L000E5F7E
 
-
 
-L000E5F6A: push       SP[1] ; loc7
 
-           push       1
 
-           add        SP[0],SP[1]
 
-           mov        SP[2],SP[0] ; loc7
 
-           pop
 
-           jump       L000E5F56
 
-
 
-L000E5F7E: push       0
 
-           mov        SP[1],SP[0] ; loc8
 
-           pop
 
-L000E5F86: push       SP[0] ; loc8
 
-           push       10d ; 0Ah
 
-           if SP[0]<=SP[1] then push 0 else push 1
 
-           if SP[0]=0 then jump L000E60AC
 
-           jump       L000E5FAE
 
-
 
-L000E5F9A: push       SP[0] ; loc8
 
-           push       1
 
-           add        SP[0],SP[1]
 
-           mov        SP[1],SP[0] ; loc8
 
-           pop
 
-           jump       L000E5F86
 
-
 
-L000E5FAE: push       0
 
-           pop
 
-           push       0
 
-           push       SP[1] ; loc8
 
-           push       SP[3] ; loc7
 
-           readvar    global.ga_Sectors ; [17d ; 11h]
 
-           get_from_array
 
-           get_from_array
 
-           call       TSECTOR.GetFactories ; 00000BBF
 
-           push       0
 
-L000E5FCC: push       SP[0] ; loc10
 
-           push       SP[2] ; loc9
 
-           push       2
 
-           callasm    SE_TableNext ; 00000B48
 
-           mov        SP[1],SP[0] ; loc10
 
-           if SP[0]=0 then jump L000E6008
 
-           push       0
 
-           push       SP[1] ; loc10
 
-           call       TGBODY.DumpLog ; 00002E26
 
-           pop
 
-           push       0
 
-           push       1
 
-           push       2
 
-           callasm    P_Delay ; 000000C5
 
-           pop
 
-           jump       L000E5FCC
 
-
 
-L000E6008: push       0
 
-           push       SP[3] ; loc8
 
-           push       SP[5] ; loc7
 
-           readvar    global.ga_Sectors ; [17d ; 11h]
 
-           get_from_array
 
-           get_from_array
 
-           call       GetDocks ; 00000C04
 
-           push       0
 
-L000E6022: push       SP[0] ; loc12
 
-           push       SP[2] ; loc11
 
-           push       2
 
-           callasm    SE_TableNext ; 00000B48
 
-           mov        SP[1],SP[0] ; loc12
 
-           if SP[0]=0 then jump L000E60A2
 
-           push       0
 
-           push       SP[1] ; loc12
 
-           call       TGBODY.DumpLog ; 00002E26
 
-           pop
 
-           push       0
 
-           pop
 
-           push       0
 
-           push       SP[1] ; loc12
 
-           call       GetOwnedFreighters ; 00002E2E
 
-           push       0
 
-L000E605C: push       SP[0] ; loc14
 
-           push       SP[2] ; loc13
 
-           push       2
 
-           callasm    SE_TableNext ; 00000B48
 
-           mov        SP[1],SP[0] ; loc14
 
-           if SP[0]=0 then jump L000E608A
 
-           push       0
 
-           push       SP[1] ; loc14
 
-           call       TGBODY.DumpLog ; 00002E26
 
-           pop
 
-           jump       L000E605C
 
-
 
-L000E608A: push       0
 
            push       1
 
-           push       2
 
-           callasm    P_Delay ; 000000C5
 
-           pop
 
-           popx       2
 
-           jump       L000E6022
 
-
 
-L000E60A2: popx       4
 
-           jump       L000E5F9A
 
-
 
-L000E60AC: jump       L000E5F6A
 
-
 
-L000E60B2: popx       2
 
-L000E60B6: popx       1
 
-           end_critical
 
-L000E60BC: push       1
 
            mov        SP[5],SP[0] ; loc1
 
            popx       5
 
            ret
 
@@ -377472,7 +377309,7 @@ TMENU_CUSTOMINPUT.ExitMenu:
 
            get_object
 
            push       1
 
            read       TMENU.me_Object ; [32d ; 20h]
 
-           call       MenuExit ; 00003D6D
 
+           call       ExitMenu ; 00003D6D
 
            pop
 
            push       0
 
            push       2210d ; 08A2h
 
@@ -396150,7 +395987,7 @@ L001270AC: push       SP[4] ; loc2
 
            if SP[0]=0 then jump L001270EE
 
            push       0
 
            push       SP[1] ; loc6
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L001270EE
 
            push       1
 
            jump       L001270F0
 
@@ -432694,7 +432531,7 @@ L00144040: push       SP[0] ; loc2
 
            if SP[0]=0 then jump L0014407C
 
            push       0
 
            push       SP[1] ; loc3
 
-           call       GetWarpGates ; 000099F2
 
+           call       GetWarpgates ; 000099F2
 
            if SP[0]=0 then jump L0014407C
 
            push       1
 
            jump       L0014407E
 
@@ -495325,7 +495162,7 @@ L00173C16: push       0
 
            push       0
 
            push       0
 
            read       TQUEST_005.qq_gShip ; [18d ; 12h]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            mov        SP[1],SP[0] ; loc2
 
            pop
 
            push       SP[0] ; loc2
 
@@ -495349,7 +495186,7 @@ L00173C16: push       0
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       1
 
            read       TQUEST_005.qq_gShip ; [18d ; 12h]
 
            call       SetSafePos ; 000025B7
 
@@ -500392,12 +500229,12 @@ L00177D6C: push       700d ; 02BCh
 
            pop
 
            push       0
 
            read       TQUEST_018.qq_gStartAtGate ; [16d ; 10h]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       0
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetSafePos ; 000010B9
 
            pop
 
@@ -505851,7 +505688,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetShield ; 00001068
 
            pop
 
@@ -505885,7 +505722,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetExtraSpeed ; 000017E9
 
            pop
 
@@ -505903,7 +505740,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       2
 
            callasm    SA_SetExtraRotSpeed ; 000017FA
 
            pop
 
@@ -505948,7 +505785,7 @@ TQUEST_036.Force:
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            call       Activate ; 00000E6A
 
            pop
 
            push       0
 
@@ -506373,7 +506210,7 @@ L0017C962: push       0
 
            if SP[0]=0 then jump L0017C9C2
 
            push       0
 
            read       TQUEST_036.qq_gNear_Obj_Pos ; [38d ; 26h]
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       SP[2] ; loc3
 
            push       2
 
            callasm    SA_SetSafePos ; 000010B9
 
@@ -517861,7 +517698,7 @@ L00185870: push       0
 
            callasm    SA_GetShipTypeMaxShieldType ; 0000169D
 
            push       2
 
            push       SP[4] ; loc2
 
-           call       addshield ; 00005436
 
+           call       AddShield ; 00005436
 
            pop
 
            push       7
 
            readvar    global.ga_Races ; [18d ; 12h]
 
@@ -519889,7 +519726,7 @@ L001872CA: push       0
 
            callasm    SA_GetShipTypeMaxShieldType ; 0000169D
 
            push       2
 
            push       SP[3] ; loc2
 
-           call       addshield ; 00005436
 
+           call       AddShield ; 00005436
 
            pop
 
            push       3
 
            readvar    global.ga_Races ; [18d ; 12h]
 
@@ -527840,7 +527677,7 @@ L0018D694: push       0
 
            if SP[0]=0 then jump L0018D6C2
 
            push       0
 
            push       SP[1] ; loc8
 
-           call       GetEnviroment ; 000055A2
 
+           call       GetEnvironment ; 000055A2
 
            mov        SP[1],SP[0] ; loc8
 
            pop
 
            jump       L0018D694
 
@@ -530856,7 +530693,7 @@ L0018FD18: push       0
 
            if SP[0]=0 then jump L0018FD40
 
            push       0
 
            get_object
 
-           call       OffertextParty ; 000055D8
 
+           call       OfferTextParty ; 000055D8
 
            ret
 
 
 
 L0018FD40: push       0
 
@@ -530880,7 +530717,7 @@ L0018FD64: push       0
 
            if SP[0]=0 then jump L0018FD8C
 
            push       0
 
            get_object
 
-           call       OffertextParty ; 000055D8
 
+           call       OfferTextParty ; 000055D8
 
            ret
 
 
 
 L0018FD8C: push       0
 
@@ -530981,7 +530818,7 @@ L0018FEAC: push       0
 
            if SP[0]=0 then jump L0018FED4
 
            push       0
 
            get_object
 
-           call       OffertextParty ; 000055D8
 
+           call       OfferTextParty ; 000055D8
 
            ret
 
 
 
 L0018FED4: push       0
 
@@ -535504,7 +535341,7 @@ L001936B2: push       0
 
            push       SP[2] ; loc6
 
            push       2
 
            push       SP[13d] ; arg1
 
-           call       AddMaxRockets ; 00005638
 
+           call       AddMaxRocket ; 00005638
 
            pop
 
            push       0
 
            pop
 
@@ -541698,7 +541535,7 @@ L0019822E: push       -5000d ; 0EC78h
 
            push       0
 
            push       2100d ; 0834h
 
            call59     TCLIENT.GetPlayerShip ;
 
-           call       GetObjectId ; 000024C2
 
+           call       GetObjectID ; 000024C2
 
            push       SP[3] ; loc1
 
            push       3
 
            callasm    SA_SetRelation ; 00005629
 
@@ -548037,7 +547874,7 @@ L0019CEEA: if SP[0]=0 then jump L0019CF6A
 
            pop
 
 L0019CF2E: push       0
 
            get_object
 
-           call       AbortMenu ; 00005661
 
+           call       Destruct ; 00005661
 
            pop
 
            push       0
 
            write      TQUEST.qu_Priority ; [1] | 
	 
 
 
 
 | 
 
 
 
 
PS: Этот семикратно патченый ES'ом код обжа такая лютая помойка...  
 
 
Добавлено: обнаружил следующее:
 
 
В секции PTCH на седьмом патче (последнем) было переопределение адреса, имеющегося в TMENU_QUESTS.SpecialUpdate на другой:
 
 
 
Зачем-то прыжок осуществляется в TMENU_TRADE.SpecialUpdate
 
	| 
 
 вот сюда   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  0012B21E: 0009                   |   20            push       0
 
0012B220: 0005 0004              |   21            push       SP[3] ; loc18
 
0012B224: 000B                   |   22            push       2
 
0012B226: 005A 00000B48          |   23            callasm    SE_TableNext ; 00000B48
 
0012B22C: 002A 0003              |   21            mov        SP[2],SP[0] ; loc19
 
0012B230: 002C                   |   21            pop
 
0012B232: 0005 0002              |   20 L0012B232: push       SP[1] ; loc19
 
0012B236: 0009                   |   21            push       0
 
0012B238: 004E                   |   22            if SP[0]=SP[1] then push 0 else push 1
 
0012B23A: 0033 0009596B          |   21            if SP[0]=0 then jump L0012B2DE
 
0012B240: 0031 0009592D          |   20            jump       L0012B262
 
 
0012B246: 0005 0002              |      L0012B246: push       SP[1] ;
 
0012B24A: 0005 0004              |                 push       SP[3] ;
 
0012B24E: 000B                   |                 push       2
 
0012B250: 005A 00000B48          |                 callasm    SE_TableNext ; 00000B48
 
0012B256: 002A 0003              |                 mov        SP[2],SP[0] ;
 
0012B25A: 002C                   |                 pop
 
0012B25C: 0031 00095915          |                 jump       L0012B232
 
0012B262: 0031 0009596B          |   20 L0012B262: jump       L0012B2DE
 
 
0012B268: 0005 0002              |                 push       SP[1] ;
 
0012B26C: 0005 000F              |                 push       SP[14d] ;
 
0012B270: 004E                   |                 if SP[0]=SP[1] then push 0 else push 1
 
0012B272: 0033 00095948          |                 if SP[0]=0 then jump L0012B298
 
0012B278: 0009                   |                 push       0
 
0012B27A: 0005 0003              |                 push       SP[2] ;
 
0012B27E: 0057 0000035D          |                 call       GetOwner ; 0000035D
 
0012B284: 0005 000E              |                 push       SP[13d] ;
 
0012B288: 004F                   |                 if SP[0]<>SP[1] then push 0 else push 1
 
0012B28A: 0033 00095948          |                 if SP[0]=0 then jump L0012B298
 
0012B290: 000A                   |                 push       1
 
0012B292: 0031 00095949          |                 jump       L0012B29A
 
0012B298: 0009                   |      L0012B298: push       0
 
0012B29A: 0033 00095968          |      L0012B29A: if SP[0]=0 then jump L0012B2D8
 
0012B2A0: 000A                   |                 push       1
 
0012B2A2: 0005 0003              |                 push       SP[2] ;
 
0012B2A6: 0005 0007              |                 push       SP[6] ;
 
0012B2AA: 000C                   |                 push       3
 
0012B2AC: 005A 000001DD          |                 callasm    SE_TableAdd ; 000001DD | 
	 
 
 
 
 | 
 
 
 
 
Кто-нибудь вообще в курсе как игра работает с секцией PTCH?  
        	 
  Последний раз редактировалось: Non (18:57 01-02-2018), всего редактировалось 2 раз(а) | 
		 
		
		| 
		
		 | 
         
     |  
	
		KWON
   409 EGP
      Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171  Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
       | 
         | 
		Извините великодушно, но всё таки спрошу.
 
	  | Non : | 
	 
	
	  | 
указать папку с игрой. Убрать REM 
 | 
	 
 
 
Это с помощью гекс-редактора, я так понимаю, да?
        	 _________________ Следи за собой, будь осторожен. В.Цой  | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Нет. patch.cmd это обычный текстовый файл. Открывается блокнотом.
        	  | 
		 
		
		| 
		
		 | 
         
     |  
	
		Shaddie
   556 EGP
        Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261  Откуда: Томск Зарегистрирован: 09.09.2004
       | 
         | 
		Слегка допилил трансляцию asm кода в более читабельный вид.
 
Транслированы не все функции.
 
Ошибки точно есть.
	
  
	
	
		| code_xt.zip | 
	 
	
		|  Описание: | 
		
			
			
				| Некоторые процедуры XT в более понятном виде (есть ошибки) | 
			 
			 
		 | 
	 
	
		|  Имя файла: | 
		 code_xt.zip | 
	 
	
		|  Размер файла: | 
		 156.69 KB | 
	 
	
		|  Скачано: | 
		 931 раз(а) | 
	 
	 
        	 _________________ Быстро едешь, тихо понесут...  | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Shaddie удалось транслировать 484 функции после предидущей попытки.  
 
Раньше они были недоступны в виде XC кода.
 
 
Можно поизучать.  
 
	| 
 
 Функции   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  TX_AUDIO.PlaySpeachScriptWithMood(arg1, arg2, arg3)
 
TX_AUDIO.FadeSFXOut()
 
TX_AUDIO.LoopMusic(arg1)
 
TX_AUDIO.CheckMusicVolume()
 
GetObjectSector(arg1)
 
GetDistance(arg1, arg2)
 
Cheating()
 
UT_PlayerQuickWarp(arg1, arg2, arg3, arg4, arg5)
 
TObj2071.Init()
 
TSECTOR.Activate()
 
TASTEROID.GetPos()
 
TASTEROID.IsClass(arg1)
 
TASTEROID.KilledBy(arg1, arg2, arg3)
 
TSTATION.AddStationToShieldReloader(arg1)
 
TSTATION.AddShield(arg1, arg2)
 
TSTATION.SetOwned(arg1)
 
TSTATION.SetGroupRelation(arg1, arg2)
 
TSTATION.SetRelationsToAll(arg1)
 
TSTATION.GetRelation(arg1)
 
TSTATION.GetPos()
 
TSTATION.GetAttacker()
 
TSTATION.AddSourceFactories(arg1)
 
TSTATION.AttackedBy(arg1)
 
TSTATION.LogDestroyed(arg1)
 
TSTATION.KilledBy(arg1, arg2)
 
TSTATION.ShipAttackedBy(arg1, arg2, arg3)
 
TSTATION.SetTargetted(arg1)
 
TSTATION.GetAnswers(arg1, arg2, arg3, arg4)
 
TSTATION.IsDockingAllowedForShip(arg1)
 
TSTATION.CheckAfterPatch()
 
TSTATION.IsClass(arg1)
 
TDOCK.IsClass(arg1)
 
TDOCK.GetWareTypePrice(arg1, arg2)
 
TDOCK.InitialFill()
 
TDOCK_GONER.IsClass(arg1)
 
TFACTORY.IsClass(arg1)
 
TFACTORY.StartTasks()
 
TFACTORY_SHIP.BigShipRequestDocking(arg1, arg2)
 
TFACTORY_SHIP.BigShipDocked(arg1)
 
TFACTORY_SHIP.BigShipUnDock(arg1)
 
TFACTORY_SHIP.GetDockingPos(arg1)
 
TFACTORY_SHIP.IsClass(arg1)
 
TGATE.IsClass(arg1)
 
TSHIP.AddShipToShieldReloader(arg1)
 
TSHIP.ReorderShields()
 
TSHIP.SetCurrentRocketType(arg1)
 
TSHIP.ChangeCurrentRocketType()
 
TSHIP.AddWare(arg1, arg2, arg3)
 
TSHIP.TestAndLaunchFightDrones(arg1)
 
TSHIP.SetOwnerObject(arg1)
 
TSHIP.RemoveEscortShip(arg1)
 
TSHIP.SetRelation(arg1, arg2)
 
TSHIP.SetGroupRelation(arg1, arg2)
 
TSHIP.SetRelationsToAll(arg1)
 
TSHIP.GetRelation(arg1)
 
TSHIP.IsClass(arg1)
 
TSHIP.GetOwnerObject()
 
TSHIP.GetObjectID()
 
TSHIP.GetLeader()
 
TSHIP.GetDestination()
 
TSHIP.GetAttacker()
 
TSHIP.GetActionTarget()
 
TSHIP.GetPID()
 
TSHIP.HasIllegalGoods()
 
TSHIP.IsControllable()
 
TSHIP.Activate()
 
TSHIP.AddTo(arg1)
 
TSHIP.EscortRemove()
 
TSHIP.Ctrl_StartInHangar(arg1)
 
TSHIP.__StartInHangar(arg1)
 
TSHIP.GetStartingHangar()
 
TSHIP.Ctrl_LandInHangar(arg1)
 
TSHIP.Ctrl_EnterHyperspace(arg1, arg2)
 
TSHIP.Ctrl_LeaveHyperspace(arg1, arg2)
 
TSHIP.__LeaveHyperspace(arg1, arg2)
 
TSHIP.Ctrl_Kill(arg1)
 
TSHIP.Ctrl_BigShipKill(arg1)
 
TSHIP.Ctrl_Follow(arg1, arg2)
 
TSHIP.Ctrl_KillAllEnemiesRange(arg1)
 
TSHIP.Ctrl_BigShipKillAllEnemies()
 
TSHIP.CallForHelp(arg1, arg2, arg3)
 
TSHIP.Ctrl_Idle(arg1)
 
TSHIP.__Idle(arg1)
 
TSHIP.Ctrl_FlyToSector(arg1, arg2)
 
TSHIP.KilledBy(arg1, arg2)
 
TSHIP.DoKill(arg1, arg2)
 
TSHIP.KilledInEnvironment()
 
TSHIP.SelfDestruct(arg1)
 
TSHIP.Stop()
 
TSHIP.GetQuestionArray(arg1)
 
TSHIP.LoadFreight()
 
TSHIP.CanLand(arg1)
 
TSHIP.IsAttacked()
 
TSHIP.AttackedBy(arg1)
 
TSHIP.LogDestroyed(arg1)
 
TSHIP.Hit(arg1, arg2)
 
TSHIP.IsAvailableForDefaultJob()
 
TSHIP.LeaveShip()
 
TSHIP.NearestEnemy(arg1)
 
TSHIP.NearestEnemyByStrength(arg1, arg2, arg3)
 
TSHIP.GetVictim()
 
TSHIP.Smuggling()
 
TSHIP.MenuGetObjectBody()
 
TSHIP_CARRIER.SetOwner(arg1)
 
TSHIP_CARRIER.RestoreDockPos()
 
TSHIP_CARRIER.ShipAttackedBy(arg1, arg2)
 
TSHIP_CARRIER.IsClass(arg1)
 
TSHIP_CARRIER.RotateSectorObjectTo(arg1, arg2, arg3, arg4)
 
TSHIP_CARRIER.IsDockedAtShipYard()
 
TSHIP_CARRIER.BigShipUnDock()
 
TSHIP_CARRIER.StartExecuteCommand2(arg1, arg2, arg3)
 
TSHIP_M0.NeedAvoid(arg1)
 
TSHIP_M0.IsClass(arg1)
 
TSHIP_M0_GUN.Ctrl_FollowM0()
 
TSHIP_M0_GUN.__FollowM0()
 
TSHIP_M0_GUN.IsClass(arg1)
 
TSHIP_M1.NeedAvoid(arg1)
 
TSHIP_M1.AttackedBy(arg1)
 
TSHIP_M1.MightAttack()
 
TSHIP_M1.IsClass(arg1)
 
TSHIP_M2.SetOwner(arg1)
 
TSHIP_M2.RestoreDockPos()
 
TSHIP_M2.ShipAttackedBy(arg1, arg2)
 
TSHIP_M2.NeedAvoid(arg1)
 
TSHIP_M2.MightAttack()
 
TSHIP_M2.AttackedBy(arg1)
 
TSHIP_M2.IsClass(arg1)
 
TSHIP_M2.IsDockedAtShipYard()
 
TSHIP_M2.BigShipUnDock()
 
TSHIP_M2.StartExecuteCommand2(arg1, arg2, arg3)
 
TSHIP_FIGHTER.AttackedBy(arg1)
 
TSHIP_FIGHTER.Hit(arg1, arg2)
 
TSHIP_FIGHTER.MightAttack()
 
TSHIP_FIGHTER.SendMessage(arg1)
 
TSHIP_FIGHTER.Patrol()
 
TSHIP_FIGHTER.Ctrl_ScanShip(arg1)
 
TSHIP_FIGHTER.AbortScan(arg1)
 
TSHIP_FIGHTER.DestroyIllegalGoods(arg1)
 
TSHIP_FIGHTER.GetClass()
 
TSHIP_FIGHTER.IsClass(arg1)
 
TSHIP_M3.IsClass(arg1)
 
TSHIP_M4.IsClass(arg1)
 
TSHIP_M5.IsClass(arg1)
 
TSHIP_TS.NeedAvoid(arg1)
 
TSHIP_TS.AttackedBy(arg1)
 
TSHIP_TS.MightAttack()
 
TSHIP_TS.Hit(arg1, arg2)
 
TSHIP_TS.SendMessage(arg1)
 
TSHIP_TS.IsClass(arg1)
 
TSHIP_TS_PIRATE.AttackedBy(arg1)
 
TSHIP_TS_PIRATE.Hit(arg1, arg2)
 
TSHIP_TS_PIRATE.MightAttack()
 
TSHIP_TS_PIRATE.GetQuestion(arg1, arg2)
 
TSHIP_TS_PIRATE.IsClass(arg1)
 
TSHIP_TL.NeedAvoid(arg1)
 
TSHIP_TL.AttackedBy(arg1)
 
TSHIP_TL.UnloadFactory(arg1)
 
TSHIP_TL.Ctrl_LeaveHyperspace(arg1, arg2)
 
TSHIP_TL.IsClass(arg1)
 
TSHIP_GONER.NeedAvoid(arg1)
 
TSHIP_GONER.LeadToTemple()
 
TSHIP_GONER.AttackedBy(arg1)
 
TSHIP_GONER.SendMessage(arg1)
 
TSHIP_GONER.IsClass(arg1)
 
TObj2068.NeedAvoid(arg1)
 
TObj2068.IsClass(arg1)
 
TSHIP_ASTRONAUT.IsClass(arg1)
 
TObj2069.KilledBy(arg1, arg2)
 
TObj2069.SelfDestruct(arg1)
 
TRACE.FindShipType(arg1, arg2)
 
TRACE.AddNotoriety(arg1, arg2)
 
TRACE.GetNearestShipyard(arg1)
 
TPIRATES.NewPrimaryAttackShip(arg1)
 
TPIRATES.SelectTargetInSector(arg1)
 
TPIRATES.IsClass(arg1)
 
TGONER.IsClass(arg1)
 
TPLAYER.LeaveSector(arg1)
 
TPLAYER.AddMoney(arg1)
 
TPLAYER.GetMoney()
 
TPLAYER.LoseLicense(arg1)
 
TCLIENT.GetPlayerShip()
 
TCLIENT.StopPostWarpScene()
 
TCLIENT.StartWarp()
 
TCLIENT.StartGateWarp(arg1, arg2, arg3)
 
TCLIENT.WarpToSector(arg1, arg2, arg3, arg4, arg5)
 
TCLIENT.DisplayExplosion(arg1)
 
TCLIENT.Autopilot(arg1)
 
TCLIENT.StartFrom(arg1)
 
TCLIENT.NotifyComputerOff()
 
TCLIENT.NotifyTargetLock(arg1)
 
TCLIENT.NotifyTurboOn()
 
TCLIENT.NotifyNoMissiles()
 
TCLIENT.NotifyNoMissileTarget()
 
TCLIENT.NotifyNoEquipment(arg1)
 
TCLIENT.NotifyPlanetCollision()
 
TCLIENT.NotifyAttacked(arg1)
 
TCLIENT.GetMapSectorState(arg1, arg2)
 
TCLIENT.GrabScenes()
 
TCLIENT.RunDialog(arg1, arg2)
 
TCLIENT.SetRadarCommunication(arg1)
 
TCLIENT.ShowHelpPage(arg1)
 
TCLIENT.StopFastForward()
 
TCLIENT.NotifyPause(arg1)
 
TCLIENT.CatchWare(arg1)
 
TCLIENT.ToggleBayDoorStatus()
 
TMESSAGE.DisplayMessage()
 
TCAMERAVIEW.Stop()
 
TCAMERAVIEW.Kill()
 
TBUILD_FACTORY.Stop()
 
TBUILD_FACTORY.Kill()
 
TObj2119.Patch6()
 
TObj2119.Patch3()
 
TTRADEMENU.___setCameraMode(arg1)
 
TTRADEMENU.Trade(arg1)
 
TTRADEMENU.Input(arg1, arg2)
 
TMENU.LineVisible()
 
TMENU.CheckSelected()
 
TMENU.DoScene(arg1)
 
TMENU.CreatePrevious(arg1, arg2)
 
TMENU.Menu()
 
TMENU.SpecialInput(arg1, arg2)
 
TMENU.Key_Up_Std()
 
TMENU.Key_PgUp_Std()
 
TMENU.Key_PgDown_Std()
 
TMENU_ID.GetObjectBody()
 
TMENU_ID.SpecialMenu()
 
TMENU_ID.IsClass(arg1)
 
TMENU_SHIP.GetObjectBody()
 
TMENU_SHIP.IsClass(arg1)
 
TMENU_SHIPINFO.GetObjectBody()
 
TMENU_SHIPINFO.IsClass(arg1)
 
TMENU_LOG.GetObjectBody()
 
TMENU_LOG.IsClass(arg1)
 
TMENU_WEAPONS.GetObjectBody()
 
TMENU_WEAPONS.SpecialUpdate()
 
TMENU_WEAPONS.IsClass(arg1)
 
TMENU_WEAPONSELECT.SpecialMenu()
 
TMENU_WEAPONSELECT.SpecialUpdate()
 
TMENU_WEAPONSELECT.IsClass(arg1)
 
TObj2250.GetObjectBody()
 
TObj2250.IsClass(arg1)
 
TObj2247.GetObjectBody()
 
TObj2247.IsClass(arg1)
 
TMENU_CHEAT.GetObjectBody()
 
TMENU_CHEAT.IsClass(arg1)
 
TMENU_SHIPLIST.SpecialMenu()
 
TMENU_SHIPLIST.GetObjectBody()
 
TMENU_SHIPLIST.SpecialUpdateShip(arg1)
 
TMENU_SHIPLIST.IsClass(arg1)
 
TMENU_SHIPLIST_CARRIED.SpecialUpdate()
 
TMENU_SHIPLIST_CARRIED.IsClass(arg1)
 
TMENU_SHIPLIST_OWNED.IsClass(arg1)
 
TMENU_LOGBOOK.GetObjectBody()
 
TMENU_LOGBOOK.IsClass(arg1)
 
TMENU_STATION.GetObjectBody()
 
TMENU_STATION.GetName()
 
TMENU_STATION.IsClass(arg1)
 
TMENU_FACTORY.GetName()
 
TMENU_DOCK.GetName()
 
TMENU_STATIONINFO.GetObjectBody()
 
TMENU_STATIONINFO.IsClass(arg1)
 
TObj2254.GetObjectBody()
 
TObj2254.SpecialUpdate()
 
TObj2254.IsClass(arg1)
 
TMENU_DOCK_GONER.IsClass(arg1)
 
TMENU_ASTEROID.IsClass(arg1)
 
TMENU_WARPGATE.GetObjectBody()
 
TMENU_WARPGATE.IsClass(arg1)
 
TMENU_PLAYER.SpecialUpdate()
 
TMENU_PLAYER.IsClass(arg1)
 
TMENU_WARE.GetObjectBody()
 
TMENU_WARE.IsClass(arg1)
 
TMENU_MAIN.IsClass(arg1)
 
TMENU_CUSTOMDIALOG.GetObjectBody()
 
TMENU_CUSTOMDIALOG.SpecialMenu()
 
TMENU_CUSTOMDIALOG.IsClass(arg1)
 
TMENU_CUSTOMDIALOG.SpecialUpdate()
 
TMENU_CUSTOMINPUT.IsClass(arg1)
 
TMENU_BIGTEXT.SpecialMenu()
 
TMENU_BIGTEXT.IsClass(arg1)
 
TMENU_PLAYERLOG.SpecialUpdate()
 
TMENU_PLAYERLOG.IsClass(arg1)
 
TMENU_QUEST.SpecialMenu()
 
TMENU_QUEST.IsClass(arg1)
 
TMENU_QUESTINFO.IsClass(arg1)
 
TMENU_DEBUGFLAGS.SpecialUpdate()
 
TMENU_DEBUGFLAGS.Input(arg1)
 
TMENU_DEBUGFLAGS.IsClass(arg1)
 
TMENU_MISSION.SpecialUpdate()
 
TMENU_MISSION.IsClass(arg1)
 
TMENU_QUESTS.SpecialUpdate()
 
TMENU_QUESTS.IsClass(arg1)
 
TMENU_QUESTOFFER.SpecialUpdate()
 
TMENU_QUESTOFFER.IsClass(arg1)
 
TMENU_QUESTDISPLAY.SpecialUpdate()
 
TMENU_QUESTDISPLAY.IsClass(arg1)
 
TMENU_SECTOR.___testPos(arg1, arg2)
 
TMENU_SECTOR.__RectFill(arg1, arg2, arg3, arg4, arg5, arg6)
 
TMENU_SECTOR.___doZooming(arg1, arg2)
 
TMENU_SECTOR.SpecialMenu()
 
TMENU_SECTOR.ShowDocksFacs2(arg1, arg2, arg3)
 
TMENU_SECTOR.ShowShips(arg1, arg2, arg3)
 
TMENU_SECTOR.IsClass(arg1)
 
TMENU_GALAXY.CreatePrevious(arg1, arg2)
 
TMENU_GALAXY.SpecialMenu2()
 
TMENU_GALAXY.SpecialUpdate()
 
TMENU_GALAXY.IsClass(arg1)
 
TMENU_TRADE.Shipyard()
 
TMENU_TRADE.SpecialMenu()
 
TMENU_TRADE.ShipPrice(arg1)
 
TMENU_TRADE.wareprice(arg1, arg2, arg3)
 
TMENU_TRADE.IsClass(arg1)
 
TMENU_DIALOG.CreatePrevious(arg1, arg2)
 
TMENU_DIALOG.SpecialMenu()
 
TMENU_DIALOG.UseAnswer(arg1)
 
TMENU_DIALOG.IsClass(arg1)
 
TMENU_LOADSAVE.SpecialMenu()
 
TMENU_LOADSAVE.ExitMenu()
 
TMENU_LOADSAVE.IsEmpty(arg1)
 
TMENU_LOADSAVE.IsClass(arg1)
 
TObj2248.SpecialMenu()
 
TObj2248.SpecialUpdate()
 
TObj2248.IsClass(arg1)
 
TObj2249.GetObjectBody()
 
TObj2249.IsClass(arg1)
 
TObj2253.GetObjectBody()
 
TObj2253.IsClass(arg1)
 
TObj2264.SpecialMenu()
 
TObj2264.IsClass(arg1)
 
TObj2265.GetObjectBody()
 
TObj2265.IsClass(arg1)
 
TObj2266.GetObjectBody()
 
TObj2266.IsClass(arg1)
 
TObj2267.GetObjectBody()
 
TObj2267.IsClass(arg1)
 
TObj2251.GetPlayerProperty(arg1)
 
TObj2251.Display_Ships(arg1, arg2, arg3, arg4)
 
TObj2251.SpecialMenu()
 
TObj2251.IsClass(arg1)
 
TObj2252.SpecialMenu()
 
TObj2252.IsClass(arg1)
 
TObj2256.ShowCutScenes(arg1)
 
TObj2256.IsClass(arg1)
 
TObj2257.SpecialUpdate()
 
TObj2257.IsClass(arg1)
 
TObj2258.SpecialUpdate()
 
TObj2258.IsClass(arg1)
 
TObj2259.IsClass(arg1)
 
TObj2260.GetObjectBody()
 
TObj2260.IsClass(arg1)
 
TObj2261.SpecialMenu()
 
TObj2261.IsClass(arg1)
 
TObj2262.SpecialMenu()
 
TObj2262.IsClass(arg1)
 
TObj2263.Shipyard()
 
TObj2263.SpecialMenu()
 
TObj2263.CheckTransporter()
 
TObj2263.wareprice(arg1, arg2, arg3)
 
TObj2263.IsClass(arg1)
 
TUPGRADE.DefaultCatchWare(arg1, arg2, arg3)
 
TUPGRADE_11.CatchWare(arg1)
 
TObj2065.IsClass(arg1)
 
TObj2065.Activate()
 
TUPGRADE_13.CatchWare(arg1)
 
TObj2066.BlowUp()
 
TObj2066.___blowUp()
 
TObj2066.Activate()
 
TObj2066.IsClass(arg1)
 
TORBITALLASER.Activate()
 
TORBITALLASER.AttackedBy(arg1)
 
TORBITALLASER.Hit(arg1, arg2)
 
TORBITALLASER.___fireBeamWeapon(arg1)
 
TORBITALLASER.___removeBeamBullets()
 
TORBITALLASER.IsClass(arg1)
 
TUPGRADE_15.CatchWare(arg1)
 
TObj2067.AttackedBy(arg1)
 
TObj2067.MightAttack()
 
TObj2067.IsClass(arg1)
 
TQUESTMASTER.CheckQuest()
 
TCLASS_6010.IsClass(arg1)
 
TCLASS_6004.IsClass(arg1)
 
TCLASS_6005.IsClass(arg1)
 
TCLASS_6006.IsClass(arg1)
 
TCLASS_6007.AsteroidCollision(arg1, arg2, arg3)
 
TCLASS_6007.Activate()
 
TCLASS_6007.IsClass(arg1)
 
TCLASS_6012.GetPos()
 
TCLASS_6012.SetPos(arg1, arg2, arg3)
 
TCLASS_6012.IsClass(arg1)
 
TUPGRADE_01.DockingPossible(arg1)
 
TUPGRADE_01.ContextMenuBuild(arg1, arg2, arg3)
 
TUPGRADE_01.Action()
 
TUPGRADE_02.ContextMenuBuild(arg1, arg2, arg3)
 
TUPGRADE_02.Action()
 
TUPGRADE_02.MenuNextMenu(arg1, arg2)
 
TUPGRADE_03.Beaming(arg1, arg2)
 
TUPGRADE_03.ContextMenuAction(arg1)
 
TUPGRADE_03.Action()
 
TUPGRADE_03.Beam(arg1)
 
TUPGRADE_04.Action()
 
TUPGRADE_06.ContextMenuBuild(arg1, arg2, arg3)
 
TUPGRADE_06.Action()
 
TUPGRADE_06.MenuNextMenu(arg1, arg2)
 
TQUEST_003.dockedToDestSpaceStation()
 
TQUEST_003.GetUpdateText()
 
TQUEST_003.Check()
 
TQUEST_004.Check()
 
TQUEST_005.Evaluate()
 
TQUEST_005.Check2()
 
TQUEST_006.Prepare()
 
TQUEST_006.Decline()
 
TQUEST_006.Check()
 
TQUEST_018.Prepare()
 
TQUEST_018.QuestShipDestroyed()
 
TQUEST_021.Evaluate()
 
TQUEST_021.Check2()
 
TQUEST_034.Evaluate()
 
TQUEST_049.Evaluate()
 
TQUEST_049.Check()
 
TQUEST_060.Evaluate()
 
TQUEST_060.RemoveAttackers(arg1)
 
TQUEST_060.Check()
 
TQUEST_069.Evaluate()
 
TQUEST_075.WaitUntilPlayerIsInRange()
 
TQUEST_079.Evaluate()
 
TQUEST_079.Check()
 
TQUEST_085.Evaluate()
 
TQUEST_085.GetUpdateText()
 
TQUEST_085.Check()
 
TQUEST_090.Evaluate()
 
TQUEST_090.CleanUp()
 
TQUEST_096.ShieldTask(arg1)
 
TQUEST_096.AudioTask(arg1)
 
TQUEST_096.Accept()
 
TQUEST_067.Check()
 
TQUEST_067.GetSellerFactory(arg1, arg2, arg3)
 
TQUEST_067.CalcProfitIndex()
 
TQUEST_106.Evaluate()
 
TQUEST_106.dockedToDestSpaceStation()
 
TQUEST_106.GetUpdateText()
 
TQUEST_106.Check()
 
TQUEST_025.IsCorrectDock()
 
TQUEST_026.IsCorrectDock()
 
TQUEST_027.IsCorrectDock()
 
TQUEST_027.Check()
 
TQUEST_028.IsCorrectDock()
 
TQUEST_029.IsCorrectDock()
 
TQUEST_040.Evaluate()
 
TQUEST_040.Check()
 
TQUEST_041.Evaluate()
 
TQUEST_041.Check()
 
TQUEST_042.Evaluate()
 
TQUEST_042.KilledAttackers()
 
TQUEST_042.Check()
 
TQUEST_043.Evaluate()
 
TQUEST_043.Cleanup()
 
TQUEST_043.Check()
 
TQUEST_044.Evaluate()
 
TQUEST_044.Check()
 
TQUEST_045.Check()
 
TQUEST_046.Evaluate()
 
TQUEST_047.Evaluate()
 
TQUEST_047.Check()
 
TQUEST_048.Evaluate()
 
TQUEST_048.KilledAttackers()
 
TQUEST_048.Check()
 
TCLASS_6018.SetTargetted(arg1)
 
TCLASS_6019.GetQuestion(arg1, arg2)
 
TCLASS_6019.GetAnswers(arg1, arg2, arg3, arg4)
 
TCLASS_6019.KilledBy(arg1, arg2, arg3)
 
TCLASS_6019.IsClass(arg1)
 
TCLASS_6020.GetQuestion(arg1, arg2)
 
TCLASS_6020.GetAnswers(arg1, arg2, arg3, arg4)
 
TCLASS_6020.KilledBy(arg1, arg2, arg3)
 
TCLASS_6020.IsClass(arg1)
 
TCLASS_6021.GetQuestion(arg1, arg2)
 
TCLASS_6021.GetAnswers(arg1, arg2, arg3, arg4)
 
TCLASS_6021.KilledBy(arg1, arg2, arg3)
 
TCLASS_6021.IsClass(arg1)
 
TCLASS_6022.KilledBy(arg1, arg2, arg3)
 
TCLASS_6022.IsClass(arg1)
 
TQUEST_113.SampleIncomingTransmission(arg1, arg2)
 
TQUEST_113.LoseAllLicences()
 
TQUEST_113.CreateGetsuFune() | 
	 
 
 
 
 | 
 
 
        	  | 
		 
		
		| 
		
		 | 
         
     |  
	
		yakim81
   305 EGP
     Рейтинг канала: 6(417) Репутация: 18 Сообщения: 222 
  Зарегистрирован: 07.02.2015
       | 
         | 
		Очень жаль, что нет функции TMENU_GALAXY.Input. Много надежд, что именно там находится решение с отображением 30х30 галактической карты
        	  | 
		 
		
		| 
		
		 | 
         
     |  
	
		KWON
   409 EGP
      Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171  Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
       | 
         | 
		Благодаря нашему супер-модератору Non и его чудному "xt_obj_patching" можно оживить любые мечты!
 
 
Вот код для их "patch.xc" о добавлении любых кораблей на любую верфь:
 
	| 
 
 Cкрытый текст   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  #include "inc/xt.h"; 
 
 
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)); // M3
 
 this->AddProduct(7, global.ShipGTypeToSType(6, arg5)); // M4
 
 this->AddProduct(7, global.ShipGTypeToSType(7, arg5)); // M5
 
 this->AddProduct(7, global.ShipGTypeToSType(1, arg5)); // TS
 
 this->AddProduct(7, global.ShipGTypeToSType(9, arg5)); // IS
 
 if(arg5 == 7)
 
 {
 
  this->AddProduct(7, 58); // Terraner
 
  this->AddProduct(7, 55); // Commandship
 
  this->AddProduct(7, 43); // pirate Argon
 
  this->AddProduct(7, 44); // pirate Xenon
 
  this->AddProduct(7, 45); // pirate Split
 
  this->AddProduct(7, 46); // pirate Paranid
 
  this->AddProduct(7, 47); // pirate Boron
 
  this->AddProduct(7, 48); // pirate Teladi
 
 }
 
 if(arg5 == 6)
 
 {
 
  this->AddProduct(7, global.ShipGTypeToSType(8, arg5)); // IL
 
  this->AddProduct(7, 52); // Goner Ship
 
  this->AddProduct(7, 68); // UFO
 
 }
 
 if(arg5 == 8)
 
 {
 
  this->AddProduct(7, 49); // Xperimental
 
  this->AddProduct(7, 69); // Perseus
 
  this->AddProduct(7, 70); // SpaceFly
 
  this->AddProduct(7, 52); // Goner Ship
 
  this->AddProduct(7, 68); // UFO
 
 }
 
 this->AddProduct(7, global.ShipGTypeToSType(0, arg5)); // TL
 
 this->AddProduct(7, global.ShipGTypeToSType(2, arg5)); // M0
 
 this->AddProduct(7, global.ShipGTypeToSType(3, arg5)); // M1
 
 this->AddProduct(7, global.ShipGTypeToSType(4, arg5)); // M2
 
 
 return(this);
 
}
 
 
.func Testing 
 
function Testing() 
 
{ 
 
  IsCheatActive(1);
 
} | 
	 
 
 
 
 | 
 
 
 
 
Правда, теперь осталось оживить покупку классов GO, M0, M1, M2,
 
но я так полагаю это вопрос времени.
 
И найдется код для правки секции 2217-TMENU_TRADE,
 
где выставляются доступные классы кораблей на продажу.
 
 
Дополнительная правка.
 
Цифра if(arg5== 7 это пиратская верфь.
 
Т.е. сначала нужно добавить её на карту.
 
Цифра if(arg5== 8 это верфь гонеров и её тоже нужно
 
добавить нетрадиционным редактором:
 
http://www.elite-games.ru/conference/viewtopic.php?p=3448983#3448983
 
 
Добавлю оригинал из файла code_xt.cpp,
 
огромное спасибо классному расскодированию обжа уважаемому Shaddie.
 
	| 
 
 Оригинал состава верфей   (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  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);
 
} | 
	 
 
 
 
 | 
 
 
        	 _________________ Следи за собой, будь осторожен. В.Цой 
  Последний раз редактировалось: KWON (21:55 11-02-2018), всего редактировалось 3 раз(а) | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		Черновая попытка вынудить неписей скидывать на игрока мины и лазерные башни, помимо дронов с пинка Kwon.  
 
 
Добавил два хука: в AttackedBy (чтобы их запускать) и в AddDefaultUpgrades, чтобы добавить их на все создаваемые во вселенной корабли на своих условиях.
 
 
Хук в AttackedBy запустит функцию DefensiveDrop, в которой можно спокойно написать логику и проверки в XC.
 
	  | Код: | 
	 
	
	  ; 000BD8EA: 000A                   |    3            push       1
 
; 000BD8EC: 003C                   |    4            get_object
 
; 000BD8EE: 0057 00001E34          |    5            call       TSHIP.MakeDamage ; 00001E34
 
; 000BD8F4: 002C                   |    3            pop
 
; 000BD8F6: 002E 0001              |    2            popx       1
 
; 000BD8FA: 0006 000A              |    1            read       TSHIP.sh_Owner ; [10d ; 0Ah]
 
; 000BD8FE: 0033 0005EC8B          |    2            if SP[0]=0 then jump L000BD91E
 
           .section   code, abs
 
$ = 000BD8F4h
 
           jump       ABHook
 
ABHookBack:
 
 
           .section   code, con
 
 
ABHook:    popx       2
 
           push       0
 
           get_object
 
           call       TSHIP.DefensiveDrop
 
           pop
 
           jump       ABHookBack | 
	 
 
 
 
Хук в AddDefaultUpgrades запустит функцию AddExtra, в которой опять же в коде XC можно добавить условия и всё такое перед добавлением мин на корабль. Например, является ли раса корабля пиратской и т.п.
 
	  | Код: | 
	 
	
	  ; 000AC194: 0057 00000A6B          |    6            call       AddWare ; 00000A6B
 
; 000AC19A: 002C                   |    2            pop
 
; 000AC19C: 002E 0001              |    1 L000AC19C: popx       1
 
; 000AC1A0: 0009                   |    0            push       0
 
; 000AC1A2: 0035                   |    1            ret
 
 
           .section   code, abs
 
$ = 000AC19Ch
 
           jump       AddExtra
 
 
           .section   code, con
 
AddExtra:  pop                       ; возвращаем на место pop по адресу 000AC1D6
 
           push       0
 
           get_object                ; this->
 
           call       TSHIP.AddExtra ; запускаем нашу функцию
 
           pop
 
           push       0
 
           ret | 
	 
 
 
 
Добавил это для удобства в архив xt_obj_patching в первом посте.
 
 
Раскомментировать это в patch.asm:
 
	  | Код: | 
	 
	
	             ; .include   "inc/attackedby_hook.asm"
 
           ; .include   "inc/add_default_items_hook.asm" | 
	 
 
 
 
Текущие косяки: корабли скидывают мины до того, как станут вражески настроенными. Мины взрывают обоих.  
        	  | 
		 
		
		| 
		
		 | 
         
     |  
	
		yakim81
   305 EGP
     Рейтинг канала: 6(417) Репутация: 18 Сообщения: 222 
  Зарегистрирован: 07.02.2015
       | 
         | 
		А подскажите, пожалуйста, может я плохо искал, есть ли полный список функций, вызываемых из exe с их идентификатором (числовое значение), по которому этот самый exe их определяет и исполняет (я так понимаю, функции callasm)?
        	  | 
		 
		
		| 
		
		 | 
         
     |  
	
		Non
   802 EGP
         Рейтинг канала: 6(383) Репутация: 239 Сообщения: 801 
  Зарегистрирован: 27.06.2006
       | 
         | 
		
	
 Такой?     (кликните здесь для просмотра)
 
	  | Код: | 
	 
	
	  callasm                              005A
 
B3D_InstAddToScene                   00002FC1
 
B3D_InstAlloc                        00002A8B
 
B3D_InstDeleteFromScene              00003D2A
 
B3D_InstFree                         00002AC7
 
B3D_InstGetFlags                     000032D8
 
B3D_InstSetBody                      00002A99
 
B3D_InstSetFlags                     000032E9
 
B3D_InstSetInvis                     000034CB
 
B3D_InstSetOverrideEffect            0000345F
 
B3D_InstSetPos                       00002AA9
 
B3D_InstSetRot                       00002AB8
 
B3D_InstSetSize                      00000F47
 
B3D_InstSetSizeUsed                  00003479
 
B3D_LightAddToScene                  00002B92
 
B3D_LightAlloc                       00002B71
 
B3D_LightSetAttenuation              000032FA
 
B3D_LightSetColor                    00002B80
 
B3D_LightSetRange                    00003312
 
B3D_SceneDisable                     00002894
 
B3D_SceneEnable                      000028BA
 
B3D_SceneGetCamera                   00002FD4
 
B3D_SceneSetFocus                    00002C67
 
B3D_SceneSetViewPort                 000028A5
 
CD_PlayTrack                         000002AB
 
CD_Stop                              00000275
 
D_SaveTGAScreenshot                  00002C83
 
GS_AddGate                           00000AD6
 
GS_RemoveGate                        000015FA
 
GS_Route                             0000039F
 
GS_RouteLen                          000003A8
 
J3D_JobStart                         0000333D
 
J3D_JobStop                          0000334A
 
J3D_TakeAlloc                        00002948
 
J3D_TakeFree                         00002964
 
J3D_TakeStart                        00002956
 
J3D_TakeStop                         00002971
 
MOV_ConnectMovieToTexture            0000003B
 
MOV_FreeMovie                        0000010B
 
MOV_LoadMovie                        0000002D
 
MOV_PlayMovie                        0000029D
 
MOV_PlayMovieFrom                    000000E3
 
MOV_SetRateMovie                     0000322E
 
MOV_SetVolumeMovie                   0000028A
 
MOV_StopMovie                        000000B7
 
Net_CreatePlayer                     00002822
 
Net_GetPlayerName                    00002833
 
P_AddTime                            000012B6
 
P_CmpSec                             000025DF
 
P_CmpTime                            000012AC
 
P_Delay                              000000C5
 
P_GetAbsMilliSec                     00002AD4
 
P_GetAbsSec                          00002AE5
 
P_GetAbsTime                         00000D77
 
P_GetTimeWarpFactor                  00002E0C
 
P_GetTimeWarpFactorDisplay           0000A001
 
P_Interrupt                          00001979
 
P_Load                               00000945
 
P_LoadSaveNames                      00004792
 
P_Random                             000000F5
 
P_RandomLowNorm                      0000175E
 
P_Save                               0000094C
 
P_SetAbsTime                         00003A5D
 
P_SetTimeWarpFactor                  00002CC0
 
P_SetTimeWarpFactorDisplay           0000A01C
 
P_ViewEBMFullscreen                  00000931
 
P_WaitForInterrupt                   00001A9F
 
SA_AllocObject                       00000E5B
 
SA_AllocTextInst                     00003356
 
SA_AttackObject                      00001B11
 
SA_AttackObjectBig                   00001B65
 
SA_AvoidObjectCollision              000019FE
 
SA_BuildGalaxyMap                    00004579
 
SA_CaptureObject                     00001FCA
 
SA_ClearGalaxyMap                    0000458B
 
SA_ClearIdentifyView                 000031BA
 
SA_ClearObjectFromCarrier            000019E4
 
SA_ClearObjectFromHangar             00001A16
 
SA_CollisionObject                   00001A3E
 
SA_DisplayCameraMessage              00003091
 
SA_DisplayMessage                    00003050
 
SA_DisplayMessageWithDuration        00003032
 
SA_DisplayNavMap                     00003011
 
SA_DisplayStaticText                 00002C00
 
SA_DisplayText                       00002E41
 
SA_Distance                          00002293
 
SA_DoObjectSound                     00005489
 
SA_DrawObjectSymbol                  000044F3
 
SA_DrawObjectSymbol3D                00004510
 
SA_DrawRadar                         00002C97
 
SA_DumpSectorScene                   00000E99
 
SA_EnterIdentifyView                 00003387
 
SA_EnterOuterView                    00002BB7
 
SA_EnterTargetView                   000030A9
 
SA_EscortObject                      00001FA7
 
SA_FindNearestEnemy                  00001BC4
 
SA_FindNearestEnemyByStrength        00001BA6
 
SA_FindObject                        000011A1
 
SA_FindObjectSubTypeInContainer      00000F9F
 
SA_FindObjectType                    00000320
 
SA_FindObjectTypeInContainer         00000340
 
SA_FireOnObject                      00001B3A
 
SA_FlyBigShipBeforeDockPos           00009FC4
 
SA_FlyObjectBeforeContainer          00001A5D
 
SA_FlyObjectIntoContainer            00001A79
 
SA_FollowObject                      00002B30
 
SA_FollowObjectByCut                 000020C6
 
SA_ForceMove                         00003156
 
SA_FreeAllBodies                     00002A4A
 
SA_FreeCutScene                      000029BB
 
SA_FreeObject                        00000E8B
 
SA_GetBody                           00003C4B
 
SA_GetCameraObject                   00003117
 
SA_GetCollisionObjects               000035D5
 
SA_GetCompBody                       00003C3C
 
SA_GetCount                          00001EBE
 
SA_GetDirX                           00004B25
 
SA_GetDirY                           00004B30
 
SA_GetDirZ                           00004B3B
 
SA_GetEventObject                    00000F28
 
SA_GetFlags                          000013C0
 
SA_GetGrid                           00002D40
 
SA_GetInst3D                         00000F3A
 
SA_GetLaser                          000018E4
 
SA_GetLaserFired                     00003BC9
 
SA_GetLaserHits                      00003BED
 
SA_GetLaserPosition                  000016ED
 
SA_GetLaserTypeEnergyMax             000018F0
 
SA_GetMainType                       00001EAF
 
SA_GetMat                            00002FFE
 
SA_GetMatTextArray                   00003C29
 
SA_GetMaxLaser                       00001915
 
SA_GetMaxShield                      0000108F
 
SA_GetMaxShipTypeLasers              00001632
 
SA_GetMaxSpeed                       00002DBB
 
SA_GetMissileFired                   00003BDA
 
SA_GetMissileHits                    00003BFD
 
SA_GetObjectTextID                   000018C0
 
SA_GetPosX                           00001943
 
SA_GetPosY                           0000194E
 
SA_GetPosZ                           00001959
 
SA_GetRelation                       00001059
 
SA_GetRotAlpha                       00002488
 
SA_GetRotBeta                        00002497
 
SA_GetRotGamma                       000024A5
 
SA_GetScene                          00002888
 
SA_GetShield                         00001075
 
SA_GetShieldTypeEnergyMax            0000109F
 
SA_GetShipTypeCockpitBody            00001DFE
 
SA_GetShipTypeMaxExtraRotSpeed       00001173
 
SA_GetShipTypeMaxExtraSpeed          00001157
 
SA_GetShipTypeMaxLaserType           00001682
 
SA_GetShipTypeMaxNumRockets          00001666
 
SA_GetShipTypeMaxNumShields          0000164A
 
SA_GetShipTypeMaxRocketType          0000172D
 
SA_GetShipTypeMaxShieldType          0000169D
 
SA_GetShipTypeMaxTradeContainerSize  000010F0
 
SA_GetShipTypePowerGeneration        00003752
 
SA_GetShipTypeTradeContainerSize     00001114
 
SA_GetSize                           00001ECA
 
SA_GetSpeed                          000098CC
 
SA_GetStrength                       00001B97
 
SA_GetSubType                        00000332
 
SA_GetTimer                          000025CC
 
SA_GetTotalDistance                  00003C0F
 
SA_GetTrackingAim                    00001F8B
 
SA_GetType                           0000991F
 
SA_GetTypeAcceleration               0000370E
 
SA_GetTypeBody                       00002031
 
SA_GetTypeCompBody                   0000201E
 
SA_GetTypeGSubType                   00001587
 
SA_GetTypeMaxSpeed                   00001850
 
SA_GetTypePriMaxP                    0000124D
 
SA_GetTypeRelValue                   00000953
 
SA_GetTypeSecMaxP                    00001458
 
SA_GetTypeStepX                      00001863
 
SA_GetTypeStepY                      00001873
 
SA_GetTypeStepZ                      00001883
 
SA_GetTypeTextID                     000002EC
 
SA_GetTypeVolume                     00000FC9
 
SA_Idle                              00001C64
 
SA_IsDockingBlocked                  000013F0
 
SA_IsSafePos                         0000229F
 
SA_KillObject                        00000F57
 
SA_LandAllObjectsInHangar            00003295
 
SA_LeaveIdentifyView                 00003267
 
SA_LeaveOuterView                    000029D0
 
SA_LoadCutScene                      000029AB
 
SA_MatNearestPen                     00000DF9
 
SA_MatRectFill                       00000E1A
 
SA_MatTextBlock                      00000E0A
 
SA_MatTextBlockHeight                0000306B
 
SA_MatTextWidth                      00003081
 
SA_MaxDistance                       0000098C
 
SA_MoveLaserIntoContainer            000016D3
 
SA_MoveObjectIntoContainer           00000F84
 
SA_MovePos                           000099A4
 
SA_RotateToAngles                    00009FDF
 
SA_SetAsPlayerObject                 00001985
 
SA_SetBayDoorContent                 00002F28
 
SA_SetBayDoorStatus                  00002F51
 
SA_SetCount                          00001382
 
SA_SetCurrentMissile                 00001701
 
SA_SetDesiredSpeed                   00001DD5
 
SA_SetEventObject                    00000EE2
 
SA_SetExtraRotSpeed                  000017FA
 
SA_SetExtraSpeed                     000017E9
 
SA_SetFlags                          000013CC
 
SA_SetGalaxy                         00000E73
 
SA_SetGlide                          00000F03
 
SA_SetGrid                           00001E8C
 
SA_SetGroup                          00001488
 
SA_SetGroupRelation                  00001045
 
SA_SetHitRappelDelay                 00002EFA
 
SA_SetIdentifyView                   000031CF
 
SA_SetLaser                          00004B46
 
SA_SetLight                          00000F78
 
SA_SetMaxAvoidShield                 00001964
 
SA_SetPause                          00002F0F
 
SA_SetPlayerBoost                    00002CAE
 
SA_SetPlayerLand                     00002B47
 
SA_SetPos                            00000ECE
 
SA_SetRearView                       000030BC
 
SA_SetRelation                       00005629
 
SA_SetRelativePos                    00001ED5
 
SA_SetRot                            00000ED8
 
SA_SetSafePos                        000010B9
 
SA_SetShield                         00001068
 
SA_SetSpeed                          00001DC9
 
SA_SetTrackingAim                    000024CE
 
SA_SetWareID                         00001494
 
SA_ShootMissileOnObject              000017A9
 
SA_ShowRelativeExplosion             00004A9A
 
SA_StartAllShipsFromHangar           000014C0
 
SA_StartInHangar                     000019CC
 
SA_StartObject                       00000EF4
 
SA_StartTake                         00003324
 
SA_StopObject                        00001613
 
SA_StopTake                          00003331
 
SA_TurnToObject                      00004B15
 
SA_WarpObjectAway                    00001ADF
 
SE_ArrayAlloc                        00000AE1
 
SE_ArrayFree                         000002CE
 
SE_ArraySize                         000001B6
 
SE_CubicPoly                         0000146A
 
SE_Distance3                         000009A2
 
SE_DivFix                            00004545
 
SE_ExistsText                        0000459D
 
SE_FClose                            00000CCF
 
SE_FOpen                             00000C37
 
SE_FPrintf                           00000C4E
 
SE_FreeString                        00000DD2
 
SE_GetNum                            000096D7
 
SE_GetPID                            000014E9
 
SE_GetTaskPC                         00001440
 
SE_KGV                               000015CA
 
SE_KillTask                          00000E29
 
SE_LinFunc                           00000975
 
SE_LinFuncSum                        000092FF
 
SE_LoadText                          000009AF
 
SE_MakeString                        00000411
 
SE_MulDivFix                         000043F1
 
SE_MulFix                            00004533
 
SE_ObjectExists                      0000041F
 
SE_ObjectFunctionExists              00002BE8
 
SE_QSortByName                       00009F28
 
SE_ReadText                          000002FD
 
SE_SPrintf                           000003C2
 
SE_Sqrt                              00005481
 
SE_StringLen                         00002FF1
 
SE_StringReadChar                    00003782
 
SE_StringSPrintf                     00000871
 
SE_StringSub                         0000340C
 
SE_StringVSPrintf                    000048CB
 
SE_TableAdd                          000001DD
 
SE_TableAlloc                        00000129
 
SE_TableExists                       00004FBD
 
SE_TableFind                         0000007F
 
SE_TableFree                         000000FE
 
SE_TableNew                          00009F59
 
SE_TableNext                         00000B48
 
SE_TableRemove                       00000DC3
 
SE_TableSize                         00000BF7
 
SE_VSPrintf                          0000287C
 
SE_strcmp                            00001E20
 
SFX_GetFXVolume                      00000159
 
SFX_GetFlags                         00002B0A
 
SFX_GetLanguage                      00000011
 
SFX_GetMODVolume                     00000137
 
SFX_PlaySample                       000001E9
 
SFX_SetFXVolume                      00000169
 
SFX_SetLanguage                      00000119
 
SFX_SetMODVolume                     00000148
 
SFX_SetMasterVolume                  00000179
 
SFX_SetMusicType                     00000055 | 
	 
 
 
 
 | 
 
 
 
 
Я тут exe колупал XBTF и XT, пытался найти в чём же разница в скорости/ускорении поворота. В XBTF супер приятно шаттл поворачивает, когда поставишь на него апгрейды. В XT сколько апгрейдов не ставь - всё равно колымага любой корабль. Базовая скорость и ускорение поворота фиксированы..
 
 
Если менять TTX шаттла в XBTF и повышать там скорость поворота, то будет эффект XT, когда возросла максимальная скорость поворота, а ускорение нет.
 
 
Нашёл три функции, которые считывают в XT и XBTF поворот по pitch, roll, yaw. Пытался их покастрировать - это ограничивало максимальную скорость поворота, т.е. они что-то делают.  
 
 
В XBTF при управлении мышкой exe даже не обращается к ТТХ шаттла.   Только при управлении с клавы.
 
 
Так что дело в функции SA_SetExtraRotSpeed, 000017FA. Но как выйти на её расположение в exe для меня пока загадка.
 
 
ollydgb2 классный дебаггер.  
        	 
  Последний раз редактировалось: Non (17:12 12-02-2018), всего редактировалось 1 раз | 
		 
		
		| 
		
		 | 
         
     |  
	
		KWON
   409 EGP
      Рейтинг канала: 8(857) Репутация: -12 Сообщения: 171  Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
       | 
         | 
		Спасибо пилоту Shaddie
 
за супер редактор и за обновленный файл кодов code_xt для программы нашего модератора.
 
 
Спасибо гениальному модератору Non
 
за то что код Shaddie можно переделать и осуществить мечты 
 
которые казались раньше несбыточными!
 
 
Теперь предлагается разобранный на запчасти их файл для более лёгкого поиска нужных функций, 
 
типа как ассемблер разбивает на секции так и тут.
	
  
	
	
		| code_xt_cpp.7z | 
	 
	
		|  Описание: | 
		
			
			
				| Разбитый на файлы код обжа от пилота Shaddie | 
			 
			 
		 | 
	 
	
		|  Имя файла: | 
		 code_xt_cpp.7z | 
	 
	
		|  Размер файла: | 
		 116.62 KB | 
	 
	
		|  Скачано: | 
		 524 раз(а) | 
	 
	 
        	 _________________ Следи за собой, будь осторожен. В.Цой 
  Последний раз редактировалось: KWON (10:21 10-10-2020), всего редактировалось 1 раз | 
		 
		
		| 
		
		 | 
         
     |  
	 |  
	
		| 
		
		 | 
	 
     |  
	| 
	  Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |  
	
		| 
		
		 | 
	 
 
      
        | К списку каналов | Наверх страницы  |  
Цитата не в тему:  Раз назвал мну боссом - плати бабульки за плохую работу! (требует модератор Nadin)
 
  |  
        |   » Раскопки обжа на предмет юзабельных вещей | страница 4 |  
       
      
 |