Elite Games - Свобода среди звезд!
.
  » x2story.obj: дописываем и переписываем obj-код. | страница 6
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

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

   Страница 6 из 6
На страницу: Пред.  1, 2, 3, 4, 5, 6 | Все страницы
Поиск в этой теме:
Канал X2: The Threat: «x2story.obj: дописываем и переписываем obj-код.»
AlexYar
 1597 EGP


Рейтинг канала: 6(409)
Репутация: 342
Сообщения: 24083

Зарегистрирован: 26.10.2003
Тему ап, чтобы долго не искать потом.

Тут самая важная информация из всей, что есть по х2/х3.
И она ещё не раз пригодится в будущем..
    Добавлено: 20:01 05-07-2013   
KWON
 328 EGP


Рейтинг канала: 4(70)
Репутация: -11
Сообщения: 134
Откуда: Україна. Чигирин.
Зарегистрирован: 24.11.2014
Думаю тему правильно выбрал.

Раз здесь ещё бывают люди поделюсь одним улучшением - возврат экстэновского обзора спутникам в Х2.
Я не думаю что это читерство, для меня оно как восстановление экстэнской справедливости.

Вот оригинальные значения диапазона осмотра спутников:
Версия 1.4
 Cкрытый текст   (кликните здесь для просмотра)

Код:

2065-TSATELLITE
                                 |      TSATELLITE.GetScannerRange:
0012A5AA: 0002 00986F70          |    0            pushd      9 990 000 / 222 = 45 000 km

2080-TSATELLITE_2
                                 |      TSATELLITE_2.Get Scanner Range:
0012A630: 0002 00ED1F20          |    0            pushd      15 540 000 / 222 = 70 000 km


Версия 1.5
 Cкрытый текст   (кликните здесь для просмотра)

Код:

2065-TSATELLITE
                                 |      TSATELLITE.GetScannerRange:
0012D122: 0002 00986F70          |    0            pushd      9 990 000 / 222 = 45 000 km

2080-TSATELLITE2
                                 |      TSATELLITE2.GetScannerRange:
0012D1A8: 0002 00ED1F20          |    0            pushd      15 540 000 / 222 = 70 000 km


Увеличение диапазона спутниковой видимости.
Сначала распаковать 01.cat, 01.dat. В папке "L" открыть гекс-редактором x2story.obj. Задать в поиск нужный адрес (см.выше).
И потом, например для версии 1.5, такие действия:
1. Число 150 000 km (больше не нужно) умножаем на 222 = 33 300 000.
2. Переводим калькулятором Виндовса в гекс = 01 FC 1E 20.
3. И по адресу 0012D1A8 пропишем 0002 01FC1E20.
Этого значения будет достаточно поскольку зум сектора далее ограничен.

Updt
Информация по уважению рас к игроку (Notoriety), адреса для версии 1.4, раздел - 2000-TGALAXY:
 Cкрытый текст   (кликните здесь для просмотра)

Код:

// Отношение Пиратов к Игроку.
00010A28: 002C                   |    3            pop
00010A2A: 0002 FFF0BDC0          |    2            pushd      -1000000d ; 0FFF0BDC0h      Очки рейтинга.
00010A30: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010A32: 000B                   |    4            push       2
00010A34: 0010                   |    5            push       7         Отношение Пиратов (см.вверх)...
00010A36: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Ксенона к Игроку.
00010A42: 002C                   |    3            pop
00010A44: 0002 FFF0BDC0          |    2            pushd      -1000000d ; 0FFF0BDC0h      Очки рейтинга.
00010A4A: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010A4C: 000B                   |    4            push       2
00010A4E: 000F                   |    5            push       6         Отношение Ксенона (см.вверх)...
00010A50: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Паранида к Игроку.
00010A5C: 002C                   |    3            pop
00010A5E: 0001 FF97              |    2            pushw      -105d ; 0FF97h         Очки рейтинга.
00010A62: 0013                   |    3            push       10d ; 0Ah         ....к Игроку.
00010A64: 000B                   |    4            push       2
00010A66: 000D                   |    5            push       4         Отношение Паранида (см.вверх)...
00010A68: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Сплита к Игроку.
00010A74: 002C                   |    3            pop
00010A76: 0001 FF9B              |    2            pushw      -101d ; 0FF9Bh         Очки рейтинга.
00010A7A: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010A7C: 000B                   |    4            push       2
00010A7E: 000C                   |    5            push       3         Отношение Сплита (см.вверх)...
00010A80: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Аргона к Игроку.
00010A8C: 002C                   |    3            pop
00010A8E: 0009                   |    2            push       0         Очки рейтинга.
00010A90: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010A92: 000B                   |    4            push       2
00010A94: 000A                   |    5            push       1         Отношение Аргона (см.вверх)...
00010A96: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Борона к Игроку.
00010AA2: 002C                   |    3            pop
00010AA4: 0001 0064              |    2            pushw      100d ; 64h         Очки рейтинга.
00010AA8: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010AAA: 000B                   |    4            push       2
00010AAC: 000B                   |    5            push       2         Отношение Борона (см.вверх)...
00010AAE: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Телади к Игроку.
00010ABA: 002C                   |    3            pop
00010ABC: 0009                   |    2            push       0         Очки рейтинга.
00010ABE: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010AC0: 000B                   |    4            push       2
00010AC2: 000E                   |    5            push       5         Отношение Телади (см.вверх)...
00010AC4: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Гонеров к Игроку.
00010AD0: 002C                   |    3            pop
00010AD2: 0001 0064              |    2            pushw      100d ; 64h         Очки рейтинга.
00010AD6: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010AD8: 000B                   |    4            push       2
00010ADA: 0012                   |    5            push       9         Отношение Гонеров (см.вверх)...
00010ADC: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]

