HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
3 голосов
Страницы (192): « Первая ... « 185 186 187 188 [189] 190 191 192 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Хачимааан!!!

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

Рейтинг



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

Добавлено 11-04-2021 в 21:44:

Вышел из положения временно вот таким кодом:

C++ Source Code:
1
void CPushable::AddGravityThink(void)
2
{
3
  if (!pev->gravity) pev->gravity = 0.5;
4
 
5
  pev->velocity.z -= (pev->gravity * CVAR_GET_FLOAT("sv_gravity") * gpGlobals->frametime);
6
  pev->velocity.z += (pev->basevelocity.z * gpGlobals->frametime);
7
  pev->basevelocity.z = 0.0f;
8
 
9
  pev->nextthink = pev->ltime + 0.1;
10
}

pev->gravity обязательно 0.5, чтобы пушабли падали с обычной, а не с двойной скоростью. Сначала половина ускорения применяется в SV_AddGravity в движке, а затем вторая половина в AddGravityThink. Теперь пушабли прекрасно падают как с других пушаблей, так и с монстров, если монстр отошёл в сторону.

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

Старое сообщение 11-04-2021 14:44
- За что?
SNMetamorph
Житель форума

Дата регистрации: Jun 2018
Проживает: Ижевск
Сообщений: 262

Рейтинг



Цитата:
Crystallize писал:
так ты XT допиливаешь или что ты делаешь?

Мою ютилиту GoldSrc Monitor допиливаю потихоньку параллельно с ксашмодом.

