Вот от нечего делать я решил немножко изменить стиль игры в оригинальной хл.
Quake strafing & DoD bobing styles
Вот от нечего делать я решил немножко изменить стиль игры в оригинальной хл.
Following translations are available : |
russian |
Всем превед! Вот от нечего делать я решил немножко изменить стиль игры в оригинальной хл.
Сделать его динамичнее. Вобщем, это несложно, но после этого играть становится приятнее.
Итак вот вам тутор по наклонам во время стрейфов и стилю качания оружия как в Day of Defeat.
Вся работа проводится на клиентской стороне.
Откройте view.cpp в cl_dll и спуститесь до функции V_CalcViewRoll. В её начало добавьте две новые сторчки:
extern cvar_t *cl_rollspeed;
extern cvar_t *cl_rollangle;
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;
// 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 и насладиться большей динамичностью игры.
Similar 1. Новый монстр - В общем-то это самый лёгкий тутор который можно придумать. 2. И снова наследование классов :) - Казалось бы тема наследования классов давно избита, ан нет всё ещё существуют вопросы, правда про чуть боле сложное наследование. 3. Trigger_PlayerFreeez - Trigger_PlayerFreeez (остановка игрока) 4. Фикс: func_healthcharger - Фикс: func_healthcharger и func_recharger 5. Каждой пушке - спрайт - Итак вы создали новое оружие. А в меню выбора вместо рисунка непонятные спрайты, да и прицела нет. 6. Цвет спрайтов HUD - Итак, как же сменить цвет спрайтов в HUD-системе 7. Наследование классов в С++ - В этом туторе я попытаюсь кратко рассказать про наследование классов в С++ 8. Как перекрасить пули в ХЛ - Здесь я вам расскажу, как можно перекрасить пули в Half-Life1 и приведу свой пример 9. Создание сценариев - Для создания сценариев (aka скриптов) в Half-Life существуют две энтити: scripted_sequence и scripted_sentence. Первая отвечает за движения, выполняемые монстром/персонажем, будь то ходьба, бег, нажатие кнопки, тряска автомата с газировкой или почёсывание подбородка. Вторая служит для того, чтобы персонаж произнес какую-то фразу. При этом его голова повернётся в сторону слушателя, и рот будет открываться в соответствии с амплитудой звука.
Neoner 11/02/2011, 5:44:14 PM commented :
#1 Автор, выложи пожалуйста cpp что ты изменял, а то у меня при компиляции ошибку пишет(
stepanium 01/22/2016, 11:14:57 AM commented :
#2 Отличный туториал, спасибо, помог.
yarik 02/17/2018, 8:32:17 AM commented :
#3 у меня нету строчки float side
yarik 03/18/2018, 4:17:18 AM commented :
#4 а как собрать единый файл client.dll?
#5 @yarik В Microsoft Visual C++ 6.0 Build -> Build client.dll (F7)
#6 тооп, получилось вшить с первого раза
You cannot comment, because you are not logged-in.