HLFX.Ru Forum Страницы (260): « Первая ... « 206 207 208 209 [210] 211 212 213 214 » ... Последняя »
Показать все 3886 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)


Отправлено [CFR] B@N@N 11-12-2021 в 10:07:

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


Можно по подробние про это? В чом отличие от оригинала?

Добавлено 11-12-2021 в 13:07:

Цитата:
Chyvachok писал:
Пробовал, след плазмы сделать, но пока не очень красиво получается на их основе.

Ну у тебя тоже заардкожино всё будет)))
Ваще я так понял такой же визуальный ридактор и тхт файл никто больше ниосилел из авторов партекл систем. Походу оно ни так просто зделать


Отправлено Ku2zoff 11-12-2021 в 12:02:

Цитата:
[CFR] B@N@N писал:
Можно по подробние про это? В чом отличие от оригинала?

Декали из спрайтов, а не из картинок в ваде. Могут анимироваться, менять размер на ходу, много чего ещё. В основе декали из инвазиона. Они прикольные, но исчезают после загрузки или перехода на новый уровень. Это я почти заборол, могут иногда пропадать с движущихся энтить при загрузке и переходе. Ещё обрезку по краям брашей не сделал - половина декали может висеть в пустоте. Собсно, в инвазионе это не слишком бросалось в глаза, т.к. там только дырки от пуль. А я планирую пятна крови, взрывов и ещё что-нибудь. Как только победю отваливание от движущихся энтить - займусь обрезкой.

Добавлено 11-12-2021 в 19:02:

Цитата:
[CFR] B@N@N писал:
Походу оно ни так просто зделать

Самая сложность в том, какой функционал задать самой системе. В идеале, она должна уметь всё, что умеют pEfxAPI (касаемо спрайтов), аврора и дождик БУзера. То есть тут не просто какие-то дымки от выстрелов в стену, и не просто дым, рассеивающийся из трубы. Тут и лучи, закрученные в спираль, и закольцованные лучи, и лучи с шумом, и прыгающие от пола спрайты гаусса, и искры от выстрелов из инвазиона, и эффекты телепортов, дофигища всего. Накодить это можно, в XDM очень многое уже есть. Другой вопрос как всё это унифицировать, чтобы у совершенно разных систем, например искр и кольца от взрыва не было дублирующихся параметров, и как вообще это всё сохранять в скрипт.
Будет готовая система - можно будет и редактор написать. Только вот нужна ли она, именно такая система? В большинстве случаев функционал будет избыточным. Всё, на что хватает фантазии у моддеров - повторять чужие эффекты. Поэтому Дядя Миша просто взял, и портировал аврору в ксаш с исправлениями. Подавляющее большинство моддеров даже чужие aur-файлы берут. Те самые, которые Лаури как примеры к спириту приложил. Даже те, кто умеет кодить, не раскрывают в полной мере возможности pEfxAPI. Нет примеров, нет документации.


Отправлено Chyvachok 11-12-2021 в 13:21:

Цитата:
Ku2zoff писал:
А я планирую пятна крови, взрывов и ещё что-нибудь.


Если нужны более качественные спрайты вот из Ballistic Weapons кровяха: https://files.gamebanana.com/bitpit...eaponsblood.rar

Могу еще следы от пуль и взрывов скинуть.


Отправлено Дядя Миша 11-12-2021 в 14:40:

Цитата:
Ku2zoff писал:
Как только победю отваливание от движущихся энтить - займусь обрезкой.

Ну в ксаше же не отваливаются. Даже с монстров. Смотри как там устроено. Оно несложное, если разберёшься с переходом из глобального в локальное пространство.

Цитата:
Ku2zoff писал:
Поэтому Дядя Миша просто взял, и портировал аврору в ксаш с исправлениями.

К Авроре Ксер в свое время редактор написал. У нее на мой взгляд был только один недостаток - баги. Ну вот я их и поправил, а функционал немного дополнил. Сделал проекцию светового пятна на партиклы и всё такое.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Chyvachok 11-12-2021 в 17:57:

Такой вариант сделать другой цвет крови при выстреле в голову нормальный? Пока вижу что есть шанс если монстра разорвет на мясо выстрелом в голову, то куски будут желтую кровь оставлять, а если в тело то красную. Хотя как вариант влепить в Gib Monster проверку возвращающую цвет крови, или это лишняя проверка будет?

code:
void CZombie :: TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType) { switch ( ptr->iHitgroup ) { case HBOX_HEAD: m_bloodColor = BLOOD_COLOR_YELLOW; break; } CBaseMonster::TraceAttack( pevAttacker, flDamage, vecDir, ptr, bitsDamageType ); if (m_bloodColor = BLOOD_COLOR_YELLOW) m_bloodColor = BLOOD_COLOR_RED; }


Отправлено Ku2zoff 11-12-2021 в 23:43:

