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

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

В общем малость ошибся, нормаль надо инвертировать.

function normal_triangle(a, b, c) -- нормаль треугольника
    local n = vector()
    n.x = ((b.z-a.z)*(c.y-a.y))-((b.y-a.y)*(c.z-a.z))
    n.y = ((b.x-a.x)*(c.z-a.z))-((b.z-a.z)*(c.x-a.x))
    n.z = ((b.y-a.y)*(c.x-a.x))-((b.x-a.x)*(c.y-a.y))
    return n:normalize()
end

Тогда функция  dirref:reflect(dir, normal) нормально рикошет считает.

ЗЫ

А как материал определить?

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

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

Никак. Да и все равно никакого доступа к gamemtl.xr из скриптов нет, зачем он тогда нужен, этот материал. Или будешь дублировать всю базу данных в скрипте?

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

Это понятно что из скриптов не чего толком не доступно, но из движка же доступно.

 

//статический объект
//получить треугольник и узнать его материал
CDB::TRI* T = Level().ObjectSpace.GetStaticTris()+result.element;
hit_material_idx = T->material;


SGameMtl* mtl = GMLib.GetMaterialByIdx(hit_material_idx);
if( fsimilar(mtl->fShootFactor,1.0f,EPS) )//Если материал полностью простреливаемый
{
pData->bStopTracing = false;
}else
Level().BulletManager().RegisterEvent(EVENT_HIT, FALSE,bullet, end_point, result, hit_material_idx);

 

 

С компилировать функцию в асм и добавить в ваши библиотеки. А как остальное сделано? Или я что то не понимаю. 

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

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

С компилировать функцию в асм и добавить в ваши библиотеки.

Между 6 и 7 патчем могут быть отличия в смещениях. Хотя, может и прокатит, тут надо проверять. Изменено пользователем Shadows
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

@Anonim, размер виртуальной сферы из которой будет исходить свет. То есть, свет не из модели идет, а из точки, определенного размера, который можно задать этим параметром.

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

  • Спасибо 2
  • Нравится 1
Ссылка на комментарий

Усем доброго времяни!

Мои наработки, по проекту X-Ray extensions.

Удалось найти функцию определения материала, в точности GetMtlfShootFactor

Это значение флоат от 0 до 1, 0 - полностью не простреливаемый материал, 1 - полностью простреливаемый.

Вот она.

 

 







; --------=====НаноБот=====---------
Level__GetMtlfShootFactor proc		
res   = dword ptr  8
index = dword ptr  0Ch
	push    ebp
	mov     ebp, esp
	push    ecx
	push    edx
	push edi
	push esi
;-------------------------------------------------
	mov     eax, [ebp + index] 	;[g_int_argument_0]	; results.element
	;PRINT_UINT "element = %d", eax
	mov     ecx, ds:g_pGameLevel
	mov     ecx, [ecx]
	mov     esi, [ecx+0DCh] 	; tri array
	shl     eax, 4				; eax = results.element * 8
	mov     cx,  [eax+esi+0Ch]
	and     cx,	 3FFFh
	movzx   edx, cx				; hit_material_idx
	mov     eax, ds:dword_10560718
	mov     ecx, [eax+edx*4]	; ecx = mtl
	mov     eax, [ebp+res]
	mov		ecx, [ecx+28h]		; ecx = mtl->fShootFactor
	mov		[eax], ecx
	; -- временно, пока беремена! =) --
	;PRINT_FLOAT "MtlfShootFactor=%f", ecx
	;fld 	dword ptr [ecx+28h]	;[eax]
	xor		ecx, ecx
	mov     [eax+4], ecx
	mov     [eax+8], ecx
	;----------------------
	pop esi
	pop edi
	pop     edx
	pop     ecx
	mov     esp, ebp
	pop     ebp
	retn    
Level__GetMtlfShootFactor  endp
; --------===============---------

 

 

 

Функция рабочая, но надо дополнительная функция ввода вывода, я использовал.

PERFORM_EXPORT_LEVEL__VECTOR__INT

А надо:

PERFORM_EXPORT_LEVEL__FLOAT__INT

В общем делаем эту функцию, и портируем в проект.

Так же, надо функция проверки проходимости материала, для улучшенного ИИ НПС и других существ (дроны, живые мертвецы и т.д.).

Есть возможность ставить блудмарки на геометрию и тела, если надо, могу найти код.

Так же, если изучу получше С++ и ассемблер могу и присоединиться к проекту, хотя это пока рано.

Изменено пользователем НаноБот
  • Спасибо 1
  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

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

@НаноБот, было бы не плохо восстановить волмарки на динамичных объектах, в ЗП. Или в ЗП волмарки на динамичных объектах полностью вырезаны?

AnoniM12.gif

Портфолио:

https://yadi.sk/d/rkLI73WUcsu3p

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

 

 

Или в ЗП волмарки на динамичных объектах полностью вырезаны?


Хм, а разве в ТЧ или ЧН они были?.. Вместо движущихся объектов, все-таки предпочтительнее банальные следы от пуль на тушках убитых мутантов и сталкеров.
Ссылка на комментарий

@Levigatis, в ТЧ точно были, возвращаются с помощью движковой правки

AnoniM12.gif

Портфолио:

https://yadi.sk/d/rkLI73WUcsu3p

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

@DDamian724, hmm, actually 1.0006 patch came out much more worthwhile project and 1.0006 patch more technological

@DDamian724, 1.0004 patch has long been a not so popular patch

@Malandrinus, кстати, почему SVN, а не, допустим, Mercurial? В Mercurial же можно более наглядно просматривать все ветки и ревизии

Изменено пользователем User_X.A.R26
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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