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

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

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

   Страница 4 из 5
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
Поиск в этой теме:
Канал 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;


Брать тут
    Добавлено: 01:37 14-01-2018   
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 раз
    Добавлено: 22:35 17-01-2018   
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 раз(а)
    Добавлено: 02:14 18-01-2018   
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, то в файле будет
Код:
number: 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 раз(а)
    Добавлено: 18:12 18-01-2018   
Shepard
 493 EGP


Администратор
Рейтинг канала: 4(54)
Репутация: 97
Сообщения: 3369
Откуда: из безумного и бесконечного
Зарегистрирован: 02.02.2010
Вот бы путь до земли раскопать...или сектор земной выдернуть из XBTF
_________________
and Nothing Else Matters...
    Добавлено: 15:33 19-01-2018   
Non
 802 EGP


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

Зарегистрирован: 27.06.2006
Shepard :
Вот бы путь до земли раскопать...или сектор земной выдернуть из XBTF

Это не сложно. Можно создать аналогичный по образу и подобию и воткнуть туда земной авианосец. Тока чё дальше? Хы...

Можно даже симулировать XBTF-шный прыжок в X-вселенную со случайно генерированной картой, в теории. Улыбка
Не знаю как с озвучкой, но cut-сцена прыжка со злыми молниями есть. Я её даже в X2 прикручивал на обже.

Последний раз редактировалось: Non (16:09 19-01-2018), всего редактировалось 1 раз
    Добавлено: 16:09 19-01-2018   
Shepard
 493 EGP


Администратор
Рейтинг канала: 4(54)
Репутация: 97
Сообщения: 3369
Откуда: из безумного и бесконечного
Зарегистрирован: 02.02.2010
Пофиксить врата в Триумфе, запилить путь к земле, а там
Non :
симулировать XBTF-шный прыжок в X-вселенную со случайно генерированной картой, в теории. Улыбка
Не знаю как с озвучкой, но cut-сцена прыжка со злыми молниями есть
Хы...
_________________
and Nothing Else Matters...
    Добавлено: 16:55 19-01-2018   
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]
    Добавлено: 05:21 01-02-2018   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 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
 Скачано:  547 раз(а)
xt_obj_patching_Non.7z
 Описание:
Тестовые примеры редактирования карты от пилота Non
 Имя файла:  xt_obj_patching_Non.7z
 Размер файла:  654.59 KB
 Скачано:  549 раз(а)

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

Последний раз редактировалось: KWON (21:48 25-02-2018), всего редактировалось 1 раз
    Добавлено: 15:01 01-02-2018   
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 на другой:
Код:
0011D1DA | 0012B268


Зачем-то прыжок осуществляется в 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 раз(а)
    Добавлено: 18:38 01-02-2018   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 171
Откуда: Україна. Чигирин.
Зарегистрирован: 24.11.2014
Извините великодушно, но всё таки спрошу.
Non :
указать папку с игрой. Убрать REM

Это с помощью гекс-редактора, я так понимаю, да?
_________________
Следи за собой, будь осторожен. В.Цой
    Добавлено: 19:05 01-02-2018   
Non
 802 EGP


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

Зарегистрирован: 27.06.2006
Нет. patch.cmd это обычный текстовый файл. Открывается блокнотом.
    Добавлено: 19:18 01-02-2018   
Shaddie
 556 EGP


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

code_xt.zip
 Описание:
Некоторые процедуры XT в более понятном виде (есть ошибки)
 Имя файла:  code_xt.zip
 Размер файла:  156.69 KB
 Скачано:  759 раз(а)

_________________
Быстро едешь, тихо понесут...
    Добавлено: 15:54 06-02-2018   
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()
    Добавлено: 20:00 06-02-2018   
yakim81
 305 EGP


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

Зарегистрирован: 07.02.2015
Очень жаль, что нет функции TMENU_GALAXY.Input. Много надежд, что именно там находится решение с отображением 30х30 галактической карты
    Добавлено: 22:04 08-02-2018   
KWON
 408 EGP


Рейтинг канала: 8(857)
Репутация: -10
Сообщения: 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 раз(а)
    Добавлено: 16:01 11-02-2018   
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"


Текущие косяки: корабли скидывают мины до того, как станут вражески настроенными. Мины взрывают обоих. Хы...
    Добавлено: 23:08 11-02-2018   
yakim81
 305 EGP


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

Зарегистрирован: 07.02.2015
А подскажите, пожалуйста, может я плохо искал, есть ли полный список функций, вызываемых из exe с их идентификатором (числовое значение), по которому этот самый exe их определяет и исполняет (я так понимаю, функции callasm)?
    Добавлено: 12:43 12-02-2018   
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 раз
    Добавлено: 17:01 12-02-2018   
KWON
 408 EGP


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

Спасибо гениальному модератору Non
за то что код Shaddie можно переделать и осуществить мечты
которые казались раньше несбыточными!

Теперь предлагается разобранный на запчасти их файл для более лёгкого поиска нужных функций,
типа как ассемблер разбивает на секции так и тут.

code_xt_cpp.7z
 Описание:
Разбитый на файлы код обжа от пилота Shaddie
 Имя файла:  code_xt_cpp.7z
 Размер файла:  116.62 KB
 Скачано:  410 раз(а)

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

Последний раз редактировалось: KWON (10:21 10-10-2020), всего редактировалось 1 раз
    Добавлено: 20:27 12-02-2018   
Канал X-Tension/X-BTF: «Раскопки обжа на предмет юзабельных вещей»
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: ...ушел-пришел-ушел-пришел... Эффект, когда подтяжками цепляешься за ручку входной двери... (Harley)

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