Всем превед! Вот от нечего делать я решил немножко изменить стиль игры в оригинальной хл. Сделать его динамичнее. Вобщем, это несложно, но после этого играть становится приятнее. Итак вот вам тутор по наклонам во время стрейфов и стилю качания оружия как в Day of Defeat. Вся работа проводится на клиентской стороне.
Откройте view.cpp в cl_dll и спуститесь до функции V_CalcViewRoll. В её начало добавьте две новые сторчки:
extern cvar_t *cl_rollspeed; extern cvar_t *cl_rollangle;
Затем удалите строчки:
float side;
и
side = V_CalcRoll ( viewentity->angles, pparams->simvel, pparams->movevars->rollangle, pparams->movevars->rollspeed );
после замените строку
pparams->viewangles[ROLL] += side;
на
pparams->viewangles[ROLL] = V_CalcRoll (pparams->viewangles, pparams->simvel, cl_rollangle->value, cl_rollspeed->value ) * 4;
Теперь при стрейфах экран будет наклоняться в стиле Quake или DMC. Число 4 вы можете изменить по своему вкусу, это коэффициент наклона, то есть чем больше это значение, тем сильнее наклоняется экран.
Осталось только задекларировать две новые переменные cl_rollspeed и cl_rollangle.
Идите в hud.cpp и где-нибудь после заголовочных файлов добавьте две новые строки:
cvar_t *cl_rollspeed; cvar_t *cl_rollangle;
Потом промотайте вниз до void CHud :: Init( void ) и воткните туда
cl_rollangle = gEngfuncs.pfnRegisterVariable ( "cl_rollangle", "0.65", FCVAR_CLIENTDLL|FCVAR_ARCHIVE ); cl_rollspeed = gEngfuncs.pfnRegisterVariable ( "cl_rollspeed", "300", FCVAR_CLIENTDLL|FCVAR_ARCHIVE );
На этом наклоны закончены. Переходим к качанию оружия, так называемому cl_bob.
Откройте view.cpp и в функции void V_CalcNormalRefdef ( struct ref_params_s *pparams ) замените:
// Let the viewmodel shake at about 10% of the amplitude gEngfuncs.V_ApplyShake( view->origin, view->angles, 0.9 );
for ( i = 0; i < 3; i++ ) { view->origin[ i ] += bob * 0.4 * pparams->forward[ i ];//viewmodel раскачивается вперёд-назад } view->origin[2] += bob;1
На вот это:
// Let the viewmodel shake at about 10% of the amplitude gEngfuncs.V_ApplyShake( view->origin, view->angles, 0.9 );
for ( i = 0; i < 3; i++ ) { view->origin[ i ] += bob * 0.4 * pparams->right[ i ];//viewmodel раскачивается вправо-влево } view->origin[2] += bob;
Число 0.4 это амплитуда раскачивания. Для тех, кто не знает физику это насколько сильно модель оружия будет отклоняться в сторону.
Вот и всё. Теперь осталось скомпилить client.dll и насладиться большей динамичностью игры.
Источник: http://www.hlfx.ru/forum/showthread.php?s=8332d886bea44b3d5ba7efc42cb1f496&threadid=634 |