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

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


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

@Дизель, в смысле? ну человек попросил же

 

уже декомпилированные исходники Зова Припяти
:grin2:

@MegaStalker, почитай тут http://www.amk-team.ru/forum/topic/13149-cop-voprosy-po-sdk/?p=1044919

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

Товарищи... каким образом из окна инвентаря CUIInventoryWnd можно перезарядить неактивное оружие? которое стоит в слоте?

CUIGameSP* pGameSP = smart_cast<CUIGameSP*>(HUD().GetUI()->UIGame());
pGameSP->InventoryMenu->GetHolder()->StartStopMenu(pGameSP->InventoryMenu,true); //прячем окно инвентаря
m_pInv->ProcessSlotAction(true,weapon->GetSlot()); //делаем активным слот с оружием
//а дальше магия - оружие достается, но не играет ни анимация, ни идет перезарядка.
//не работает так
m_pInv->Items_SetCurrentEntityHud(true);
weapon->Action(kWPN_RELOAD, CMD_START);

//или так
CHudItem* pHudItem = smart_cast<CHudItem*>(m_pInv->ActiveItem());
if (pHudItem) 
{
         pHudItem->OnStateSwitch(CWeapon::eReload);
};

//или так
weapon->OnStateSwitch(CWeapon::eReload); 
//или так
weapon->SetState(CWeapon::eReload);
//или так
weapon->Reload();

если после активации оружия в слоте (оно разряжено) нажать выстрел, зайти/выйти в главное меню - то CWeapon::eReload состояние применяется... а как сделать это кодом?

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

Может кто сказать, что именно нужно добавить в рендер дабы атмосфир заработал?) Насколько я уже понял, там используются врезки в движок, перенести бы всё это в код.

Изменено пользователем Kirgudu
Ссылка на комментарий

@mortan, атмосфир работает без рендера и без правок движка. Лог вылета смотри - там вылет идёт по партиклу выброса - ищи в скриптах и меняй партикл, либо добавляй в xr

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

@Дизель, точно? Хм, попробую, но я точно помню что читал что-то про изменение положения солнца и DOF. В чем причина такого вылета?

0023:69704906 d3d11.dll, D3D11CreateDeviceAndSwapChain()

0023:697074F0 d3d11.dll, D3D11CreateDeviceAndSwapChain()
0023:696B3E5A d3d11.dll, D3D11CreateDeviceAndSwapChain()
0023:04524137 xrRender_R3.dll
0023:004366E9 xrEngine.exe, CRenderDevice::on_idle(), c:\xray\x\xray16\src\xrengine\device.cpp, 317
0023:00435F8A xrEngine.exe, CRenderDevice::message_loop(), c:\xray\x\xray16\src\xrengine\device.cpp, 391
0023:00435EDE xrEngine.exe, CRenderDevice::Run(), c:\xray\x\xray16\src\xrengine\device.cpp, 437
0023:0046AE6D xrEngine.exe, Startup(), c:\xray\x\xray16\src\xrengine\x_ray.cpp, 393
0023:00469BC5 xrEngine.exe, WinMain_impl(), c:\xray\x\xray16\src\xrengine\x_ray.cpp, 898
0023:00469716 xrEngine.exe, WinMain(), c:\xray\x\xray16\src\xrengine\x_ray.cpp, 967
0023:00432F43 xrEngine.exe, __tmainCRTStartup(), f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c, 618
0023:76B8338A kernel32.dll, BaseThreadInitThunk()
0023:77AE9F72 ntdll.dll, RtlInitializeExceptionChain()
0023:77AE9F45 ntdll.dll, RtlInitializeExceptionChain()

[error][ 298] : Слишком много попыток занесения события для семафора.

 

Изменено пользователем mortan
Ссылка на комментарий

Такой вот вопрос к знающим - какое число является показателем 100% состояния? Я в сорцах так и не нашёл ответа на этот вопрос. Зачем это нужно - хочу сделать износ для глушителей, и мне нужно знать точные цифры) Хорошо бы конечно заменить состояние вообще на целочисленный показатель и дать возможность моддерам настроить прочность через конфиг.

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

 

 

каким образом из окна инвентаря CUIInventoryWnd можно перезарядить неактивное оружие? которое стоит в слоте?

Может тебе подойдет скриптовый вариант ? Там не сложно...

 

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

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

@mortan, а глушитель разве не wpn придаток? Я думаю, что износ глушителя можно реализовать, тогда когда глушитель будет самостоятельным объектом.

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

@Дизель, можно и без этого - просто добавить ещё одно поле в класс оружия и работать с ним. Примерный план работы у меня уже есть. Сложность связана только с нетпакетами - я так и не понял ломаются ли они если добавить в них новое поле.

Изменено пользователем mortan
Ссылка на комментарий

 

 

я так и не понял ломаются ли они если добавить в них новое поле.

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

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

@UnLoaded, да тут вопрос скорее в другом - есть ли границы для каждого поля внутри пакета? По логике такая граница должна быть - я не видел чтобы инфа из одного поля  попадала в другое случайно. У меня такое было только один раз - нпс при одевании аддона вместо этого поставил апгрейд на него)

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

 

 

По логике такая граница должна быть - я не видел чтобы инфа из одного поля  попадала в другое случайно

Эмм, многого ты еще не видел, однако... Нет-пакет в XRay - это бинарный буфер, для которого не предусмотрено ни каких средств контроля от переполнения или неверной записи данных. Да еще, в придачу, структура нет-пакета меняется в зависимости от объекта, которому он "принадлежит". Это не я придумал, это давно известный факт... Но добавить\считать свои данные в нет-пакет - не проблема, главное сделать это правильно.

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

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

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

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

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

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

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

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

Войти

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

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

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