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

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

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

   Страница 7 из 12
На страницу: Пред.  1, 2, 3 ... 6, 7, 8 ... 10, 11, 12  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X3: Terran Conflict » Модовый и скриптовый отсек X3: Terran Conflict: «X3TC Моддинг: obj-файлы и маленькие утилитки»
YOYOMAN
 71 EGP


Рейтинг канала: 2(21)
Репутация: 1
Сообщения: 141
Откуда: Украина
Зарегистрирован: 13.07.2010
CheckerTwo :

Для версии 3.2 ассемблер еще не делал.

Уважаемый CheckerTwo! Сделайте пожалуйста компилятор под версию 3,2 Улыбка Улыбка Улыбка
_________________
Unreal Engine 4
    Добавлено: 15:49 24-01-2012   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
YOYOMAN :
Уважаемый CheckerTwo! Сделайте пожалуйста компилятор под версию 3,2

Чет ты так написал... Я себя седобровым атскакалом чувствую...
Ой, не могу!..
Подправил асм (в первом посте).
    Добавлено: 21:56 24-01-2012   
SeT aka SettleR
 300 EGP


Рейтинг канала: 3(49)
Репутация: 94
Сообщения: 1253
Откуда: Третья планета от Солнца
Зарегистрирован: 27.05.2005
Не подскажете как можно увеличить трюмы станций (без изменения цен на товары), ТС и ДО?
Это ведь в обже зашито, да?
_________________
Ищу Белый Тезис

Последний раз редактировалось: SeT aka SettleR (17:06 25-01-2012), всего редактировалось 1 раз
    Добавлено: 17:05 25-01-2012   
mistaqur
 





SeT aka SettleR :
Не подскажете как можно увеличить трюмы станций (без изменения цен на товары), ТС и ДО?
Это ведь в обже зашито, да?


Конкретно для торговых доков и хаба есть строчки в types\globals.txt
Код:

// 116
SG_DOCK_STORAGE_FACTOR;0;            // Normal Docks       Storage Multiplier
SG_HUB_STORAGE_FACTOR;6;            // Terraformer Hub    Storage Multiplier


Если сильно надо и у фабрик поменять, то можно изменить множитель в TSTATION.GetWareTypeMaxStore.
    Добавлено: 18:33 25-01-2012   
VASILICH
 65 EGP


Рейтинг канала: 2(11)
Репутация: 2
Сообщения: 152
Откуда: г.Калуга
Зарегистрирован: 19.05.2006
Братцы, я понимаю что мой вопрос покажется вам неуместным иможет глупым, но я не бельмес не шарю в тех мудрённых выражениях и функциях всяуих,Но всё-же мне хочется узнать, к примеру нужно подправить у станции размер трюма под продукцию или время за которое она врабатывает партию груза.В какой из выпаковынныз файлов мне залесть и какой параметр ковырнуть. Вобщем где-то так. Ребенок Ребенок Ребенок
_________________
Я как тот Герасим, на всю херню согласен. Мне что пулемёт, что водка, лишь бы с ног валило.
    Добавлено: 14:00 19-02-2012   
wwk
 





А можно добавить команды в SE <RetVar> get station type array: maker race=<Var/Race> class=<Value>.
<RetVar> get array product <Var/Station Type>
<RetVar> get array resource <Var/Station Type>
<RetVar> get array sresource <Var/Station Type>
    Добавлено: 16:06 11-03-2012   
wwk
 





Какую задачу выполняет функция SHIP.SetPlayerControl(arg1, arg2); в x3story.obj мода ТОТТ.
    Добавлено: 01:01 14-03-2012   
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1185
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
Приветствую! Разбирая обж версии 3.2 я наткнулся на следующую непонятку:
Чем отличаются выражения
call88 ASTEROID.SetKnown
от
get_object
call85 SetKnown

мне кажется, что это одно и тоже Подозрение. просто расписано по разному или нет?, и если
call84 - команда вызова глобальной функции
call85 - команда вызова виртуального метода классов
call86 - команда вызова статического метода классов
то call88, что за команда?
_________________
Очевидное-невероятное
    Добавлено: 13:49 21-03-2012   
mistaqur
 





