Редактирование движка X-Ray - Страница 106 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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

@UnLoaded, вот кто бы и подсказал как это сделать "правильно". Сейчас я добавил все новые поля в конец пакета при чтении\записи\обновлении.

Интересует такой вопрос: смог ли кто-нибудь вернуть в ЗП, раздел КПК энциклопедия?

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

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

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

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

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

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

Войти

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

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

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