Перейти к контенту

Редактирование движка X-Ray


Рекомендуемые сообщения

@Tron, забей. Лучше я все равно не обьясню, да и если бы мог как-то перефразировать, все равно бы бред получился.

Да, мне тоже нравится емкость и простота С#, но, имхо, там слишком извращенная реализация классов (после С++)

 

 

А как на счет сязки C++ + Asm и уже через асму вызыать C#-код?

Экспортируй функции через CIL и вызывай себе через __dllimport на здоровье

@User_X.A.R26, поясни нубасу, как создавать длл'ки, и я буду с радостью пользоваться импортом)

Нашёл кусок кода в файле /xr_3da/xrGame/ai/stalker/ai_stalker.cpp (ТЧ), который удаляет все патроны для active_item. Он находится в самом конце метода

void CAI_Stalker::Die(CObject* who)

и начинается ПОСЛЕ строки

inventory().SetSlotsUseful(false);

Было бы очень желательно его удалить, т.к. такое поведение иногда мешает, а в некоторых случаях будет приводить к вылету e_parent && e_entity. Кому понадобиться это удаление восстановить, могут сделать его через скрипты.

  • Нравится 2

@User_X.A.R26, поясни нубасу, как создавать длл'ки, и я буду с радостью пользоваться импортом)

Он тебе предлагает P/Invoke

Вот туториал по нему. Минус техники - тебе придется это все писать в вручную.

Это можно автоматизировать - взять SWIG. Но у него есть 2 минуса - надо будет тащить за собой две либы(Враппер над С++ кодом и враппер над C#, ну или включать сгенерированный код в файл проекта) + писать для него интерфейсы все равно в вручную.

 

Я же предпочитаю C++/CLI, это помесь C# и C++, но с некоторыми особенностями. Из минусов - производительность. Но экспортировать проще - создаешь что-то типа такого:

 

public ref class ManagedClass
{
public:
...
  void Method1 () { ptr->Method1(); }

UnManagedClass* ptr;
};

А в шарпах просто юзаешь ManagedClass.

 

Полезные ссылки:

http://habrahabr.ru/post/111071/

http://habrahabr.ru/post/47732/

http://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-minutes

 

  • Спасибо 1
  • Полезно 1

Доброго времени суток, кто может подсказать? Использовал последнюю ревизию проекта на рендеринг R2, но тень от травы каждый раз приходиться включать руками, а так же gloss выше 7.5 ставиться только мануально через консоль. В чем может быть причина и как с этим бороться? (Через ярлык не катит, так как слетают наработки enb) нужно именно внутри игры, что бы все сохранялось после выхода. Спасибо!

Извините за глупый вопрос, но я не понял как работает LuaXML и как её подключать. Может кто объяснить? 

Как поправить интенсивность HDR? Запустил ЗП на DX9.0c (да и на 9.0) - глаза режет.

Никто не хочет помочь оптимизировать движок для слабых видеокарт? У меня лично на динамике не тянет, думаю, ни я один не могу позволить себе новую видяху.

Изменено пользователем HESH

Попытался найти в исходниках что-нибудь по этой проблеме

http://www.amk-team.ru/forum/index.php?showtopic=6185&page=276#5505

но так и не понял, чем она может вызываться. transfer_enemy работает только между монстрами (причём это определяется явно не по строке species), а CHitMemoryManager я не вижу передачи информации о хитах другим игровым объектам. И куда тут копать?

Женя, у меня Х1900ХТ, который обещает приказать долго жить с дня на день (уже был черный экран, T чипа - 109 градусов) Так что неудивительно, что у меня не тянет (новый моник, 1600х900). В принципе, у меня и раньше не тянуло (1280х720).

Да, я нищеброд. Так что я и озаботился вопросом оптимизации.

И спасибо за указание. В engine.2008.fixed растянутое небо же поправлено?

Да, кстати, а что конкретно можно оптимизировать в X-Ray? Явно не физику - она вообще почти ничего не жрет. Рендер - да, но где копать?

Флаеры в 20 лет не берут раздавать. По крайней мере, у меня. Я и так работаю в МТС-е, там платят в среднем 20К (я АПП). Только мне еще семьей делиться надо (бабушке лекарства и пр.)

Изменено пользователем HESH
Он тебе предлагает P/Invoke Вот туториал по нему. Минус техники - тебе придется это все писать в вручную.

Я не использовал/не использую такие извращения. И вообще пишу на VB. Делал такой вот класс внутри DLL:

Public Class clsDialogBox
    <System.Reflection.Obfuscation(Feature:="DllExport")> _
    Public Shared Sub Init(Params As String)
    End Sub
    <System.Reflection.Obfuscation(Feature:="DllExport")> _
    Public Shared Function UI_Init(Params As String) As String
        ...
    End Function
    <System.Reflection.Obfuscation(Feature:="DllExport")> _
    Public Shared Sub sbHeaderWrite()
        ...
    End Sub
    <System.Reflection.Obfuscation(Feature:="DllExport")> _
    Public Shared Sub sbAbout()
        ...
    End Sub
End Class

 

затем компил напрямую через vbc, декомпил через ildasm, правка CIL кода, компил. Всё. Однако такая сборка немного косячно будет потом вставляться в .NET приложения, но оно мне было и не нужно

Ах да: батники и пример того кода могу приложить, если надо. Ну или в ЛС закинуть

  • Полезно 1

Shadows (Сегодня, 17:36):
Какого проекта?

 

xray-extensions ver. 230


Shadows

Настройки сохраняются все, кроме gloss, у которого почему то, если руками править файл конфига после входа в игру всегда слетает на 7.5. И r2_sun_details который так же во входе слетает на off. Если в игре параметры включить все работает. Но после перезахода именно они снова возвращаются на 7.5 и off соответственно.

В движке используется MFC? Просто сейчас ставлю новую студию, и хотелось бы знать, что бы не ставить слишком много (мне MFC не нужен, но может двиг без него не скомплится?)?

Возник вопрос насчёт использования smart_cast. Если ли заменить такую конструкцию

CGameObject *GO = smart_cast CGameObject*(O);
CInventoryItem *pIItem = smart_cast CInventoryItem*(GO);
на

CInventoryItem	*pIItem = smart_cast CInventoryItem* (O);
будет ли оно работать? Видно, что 2 строки идут подряд и существование объекта O не проверяется, и он дальше нигде не используется. Может это надо для самого smart_cast?

Код взят из метода CBaseMonster::OnEvent.

P.S. угловые скобки после smart_cast "съелись" форумным парсером.

Изменено пользователем Полтергейст

@Полтергейст, ну ты мог уже давно взять и проверить :)

А так смотря во что у тебя разворачивается smart_cast. В зависимости от дефайнов он может развернуться в dynamic_cast, и тогда будет работать, или в соответствующую виртуальную функцию, и тогда код работать не будет, потому как у CObject нет этих виртуальных функций. Они появляются только у CGameObject

Изменено пользователем abramcumner

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...