Процитирую сам себя.
mistaqur :
call88 аналогичен call84, за исключением того, что если call84 вызывает глобальную функцию по её адресу, то call88 вызывает метод текущего объекта по её адресу (скорее всего ею заменили связки get_object + call85). С одной стороны это хорошо (быстрее будет работать), с другой переопределить эту функцию в классах-наследниках уже не получится.


Т.е. компилятор считает, что вызываемая функция не будет переопределена в классах-потомках (скорее всего аналогия модификатора функций final), и поскольку он знает иерархию классов в момент вызова функции, то он сразу вычисляет адрес нужной функции и подставляет его (а старый вариант каждый раз просматривал иерархию классов текущего объекта и искал по имени функции нужный адрес, что разумеется гораздо медленней нового варианта).
    Добавлено: 23:08 21-03-2012   
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1185
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
По ходу это и есть некоторая оптимизация производительности заявленная Egosoft'ом.
 Cкрытый текст   (кликните здесь для просмотра)
X3: Земной конфликт - Список изменений

------------------------------------------------------------------------------
3.2 - Январь 2012
------------------------------------------------------------------------------

Новые возможности и улучшения:

- Сила толкающего эффекта УИГ теперь зависит от расстояния
- Улучшена реализация дружественного ракетного огня
- Ракеты игрока стали неуязвимы к повреждениям от оружия на 2 секунды после запуска
- Добавлены новые расширения для оконного режима и поддержка res.dat файла
- Некоторая оптимизация производительности

_________________
Очевидное-невероятное
    Добавлено: 05:27 22-03-2012   
Whiskas
 137 EGP


Рейтинг канала: 3(36)
Репутация: 5
Сообщения: 139

Зарегистрирован: 28.04.2011
mistaqur :
он сразу вычисляет адрес нужной функции и подставляет его (а старый вариант каждый раз просматривал иерархию классов текущего объекта и искал по имени функции нужный адрес, что разумеется гораздо медленней нового варианта).

DNA78 :
По ходу это и есть некоторая оптимизация производительности заявленная Egosoft'ом.

А насколько это увеличивает производительность в общем? Команды выполняются со скоростью света, неужели поиск по по иерархии в 2МБ файле занимал существенно продолжительно время? Подозрение.
Это я по кодингу, но серьезно.

Последний раз редактировалось: Whiskas (09:10 22-03-2012), всего редактировалось 1 раз
    Добавлено: 09:08 22-03-2012   
mistaqur
 





mistaqur :

В версии 3.1.1 вызовов call85 аж 23413 раз. Этот команда вызывает метод класса через его имя, т.е. каждый раз при его использовании идет просмотр таблицы методов класса, находящегося на вершине стека, что не очень хорошо сказывается на производительности. В версии 3.2 он используется 12007 раз, т.е. в два раза реже, зато call87 используется 779 раз, а call88 11150 раз.

И поиск по иерархии классов выполнялся каждый раз при вызове любой функции. А если бы команды выполнялись со скоростью света, мой не самый новый ноут не выдавал бы 2-5 FPS при 1000% SETA.
    Добавлено: 12:17 22-03-2012   
Whiskas
 137 EGP


Рейтинг канала: 3(36)
Репутация: 5
Сообщения: 139

Зарегистрирован: 28.04.2011
mistaqur :
mistaqur :

В версии 3.1.1 вызовов call85 аж 23413 раз. Этот команда вызывает метод класса через его имя, т.е. каждый раз при его использовании идет просмотр таблицы методов класса, находящегося на вершине стека, что не очень хорошо сказывается на производительности. В версии 3.2 он используется 12007 раз, т.е. в два раза реже, зато call87 используется 779 раз, а call88 11150 раз.

И поиск по иерархии классов выполнялся каждый раз при вызове любой функции. А если бы команды выполнялись со скоростью света, мой не самый новый ноут не выдавал бы 2-5 FPS при 1000% SETA.

Не знай, не знай... Тут наверное обилие уникальных объектов и скрипты убивают фпс. Ещё небось каждый экземпляр в игре запускает свой поток с кодом этой .dll в бесконечном цикле.Плюс все эти операции со строками pck, их конвертами и несчатными xml. Ниче хорошего.