// Отношение Хааков к Игроку.
00010AE8: 002C                   |    3            pop
00010AEA: 0002 FFF0BDC0          |    2            pushd      -1000000d ; 0FFF0BDC0h      Очки рейтинга.
00010AF0: 0013                   |    3            push       10d ; 0Ah         ...к Игроку.
00010AF2: 000B                   |    4            push       2
00010AF4: 0011                   |    5            push       8         Отношение Хааков (см.вверх)...
00010AF6: 0004 0018              |    6            readvar    global.ga_Races ; [24d ; 18h]


_________________
Постраждати за Україну, все одно, що постраждати за Христа!
https://www.youtube.com/watch?v=8ki69Vcb_-E

Последний раз редактировалось: KWON (14:05 27-09-2016), всего редактировалось 6 раз(а)
    Добавлено: 06:08 03-06-2016   
KWON
 328 EGP


Рейтинг канала: 4(70)
Репутация: -11
Сообщения: 134
Откуда: Україна. Чигирин.
Зарегистрирован: 24.11.2014
Небольшая программа для:
- открытия редактора скриптов;
- увеличения обзора улучшенных спутников;
- постоянного присутствия комплектации "L" на всех верфях.
- выбора стартового сектора
(для мододелов, которых интересуют реальные изменения их редактирования
или для начала безсюжетной карты).

Вложение удалено, смотреть сообщение с патчером ниже
_________________
Постраждати за Україну, все одно, що постраждати за Христа!
https://www.youtube.com/watch?v=8ki69Vcb_-E

Последний раз редактировалось: KWON (22:21 01-12-2016), всего редактировалось 1 раз
    Добавлено: 14:18 27-09-2016   
P@SHA
 475 EGP


Рейтинг канала: 4(93)
Репутация: 61
Сообщения: 2902
Откуда: г.п. Антополь, Беларусь
Зарегистрирован: 24.11.2006
KWON :
- постоянного присутствия комплектации "L" на всех верфях.

Не знаю, для чего остальные пункты требуются кому-то, но вот этот то что нужно! Убивало часами мотаться по вселейнной в надежде найти корабль в максимальной комплектации.
Надеюсь это касается лишь классов М5-М3, TS и TP? Для М1, М2, М6 и TL, наоборот, всегда в радость было самому комплектовать потихоньку.
    Добавлено: 19:13 27-09-2016   
P@SHA
 475 EGP


Рейтинг канала: 4(93)
Репутация: 61
Сообщения: 2902
Откуда: г.п. Антополь, Беларусь
Зарегистрирован: 24.11.2006
Хм, он заменяет .obj? Если это так, то это грустно, ведь в своем обже я исправил баг с халявными миллионами и миллиардами за миссию "Вторжение ксенонов" Расстроен
    Добавлено: 19:21 27-09-2016   
P@SHA
 475 EGP


Рейтинг канала: 4(93)
Репутация: 61
Сообщения: 2902
Откуда: г.п. Антополь, Беларусь
Зарегистрирован: 24.11.2006
Минам я как-то не нашел применения, лишь однажды случайно юзнул, когда вез контрабандой (нашел в контейнере на станции) и, когда меня просканировали и заставили выбросить груз контрабандный, я ее как-то активировал, испарив космотпопливо и космотраву выброшенные с миной, да самого патрульного на м5 и здорово потрепав свой Баян Хы...
Поделись возможным применением Улыбка

