HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > как добавить новый muzzleflash на пушку ?
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Ku2zoff ну и плюс Авроры что конфигурация эффектов не зашита в код, в той же Рендерсистем надо каждый раз перекомпиливать клиент, в идеале нормальная система партиклей это РендерСистем конфигурируемая через текстовые файлы как аврора, где можно прописывать разные эффекты и играться их значениями, а в коде где вызывается какой либо эффект, будто выстрел или взрыв или попадание, чтобы была ссылка на этот файл, если стрельба, то какой мазлфлеш спавнить, может еще и дымок в придачу, трасер какой, или может это лазер, со взрывами так же, чтобы сделать более менее нормальный эффект это должна быть комбинация из разных эффектов, сам огонь, дым, осколки и так далее.

Нечто подобное вроде Валве и задумывали с файлами events/.sc, во многих из них код похожий на код из клиента и содержится, пусть и не используется, по сути работа с эффектами сильно упростилась бы если бы код из .sc брался, и можно было в игре через команду перегрузить эти файлы, допустим если альт-табнулся и поменял что-то в файле эффекта.

Еще из эффектов на Сталкер в одном моде интересную фишку делали, мягкие партиклы назывались - если спрайт какого-то эффекта упирался в стену, но он не резко обрезался, при уходе в стену, а его край что в стену уходил плавно прозрачным становился.

Добавлено 12-08-2021 в 18:10:

Цитата:
Ku2zoff писал:
На мой взгляд, самая трушная система из XDM 3.0.3.4. Ей нужно добавить гравитацию и коллизию из 3.0.3.8 туда, где по смыслу нужно, и наверное парсер скриптов для погодных эффектов. В принципе, всё.


Еще в Тириане есть и свои эффекты что для попаданий использовались взятые и пофикшеные из ХЛВЕ, в 3.0.3.8 их нету, я смотрел, неплохие эффекты тоже.

Еще конечно не удобства и лимиты халвы доставляют тоже, если делать крутые эффекты как в том же ХЛВЕ или Тириане, то это надо как Гуль все эти модели-спрайты в одну засовывать, с кучей субмоделей или кадров, куда уместились все эффекты.

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

Старое сообщение 12-08-2021 16:10
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 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: Записан
Сообщение: 203207

Старое сообщение 12-08-2021 17:25
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Порт R_MuzzleFlash из ксашдвижка в клиентку:

C++ Source Code:
1
#include "com_model.h"
2
 
3
#define MAX_MUZZLEFLASH		3
4
model_t* cl_sprite_muzzleflash[MAX_MUZZLEFLASH];
5
 
6
void CL_LoadClientSprites(void)
7
{
8
  cl_sprite_muzzleflash[0] = (struct model_s*)gEngfuncs.GetSpritePointer(SPR_Load("sprites/muzzleflash1.spr"));
9
  cl_sprite_muzzleflash[1] = (struct model_s*)gEngfuncs.GetSpritePointer(SPR_Load("sprites/muzzleflash2.spr"));
10
  cl_sprite_muzzleflash[2] = (struct model_s*)gEngfuncs.GetSpritePointer(SPR_Load("sprites/muzzleflash3.spr"));
11
}
12
 
13
void R_MuzzleFlash(const vec3_t pos, int type)
14
{
15
  TEMPENTITY* pTemp;
16
  int		index;
17
  float		scale;
18
 
19
  index = (type % 10) % MAX_MUZZLEFLASH;
20
  scale = (type / 10) * 0.1f;
21
  if (scale == 0.0f) scale = 0.5f;
22
 
23
  if (!cl_sprite_muzzleflash[index])
24
    return;
25
 
26
  // must set position for right culling on render
27
  pTemp = gEngfuncs.pEfxAPI->CL_TempEntAllocHigh((float*)&pos, cl_sprite_muzzleflash[index]);
28
  if (!pTemp) return;
29
  pTemp->entity.curstate.rendermode = kRenderTransAdd;
30
  pTemp->entity.curstate.renderamt = 255;
31
  pTemp->entity.curstate.framerate = 10;
32
  pTemp->entity.curstate.renderfx = 0;
33
  pTemp->die = gEngfuncs.GetClientTime() + 0.01; // die at next frame
34
  pTemp->entity.curstate.frame = gEngfuncs.pfnRandomLong(0, pTemp->frameMax);
35
  pTemp->flags |= FTENT_SPRANIMATE | FTENT_SPRANIMATELOOP;
36
  pTemp->entity.curstate.scale = scale;
37
 
38
  if (index == 0) pTemp->entity.angles[2] = gEngfuncs.pfnRandomLong(0, 20); // rifle flash
39
    else pTemp->entity.angles[2] = gEngfuncs.pfnRandomLong(0, 359);
40
 
41
  gEngfuncs.CL_CreateVisibleEntity(ET_TEMPENTITY, &pTemp->entity);
42
}

