HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Отдача от выстрела как в Counter-strike
ну или хотя бы что-то похожее.
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 33

Рейтинг



Half-Life Отдача от выстрела как в Counter-strike

Короче заметил что в КС при стрельбе есть разброс пуль, чего увы не наблюдается в ХЛ, также при прыжке увеличивается разброс, когда на лестнице, и даже при самой стрельбе прицел поднимается и патроны тоже как бы летят выше, а в Хл прицел тупо поднимается, но патроны летят в одно место, кто нибудь может скинуть или написать тутор про отдачу и всё остальное. заранее спасибо.

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

Сообщить модератору | IP: Записан
Сообщение: 15921

Старое сообщение 11-06-2007 20:13
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 33

Рейтинг



Нашел в инете статью про рекоил, но она на Немецком кто поможет перевести и разобратся, я зделал примерно, но у меня один баг при стрельбе прицел поднимается вверх, когда я нестреляю он нехочет возвращатся на место а остаётся где был, мне бы сделать так чтобы он возвращался на место после стрельбы. Вот ссылка на статью : http://www.resourcecode.de/view.php?id=1722

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

Сообщить модератору | IP: Записан
Сообщение: 15982

Старое сообщение 13-06-2007 10:20
- За что?
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



сейчас выложу русский перевод

Добавлено 13-06-2007 в 15:30:

Recoil
31.122 003, 16:29 ч. - 2 примечания
Примечание: содержание этой стороны содержит 2 Tutorials к теме Recoil.

От HankY:
В этом делении речь идет о Recoil, оружие путешествует кое-что после Наверху и качается к сторонам, и не как в уже реализованном V_PunchAxis.

Теперь, как точно ты вдалбливаешь однажды в код, второстепенен, возможности были бы:
- событию стоимости Recoil дают с собой,
- FireBullets функция в клиенте вокруг этого Paraneter расширяют
- для каждого Waffenenvent Recoil делают ... это, однако, Performance пожирает!

Мы расширим функцию FireBullets вокруг параметра, а именно его Funktionsdefenition а также Funkion:

void EV_HLDM_FireBullets (int idx, колеблись *forward, колеблись *right, колеблись *up, int cShots, колеблись *vecSrc, колеблись *vecDirShooting, колеблись flDistance, int iBulletType,
int iTracerFreq, int *tracerCount, колеблись flSpreadX, колеблись flSpreadY, колеблись recoil=0);