__________________
Поделки
GoldSrc Monitor (https://gamebanana.com/gamefiles/8977)
mem2pix (https://github.com/SNMetamorph/mem2pix)

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

Старое сообщение 11-04-2021 14:48
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 27718
Нанёс повреждений: 386 ед.

Рейтинг



Цитата:
SNMetamorph писал:
Не, мне надо именно накодить это

А в чём проблема? Ну если ты видишь, что после умножения на матрицу хулл куда-то уезжает - не умножай на матрицу.

Добавлено 11-04-2021 в 20:02:

Цитата:
Ku2zoff писал:
Подскажите, есть ли возможность научить пушаблю падать, после того, как из-под неё была вытолкнута другая пушабля?

Рекурсивно убрать им флаг FL_ONGROUND. Можно и двигать, но это сложнее.

Добавлено 11-04-2021 в 20:05:

Цитата:
Ku2zoff писал:
Вышел из положения временно вот таким кодом:

C++ Source Code:
1
void CPushable::AddGravityThink(void)
2
{
3
  ClearBits (pev->flags, FL_ONGROUND);
4
  pev->nextthink = pev->ltime + 0.1;
5
}

А потом удивляются, почему софт весит по терабайту.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме

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

Старое сообщение 11-04-2021 17:05
-
Ku2zoff
Хачимааан!!!

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

Рейтинг



Дядя Миша так не годится. У пушаблей пропадает трение, если убрать флаг. Ну или не пропадает, но они скользят до бесконечности по полу, если получают ускорение, видимо, работает SV_FlyMove. Флаг надо снимать в определённый момент, когда внизу становится пусто, а не каждый кадр.

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

Старое сообщение 11-04-2021 17:30
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 27718
Нанёс повреждений: 386 ед.

Рейтинг



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

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме

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

Старое сообщение 11-04-2021 17:46
-
Ku2zoff
Хачимааан!!!

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

Рейтинг



Блин, ну я балбес. Из движка ведь торчит нужный экспорт

C++ Source Code:
1
void CPushable::AddGravityThink(void)
2
{
3
  if (ENT_IS_ON_FLOOR(ENT(pev)) == 0)
4
    ClearBits(pev->flags, FL_ONGROUND);
5
 
6
  pev->nextthink = pev->ltime + 0.1;
7
}

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

Старое сообщение 11-04-2021 17:46
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 27718
Нанёс повреждений: 386 ед.

Рейтинг



Цитата:
Ku2zoff писал:
ENT_IS_ON_FLOOR

она тежолая, на самом деле.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме

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

Старое сообщение 11-04-2021 17:58
-
Ku2zoff
Хачимааан!!!

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

Рейтинг



Дядя Миша я тчинк сделал пореже, до 0.5 секунды увеличил. И сделал проверку на FL_ONGROUND, чтобы для падающих пушаблей не считалось. Посмотрим. Если вдруг нарвусь на тормоза, никогда не поздно будет вернуться к варианту с гравитацией.

Добавлено 12-04-2021 в 01:08:

Вообще, для обычных пушаблей на зависание в воздухе можно забить - ситуация редкая. Я лишь в паре любительских модов такое видел, где авторы так их располагали, что можно из них составить пирамиду. Обычно все пушабли на одном уровне: меньший ящик толкается к большему, а потом по ним игрок куда-то лезет. Но у меня ситуация с носимыми в руках пушаблями: их ведь можно поставить на что угодно, куда "руки" дотянутся. Вот и столкнулся с неприятным моментом.

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

Старое сообщение 11-04-2021 18:08
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 457
Возраст: 28

Рейтинг



Цитата:
Ku2zoff писал:
их ведь можно поставить на что угодно, куда "руки" дотянутся

А ты проверял проп-флайинг? Я в ксаше столкнулся с таким. Можно залезть на предмет, подпрыгнуть, взять. Отпустить, подпрыгнуть, взять. И так до бесконечности.

__________________
Мой мод на Xash

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

Старое сообщение 12-04-2021 07:10
- За что?
Ku2zoff
Хачимааан!!!

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

Рейтинг



Цитата:
Aynekko писал:
А ты проверял проп-флайинг?

Это с пушаблями не работает. У них в таком случае будет ненулевая velocity, а значит флаг FL_ONGROUND сбросится внутри SV_MoveStep.

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

Старое сообщение 12-04-2021 09:41
- За что?
SNMetamorph
Житель форума

Дата регистрации: Jun 2018
Проживает: Ижевск
Сообщений: 262

Рейтинг



Значится, я рисую у энтити их обьем таким вот образом
https://github.com/SNMetamorph/gold...report.cpp#L114
Проблема в том, что у func_tank питч инвертированный получается, хотя у всех остальных энтити всё выглядит нормально и питч такой как надо. Как это решить?
А ещё я заметил, что у некоторых энтити их ориджин находится как бы в центре хулла, а у других он находится в самом низу хулла. Как определить где находится центр для какой-то конкретной энтити? Есть флаг некий для этого?

__________________
Поделки
GoldSrc Monitor (https://gamebanana.com/gamefiles/8977)
mem2pix (https://github.com/SNMetamorph/mem2pix)

Отредактировано SNMetamorph 17-04-2021 в 12:33

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

Старое сообщение 17-04-2021 12:31
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 3384
Возраст: 31

Рейтинг



Написал такую штуку и столкнулся с тем что в конце при выводе через printf оба значения по нулям.

C++ Source Code:
1
void GetAngleScaler( float scaler, float scaler1 )
2
{
3
  vec3_t tang, tang1;
4
  if( Length( cl.velocity ) ) GetLocalTangent(tang, tang1);
5
 
6
  Con_Printf( "tang %f tang1 %f\n", tang[1],tang1[1] );
7
  scaler = tang[1] / 90.0f;
8
  scaler1 = tang1[1] / 90.0f;
9
  if( !scaler ) scaler = 1.0f;
10
  if( !scaler1 ) scaler1 = 1.0f;
11
 
12
 
13
  if( cl.viewangles[1] < tang[1] )
14
    scaler = 1.0f / scaler;
15
  if( cl.viewangles[1] < tang1[1] )
16
    scaler1 = 1.0f / scaler1;
17
 
18
  Con_Printf( "GAS sc %f sc1 %f\n", scaler, scaler1 );
19
}
20
 
21
 
22
/*
23
================
24
CL_AdjustAngles
25
 
26
Moves the local angle positions
27
================
28
*/
29
 
30
void CL_AdjustAngles ()
31
{
32
  float	speed;
33
  float	up, down;
34
  static float scaler, scaler1;
35
  vec3_t	plpos, camang, dir;
36
  vec3_t	cmps={0,0,0};
37
 
38
  entity_t	*ent;
39
  ent = &cl_entities[cl.viewentity];
40
  VectorCopy( ent->currentorigin, plpos );
41
 
42
  if (in_speed.state & 1)
43
    speed = host_frametime * cl_anglespeedkey.value;
44
  else
45
    speed = host_frametime;
46
 
47
  GetAngleScaler( scaler, scaler1 );
48
  Con_Printf( "sc %f sc1 %f\n", scaler, scaler1 );

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

Старое сообщение 19-04-2021 15:13
- За что?
SNMetamorph
Житель форума

Дата регистрации: Jun 2018
Проживает: Ижевск
Сообщений: 262

Рейтинг



Цитата:
Crystallize писал:
Написал такую штуку и столкнулся с тем что в конце при выводе через printf оба значения по нулям.

C++ Source Code:
1
void GetAngleScaler( float scaler, float scaler1 )
2
{
3
  vec3_t tang, tang1;
4
  if( Length( cl.velocity ) ) GetLocalTangent(tang, tang1);
5
 
6
  Con_Printf( "tang %f tang1 %f\n", tang[1],tang1[1] );
7
  scaler = tang[1] / 90.0f;
8
  scaler1 = tang1[1] / 90.0f;
9
  if( !scaler ) scaler = 1.0f;
10
  if( !scaler1 ) scaler1 = 1.0f;
11
 
12
 
13
  if( cl.viewangles[1] < tang[1] )
14
    scaler = 1.0f / scaler;
15
  if( cl.viewangles[1] < tang1[1] )
16
    scaler1 = 1.0f / scaler1;
17
 
18
  Con_Printf( "GAS sc %f sc1 %f\n", scaler, scaler1 );
19
}
20
 
21
 
22
/*
23
================
24
CL_AdjustAngles
25
 
26
Moves the local angle positions
27
================
28
*/
29
 
30
void CL_AdjustAngles ()
31
{
32
  float	speed;
33
  float	up, down;
34
  static float scaler, scaler1;
35
  vec3_t	plpos, camang, dir;
36
  vec3_t	cmps={0,0,0};
37
 
38
  entity_t	*ent;
39
  ent = &cl_entities[cl.viewentity];
40
  VectorCopy( ent->currentorigin, plpos );
41
 
42
  if (in_speed.state & 1)
43
    speed = host_frametime * cl_anglespeedkey.value;
44
  else
45
    speed = host_frametime;
46
 
47
  GetAngleScaler( scaler, scaler1 );
48
  Con_Printf( "sc %f sc1 %f\n", scaler, scaler1 );

Как я понял, тебе надо в GetAngleScaler передавать ссылки на переменные, а ты передаешь внутрь просто переменные.
То есть обьявление функции должно быть таким:
C++ Source Code:
void GetAngleScaler( float &scaler, float &scaler1 )

__________________
Поделки
GoldSrc Monitor (https://gamebanana.com/gamefiles/8977)
mem2pix (https://github.com/SNMetamorph/mem2pix)

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

Старое сообщение 19-04-2021 16:29
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 3384
Возраст: 31

Рейтинг



SNMetamorph он хочет закрывающую скобку перед символом ссылки

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

Старое сообщение 19-04-2021 17:26
- За что?
nemyax
Нёмыч

Группа: Опытный
Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 3733

Рейтинг



Crystallize
Так это сишный файл, наверно. А в сях только указатели и нету неко ких ссылок.

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

Старое сообщение 19-04-2021 18:47
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 02:29. Новая тема    Ответить
Страницы (192): « Первая ... « 185 186 187 188 [189] 190 191 192 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
3 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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