HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Брызги воды как в Соусе
Я, наверно, загнул с маштабами, но....
Страницы (4): « 1 [2] 3 4 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



MadKing посмотри исходники дождя by BUzer. Там коментарии на русском. Дождь рисуется с помощью ТРИАпи, там есть круги на воде, посмотри как они сделаны, сделай свои, а потом присобачь к ним R_TempSprite, который будет всплеском.

Добавлено 29-09-2009 в 12:40:

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

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

Старое сообщение 29-09-2009 05:40
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Пытаюсь в сабачить их юз в CBasePlayer::WaterMove

pev->origin видимо

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 29-09-2009 06:59
-
MadKing
Частый гость

Дата регистрации: Jun 2009
Проживает: (void)
Сообщений: 90

Рейтинг



Ku2zoff Дядя Миша подумаю - ща сделаю....
Ku2zoff , Это они где? В исходниках Paranoia? Да?

Добавлено 29-09-2009 в 19:09:

Немножко не понял, кто из них (файл rain.cpp) отвечает за реализацию кругов на воде....

C++ Source Code:
1
// falling to water?
2
int contents = gEngfuncs.PM_PointContents( pmtrace.endpos, NULL );
3
if (contents == CONTENTS_WATER)
4
{
5
  int waterEntity = gEngfuncs.PM_WaterEntity( pmtrace.endpos );
6
  if ( waterEntity > 0 )
7
  {
8
    cl_entity_t *pwater = gEngfuncs.GetEntityByIndex( waterEntity );
9
    if ( pwater && ( pwater->model != NULL ) )
10
    {
11
      deathHeight = pwater->curstate.maxs[2];
12
    }
13
    else
14
    {
15
      gEngfuncs.Con_Printf("Rain error: can't get water entity\n");
16
      continue;
17
    }
18
  }
19
  else
20
  {
21
    gEngfuncs.Con_Printf("Rain error: water is not func_water entity\n");
22
    continue;
23
  }
24
}
25
else
26
{
27
  deathHeight = pmtrace.endpos[2];
28
}
- это вааще здесь?

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

Старое сообщение 29-09-2009 15:09
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



MadKing зачем писать что ты опытный кодер, если не понимаешь элементарных вещей?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 29-09-2009 18:00
-
MadKing
Частый гость

Дата регистрации: Jun 2009
Проживает: (void)
Сообщений: 90

Рейтинг



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

Добавлено 30-09-2009 в 05:16:

Не, я просто хочу понять....

C++ Source Code:
1
void WaterLandingEffect(cl_drip *drip)
2
{
3
  if (fxcounter >= MAXFX)
4
  {
5
    gEngfuncs.Con_Printf( "Rain error: FX limit overflow!\n" );
6
    return;
7
  }
8
  cl_rainfx *newFX = g_fxArray.Allocate();
9
  if (!newFX)
10
  {
11
    gEngfuncs.Con_Printf( "Rain error: failed to allocate FX object!\n");
12
    return;
13
  }
14
  newFX->alpha = gEngfuncs.pfnRandomFloat(0.6, 0.9);
15
  VectorCopy(drip->origin, newFX->origin);
16
  newFX->origin[2] = drip->minHeight; // correct position
17
 
18
  newFX->birthTime = gEngfuncs.GetClientTime();
19
  newFX->life = gEngfuncs.pfnRandomFloat(0.7, 1);
20
  fxcounter++;
21
}

Вот это -
C++ Source Code:
if (fxcounter >= MAXFX)
{
  gEngfuncs.Con_Printf( "Rain error: FX limit overflow!\n" );
  return;
}
- понятно, проверка на превышение лимита эффектов.
C++ Source Code:
1
cl_rainfx *newFX = g_fxArray.Allocate();
2
if (!newFX)
3
{
4
  gEngfuncs.Con_Printf( "Rain error: failed to allocate FX object!\n");
5
  return;
6
}
- Эт я понял - выделение памяти под ФиКс и проверка.

C++ Source Code:
newFX->alpha = gEngfuncs.pfnRandomFloat(0.6, 0.9);
- прозрачность
C++ Source Code:
VectorCopy(drip->origin, newFX->origin);
newFX->origin[2] = drip->minHeight; // correct position
- определяем координаты, скопировав векторы.
C++ Source Code:
newFX->birthTime = gEngfuncs.GetClientTime();
newFX->life = gEngfuncs.pfnRandomFloat(0.7, 1);
fxcounter++;

_ Это я тоже понял.
Но мне нужен сам по себе newFX, наверное.
Поищу ещё в tri.cpp...