и в функции:
void EV_HLDM_FireBullets (int idx, колеблись *forward, колеблись *right, колеблись *up, int cShots, колеблись *vecSrc, колеблись *vecDirShooting, колеблись flDistance, int iBulletType,
int iTracerFreq, int *tracerCount, колеблись flSpreadX, колеблись flSpreadY, колеблись recoil)
{...

Там мы связываем теперь следующее в них Там мы связываем теперь следующее в "for (iShot = 1 ; iShot <= cShots ; iShot ++)" шлифует:
if (EV_IsLocal (idx))
{
vec3_t vec_Recoil;
gEngfuncs. GetViewAngles (vec_Recoil);
vec_Recoil.x - = recoil;
gEngfuncs. SetViewAngles (vec_Recoil);
}


Что могли бы горячий?

" if (EV_IsLocal (idx)) " является к страхуют, который только он, который стреляет, который recoil получает,
с "vec3_t vec_Recoil ;" мы достаем нам в первый раз vec3_t переменные величины по имени vec_Recoil.
"gEngfuncs . GetViewAngles (vec_Recoil ;" пишут актуальный "ViewAngle" (где взглядывают как) в vec_recoil переменных величинах.
vec_Recoil.x - = recoil; позволяет x стоимость vec_Recoil переменных величин уменьшать кое-что, а именно вокруг recoil стоимости, к которой я прихожу прибывать дальше внизу. (рвет, однако упорствуй "-" наверх!)
Если ты не понимаешь, почему ось абсцисс, мы хотим, все же, oben/unten beinflussen: это поворачивается, не откладывается!

Тот, кто имеет желание, умеет себе Recoil также еще по ссылкам / rechts, vorne/hinten устанавливают с той же самой переменной величиной.
z. B.:
gEngfuncs. GetViewAngles (vec_Recoil);
vec_Recoil.x - = recoil;
int i = gEngfuncs.pfnRandomLong (0, 1);
if (i)
{
vec_Recoil.y - = recoill / 2; // пол-укрепляет
vec_Recoil.z - = recoill / 2; // даже пол!
}
else
{
vec_Recoil.y + = recoill / 2; // пол-сильный </щепку>
vec_Recoil.z + = recoill / 2; // даже пол!
}
//не протестированный
gEngfuncs. SetViewAngles (vec_Recoil); // ставит ViewAngle на vec_Recoil.

Если так хорошо, еще нельзя компилировать, так как там отсутствует еще кое-что важное:
В каждом Waffevent у клиента мы имеем строку, которую легко нужно перепутывать со следующими:
EV_HLDM_FireBullets (idx, forward, right, up, 1, vecSrc, vecAiming, 8 192, BULLET_PLAYER_357, 0,0, args-> fparam1, args-> fparam2);


Там должен идти теперь (смотри наверху) еще наш Recoil параметр чисто:
EV_HLDM_FireBullets (idx, forward, right, up, 1, vecSrc, vecAiming, 8 192, BULLET_PLAYER_357, 0,0, args-> fparam1, args-> fparam2, WAFFENNAME_RECOIL);


wärs тогда уже, #Definiere лучше всего в seppereaten recoil.h Recoilwerte, например, 1.2 или 0.8, однако, не гораздо выше!
Кто может давать с собой подходящий Recoilvariable, конечно, поднимается PLAYBACK_EVENT в сервере, например, args-> iparam1.
EV_HLDM_FireBullets (idx, forward, right, up, 1, vecSrc, vecAiming, 8 192, BULLET_PLAYER_357, 0,0, args-> fparam1, args-> fparam2, <span class = "changed"> args-> iparam1 </щепку> );



При вопросах, и т. д. сообщение в [email protected]

© 2002, Hanky

===============================================================================
От мистера Т:
Легко вводимый Recoil

Иди в ev_hldm.cpp (лежит в клиенте).
Теперь ты идешь к оружию при ты у Recoil хотел вводить.
Я беру однажды как пример MP5:
......
//======================
// СТАРТ MP5
//======================
void EV_FireMP5 (event_args_t *args)
{
int idx;
vec3_t origin;
vec3_t angles;
vec3_t velocity;

// Мистер Т Рекойль-Штарт
vec3_t viewangles;
int staerkedesrecoils = 2.00; // Здесь указывается сила Recoils
// Мистер Т Рекойль Энде

vec3_t ShellVelocity;
vec3_t ShellOrigin; int shell;
vec3_t vecSrc, vecAiming;
vec3_t up, right, forward;
колеблись flSpread = 0.01;

idx = args-> entindex;
VectorCopy (args-> origin, origin);
VectorCopy (args-> angles, angles);
VectorCopy (args-> velocity, velocity);
AngleVectors (angles, forward, right, up);
shell = gEngfuncs.pEventAPI-> EV_FindModelIndex ("модель / shell.mdl");

if (EV_IsLocal (idx))
{
// Мистер Т Рекойль-Штарт
gEngfuncs. GetViewAngles ((колеблись *) viewangles);
viewangles [PITCH] - = staerkedesrecoils;
gEngfuncs. SetViewAngles ((колеблись *) viewangles);
// Мистер Т Рекойль Энде
......
}

разбирайся сам я перевел промтом

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | IP: Записан
Сообщение: 15983
Метки: рррррр

Старое сообщение 13-06-2007 11:30
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 33

Рейтинг



Пока читал, смеялься, (колеблись) Если честно то ничего непонял что тут написано

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

Сообщить модератору | IP: Записан
Сообщение: 15984

Старое сообщение 13-06-2007 11:43
- За что?
zimer
хо-хоу!

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: СПБ
Сообщений: 1308
Возраст: 40

Рейтинг



Награды
 
[1 награда]


fire64 атлично перевел, маладец

__________________
Рассыпалась соль - к ссоре.
Рассыпался сахар - к миру.
Рассыпался кокаин - к феерическим ощущениям и фантасмагорическим видениям.
Ласточки низко летают - будет дождь.
Коровы низко летают - рассыпался кокаин.

Сообщить модератору | IP: Записан
Сообщение: 15985

Старое сообщение 13-06-2007 12:11
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13519
Возраст: 33

Рейтинг



>>Мистер Т Рекойль-Штарт и Мистер Т Рекойль Энде
>> делают ... это,
И что они такое делают ?
З.Ы. не доверяй электронным переводчикам имхо бред выходит однако хоть вступление я перевел

Мистер Т Рекойль-Штарт и Мистер Т Рекойль Энде мда ...

Примечание: содержание этой страницы содержит 2 туториала на тему "Отдача" .
От HankY:
Здесь пойдет речь об реализации отдачи , как оружие передвигается при стрельбе , и уже не реализуется как в V_PunchAxis.
Теперь если бы мы записывали в код , являющийся второстепенным , возможности были бы: ....

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | IP: Записан
Сообщение: 15988

Старое сообщение 13-06-2007 13:58
- За что?
JJoe
Житель форума

Дата регистрации: May 2007
Проживает: Беларусь
Сообщений: 100
Возраст: 31

Рейтинг



ToMMuK не знаю как у тебя. но у меня в Half-Life 1.1.1.1 есть разброс пуль и отдача.

__________________
JJoe

Сообщить модератору | IP: Записан
Сообщение: 16615

Старое сообщение 29-06-2007 19:46
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 33

Рейтинг



То 1.1.1.1 а у меня то 1.1.1.0

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

Сообщить модератору | IP: Записан
Сообщение: 16618

Старое сообщение 29-06-2007 20:56
- За что?
JJoe
Житель форума

Дата регистрации: May 2007
Проживает: Беларусь
Сообщений: 100
Возраст: 31

Рейтинг



Мне кажется тоже самое есть и в Half-Life 1.1.1.0.

[ Вложение ]
bounce0001.jpg

__________________
JJoe

Сообщить модератору | IP: Записан
Сообщение: 16627

Старое сообщение 30-06-2007 10:16
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6868
Возраст: 34

Рейтинг



ToMMuk всё это просто - разброс при стрельбе в кс зависит от скорости игрока и его положения
(сидит или стоит) + есть ли у него под ногами почва. Вот, это стрельба патронами:

C++ Source Code:
FireBulletsPlayer( 1, vecSrc, vecAiming, Vector( 0.02, 0.02, 0.02 ), 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );

Заменяем Vector( 0.02, 0.02, 0.02 ) на (Vector( 0.02, 0.02, 0.02 )*accuracy). accuracy это некая переменная, которая варьируется в зависимости от вышеперечисленных
условий. К примеру:
C++ Source Code:
float accuracy = m_pPlayer->pev->velocity;
// Разброс зависит от скорости игрока, если она равна нулю, то меткость идеальная: Vector( 0.02, 0.02, 0.02 )*0 получается Vector( 0.0, 0.0, 0.0 ) - отклонение пуль по осям x,y,z - нулевое
 
FireBulletsPlayer( 1, vecSrc, vecAiming, [b](Vector( 0.02, 0.02, 0.02 )*accuracy)[/b], 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );

ну или что-то подобное. Также можно сделать так:
C++ Source Code:
1
if ( FBitSet( m_pPlayer->pev->flags, FL_DUCKING ) )	// игрок сидит
2
{
3
  accuracy = accuracy/2; // точность выше в два раза (разброс меньше в два раза)
4
}
5
else if ( m_pPlayer->pev->button & IN_JUMP )	// прыжок
6
{
7
  accuracy = accuracy*2; // наоборот
8
}
9
else if( FBitSet( !m_pPlayer->pev->flags, FL_ONGROUND ) )
10
{
11
  accuracy = accuracy*1.5; // когда игрок не имеет почвы под ногами разброс больше в полтора раза
12
}

Это всё лишь предположение, я не проверял. Может что-то неправильно. Но идею, надеюсь, ты уловил.

Ещё можно указать условие, когда игрок на лестнице, кажется тогда у него MOVETYPE_FLY.
По поводу того, что с каждым следующим выстрелом разброс увеличивается, то тут можно зацепиться
за количество патронов в обойме(вернее их расход)...

З.Ы. меткость оружия указывается на сервере а не на клиенте. Это про отдачу (тряска экрана), а у нас про меткость вопрос.

Сообщить модератору | IP: Записан
Сообщение: 16710

Старое сообщение 04-07-2007 07:55
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 33

Рейтинг



Цитата:
Ku2zoff писал:
З.Ы. меткость оружия указывается на сервере а не на клиенте. Это про отдачу (тряска экрана), а у нас про меткость вопрос.

Ну так в КС Экран поднимается с разбросом пуль и трясётся именно так, вообще там непонятно что к чему но суть я уловил.

Добавлено 04-07-2007 в 12:52:

Ku2zoff ты поставь в ХЛ разброс по максимуму а пунч англ 0 я посмотрю как это выглядит, экран на месте а вся стена в дырках

Добавлено 04-07-2007 в 14:08:

cannot convert from 'class Vector' to 'float'

(Vector( 0.02, 0.02, 0.02 )*accuracy) по другому надо как-то

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

Сообщить модератору | IP: Записан
Сообщение: 16712

Старое сообщение 04-07-2007 10:08
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6868
Возраст: 34

Рейтинг



Цитата:
cannot convert from 'class Vector' to 'float'


ToMMuK я же писал, что это предположение. Кстати, если писать на клиенте V_PunchAxis, то только будет трястись экран...
Если на сервере - PunchAngle, то после нескольких выстрелов прицел по-страшному задирается, как в Day of Defeat. Добавить разброс - и все дела. Только чтобы он изменялся.
ToMMuK делай не так
C++ Source Code:
1
(Vector( 0.02, 0.02, 0.02 )*accuracy
2
//А вот так<img src="images/smilies/smile.gif" border="0" alt="">
3
Vector accuracy;
4
 
5
float speed = m_pPlayer->pev->velocity.Length();
6
 
7
if(speed >= 400) accuracy = Vector( 0.18, 0.18, 0.18 );
8
if(speed >= 300 && speed < 400) accuracy = Vector( 0.16, 0.16, 0.16 );
9
if(speed >= 200 && speed < 300) accuracy = Vector( 0.14, 0.14, 0.14 );
10
if(speed >= 150 && speed < 200) accuracy = Vector( 0.12, 0.12, 0.12 );
11
if(speed >= 100 && speed < 150) accuracy = Vector( 0.10, 0.10, 0.10 );
12
if(speed >= 50 && speed < 100) accuracy = Vector( 0.08, 0.08, 0.08 );
13
if(speed >= 0 && speed < 50) accuracy = Vector( 0.06, 0.06, 0.06 );
14
else accuracy = Vector( 0.2, 0.2, 0.2 ); //This is my accuracy table
15
 
16
if ( m_pPlayer->pev->flags & FL_DUCKING )	// crouching
17
{
18
  accuracy = accuracy/2;  //It`s really works!
19
}
20
else
21
{
22
  accuracy = accuracy;
23
}
24
 
25
vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, accuracy, 8192, BULLET_PLAYER_357, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );

Сообщить модератору | IP: Записан
Сообщение: 17326

Старое сообщение 23-07-2007 05:14
- За что?
Troll
Частый гость

Дата регистрации: May 2007
Проживает: (void)
Сообщений: 40

Рейтинг



А не проще через EventHook это осуществить?

Сообщить модератору | IP: Записан
Сообщение: 17585

Старое сообщение 05-08-2007 20:39
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 14:50. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Отдача от выстрела как в Counter-strike
ну или хотя бы что-то похожее.
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024