Тестер S.T.A.L.K.E.R.'а, Канал на ютубе. |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Тестер S.T.A.L.K.E.R.'а, Канал на ютубе. |
22.06.2021, 20:27
Сообщение
#1
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Вот канал интересного ютубера.
Спидран, поиск багов в сталкере. Очень интересно, особенно программистам XRay, вроде меня. Вот некоторые баги я устранил, но их там ещё много. Некоторые устранены в ЧН и ЗП. А какие баги вы нашли и устранили в своих модифицированных движках XRay? Так же, тут можно приводить код этих багов и код устраняющий их. Сообщение отредактировал NanoBot-AMK - 22.06.2021, 20:28 -------------------- СТАЛКЕР только для ПК!
|
 
|
|
|
|
22.06.2021, 20:35
Сообщение
#2
|
|
Игрок Репутация: 3 Группа: Участник Сообщений: 36 Регистрация: 11.08.2020 |
Это именно ОН пробежал сталкер тч за менее 10 минут
|
 
|
|
22.06.2021, 20:55
Сообщение
#3
|
|
Игровой Бог Репутация: 1690 Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
Хексом для 1.0006 фиксил дальность/плавность проявления/исчезновения теней от динамических моделей на r1 и исчезновение тени гг вприсяди на r1.
@rem исправляем исчезновение тени в присяде (значение 194 -> 193) (при 192 двоится) patch2.exe xrRender_R1.dll $00058743 $C1 @rem увеличиваем дальность проявления теней от динамических объектов (значение 0.02 -> 0) patch2.exe xrRender_R1.dll $00058744 $00 $00 $00 $00 |
 
|
|
22.06.2021, 21:24
Сообщение
#4
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Баги с гранатомётами. Основная ошибка, это - то, что это делал идиот. Шутка. Нет. Класс гранатомётов отличается от родительских, тем, что при выстреле выстреливает гранату. Кэп. Нам надо найти метод, где безусловно происходить выстрел. Это метод FireTrace, он должен быть виртуальным, в оригинале это не так, переделываем. Файл Weapon.h Код void virtual FireTrace(const Fvector& P, const Fvector& D); Теперь мы должны переопределить этот метод в наших гранатомётах. Например для РГ-6. Файл WeaponRG6.cpp Код void CWeaponRG6::FireTrace(const Fvector& P, const Fvector& D) { LPCSTR curr_ammo = m_magazine.back().m_ammoSect.c_str(); if(pSettings->line_exist(curr_ammo, "fake_grenade_name")) { StartRocket(P, D, IsZoomed()); } inheritedSG::FireTrace(P, D); } Да тут надо создать новый метод StartRocket в классе CRocketLauncher в этом файле. RocketLauncher.cpp Код void CRocketLauncher::StartRocket(const Fvector& P, const Fvector& D, bool is_aim) { CExplosiveRocket* pGrenade = smart_cast<CExplosiveRocket*>(getCurrentRocket()); if (!pGrenade) return; Fvector p1, d; p1.set (P); d.set (D); Fmatrix launch_matrix; launch_matrix.identity(); launch_matrix.k.set(d); Fvector::generate_orthonormal_basis(launch_matrix.k, launch_matrix.j, launch_matrix.i); launch_matrix.c.set(p1); CGameObject* obj = smart_cast<CGameObject*>(this); CObject* parent = obj->H_Parent(); if (is_aim) // { parent->setEnabled(FALSE); obj->setEnabled(FALSE); collide::rq_result RQ; BOOL HasPick = Level().ObjectSpace.RayPick(p1, d, 500.0f, collide::rqtBoth, RQ, obj); obj->setEnabled(TRUE); parent->setEnabled(TRUE); //метод RealGravity возвращает реальную гравитацию с учЄтом работы двигател¤ при определЄном условии. float gravity = pGrenade->RealGravity(); if (HasPick && gravity>0.f) { Fvector Transference; Transference.mul(d, RQ.range); Fvector res[2]; #ifdef DEBUG DBG_OpenCashedDraw(); DBG_DrawLine(p1,Fvector().add(p1,d),D3DCOLOR_XRGB(255,0,0)); #endif u8 canfire0 = TransferenceAndThrowVelToThrowDir(Transference, m_fLaunchSpeed, gravity, res); #ifdef DEBUG if(canfire0>0)DBG_DrawLine(p1,Fvector().add(p1,res[0]),D3DCOLOR_XRGB(0,255,0)); if(canfire0>1)DBG_DrawLine(p1,Fvector().add(p1,res[1]),D3DCOLOR_XRGB(0,0,255)); DBG_ClosedCashedDraw(30000); #endif if (canfire0 != 0) { // Msg ("d[%f,%f,%f] - res [%f,%f,%f]", d.x, d.y, d.z, res[0].x, res[0].y, res[0].z); d = res[0]; }; } }; d.mul(m_fLaunchSpeed); LaunchRocket(launch_matrix, d, zero_vel); pGrenade->SetInitiator(parent->ID()); if (OnServer()) { NET_Packet P; obj->u_EventGen(P, GE_LAUNCH_ROCKET, obj->ID()); P.w_u16(u16(pGrenade->ID())); obj->u_EventSend(P); } dropCurrentRocket(); } А метод FireStart во обще удаляем из CWeaponRG6. Так же переделаем метод AddCartridge Код u8 CWeaponRG6::AddCartridge (u8 cnt) { u8 t = inheritedSG::AddCartridge(cnt); u8 k = cnt-t; LPCSTR ammo = m_ammoTypes[m_ammoType].c_str(); if(pSettings->line_exist(ammo, "fake_grenade_name")) { LPCSTR fake_grenade_name = pSettings->r_string(ammo, "fake_grenade_name"); while(k){ --k; inheritedRL::SpawnRocket(fake_grenade_name, this); } } else k = 0; return k; } Это надо чтобы РГ-6 мог стрелять картечью, при этом никакая ракета не вылетает. Вот как то так. Так же надо переделать и доработать класс CWeaponMagazinedWGrenade и CWeaponRPG7, там тоже полно ошибок. -------------------- СТАЛКЕР только для ПК!
|
 
|
|
Текстовая версия | Сейчас: 29.03.2024, 12:42 |