Короче, я пошёл по пути самурая. CZombie::TraceBleed с аргументом цвета крови, что логично. CZombie::TraceAttack, CZombie::GibMonster, CZombie::SpawnGibs. Последнее делать не хотелось, но гибсы из SpawnRandomGibs по-умолчанию принимают цвет крови владельца. Пришлось сделать для зомби кастомную функцию, чтобы задать цвет вручную.

C++ Source Code:
1
#include "weapons.h"
2
 
3
void CZombie::TraceAttack(entvars_t* pevAttacker, float flDamage, Vector vecDir, TraceResult* ptr, int bitsDamageType)
4
{
5
  if (pev->takedamage)
6
  {
7
    m_LastHitGroup = ptr->iHitgroup;
8
 
9
    switch (ptr->iHitgroup)
10
    {
11
    case HITGROUP_HEAD:
12
        SpawnBlood(ptr->vecEndPos, BLOOD_COLOR_YELLOW, flDamage);
13
      TraceBleed(BLOOD_COLOR_YELLOW, flDamage, vecDir, ptr, bitsDamageType);
14
      break;
15
    default:
16
        SpawnBlood(ptr->vecEndPos, BLOOD_COLOR_RED, flDamage);
17
      TraceBleed(BLOOD_COLOR_RED, flDamage, vecDir, ptr, bitsDamageType);
18
      break;
19
    }
20
    AddMultiDamage(pevAttacker, this, flDamage, bitsDamageType);
21
  }
22
}
23
 
24
void CZombie::TraceBleed(int bloodColor, float flDamage, Vector vecDir, TraceResult* ptr, int bitsDamageType)
25
{
26
  if (flDamage == 0) return;
27
 
28
  if (!(bitsDamageType & (DMG_CRUSH | DMG_BULLET | DMG_SLASH | DMG_BLAST | DMG_CLUB | DMG_MORTAR))) return;
29
 
30
  TraceResult Bloodtr;
31
  Vector vecTraceDir;
32
  float flNoise;
33
  int cCount;
34
  int i;
35
 
36
 
37
  if (flDamage < 10)
38
  {
39
    flNoise = 0.1;
40
    cCount = 1;
41
  }
42
  else if (flDamage < 25)
43
  {
44
    flNoise = 0.2;
45
    cCount = 2;
46
  }
47
  else
48
  {
49
    flNoise = 0.3;
50
    cCount = 4;
51
  }
52
 
53
  for (i = 0; i < cCount; i++)
54
  {
55
    vecTraceDir = vecDir * -1;
56
    vecTraceDir.x += RANDOM_FLOAT(-flNoise, flNoise);
57
    vecTraceDir.y += RANDOM_FLOAT(-flNoise, flNoise);
58
    vecTraceDir.z += RANDOM_FLOAT(-flNoise, flNoise);
59
 
60
    UTIL_TraceLine(ptr->vecEndPos, ptr->vecEndPos + vecTraceDir * -172, ignore_monsters, ENT(pev), &Bloodtr);
61
 
62
    if (Bloodtr.flFraction != 1.0) UTIL_BloodDecalTrace(&Bloodtr, bloodColor);
63
  }
64
}
65
 
66
void CZombie::GibMonster(void)
67
{
68
  TraceResult	tr;
69
  BOOL		gibbed = FALSE;
70
 
71
  EMIT_SOUND(ENT(pev), CHAN_WEAPON, "common/bodysplat.wav", 1, ATTN_NORM);
72
 
73
  if (CVAR_GET_FLOAT("violence_hgibs") != 0)
74
  {
75
    SpawnGibs(3, 1);
76
    gibbed = TRUE;
77
  }
78
 
79
  if (CVAR_GET_FLOAT("violence_agibs") != 0)
80
  {
81
    SpawnGibs(3, 0);
82
    gibbed = TRUE;
83
  }
84
 
85
  if (gibbed)
86
  {
87
    SetThink(&CBaseMonster::SUB_Remove);
88
    pev->nextthink = gpGlobals->time;
89
  }
90
  else FadeMonster();
91
}
92
 
