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