![]() |
Показать все 70 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Кастомные декали паранои (https://hlfx.ru/forum/showthread.php?threadid=2010)
Кастомные декали паранои
Собственно, перерыл весь клиент, ничего стояшего так и ненашёл. Так всё таки почему эти декали не рисуються на ентитях?
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
Ух я эту проблему давно разжевывал.. и даже обьяснял.
в коде не предусмотрена работа этих декалей с энтитями. Лучше спроси у Buzer'a. Я уже особо не помню код как там все реализовано, хотя тчо то пытался сделать)
Собственно вот ещё такая проблемка нарисовалась, в общем-то решил зделать чтобы в зависимости от поверхности рисовались разные декали, что получилось можно увидеть в аттаче, такой баг есть на всех текстурах где используються не деф. декали(в нашем случае это те которые мааленькие точечки такие), если это стена то сверху на паре юнитах будет другая декаль, если пол то по обоим сторонам наблюдаеться таже фигня.
Вот сам код проверки текстуры :
1 | entity = gEngfuncs.pEventAPI->EV_IndexFromTrace( pTrace ); |
2 |
3 | // FIXME check if playtexture sounds movevar is set |
4 | // |
5 |
6 | chTextureType = 0; |
7 |
8 | // Player |
9 | if ( entity >= 1 && entity <= gEngfuncs.GetMaxClients() ) |
10 | { |
11 | // hit body |
12 | chTextureType = CHAR_TEX_FLESH; |
13 | } |
14 | else if ( entity == 0 ) |
15 | { |
16 | // get texture from entity or world (world is ent(0)) |
17 | pTextureName = (char *)gEngfuncs.pEventAPI->EV_TraceTexture( pTrace->ent, vecSrc, vecEnd ); |
18 |
19 | if ( pTextureName ) |
20 | { |
21 | strcpy( texname, pTextureName ); |
22 | pTextureName = texname; |
23 |
24 | // strip leading '-0' or '+0~' or '{' or '!' |
25 | if (*pTextureName == '-' || *pTextureName == '+') |
26 | { |
27 | pTextureName += 2; |
28 | } |
29 |
30 | if (*pTextureName == '{' || *pTextureName == '!' || *pTextureName == '~' || *pTextureName == ' ') |
31 | { |
32 | pTextureName++; |
33 | } |
34 |
35 | // '}}' |
36 | strcpy( szbuffer, pTextureName ); |
37 | szbuffer[ CBTEXTURENAMEMAX - 1 ] = 0; |
38 |
39 | // get texture type |
40 | chTextureType = PM_FindTextureType( szbuffer ); |
41 | } |
42 | } |
43 |
44 | pe = gEngfuncs.pEventAPI->EV_GetPhysent( pTrace->ent ); |
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK а ты, наблюдательный
Всего через три года заметил!
Декали надо крепить мовевитчем на клиенте.
А насчет скрина - не понял в чем проблема.
Кастомные декали строго одного типа - только на стеклах, да и то хаком.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ToMMuK не рационально ты сделал=/ смотри код который я писал еще года два назад в неофициальном патче жеки... там такого уг нету =D
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
http://www.sendspace.com/file/v7enow вот тут похоже.
Спасибо, но всё равно не помогает сама параноя видит другую текстуру.
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
странно попробуй в мэппинге другие приемы
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK декали - клиентский эффект
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK так мож у тебя конкретно с определением материалов - лажа? Или оно все декали подряд ставит на какой-то материал?
Признавайся что ты там натворил.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша не у него там стандартный баг халфы, когда рядом два браша с разными материалами, и бывает когда стреляешь по одному и другому, раздается звук противолежащего=) как-то так. ну а поскольку расстановку декалей по своим материалам он устроил средствами стандартными, то получается что и баг переносится.
PoD-Stas так оно и в параное есть?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ага, просто материал определяеться как у рядом стоящего браша в общем нужно от этого как-то избавляться
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
>>ToMMuK так мож у тебя конкретно с определением материалов - лажа? Или оно все декали подряд ставит на какой-то материал?
Признавайся что ты там натворил.
>>Дядя Миша ага, просто материал определяеться как у рядом стоящего браша в общем нужно от этого как-то избавляться
ToMMuK сделай определение типа материалов на клиенте и не парься. Сразу куча халфовских багов пропадёт, в частности "неопределение вообще" типа текстуры при компиляции в Release.
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша может быть, народ верит, что на клиенте другие браши и другие функции трейсов?
__________________
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK ну это все очень абстрактно.
А ты не мог бы картинку приложить с пояснениями?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK теперь, плиз, сделай картинку с пояснением, что не так на этой картинке.
__________________
Вот оно готово может проблема в том что он передаёт неправильный vecSrc?
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK ну я тебе на это что могу сказать.
1. у тебя там не просто соседние стенки, а УГОЛ - а это совершенно другое дело.
2. какую конкретно функцию ты юзаешь для определения материала?
TraceTexture или TraceLine ?
3. на клиенте траса принимает в качестве второго параметра направление, а не конечную точку. Бузер их вечно путал (вот и в дождике Бузера накосячил). Может быть здесь - тожы самое?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1. Рамка между дверью и стеной - энтитя, их мы пропускаем, т.к нерисуем на них декали )
2. TraceTexture
3. Что есть направление?
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK скин сюда код трассы декалей.
Только я тебя очень прошу - в аттаче, не выкладывай в посте.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот тута всё что надо
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
ToMMuK там у трассы джиттер примерно в пять юнитов получается.
А декали ставяться через раз, может в этом все дело?
Чему равны flSpreadX, flSpreadY ? Попробуй их занулить для теста.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
flSpreadX = 0.00
flSpreadY = 0.01, чаще 0.00, ну или -0.01
Даже если их обнулять, всё равно тот же эффект
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
Извиняюсь за поднятие старой темы, просто мне тоже интересно из-за чего так путает декали - я в принципи кое-какую закономерность нашёл
Вот
Ну вот ты сам и ответил на свой вопрос - звучит звук попадания в дерево и там же выбирается "деревянная декаль".
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я имел в виду при каких условиях - как я понимаю, пуля ''трейслайн'' пролетает мимо ящика и попадает куда надо, а вот ''TraceTexture'' в момент полёта таки задевает первую попавшуюся текстуру (этот самый ящик), определяет её, и рисует в конечной точке трейслайна декаль, соответствующую этой текстуре - я правильно мыслю?
Я без понятия как конкретно этот механизм устроен, но скажу, что TRACE_TEXTURE работает со вполне конкретной энтитью. То есть ей нельзя просто пустить трассу, чтобы она нашла первую энтить на пути.
Нет, ей надо указать именно ту энтить, в которую упёрлась твоя трасса от выстрела. И вот именно её она будет трейсить. Такие дела.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Может её можно заменить на трейслайн - только я не знаю как с помощью него устроить проверку.
Нет, тут не всё так просто. Тут надо разбираться как следует.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В ev_hldm есть функция определения звука удара пуль об определённую поверхность - EV_HLDM_PlayTextureSound, от туда же рисуестся вот такой эффект (обычный SmokePuff)
if ( pe && pe->solid == SOLID_BSP )
{
CObject *pObj = new CSmokePuff( ptr->endpos, ptr->plane.normal, 0.8, 0.2, spd_min, spd_max, 10, 20, spd_side, 0.4, 0.27, 0.14 );
g_objmanager.AddObject(pObj);
} - сам эффект записан в triapiobjects.cpp. Я хотел там сделать свой (искры для металла), но как его правильно написать на клиенте я не знаю - просто чтоб спрайт появлялся и исчезал. Подскажите пожалуйста, как это можно сделать?
Сделал на сервере черес мессагу, думал в combat.cpp в конце функции FireBulletsPlayer поставить, только как рисовать его в месте попадания пули не знаю. Если так - UTIL_Richo( pev->origin ) - то не подходит, хотя и работает. Вот мессага
void UTIL_Richo( const Vector &position )
{
MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, position );
WRITE_BYTE( TE_SPRITE );
WRITE_COORD( position.x );
WRITE_COORD( position.y );
WRITE_COORD( position.z );
WRITE_SHORT( g_sModelIndexRicho );
WRITE_BYTE( 1 );
WRITE_BYTE( 100 );
MESSAGE_END();
} - может кто знает, какие параметры нужно поставить?
Ну искр не будет при таком подходе-то.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну я имел в виду не SPARKS а просто спрайт искры, просто чтоб появлялся и исчезал. Вот так - UTIL_Richo( pev->origin ) - работает, но рисует спрайт не в точке попадания пули, а прямо под игроком.
Так надо не pev->origin, а trace_entity->pev->origin хотя бы, но тоже фигня, будет рисоваться только на энтитях и в точке оригина. Надо вектор трейса совать.
__________________
-Brain is dead-
какие координаты задал - там и будет рисовать. Или ты до сих пор этого не понял?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша так pev->origin это и есть ноги игрока. Или это не мне?
__________________
-Brain is dead-
KiQ когда я отвечал - твоего поста еще не было.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Как это можно сделать?
Посмотрел в туторе Ku2zoff-а, и сделал на клиенте вот так
gEngfuncs.pEfxAPI->R_SparkShower( ptr->endpos );
gEngfuncs.pEfxAPI->R_MuzzleFlash( ptr->endpos, 15 ); - неплохо смотрится
только вспомнил, кстати про трейсы, если бегать по краю браша звучащей текстуры (например метал) то будет звук шагов по земле, неправильный трэйс вообщем.
хорошо проверяется на карте de_nuke со стороны терров, залезаем на ангар и бегаем по краю.
marikcool линия трейса точечная же. Пусть у тебя хоть два браша звучащей текстуры, а между ними щель в пару юнитов, трейсить будет именно щель, то есть по центру игрока. Можно конечно приделать аттачменты к ногам модели и трейсить для каждой ноги отдельно, но геморно же.
Ku2zoff а эта линия идет от центра игрока вниз до его ног? Т.е. обрывается прямо в месте где его игрок (его ноги как бы) стыкуется с землей?
в первохалфе принципиально отсутствует возможность трейсить текстуры ббоксом. Из-за того же клипноды никак не связаны с поверхностями.
А по обычному дереву можно трейсить только точечный хулл.
Ну да никто не мешает сделать несколько трейсов
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
>приделать аттачменты к ногам модели и трейсить для каждой ноги отдельно
и декалсы следов рисовать как в mech warrior. было бы круто.
__________________
http://www.moddb.com/mods/monorail-quest
А ничего что анимация игрока не проигрывается на сервере?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
У нас народ при слове "клиент" привычно впадает в ступор )
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Давно хотел спросить - а можно заставить декали рисоваться на брекаблях - они же всё равно не двигаются?
Нет - не будут - если только в простое стекло - не брекабл
http://hlfx.ru/forum/showthread.php?s=&threadid=2534
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
У меня там так и написано
Прошу прощения за поднятие старой темы. Случайно наткнулся на неё в поиске. Как я понял, проблема с кривым трейсом текстуры не была решена. Я недавно столкнулся с такой же проблемой, когда решил сделать разные декали для материалов, и когда положил на карту длинную деревянную доску с повернутой текстурой на ~30 градусов, то обнаружил тот же баг. Я так предполагаю, что TraceTexture упирается не в браш, а в текстуру. А текстура как бы "вылазит" за пределы браша, если, например, масштаб её увеличен, или она повёрнута. Но это лишь предположение, я понятия не имею, как работает эта функция. Короче, я исправил этот баг маленьким хаком. Приведу просто фрагмент кода. Делал на сервере.
1 | if (pEntity && pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE) |
2 | // hit body |
3 | chTextureType = CHAR_TEX_FLESH; |
4 | else |
5 | { |
6 |
7 | // Sigurth: вся соль тут. Вместо vecSrc используем ptr->vecEndPos, всё остальное оригинальный код |
8 | //vecSrc.CopyToArray(rgfl1); |
9 | (ptr->vecEndPos).CopyToArray(rgfl1); |
10 | vecEnd.CopyToArray(rgfl2); |
11 |
12 | // get texture from entity or world (world is ent(0)) |
13 | if (pEntity) |
14 | pTextureName = TRACE_TEXTURE( ENT(pEntity->pev), rgfl1, rgfl2 ); |
15 | else |
16 | pTextureName = TRACE_TEXTURE( ENT(0), rgfl1, rgfl2 ); |
Во второй параное материалы круче
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша а билд будет?
__________________
-Brain is dead-
Временная зона GMT. Текущее время 11:12. | Показать все 70 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024