добавлено спустя 1 минуту:
KWON :
Улыбка Не нужно плакать.
Берете свой обж редактируете и все Ваши прежние изменения остануться!

Еслибы я умел еще. Просто взял кусок кода из соответсвующей темы и скормил ассемблеру по инструкции из БД.

Последний раз редактировалось: P@SHA (19:27 27-09-2016), всего редактировалось 1 раз
    Добавлено: 19:27 27-09-2016   
KWON
 328 EGP


Рейтинг канала: 4(70)
Репутация: -11
Сообщения: 134
Откуда: Україна. Чигирин.
Зарегистрирован: 24.11.2014
Добавил в патчер Вашу проблемму решенную пилотом SD о миссии "Вторжение Ксенонов" в версии 1.4:
http://www.elite-games.ru/conference/viewtopic.php?p=1350254#1350254

На всякий случай усилил сквош-мину до 30000 из 10000 МВ,
можна разве только тушить пиратские лазерные башни, пока они белые Улыбка .

UPGR
Архив "Х2" содержит разкуроченную версию обжиков Икс-два,
с помощью прог Чекера по дизасемблированию для модерирующих.

UPD
Анонсное сообщение.

Приношу извинения скачавшим.
Я, делая патч для замены лазеров боевого робота, ошибся.

Програмный код правильный, но
наверное есть скрипт отвечающий за комплектацию лазеров Дрона.

Я просто сделал как для Экстэна (там я проверял, всё работало) подумал и для Х2 соответствующий код подойдёт.
Но не тут то было.
Вот эти кода:
для ХТ-2.2:
 Cкрытый текст   (кликните здесь для просмотра)
Код:
0016456E: 000A                   |    1            push       1 - количество пушек
00164570: 0009                   |    2            push       0 - вид лазера
00164572: 000B                   |    3            push       2
00164574: 0001 07D4              |    4            pushw      2004d ; 07D4h
00164578: 0057 000009D5          |    5            call       TSHIP.AddLaser ; 000009D5

для Х2-1.4:
 Cкрытый текст   (кликните здесь для просмотра)
Код:
0012CB98: 000A                   |    1            push       1 - количество пушек
0012CB9A: 0009                   |    2            push       0 - вид лазера
0012CB9C: 000B                   |    3            push       2
0012CB9E: 0001 0856              |    4            pushw      2134d ; 0856h
0012CBA2: 0057 000013EA          |    5            call       TSHIP_MOVEABLE.AddLaser ; 000013EA

Поэтому патч переделан.
Работает только замена слотов пушек.
Т.е. количество лазеров прокатило а качество - нет.

Прошу помощи, кто знает в чем дело?

Извинения приносятся к 15-ти скачавшим.
Теперь уже убрано сие в последней версии патча.

X2_Patcher.rar
 Описание:
Патчеры для версий 1.4 и 1.5 Х2ТТ.
 Имя файла:  X2_Patcher.rar
 Размер файла:  2.74 MB
 Скачано:  79 раз(а)
X2.rar
 Описание:
x2story.obj в разобраном состоянии.
Для двух последних версий 1.4 и 1.5.
 Имя файла:  X2.rar
 Размер файла:  13.9 MB
 Скачано:  67 раз(а)

_________________
Постраждати за Україну, все одно, що постраждати за Христа!
https://www.youtube.com/watch?v=8ki69Vcb_-E

Последний раз редактировалось: KWON (00:25 21-01-2017), всего редактировалось 8 раз(а)
    Добавлено: 06:52 29-09-2016   
Non
 790 EGP


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

Зарегистрирован: 27.06.2006
Привет! Я все понимаю, опоздал лет на 10. Немного того...

Пытаюсь сделать турбо-двигатель для шаттла и повесить его на не занятую кнопку (с этим проблемы). Реализация деревянная, через SA_GetMaxSpeed и SA_SetExtraSpeed.

Подумал, что будет разумно посмотреть в исходники патча от Darth Revan'а на предмет добавления новых кнопок и похоже не прогадал, но вот понять как это применить - даже близко не получилось. Расстроен

Архив с функциями Input в классе TCLIENT, чтобы упростить гипотетическую помощь мне. Один вариант - оригинальный код игры, транслированный в XC, другой - исходник из патча Darth Revan, где добавлены несколько новых кнопок.

