ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» x2story.obj: дописываем и переписываем obj-код. | страница 6 |
|
|
|
Канал X2: The Threat: «x2story.obj: дописываем и переписываем obj-код.» |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 6(445) Репутация: 325 Сообщения: 32761
Зарегистрирован: 26.10.2003
 |
|
Тему ап, чтобы долго не искать потом.
Тут самая важная информация из всей, что есть по х2/х3.
И она ещё не раз пригодится в будущем..
|
|
|
KWON
409 EGP
    Рейтинг канала: 5(113) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 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]
|
|
_________________ Следи за собой, будь осторожен. В.Цой
Последний раз редактировалось: KWON (14:05 27-09-2016), всего редактировалось 6 раз(а) |
|
|
KWON
409 EGP
    Рейтинг канала: 5(113) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 24.11.2014
 |
|
Небольшая программа для:
- открытия редактора скриптов;
- увеличения обзора улучшенных спутников;
- постоянного присутствия комплектации "L" на всех верфях.
- выбора стартового сектора
(для мододелов, которых интересуют реальные изменения их редактирования
или для начала безсюжетной карты).
Вложение удалено, смотреть сообщение с патчером ниже
_________________ Следи за собой, будь осторожен. В.Цой
Последний раз редактировалось: KWON (22:21 01-12-2016), всего редактировалось 1 раз |
|
|
P@SHA
525 EGP
  Рейтинг канала: 5(209) Репутация: 58 Сообщения: 3464 Откуда: Брест, Беларусь Зарегистрирован: 24.11.2006
 |
|
KWON : |
- постоянного присутствия комплектации "L" на всех верфях.
|
Не знаю, для чего остальные пункты требуются кому-то, но вот этот то что нужно! Убивало часами мотаться по вселейнной в надежде найти корабль в максимальной комплектации.
Надеюсь это касается лишь классов М5-М3, TS и TP? Для М1, М2, М6 и TL, наоборот, всегда в радость было самому комплектовать потихоньку.
_________________ :X2: |
|
|
P@SHA
525 EGP
  Рейтинг канала: 5(209) Репутация: 58 Сообщения: 3464 Откуда: Брест, Беларусь Зарегистрирован: 24.11.2006
 |
|
Хм, он заменяет .obj? Если это так, то это грустно, ведь в своем обже я исправил баг с халявными миллионами и миллиардами за миссию "Вторжение ксенонов"
_________________ :X2: |
|
|
P@SHA
525 EGP
  Рейтинг канала: 5(209) Репутация: 58 Сообщения: 3464 Откуда: Брест, Беларусь Зарегистрирован: 24.11.2006
 |
|
Минам я как-то не нашел применения, лишь однажды случайно юзнул, когда вез контрабандой (нашел в контейнере на станции) и, когда меня просканировали и заставили выбросить груз контрабандный, я ее как-то активировал, испарив космотпопливо и космотраву выброшенные с миной, да самого патрульного на м5 и здорово потрепав свой Баян
Поделись возможным применением
добавлено спустя 1 минуту:
KWON : |
Не нужно плакать.
Берете свой обж редактируете и все Ваши прежние изменения остануться!
|
Еслибы я умел еще. Просто взял кусок кода из соответсвующей темы и скормил ассемблеру по инструкции из БД.
Последний раз редактировалось: P@SHA (19:27 27-09-2016), всего редактировалось 1 раз |
|
|
KWON
409 EGP
    Рейтинг канала: 5(113) Репутация: -12 Сообщения: 171 Откуда: Україна. Чигирин. Зарегистрирован: 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 |
Скачано: |
579 раз(а) |
X2.rar |
Описание: |
x2story.obj в разобраном состоянии. Для двух последних версий 1.4 и 1.5. |
|
Имя файла: |
X2.rar |
Размер файла: |
13.9 MB |
Скачано: |
598 раз(а) |
_________________ Следи за собой, будь осторожен. В.Цой
Последний раз редактировалось: KWON (00:25 21-01-2017), всего редактировалось 8 раз(а) |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 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 раз(а) |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 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 килобайтные исходники сложных функций вызывают у меня недоумение, как можно столько написать кода и еще отлаживать его...
|
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 27.06.2006
 |
|
Получилось.
Можете потестить, можно грузить с сохранёнки.
V запускает и останавливает турбо режим. Турбо режим в 600 ms.
Из-за наглой эксплуатации оставшихся фич exe добился всех особенностей турбо режима:
- небольшая тряска кокпита
- просаживание щита в 0
- возможность взорвать корабль, включив турбо без щита
Разобрался как разделить обж на 2 куска - мой патч и остальное. Теперь пересборка и линковка моего кода с обжем занимает секунду. Даже не надо перезапускать игру, кайф.
Допиленный патч здесь
Последний раз редактировалось: Non (08:42 16-12-2017), всего редактировалось 2 раз(а) |
|
|
Zeron-MK7
343 EGP
    Рейтинг канала: 9(1004) Репутация: 46 Сообщения: 590 Откуда: Latvia Зарегистрирован: 14.09.2008
 |
|
Турбо-двигатель вроде работает нормально (не было времени, чтобы протестировать его по дольше).
Non : |
мой патч и остальное. Теперь пересборка и линковка моего кода с обжем занимает секунду. Даже не надо перезапускать игру, кайф.
|
Прога PATCH15 (которая добавляет новые корабли в OBJ файлах) не открывает твой x2story.obj файл, а то добавить новых короблей невозможна в твой obj файл.
Можна ли сделать какой то патч который добавлял твой код в любой x2story.obj файл ?
_________________ Веб-сайт http://thexgalaxy.ucoz.com/ |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 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 раз(а) |
|
|
Non
802 EGP
       Рейтинг канала: 6(362) Репутация: 239 Сообщения: 801
Зарегистрирован: 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;
} |
|
|
|
|
|
|
Канал X2: The Threat: «x2story.obj: дописываем и переписываем obj-код.» |
|
|