CL_LoadClientSprites нужно вызвать из CHud:VidInit. R_MuzzleFlash использовать вместо gEngfuncs.pEfxAPI->R_MuzzleFlash. Количество и названия спрайтов можно менять, прекэшить на сервере не обязательно, SPR_Load задаст им индексы в массиве моделей.
Chyvachok сравни с оригинальным кодом в cl_tent.c и увидишь, что это совсем не сложно.
Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

Отредактировано Ku2zoff 13-08-2021 в 09:37

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

Старое сообщение 13-08-2021 09:35
- За что?
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Интересно, а насколько сложно сделать чтобы эвенты брались из event/.sc файлов? Все таки это было бы удобно те же эффекты и эвенты оружия можно было бы подправлять не перекомпилируя код.

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

Старое сообщение 13-08-2021 10:22
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Chyvachok писал:
а насколько сложно сделать чтобы эвенты брались из event/.sc файлов?

Надо написать маленькую виртуальную машинку.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 13-08-2021 11:41
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Chyvachok чтобы выяснить, насколько это сложно, нужно попробовать написать парсер. Мне проще перекомпилить клиент, если что-то получилось не так, чем убивать неделю на написание парсера, я ведь не умею К тому же, он всё равно будет ограничен заложенным набором функций. Реквестируй фичу кому-нибудь, SNMetamorph'у, например. Он как раз апгрейдит ксашмод. Можно Дядю Мишу попросить о такой штуке для XashNT. Зайчатки скриптовых оружий уже есть в п2, к этой основе можно добавить парсинг клиентского эвента.

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

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

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

Рейтинг



Что нужно пофиксить насчет muzzleflash - это крепление к аттачменту. Он ведь тупо спавнится в воздухе. Достаточно сделать pTemp->die = cl.time + 1.0 чтобы увидеть это убожество.
Я пока ради теста сделал кой-чего

C++ Source Code:
pTemp->clientIndex = 1;
pTemp->flags |= FTENT_SPRANIMATE | FTENT_SPRANIMATELOOP | FTENT_PLYRATTACHMENT;

Добавил первую строчку и добавил третий флаг во второй. Ну, крепится. В оригин игрока…

__________________
Мой мод на Xash

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

Старое сообщение 24-08-2021 18:15
- За что?
[CFR] B@N@N
Житель форума

Группа: Неопытный
Дата регистрации: Feb 2018
Проживает: Default City
Сообщений: 174
Возраст: 31

Рейтинг



Цитата:
Ku2zoff писал:
Можно заморочиться, и сделать чисто клиентские темпэнтити, чтобы обойти лимит в 500 штук и улучшить эффект


Есть какие-то новости в этом направлении? Было бы здорово обойти этот лимит в 500 темпэнтити

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

Старое сообщение 12-10-2021 00:27
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



[CFR] B@N@N я этим не занимался. Меня устраивает лимит в 500 штук. А что не устраивает - нарисую через триапи. Мешают лимиты - переходи на ксаш или SvenEngine. Последний полностью совместим со стим-версией халфы, имеет увеличенные лимиты, абсолютно бесплатен, т.к. свен бесплатен в стиме. К тому же ещё абсолютно легален. Буржуи не будут на тебя гавкать, если выпустишь свой мод под него. Вот с ксашем ситуация печальная, у них безостановочно горят пуканы из-за копирайтов, хотя казалось бы...

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

Старое сообщение 12-10-2021 01:28
- За что?
[CFR] B@N@N
Житель форума