Кусок транслированного в XC кода, который содержит в себе, как я понял, - группу назначенных кнопок на разные действия.

 Cкрытый текст   (кликните здесь для просмотра)
Код:
switch(locate(arg1,423,107,__unknown(040808000h, 000000000h),
527       27,116,101,338,339,262,360,331,330,81,32,13,343,431,      535       27,116,101,338,339,262,360,331,330,81,32,13,343,431,
528       104,72,105,115,112,33,34,167,36,37,38,47,40,41,78,44,      536       104,72,105,115,112,33,34,167,36,37,38,47,40,41,78,44,
529       46,266,267,269,429,425,421,103,99,67,271,273,433,272,      537       46,266,267,269,429,425,421,103,99,67,271,273,433,272,
530       102,111,70,106,117,68,69,108,109,76,83,114,79,77,49,      538       102,111,70,106,117,68,69,108,109,76,83,114,79,77,49,
531       50,51,52,82))   
539       50,51,52,82,'x',92,'A','Z','X'))

Мягко скажем не понял, как это работает.

У егософта даже остались функции: турбо включено, нет щита и взорвать корабль без щита, что дарит мне судя по всему ложные надежды на возможность реализации. Подмигиваю

 Cкрытый текст   (кликните здесь для просмотра)
Код:
function TCLIENT.NotifyTurboOn()
 {
 var loc1=TI_CmpTime(TI_GetAbsTime(),TCLIENT.cl_LastNotifyTurbo);
 if(loc1>0&&loc1<5000)
  {
  return(0);
  }
 TCLIENT.cl_LastNotifyTurbo=TI_GetAbsTime();
 if(TCLIENT.GetVerbose())
  {
  start
   {
   TX_AUDIO.SpeakWithPriority(13,1269,-20);
   }
  }
 return(0);
 }

function TCLIENT.NotifyNoTurboShield()
 {
 start
  {
  TX_AUDIO.SpeakWithPriority(13,1270,10);
  }
 return(0);
 }

function TCLIENT.DieNoTurboShield()
 {
 start
  {
  TI_Delay(100);
  TCLIENT.StartKilled(15,0);
  }
 return(0);
 }


Немного осовремененной (по моменту выхода X2) аутентичности. Гы-гы
Раз, два


PS2: KWON, може лучше выкладывать патчи в виде ассемблерокорма?
Их и писать проще гораздо, взяв за основу транслированное в XC, и комбинировать. Ежели менять функцию более фундаментально, чем замена 1 значения - поплывут адреса и дальше патчер HEX'a бесполезен.

Я таки доковырялся со своим бездарным пониманием ассемблера до небольшого результата - отключил непредсказуемое, бесячее убивание оборудования из-за попадания снарядов и тарана. Сделал вызываемую функцию убивания пустышкой. Кстати тяжело было допереть, чего надо писать в ассемблере, поэтому я пошел ленивым путем - транслировал коротенький код из XC в XASM. Хы...

 Cкрытый текст   (кликните здесь для просмотра)
Код:
.title     MakeDamageNull
.ident     X2
.radix     16d
.loadobj   "x2story.obj"

.section code, abs

TSHIP.MakeDamage:
   setmem   1
   push     0
   ret

.end


Последний раз редактировалось: Non (03:19 16-12-2016), всего редактировалось 2 раз(а)
    Добавлено: 02:51 16-12-2016   
Non
 790 EGP


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

Зарегистрирован: 27.06.2006
Продолжаю биться головой об стену и кое-какой результат получен!
Кнопка X запускает функцию оповещения о включении турбо режима. Супер!
Учитывая что я ни разу не программист и совсем не ASM'ер, результатом впечатлен.

 Cкрытый текст   (кликните здесь для просмотра)
Код:
switch(locate(arg1,423,107,__unknown(040808000h, 000000000h),
    27,116,101,338,339,262,360,331,330,81,32,13,343,431,
    104,72,105,115,112,33,34,167,36,37,38,47,40,41,78,44,
    46,266,267,269,429,425,421,103,99,67,271,273,433,272,
    102,111,70,106,117,68,69,108,109,76,83,114,79,77,49,
    50,51,52,82,'x'))


