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

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

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

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

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

Ссылка на комментарий

 

 

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

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

Ссылка на комментарий

Нашёл кусок кода в файле /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) нужно именно внутри игры, что бы все сохранялось после выхода. Спасибо!

Добавлено RayTwitty,

Какого проекта?

Ссылка на комментарий

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

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

Изменено пользователем HESH
Добавлено RayTwitty,

HDR - r2_tonemap_middlegray\r2_tonemap_amount в консоли

В 2015 году, чтобы не тянул р2 сталкера - давно я о таком не слышал...

Ссылка на комментарий

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

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
Добавлено RayTwitty,

Можно флаеры по-раздавать неделю и появятся деньги на что-то в районе GTX550\650 (личный опыт). А этого более чем достаточно для динамики.

А на счет оптимизации под такое древнее железо - маловероятно.

Ссылка на комментарий
Он тебе предлагает 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 соответственно.

Добавлено RayTwitty,

Если сбрасываются настройки игры, то:

а) что-то происходит с user.ltx

б) если после настройки, у вас вылетает игра - то новые настройки не сохраняются

 

Лично я, после настройки игры перезапускаю её, чтобы все сохранилось.

Добавлено RayTwitty,

Значит у вас какой-то скрипт правит эти значения.

Ссылка на комментарий

В движке используется 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 пользователей

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

    AMK-Team.ru

    ×
    ×
    • Создать...