Хотел спросить можно ли так, чтобы у объекта была какая-нибудь функция, которая подгружала бы мою dll и код функции брался бы из неё, так осенило: obj ведь даже не настоящий dll, он "странный", только экзешник понимает его. Но все же спрашиваю, можно? Смотрел в теме про патчи, мини-obj-файлы, а тут так нельзя Подозрение.

Как все намудрено Совсем запутался...
    Добавлено: 15:14 22-03-2012   
mistaqur
 





Whiskas T-Mech :
Тут наверное обилие уникальных объектов и скрипты убивают фпс
Скорее всего скрипты (а их парсер вшит в obj файл).

Whiskas T-Mech :
Ещё небось каждый экземпляр в игре запускает свой поток с кодом этой .dll в бесконечном цикле

О какой dll идет речь? Может имелся ввиду obj файл?

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


Whiskas T-Mech :
Хотел спросить можно ли так, чтобы у объекта была какая-нибудь функция, которая подгружала бы мою dll и код функции брался бы из неё, так осенило: obj ведь даже не настоящий dll, он "странный", только экзешник понимает его. Но все же спрашиваю, можно?

Obj файл содержит байт-код, который выполняется виртуальной машиной игры. DLL же содержат машинный код, и выполняются процессором. Obj файл можно пропатчить, добавляя свой код в конец, меняя при необходимости адрес функции в таблице методов класса, и заменяя все вызовы функции по старому адресу на новый. (И дополнительно добавив информацию в таблицу патчей, чтобы можно было грузить старые сейвы).
    Добавлено: 19:01 22-03-2012   
Whiskas
 137 EGP


Рейтинг канала: 3(36)
Репутация: 5
Сообщения: 139

Зарегистрирован: 28.04.2011
mistaqur :
О какой dll идет речь? Может имелся ввиду obj файл?

Да, именно он.
mistaqur :
Obj файл содержит байт-код, который выполняется виртуальной машиной игры. DLL же содержат машинный код, и выполняются процессором. Obj файл можно пропатчить, добавляя свой код в конец, меняя при необходимости адрес функции в таблице методов класса, и заменяя все вызовы функции по старому адресу на новый. (И дополнительно добавив информацию в таблицу патчей, чтобы можно было грузить старые сейвы).

Да, но таблицу ведь никто не юзает. Да не обязательно именно её, итак же пачтиться. Я имел ввиду мини-патчи, в треде Reunion и X2 есть некие мелкие обжи, они идут отдельным файлом и их присутствие рядом с x3story автоматом им подхватывается. Хотя там же оговорились в x3tc так больше нельзя...

 Cкрытый текст   (кликните здесь для просмотра)
Вот че я хотел вообщем сначала:
Код:
object = SHIP_M1 ; parent = SHIP;
;functions
 ....
 LoadLibrary();
 ...

SHIP_M3.LoadLibrary();
get_strg 00XXXXX; 'minipatch.obj'
push 1
mov sp[0],sp[1]
mov ah,3e
lea dx,sp[1]
pop
и тут какой-то код для заполнения данной функции байтокодом из minipatch.obj


Фантазирую, не? Гы-гы Ладно тогда) Надо начать учить ассемблер, интересная вещь Elite Games - Свобода среди звезд!


Последний раз редактировалось: Whiskas (17:20 23-03-2012), всего редактировалось 2 раз(а)
    Добавлено: 17:20 23-03-2012   
mistaqur
 





Не играл в X2 и не знаю, как там был устроен движок игры, но в x3 так нельзя.
    Добавлено: 19:31 23-03-2012   
Clanfear
 635 EGP


Репутация: 142
Сообщения: 4647
Откуда: Default City
Зарегистрирован: 08.07.2006
форум ToTT'а какой то полуживой, спрошу тут, если что не так - прошу сильно не пинать

пытался все избавится от "анти-чит" скрипта самоуничтожения, в асме совершенно не разбираюсь, туториалов "для нубов" не нашел, по этому искал и правил чисто интуитивно
расковырял обж, нашел вроде бы нужный кусок SHIP.SetPlayerControl
 Cкрытый текст   (кликните здесь для просмотра)