__unknown оказывается для работы с восьмибайтовыми числами с плавающей точкой (читал посты Darth Revan'a).
Когда компилируется обратно в ASM, то выглядит как "unknown ," и из-за этого обж не собирается.
Я забил на это и поменял в коде ASM не компилирующуюся команду "unknown ," на исходный код обжа в этой строке - pushf 5.28000000E+02 и потестил - новая кнопка работает.

Все что важно для добавления функции, привязанной к кнопке - добавить ее в этот список в спойлере в конец, и добавить соответствующий switch - case. В случае оригинала последний это case 66, соот-но добавляем case 67 и пишем туда чего хотим для нашей новой кнопки.

Я написал вот это:
Код:
case 67:
    {
     TCLIENT.NotifyTurboOn();
    }


Пересобрал обж с нуля, исправив в оттранслированном XC - XASM некоторые ошибки:
- Два таких unknown с плавающей точкой вместо pushf генерируются из XC, не знаю как оно должно быть правильно - заменил на оригинал.
- Добавил в начало собранного из XC asm файла следующее:
Код:
           .title     original.obj
           .ident     X2
           .radix     10d

           .extern    Cmd_EscortObject_T, SetLatency, SetLeader, SetRelativePos
           .extern    GetQtyLogRecords, GetLogRecord, SetTurretLaserMask, DisableAnswer                
         
.macro unknown a1, a2
   .word 005Ch
   .long a1, a2
.endm

.extern нужны, чтобы сказать ассемблеру - не беспокойся об отсутствующих функциях - они внешние (в exe), все нормально, ну чего ты...
.macro нужно как раз, чтобы преобразовывать эту функцию unknown во что-то, что должно работать, но я не стал пока разбираться, заменил кодом pushf из исходного asm.

Осталось освоить более разумный и быстрый метод компиляции маленьких патчей для тестирования. Весь обж пересобирается не очень быстро.

Пока не понял, нужна ли полная пересборка обжа для полноценной замены X2-шных функций, добавления новых и так далее.

В идеале бы раздеребанить исходники Darth Revan'a на очень полезные вещи вроде упрощенного обработчика коллизий и встроить это во вполне обычную X2 без остальных фундаментальных, трудноотлаживаемых изменений (помнится там были баги).

 Оффтопные мысли   (кликните здесь для просмотра)
Поиграл в X3TC... ну нету там этого лампового ощущения маленьких станций со шлюзами, маленьких уютных корабликов. Все такое масштабное... Строить станции нет никакого желания. Без особого напряжения легко добыть мильены долларов. Экономическая часть на фоне захватно-боевой не выглядит привлекательной.

Ближе всего по старту мне нравится XBTF. В начале ничего не получится, кроме как торговать. А немного поторговав уже можно и солярочку дешевенькую поставить и весело возить на нее кристаллы.

Другое дело, что в XBTF нету меню собственности, попадание AIRE трясет корабль, как будто ему прописали двоечку. Враги слабые, когда более-менее оснастил корабль и т.д.

По ощущениям с введением захвата в XT и X2 сильно осадили экономическую часть. Мне все нравится в XT/X2, кроме того, что через некоторое время обнаруживаешь, что забил на строительство станций, экономику и прочую лабуду т.к. захват и продуктивнее и легче.

Попробовал поторговать на манер XBTF в X2 - начальная нищебродская торговля сильно осажена, что я думаю надо править.

PS: Если кому интересно, чуть позже могу более подробно описать с какими проблемами столкнется пытливый пересборщик обжа без опыта в одном посте. Я потратил пару суток времени, вдумчиво зачитываясь постами, изучая исходники чтобы понять такой минимум.

Сейчас чуть лучше понимаю, насколько надо иметь много осведомленности, опыта и мозгов, чтобы расковырять обж, написать декомпилятор, к нему транслятор и все обратно. Пока 50 килобайтные исходники сложных функций вызывают у меня недоумение, как можно столько написать кода и еще отлаживать его... Совсем запутался...
    Добавлено: 19:41 16-12-2016   
Non
 790 EGP


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

Зарегистрирован: 27.06.2006
Получилось. Улыбка
Можете потестить, можно грузить с сохранёнки.
V запускает и останавливает турбо режим. Турбо режим в 600 ms.
Из-за наглой эксплуатации оставшихся фич exe добился всех особенностей турбо режима:
- небольшая тряска кокпита
- просаживание щита в 0
- возможность взорвать корабль, включив турбо без щита

Разобрался как разделить обж на 2 куска - мой патч и остальное. Теперь пересборка и линковка моего кода с обжем занимает секунду. Даже не надо перезапускать игру, кайф.

Допиленный патч здесь

Последний раз редактировалось: Non (08:42 16-12-2017), всего редактировалось 2 раз(а)
    Добавлено: 15:02 17-12-2016   
Zeron-MK7
 301 EGP


Рейтинг канала: 7(502)
Репутация: 32
Сообщения: 378
Откуда: Latvia
Зарегистрирован: 14.09.2008
Турбо-двигатель вроде работает нормально Супер! (не было времени, чтобы протестировать его по дольше).
Non :
мой патч и остальное. Теперь пересборка и линковка моего кода с обжем занимает секунду. Даже не надо перезапускать игру, кайф.

Прога PATCH15 (которая добавляет новые корабли в OBJ файлах) не открывает твой x2story.obj файл, а то добавить новых короблей невозможна в твой obj файл.
Можна ли сделать какой то патч который добавлял твой код в любой x2story.obj файл ?
_________________
Веб-сайт http://thexgalaxy.ucoz.com/
    Добавлено: 17:57 18-12-2016   
Non
 790 EGP


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

Зарегистрирован: 27.06.2006
Можно сначала добавить корабли, потом транслировать его и пересобрать включив в него турбо двигатель.
Прога ищет данные по адресам, которые в пересобраном обже изрядно меняются.

Поменяй прогой как тебе надо корабли в обычном обже и пришли мне его Улыбка

Вообще туда еще много чего надо запихнуть, к примеру - упрощенную обработку коллизий, чтобы вражины не уклонялись на расстоянии километра, а чаще стреляли. Подозрение.
В патче Darth Revan было очень много полезного кода. Да.


Стабильный патчер думаю тяжело сделать, чтобы он добавлял код.
Я пока не понимаю принципов работы asm патчей, как происходит эта линковка, что заменяется в обже и так далее. Темный лес для меня.

Для того чтобы кнопку добавить и функцию на нее повесить нужно сначала добавить ее в одном месте в TClient.Input, потом создать новый switch - case на новую кнопку и в этом case вызывать свою функцию (я сделал TSHIP.ShuttleTurbo).

Как патчер себя поведет в такой ситуации - без понятия. Будут ли потом баги - тоже без понятия. Расстроен

Проще пересобрать.

Пересборка происходит так: обж -> asm код -> xc (язык высокого уровня), затем обратно - xc -> asm код с правками (иначе не собирается) -> обж.


Интересует ли среда быстрой сборки своего кода при помощи xc asm?
Более-менее прикладное руководство как начать что-то писать и экспериментировать с обжем?

То чего я добился сейчас:
1. собирается не меняющаяся часть обжа, из которой исключены модифицированные функции
2. за секунду собирается меняющаяся часть обжа и склеивается с основной
3. начинается новая игра на карте с 1 сектором (перезапуск игры не нужен) и сразу видно, как работает код, который я написал

Думаю, что в транслированном коде много кто может разобраться - можно поиском найти интересные существующие функции, посмотреть как работают BBS квесты, поправить их и многое другое.
Многие кто хоть немного знаком с программированием смогут написать чего-то толкового.

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

Последний раз редактировалось: Non (20:57 18-12-2016), всего редактировалось 2 раз(а)
    Добавлено: 20:41 18-12-2016   
Non
 790 EGP


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

Зарегистрирован: 27.06.2006
Нашел где в паре строк можно неслабо ускорить производственный цикл. Улыбка

Функция Production в классе TFACTORY.

Вот важный кусок кода, нас интересует переменная TFACTORY.fa_CurProdTime
Здесь рассматриваются два случая, когда имеется эффективность (шахты, солярки) и когда ее нет. В обоих случаях можно в конце добавить разделение значения где-то так на 100 и возрадоваться - ресурсы везде будут улетать. Улыбка

Код:
   if(TFACTORY.fa_SResEffect)
    {
    var loc4=(TFACTORY.fa_SResEffect+SE_Random(TFACTORY.fa_SResEffect)+
       1)/2;
    TFACTORY.fa_SResEffect=TFACTORY.fa_SResEffect-loc4;
    TFACTORY.fa_CurProdTime=(TFACTORY.fa_ProdTime*(100-loc4/SA_GetTypeRelValue(
       TFACTORY.fa_ProductType,TFACTORY.fa_ProductSubType)))/100;
    }
   else
    {
    TFACTORY.fa_CurProdTime=TFACTORY.fa_ProdTime;
    }
    Добавлено: 21:36 24-12-2016   
Канал X2: The Threat: «x2story.obj: дописываем и переписываем obj-код.»
На страницу: Пред.  1, 2, 3, 4, 5, 6 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Жить хорошо, а жить с хорнетами на борту - еще лучше!

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