Группа: Неопытный
Дата регистрации: Feb 2018
Проживает: Default City
Сообщений: 174
Возраст: 31

Рейтинг



Ксаш не подходит мне так как он не может мультиплеер
А вот свенэнжин наверное да, получше но он только чериз стим и это значит что на пиратку нивстанет и мод соответственно надо будет релизить чериз стим
Где-то отдельно можно будет скачать свенэнжин ну по типу того как можно скачать Ксаш чьоб не тинуть за собой несколько гига контента?

Насколько там лимиты на темпэнтити отличаются от халфовских? Я думал по хардкору замутить чьоб куски крови, тел, гильзы и тп не исчезали на карте или хотябы их было ощютимо многа чьоб была атмосфера побоища если долго играть на карте, ну типа как в Брутал Думе.

Отредактировано [CFR] B@N@N 12-10-2021 в 10:23

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

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

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

Рейтинг



Цитата:
[CFR] B@N@N писал:
Ксаш не подходит мне так как он не может мультиплеер

Ксаш FWGS нормально работает.

__________________
Мой мод на Xash

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

Старое сообщение 12-10-2021 10:32
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
[CFR] B@N@N писал:
Ксаш не подходит мне так как он не может мультиплеер

Всё он прекрасно может.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 12-10-2021 12:15
-
Aynekko
Маппер

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

Рейтинг



Цитата:
Aynekko писал:
Что нужно пофиксить насчет muzzleflash - это крепление к аттачменту. Он ведь тупо спавнится в воздухе. Достаточно сделать pTemp->die = cl.time + 1.0 чтобы увидеть это убожество.

Невероятно, но я все же додумался как это сделать.
Нужно для начала перенести код на клиент из движка (Ku2zoff выше выложил). Затем в этом коде сделать проверку на энтитю - viewmodel это или нет. Если viewmodel - то делаем хак:

pTemp->entity.curstate.aiment = -5;

Число рандомное, главное чтобы было отрицательное.
Так же нужно притащить в этот код номер аттачмента, пусть будет int Attachment. Притащить можно из эвента 5001 и других соседних.
Далее дописать

pTemp->entity.curstate.movetype = MOVETYPE_FOLLOW;
pTemp->entity.curstate.body = Attachment + 1;

А потом в спрайт-рендерере найти SpriteComputeOrigin и сделать проверку на aiment -5. И выставить parent = GET_VIEWMODEL() вместо GET_ENTITY.
Пробовал давать индекс, но у игрока и вьюмодели почему-то индекс одинаковый. Хотя бы это сработало. Теперь маззлфлеш намертво прикручен к аттачменту, а не остается в воздухе после спауна.
С моделью пока не работает. Видимо нужно в студиорендере сделать подобную проверку.
И еще я не знаю, можно ли все это провернуть в голде. Ну в ксашмоде получилось.

__________________
Мой мод на Xash

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

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

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

Рейтинг



C++ Source Code:
1
pTemp->flags |= FTENT_SPRANIMATE | FTENT_SPRANIMATELOOP | [color=red]FTENT_CLIENTCUSTOM[/color];
2
pTemp->entity.curstate.scale = scale;
3
 
4
[color = red]pTemp->callback = R_MuzzleFlashCallback;[/color]
5
 
6
//=================================
7
 
8
[color=red]void R_MuzzleFlashCallback(struct tempent_s* ent, float frametime, float currenttime)
9
{
10
  VectorCopy(gEngfuncs.GetViewModel()->attachment[0], ent->entity.origin);
11
}[/color]

Всё равно будет немного отставать на один кадр, но не будет оставаться висеть в воздухе.

P.S. админы, почините плиз тег color.

Отредактировано Ku2zoff 20-12-2021 в 14:00

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

Старое сообщение 20-12-2021 13:59
- За что?
Aynekko
Маппер

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

Рейтинг



Цитата:
Ku2zoff писал:
Всё равно будет немного отставать на один кадр

По-моему там еще зависимость от фпс нехилая.

__________________
Мой мод на Xash

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

Старое сообщение 20-12-2021 14:48
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 22:14. Новая тема    Ответить
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > как добавить новый muzzleflash на пушку ?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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