Добавлено 30-09-2009 в 05:22:

О! Функцию нашёл.
DrawFXObjects
Осталось добавить всё сопутствующее этой функции и куда нить присобачить.

Добавлено 30-09-2009 в 05:28:

Надоже, скомпилил!!!!
Осталось гденить это юзнуть ну а потом и дополнить эффектом брызг

Добавлено 30-09-2009 в 05:32:

Ан нет, главную то функцию забыл. 14 штук.

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

Старое сообщение 30-09-2009 01:32
- За что?
SiPlus
GMod Lua Coder
Девойс

Дата регистрации: Jun 2007
Проживает: Санкт-Петербург
Сообщений: 317
Возраст: 27

Рейтинг



Брызги можно и маппингом сделать, поставить над водой кучу триггеров (чтобы брызги были не в одном месте, а по всей воде), прикосновение к одному из них приводит к появлению 2-х спрайтов, один - круг, другой - всплеск.

А FX означает effects.

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

Старое сообщение 30-09-2009 04:19
- За что?
MadKing
Частый гость

Дата регистрации: Jun 2009
Проживает: (void)
Сообщений: 90

Рейтинг



SiPlus , лучше кодом сделать тоже самое.

Добавлено 30-09-2009 в 12:34:

Всё скомпили, всё без ошибок, но, опять же, ни где не мелькают нужные функции. Куда надо вставить функции?

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

Старое сообщение 30-09-2009 08:34
- За что?
MadKing
Частый гость

Дата регистрации: Jun 2009
Проживает: (void)
Сообщений: 90

Рейтинг



ЗЫ:Может Бузер не будет против и я просто перейду на паранойу???

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

Старое сообщение 01-10-2009 01:38
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
SiPlus писал:
Брызги можно и маппингом сделать, поставить над водой кучу триггеров (чтобы брызги были не в одном месте, а по всей воде), прикосновение к одному из них приводит к появлению 2-х спрайтов, один - круг, другой - всплеск.

Ндасс... А не проще ли заюзать спирит, там на карте locusdemo есть пример эффекта лучей света, проникающих через "дырки" в стене. Просто вместо лучей сделать всплески и звук добавить. Локус это конечно очень замудренная и непонятная система, но позволяет делать хорошие эффекты, без приложения больших усилий.

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

Старое сообщение 01-10-2009 02:46
- За что?
MadKing
Частый гость

Дата регистрации: Jun 2009
Проживает: (void)
Сообщений: 90

Рейтинг



Цитата:
Ku2zoff писал:
А не проще ли заюзать спирит

Не проще - ты сам сказал что она не понятная, а я параною едва понимаю.
И всё таки, где применить эти функции, куды их записать или что то новое надо изобретать?(я про функи дождя из Параноии)

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

Старое сообщение 01-10-2009 04:43
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Бузер против не будет я думаю. Остальные вообще никакого разрешения не спрашивали.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 01-10-2009 18:40
-
MadKing
Частый гость

Дата регистрации: Jun 2009
Проживает: (void)
Сообщений: 90

Рейтинг



Хорошо, попробую, перейду...
Тока у меня вроде с первого же раза, как я его скачал, потекли какие то ошибки. Не знаю, может я и со спиритом спутал...
Ну вообщем Try'ну.

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

Старое сообщение 03-10-2009 03:45
- За что?
PomanoB
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 157

Рейтинг



Извиняюсь за подъём темы, но у меня похожий вопрос.

Как определить момент, когда любая энтити ударяется о воду?
У воды SOLID_NOT стоит и Touch не срабатывает(

Единственно что приходит мне в голову - в StartFrame перебирать все энтити и проверять вода или нет, но это как-то фигово(

Может можно как-то похимичить с solid'ами ?

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

Старое сообщение 08-02-2011 19:10
- За что?
fire64
Житель форума

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

Рейтинг



PomanoB, а если каждый кадр проверять pev->waterlevel ?

Или же через

UTIL_PointContents( Vector origin ) == CONTENTS_WATER

Правда если объект не точечный, то лучше использовать UTIL_WaterLevel

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

Отредактировано fire64 08-02-2011 в 19:33

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

Старое сообщение 08-02-2011 19:28
- За что?
PomanoB
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 157

Рейтинг



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

И разве pev->waterlevel работает для не игроков?

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

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



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


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

Временная зона GMT. Текущее время 21:13. Новая тема    Ответить
Страницы (4): « 1 [2] 3 4 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Брызги воды как в Соусе
Я, наверно, загнул с маштабами, но....
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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