93
void CZombie::SpawnGibs(int cGibs, int human)
94
{
95
  int cSplat;
96
 
97
  for (cSplat = 0; cSplat < cGibs; cSplat++)
98
  {
99
    CGib* pGib = GetClassPtr((CGib*)NULL);
100
 
101
    if (human)
102
    {
103
      pGib->Spawn("models/hgibs.mdl");
104
      pGib->pev->body = RANDOM_LONG(1, 6 - 1);
105
      pGib->m_bloodColor = BLOOD_COLOR_RED;
106
    }
107
    else
108
    {
109
      pGib->Spawn("models/agibs.mdl");
110
      pGib->pev->body = RANDOM_LONG(0, 4 - 1);
111
      pGib->m_bloodColor = BLOOD_COLOR_YELLOW;
112
    }
113
 
114
    pGib->pev->origin.x = pev->absmin.x + pev->size.x * (RANDOM_FLOAT(0, 1));
115
    pGib->pev->origin.y = pev->absmin.y + pev->size.y * (RANDOM_FLOAT(0, 1));
116
    pGib->pev->origin.z = pev->absmin.z + pev->size.z * (RANDOM_FLOAT(0, 1)) + 1;
117
 
118
    pGib->pev->velocity = g_vecAttackDir * -1;
119
 
120
    pGib->pev->velocity.x += RANDOM_FLOAT(-0.25, 0.25);
121
    pGib->pev->velocity.y += RANDOM_FLOAT(-0.25, 0.25);
122
    pGib->pev->velocity.z += RANDOM_FLOAT(-0.25, 0.25);
123
 
124
    pGib->pev->velocity = pGib->pev->velocity * RANDOM_FLOAT(300, 400);
125
 
126
    pGib->pev->avelocity.x = RANDOM_FLOAT(100, 200);
127
    pGib->pev->avelocity.y = RANDOM_FLOAT(100, 300);
128
 
129
    if (pev->health > -50) pGib->pev->velocity = pGib->pev->velocity * 0.7;
130
    else if (pev->health > -200) pGib->pev->velocity = pGib->pev->velocity * 2;
131
    else pGib->pev->velocity = pGib->pev->velocity * 4;
132
 
133
    pGib->pev->solid = SOLID_BBOX;
134
    UTIL_SetSize(pGib->pev, Vector(0, 0, 0), Vector(0, 0, 0));
135
 
136
    pGib->LimitVelocity();
137
  }
138
}


Добавлено 12-12-2021 в 06:43:

Цитата:
Chyvachok писал:
если монстра разорвет на мясо выстрелом в голову, то куски будут желтую кровь оставлять, а если в тело то красную

Используй мой код. Куски будут оставлять оба цвета.


Отправлено [CFR] B@N@N 12-12-2021 в 01:23:

Цитата:
Ku2zoff писал:
. Ещё обрезку по краям брашей не сделал - половина декали может висеть в пустоте


А как они в движке тогда обриаются?


Отправлено Дядя Миша 12-12-2021 в 06:47:

Цитата:
[CFR] B@N@N писал:
А как они в движке тогда обриаются?

Элементарно. Вокруг полигона, на который наложена декаль строятся ограничивающие плоскости. Как кросспродукт от ребра и нормали.
И этими плоскостями полигон декали обрезается точно по его размеру.

Добавлено 12-12-2021 в 09:47:

Но поскольку декаль накладывается как трипланарная проекция, то её копии ложатся и на соседние полигоны, а лишнее просто удаляется.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 17-12-2021 в 15:07:

Дядя Миша а где всю эту математику поглядеть? Какие функции в gl_decals.c?


Отправлено XaeroX 17-12-2021 в 16:03:

Ku2zoff
https://en.wikipedia.org/wiki/Suthe...dgman_algorithm

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Дядя Миша 17-12-2021 в 17:13:

Ku2zoff polylib.c, там всё. В любой кваке смотри.
Если хочешь понять принцип. Ну а если не хочешь - копипасти из паранои.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 17-12-2021 в 17:20:

Цитата:
Дядя Миша писал:
Если хочешь понять принцип.

Оно не хочется на самом деле, хочется побыстрее скопипастить. Но чем больше я изучаю физику и математику (даже в первом семестре), тем больше понимаю, что кодер без знания матчасти - ноль без палочки.


Отправлено Дядя Миша 17-12-2021 в 18:10:

От задач зависит. По крайней мере никто не заставляет пограммистов придумывать новые математические решения. Но вот воплощать в коде уже имеющиеся - вполне себе.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 17-12-2021 в 18:40:

Цитата:
Ku2zoff писал:
кодер без знания матчасти - ноль без палочки

Истину глаголишь, я тут фонарик ксашмодовский уже пару месяцев пытаюсь пофиксить время от времени, там замуты с матрицами какие-то, а я в этом ничего не понимаю. У каждого мозги под свои задачи заточены, а я уж точно не математик

__________________
Мой мод на Xash


Отправлено Ku2zoff 18-12-2021 в 10:58:

Цитата:
Дядя Миша писал:
воплощать в коде уже имеющиеся - вполне себе

Всё равно надо разбираться, а не бездумно копипастить.
Цитата:
Aynekko писал:
фонарик ксашмодовский уже пару месяцев пытаюсь пофиксить

Я думаю, что тебе надо поштудировать оптику. Шейдеры же не от балды написаны, а с опорой на реальные физические законы.


Временная зона GMT. Текущее время 09:43. Страницы (260): « Первая ... « 206 207 208 209 [210] 211 212 213 214 » ... Последняя »
Показать все 3886 сообщений этой темы на одной странице

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