| 
| ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм.
 Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
 
 
 |  | » Раскопки обжа на предмет юзабельных вещей | страница 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 
  502 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 
  502 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 |  
		| Скачано: | 647 раз(а) |  
	
		| xt_obj_patching_Non.7z |  
		| Описание: | 
			
				| Тестовые примеры редактирования карты от  пилота Non |  |  
		| Имя файла: | xt_obj_patching_Non.7z |  
		| Размер файла: | 654.59 KB |  
		| Скачано: | 638 раз(а) |  _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: 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 |  
		| Скачано: | 929 раз(а) |  _________________
 Быстро едешь, тихо понесут...
 |  
		|  |  |  |  
		| 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 |  
		| Скачано: | 523 раз(а) |  _________________
 Следи за собой, будь осторожен. В.Цой
 
 Последний раз редактировалось: KWON (10:21 10-10-2020), всего редактировалось 1 раз
 |  
		|  |  |  |  |  |  
		|  |  |  |  | Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей» |  
		|  |  
        | К списку каналов | Наверх страницы |  | Цитата не в тему:  Все какашки раскиданы, тему закрываю. (Katana) 
 
 |  | » Раскопки обжа на предмет юзабельных вещей | страница 4 |  |