SHIP.SetPlayerControl:
enter 2, 7
push SP[4] ; arg2
push SP[4] ; arg1
push SP[1] ; loc1
if SP[0]=0 then jump L0018E82E
push 1
get_strg S0001621F ; "all_objects_exist"
push 0
pushw 702d ; 02BEh
push 2
call84 global.GetPatchValue
get_from_array
get_from_array
if SP[0]<>0 then jump L0018E82E
read SHIP.var_2004_2 ; [12d ; 0Ch]
push 1
call84 global.TextRestrict
if SP[0]=0 then jump L0018E837
L0018E82E: push 2
callasm SA_SetPlayerControl
pop
get_object
ret

L0018E837: pop
pop
readvar global.var_51 ; [51d ; 33h]
push 1
add SP[0],SP[1]
writevar global.var_51 ; [51d ; 33h]
pop
begin_critical
if SP[0]<>0 then jump L0018E85D
pushw 5000d ; 1388h
push 1
callasm TI_Delay
pop
push 0
push 0
push 2
get_object
call85 SelfDestruct ; 00004929
pop
end_critical

L0018E85D: push 0
push SP[4] ; arg1
push 2
callasm SA_SetPlayerControl
pop
get_object
ret

насколько я понял глобальная TextRestrict отвечает за определение "читерного" корабля, ее трогать не стал, а просто закомментил весь кусок с самоуничтожением
 Cкрытый текст   (кликните здесь для просмотра)
begin_critical
if SP[0]<>0 then jump L0018E85D
pushw 5000d ; 1388h
push 1
callasm TI_Delay
pop
push 0
push 0
push 2
get_object
call85 SelfDestruct ; 00004929
pop
end_critical

с begin_critical по end_critical, закомментил строчку .loadobj "x3story.obj" в начале обжа, пересобрал, никаких ошибок не было
в итоге - игра вроде бы работает нормально, корабли не самоуничтожаются и вроде бы все прекрасно, но:
- x3story.obj стал весить после этих процедур на 150 кило меньше Подозрение.
- то ли я вообще правил (хоть и работает, но мало ли) и не убил ли я случайно что то еще?
собственно больше всего смущает сильно меньший размер обжа, нормально ли это и не будет ли каких проблем в будущем?
игра версии 3.2, мод 1.3, утилиты do4_14b и xa4_11b
_________________
TITS OR GTFO
    Добавлено: 17:11 18-05-2012   
MaksOS023
 





Вопрос к пилотам. Скажите пожалуйста, какой файл и какую строчку в нём надо отредактировать, чтобы в главное орудие корабля и турели можно было ставить не 12 пушек а 16. И разумеется что бы они все стреляли.

Просьба: пожалуйста постарайтесь написать как можно подробней
Заранее спасибо.
    Добавлено: 12:58 19-05-2012   
DIMOSUS.X
 995 EGP


Рейтинг канала: 8(921)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
Связываемся с разработчиками (EGOSOFT). Слезно просим их дать вам исходники движка. Находим в исходниках файл turret_logic.cpp, в нем переписываем участок отвечающий за привязку турелей к интерфейсу. Собираем движок из исходников. Profit.
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Добавлено: 13:07 19-05-2012   
MaksOS023
 





DIMOSUS.X :
Связываемся с разработчиками (EGOSOFT). Слезно просим их дать вам исходники движка. Находим в исходниках файл turret_logic.cpp, в нем переписываем участок отвечающий за привязку турелей к интерфейсу. Собираем движок из исходников. Profit.

Cпасибо конечно, но я слышал что можно как то через "x3story.obj", поэтому и написал в эту тему.
 Cкрытый текст   (кликните здесь для просмотра)

Цитата:
www.des-studio.su
"DIMOSUS.X: Развивайтесь - это невероятно бесит окружающих."

Решил воспользоваться Вашим советом!
    Добавлено: 13:31 19-05-2012   
Канал X3: Terran Conflict -> Модовый и скриптовый отсек X3: Terran Conflict: «X3TC Моддинг: obj-файлы и маленькие утилитки»
На страницу: Пред.  1, 2, 3 ... 6, 7, 8 ... 10, 11, 12  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Пока Лешик думает, что есть свобода среди звезд, несвободно вращаясь по орбите солнца... (R_Alexis)

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