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)
Отправлено JPEG 12-10-2025 в 22:30:
Хочу сделать, чтобы трейн поворачивался в сторону энтити указанной в строке m_lookat
Попробовал так, в void CFuncTrain :: Next( void )
CBaseEntity *pTa = NULL;
edict_t *pentTarget = FIND_ENTITY_BY_TARGETNAME ( NULL, STRING(m_lookat));
pTa = Instance( pentTarget );
pev->angles.y = UTIL_VecToYaw(pTa->pev->origin - pev->origin);
Но трейн поворачивается в сторону патч-корнеров. В чём ошибка?
__________________
https://www.moddb.com/mods/half-life-system-error
https://vk.com/aaatrigger
Отправлено Дядя Миша 13-10-2025 в 15:56:
Да он всегда вертелся в сторону патчкорнеров. Чёт не припоминаю я такой настройки у трейна. Это ты наверное с trigger_camera перепутал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено JPEG 14-10-2025 в 06:50:
Цитата:
Дядя Миша писал:
Да он всегда вертелся в сторону патчкорнеров. Чёт не припоминаю я такой настройки у трейна. Это ты наверное с trigger_camera перепутал.
ну вот я и пытаюсь её добавить. Но правда обычный трейн не крутится в сторону патч-корнеров. Поэтому сейчас пробую с тректрейном, в нём есть готовый код кручения
В void CFuncTrackTrain :: Next( void )
Vector delta = nextFront - pev->origin;
Vector angles = UTIL_VecToAngles( delta );
Он поворачивается в сторону nextFront (патч трек). Если заменить, к примеру, на Vector(0,0,0), то будет крутится вокруг центра карты. Но, если я перед этим добавлю
CBaseEntity *pointStart = NULL;
edict_t *pStart = FIND_ENTITY_BY_TARGETNAME ( NULL, STRING(m_lookat));
pointStart = Instance( pStart );
где m_lookat - кастомная строка таргета (ведь обычная занята ссылкой на патч трек) и подставлю pointStart вместо nextFront - игра вылетает. Т.е. он как будто не находит энтитю, на которую указывает m_lookat__________________
https://www.moddb.com/mods/half-life-system-error
https://vk.com/aaatrigger
Отправлено Дядя Миша 14-10-2025 в 08:00:
Цитата:
JPEG писал:
ну вот я и пытаюсь её добавить
Ну дык добавляй, а от нас-то что требуется?
Цитата:
JPEG писал:
Т.е. он как будто не находит энтитю, на которую указывает m_lookat
Делай проверку на NULL. Может и не находит.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 14-10-2025 в 11:20:
Цитата:
JPEG писал:
у меня по концепции вирусы вайрфреймовые, т.е. будет одна локация, база вирусов, целиком выглядящая так. Ну и на уровнях будут небольшие вайрфреймовые куски, а-ля поражённые вирусом.
А всё остальное будет выглядеть с закосом под рейтрейсинговую графику 90-х и нулевых, как в 3д-обоях. Для этого через блендер просто запекаю всё в модели
Главное - единообразие, чтобы всё выглядело цельно. И по максимуму использовать икспишные фишки. Например, сделать целую локацию по игре пинбол. Олдфагам зайдёт. Я бы ещё виртуального помощника добавил в качестве комментатора или квестодателя. Какие они были? Скрепка, дед в колпаке и псина жёлтая, кажется.
Отправлено JPEG 14-10-2025 в 12:31:
Цитата:
Ku2zoff писал:
Главное - единообразие, чтобы всё выглядело цельно. И по максимуму использовать икспишные фишки. Например, сделать целую локацию по игре пинбол. Олдфагам зайдёт. Я бы ещё виртуального помощника добавил в качестве комментатора или квестодателя. Какие они были? Скрепка, дед в колпаке и псина жёлтая, кажется.
собакен) https://youtu.be/Jwo3YAymfFc
пинбол да, будет, я его задумывал как что-то типа города, но с текстурами того пинбола, и там будет шарик-пушабля с физикой баунса, чтобы отскакивал. Его можно пинать и таким образом громить нпс__________________
https://www.moddb.com/mods/half-life-system-error
https://vk.com/aaatrigger
Отправлено ZGreen 14-10-2025 в 12:53:
Цитата:
JPEG писал:
И по максимуму использовать икспишные фишки. Например, сделать целую локацию по игре пинбол.
Так-то он для 95й винды появился.
Отправлено JPEG 15-10-2025 в 07:09:
Цитата:
Дядя Миша писал:
Ну дык добавляй, а от нас-то что требуется?
так сделал, заработало:
m_pLookEnt = CBaseEntity::Instance( FIND_ENTITY_BY_TARGETNAME ( NULL, STRING( m_lookAt ) ) );
Vector delta = m_pLookEnt->pev->origin - pev->origin;__________________
https://www.moddb.com/mods/half-life-system-error
https://vk.com/aaatrigger
Отправлено Дядя Миша 15-10-2025 в 07:57:
JPEG 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 15-10-2025 в 16:15:
Цитата:
ZGreen писал:
Так-то он для 95й винды появился.
Я 95-й виндой вообще не пользовался, довелось только 98-й немного. Помню, что-то такое, что пинбол в ХР по наследству перешёл из предыдущих версий. Это же не отменяет того факта, что он там был, и многие с ним познакомились именно в XP. Вообще, совместимость с 16-битными приложухами в 32-битной XP вроде ещё была, поэтому многое из Windows 9x могло запускаться.
Добавлено 15-10-2025 в 23:15:
JPEG вот, глянь. Накалякал за 20 минут на коленке лагающий спрайт. Остаётся только сгладить движения и посчитать расстояние до игрока, чтобы играться с масштабом.
C++ Source Code:
1 | gmsgWinCursor = REG_USER_MSG("WinCursor", 2); |
3 | extern int gmsgWinCursor; |
5 | void CRpg::UpdateSpot( void ) |
13 | m_pSpot = CLaserSpot::CreateSpot(); |
15 | MESSAGE_BEGIN(MSG_ONE, gmsgWinCursor, NULL, m_pPlayer->pev); |
16 | WRITE_SHORT(m_pSpot->entindex()); |
19 | ALERT(at_console, "Creating spot, index: %i\n", m_pSpot->entindex()); |
22 | UTIL_MakeVectors( m_pPlayer->pev->v_angle ); |
23 | Vector vecSrc = m_pPlayer->GetGunPosition( );; |
24 | Vector vecAiming = gpGlobals->v_forward; |
27 | UTIL_TraceLine ( vecSrc, vecSrc + vecAiming * 8192, dont_ignore_monsters, ENT(m_pPlayer->pev), &tr ); |
29 | UTIL_SetOrigin( m_pSpot->pev, tr.vecEndPos ); |
33 | MESSAGE_BEGIN(MSG_ONE, gmsgWinCursor, NULL, m_pPlayer->pev); |
43 | int __MsgFunc_WinCursor(const char* pszName, int iSize, void* pbuf) |
45 | BEGIN_READ(pbuf, iSize); |
46 | g_iWinCursor = READ_SHORT(); |
50 | void HUD_DrawCursor(void) |
52 | if (!(gHUD.m_iWeaponBits & (1 << (WEAPON_SUIT)))) return; |
53 | if (gHUD.m_iHideHUDDisplay & HIDEHUD_ALL) return; |
55 | if (g_iWinCursor <= 0) return; |
57 | cl_entity_t* ent = gEngfuncs.GetEntityByIndex(g_iWinCursor); |
63 | VectorCopy(ent->origin, world); |
66 | static vec3_t origin_last; |
68 | origin_diff = world - origin_last; |
69 | origin_last = origin_last + origin_diff * (50.0 * gHUD.m_flTimeDelta); |
70 | origin_last.Normalize(); |
72 | gEngfuncs.pTriAPI->WorldToScreen(world - origin_diff, screen); |
74 | screen[0] = XPROJECT(screen[0]); |
75 | screen[1] = YPROJECT(screen[1]); |
80 | UnpackRGB(r, g, b, RGB_YELLOWISH); |
81 | ScaleColors(r, g, b, a); |
83 | SPR_Set(gHUD.GetSprite(gHUD.GetSpriteIndex("cross")), r, g, b); |
84 | SPR_DrawAdditive(0, screen[0], screen[1], &gHUD.GetSpriteRect(gHUD.GetSpriteIndex("cross"))); |
86 | gEngfuncs.Con_DPrintf("Client Cursor, index is %i\n", g_iWinCursor); |
Отправлено JPEG 15-10-2025 в 17:06:
Цитата:
Ku2zoff писал:
вот, глянь. Накалякал за 20 минут на коленке лагающий спрайт. Остаётся только сгладить движения и посчитать расстояние до игрока, чтобы играться с масштабом.
спасибо, скоро попробую. До этого пробовал из ракеты его сделать, но это был полный провал)__________________
https://www.moddb.com/mods/half-life-system-error
https://vk.com/aaatrigger
Отправлено Ku2zoff 15-10-2025 в 17:56:
Кстати говоря, можно вообще не использовать лазерную точку как источник координат. Достаточно сделать трейс из глаз игрока в направлении прицела. Прямо на клиенте. Будет конечная точка, которая упирается в мир или энтитю. А дальше играться с diff, last, и расстоянием от игрока до этой точки. Из плюсов - рисовать спрайт прямо на клиенте через Triapi с нужными рендермодами, ничего не будет проваливаться в геометрию, можно добавить анимации, например смену со стрелки на руку, или текстовый курсор, или добавление песочных часов. В общем, как и есть в винде.
Добавлено 16-10-2025 в 00:56:
C++ Source Code:
4 | extern vec3_t v_origin, v_angles; |
6 | void HUD_DrawCursor(void) |
8 | if (!(gHUD.m_iWeaponBits & (1 << (WEAPON_SUIT)))) return; |
9 | if (gHUD.m_iHideHUDDisplay & HIDEHUD_ALL) return; |
12 | vec3_t start, end, forward, world, screen; |
14 | VectorCopy(v_origin, start); |
15 | AngleVectors(v_angles, forward, NULL, NULL); |
16 | VectorMA(start, 8192, forward, end); |
18 | pmtrace_t *trace = gEngfuncs.PM_TraceLine(start, end, PM_TRACELINE_ANYVISIBLE, 2, -1); |
19 | VectorCopy(trace->endpos, world); |
22 | static vec3_t origin_last; |
24 | origin_diff = world - origin_last; |
25 | origin_last = origin_last + origin_diff * (25.0 * gHUD.m_flTimeDelta); |
26 | origin_last.Normalize(); |
28 | gEngfuncs.pTriAPI->WorldToScreen(world - origin_diff, screen); |
30 | screen[0] = XPROJECT(screen[0]); |
31 | screen[1] = YPROJECT(screen[1]); |
33 | gEngfuncs.pTriAPI->RenderMode(kRenderTransTexture); |
34 | gEngfuncs.pTriAPI->CullFace(TRI_NONE); |
35 | gEngfuncs.pTriAPI->Color4f(1.0, 1.0, 1.0, 1.0); |
37 | gEngfuncs.pTriAPI->SpriteTexture((struct model_s*)gEngfuncs.GetSpritePointer(SPR_Load("sprites/dot.spr")), 0); |
39 | gEngfuncs.pTriAPI->Begin(TRI_QUADS); |
40 | gEngfuncs.pTriAPI->TexCoord2f(0, 0); |
41 | gEngfuncs.pTriAPI->Vertex3f(screen[0], screen[1], 0); |
43 | gEngfuncs.pTriAPI->TexCoord2f(1, 0); |
44 | gEngfuncs.pTriAPI->Vertex3f(screen[0] + XRES(5), screen[1], 0); |
46 | gEngfuncs.pTriAPI->TexCoord2f(1, 1); |
47 | gEngfuncs.pTriAPI->Vertex3f(screen[0] + XRES(5), screen[1] + YRES(5), 0); |
49 | gEngfuncs.pTriAPI->TexCoord2f(0, 1); |
50 | gEngfuncs.pTriAPI->Vertex3f(screen[0], screen[1] + YRES(5), 0); |
51 | gEngfuncs.pTriAPI->End(); |
Чисто клиентское решение.
Отправлено JPEG 21-10-2025 в 15:58:
Цитата:
Ku2zoff писал:
[B]Кстати говоря, можно вообще не использовать лазерную точку как источник координат. Достаточно сделать трейс из глаз игрока в направлении прицела. Прямо на клиенте. Будет конечная точка, которая упирается в мир или энтитю. А дальше играться с diff, last, и расстоянием от игрока до этой точки. Из плюсов - рисовать спрайт прямо на клиенте через Triapi с нужными рендермодами, ничего не будет проваливаться в геометрию, можно добавить анимации, например смену со стрелки на руку, или текстовый курсор, или добавление песочных часов. В общем, как и есть в винде.
Супер, классный эффект, мне нравится. Лучше тогда трейсить с PM_TRACELINE_PHYSENTSONLY, иначе оно врезается в (видимо) ббоксы у сайклеров. Я немного наговнокодил с соотношением сторон... Ну, по крайней мере работает))
C++ Source Code:
3 | vec3_t start, end, forward, world, screen; |
5 | VectorCopy(v_origin, start); |
6 | AngleVectors(v_angles, forward, NULL, NULL); |
7 | VectorMA(start, 512, forward, end); //дальность трейса |
9 | pmtrace_t *trace = gEngfuncs.PM_TraceLine(start, end, PM_TRACELINE_PHYSENTSONLY, 2, -1); |
10 | VectorCopy(trace->endpos, world); |
13 | float yfactor = (float)ScreenWidth / (float)ScreenHeight; |
14 | if (yfactor < 1.34) //если 4:3 (1,33...) |
16 | else //если 16:9 (1,77...) |
17 | screenaspect = 4.0f/3.0f; |
19 | float cursorscale = 8192 / (trace->endpos - start).Length(); //начальный скейл спрайта делится на расстояние |
22 | static vec3_t origin_last; |
25 | origin_diff = world - origin_last; |
26 | origin_last = origin_last + origin_diff * (20.0 * gHUD.m_flTimeDelta); //чем меньше, тем курсор медленнее |
27 | origin_last.Normalize(); |
29 | gEngfuncs.pTriAPI->WorldToScreen(world - origin_diff, screen); |
30 | screen[0] = XPROJECT(screen[0]); |
31 | screen[1] = YPROJECT(screen[1]); |
33 | gEngfuncs.pTriAPI->RenderMode(kRenderTransTexture); |
34 | gEngfuncs.pTriAPI->CullFace(TRI_NONE); |
35 | gEngfuncs.pTriAPI->Color4f(1.0, 1.0, 1.0, 1.0); |
36 | gEngfuncs.pTriAPI->SpriteTexture((struct model_s*)gEngfuncs.GetSpritePointer(SPR_Load("sprites/laserdot.spr")), 0); |
37 | gEngfuncs.pTriAPI->Begin(TRI_QUADS); |
40 | gEngfuncs.pTriAPI->TexCoord2f(0, 0); |
41 | gEngfuncs.pTriAPI->Vertex3f(screen[0], screen[1], 0); //x y z |
43 | gEngfuncs.pTriAPI->TexCoord2f(0, 1); |
44 | gEngfuncs.pTriAPI->Vertex3f(screen[0], screen[1] + YRES(cursorscale * screenaspect), 0); |
46 | gEngfuncs.pTriAPI->TexCoord2f(1, 1); |
47 | gEngfuncs.pTriAPI->Vertex3f(screen[0] + XRES(cursorscale), screen[1] + YRES(cursorscale * screenaspect), 0); |
49 | gEngfuncs.pTriAPI->TexCoord2f(1, 0); |
50 | gEngfuncs.pTriAPI->Vertex3f(screen[0] + XRES(cursorscale), screen[1], 0); |
52 | gEngfuncs.pTriAPI->End(); |
__________________
https://www.moddb.com/mods/half-life-system-error
https://vk.com/aaatrigger
Отправлено Crystallize 03-02-2026 в 15:57:
Цитата:
XaeroX писал:
Ну вот опять - ты же это в шутку пишешь, не всерьёз? Какие ещё проигрыши? Ты же вроде к нам учиться приходишь, а не в интеллектуальные игры играть?
Смотри, тут либо я эгоист либо меня воспитали что моя ценность как человека нулевая и я машина для получения пятерок. То есть мне стыдно ложиться спать если я наделал ошибок, и я бы наверное и другим в наказание спать не давал. Когда в 2019 с меня ржали на Хабре по теме фоменковщины то у меня началось сердцебиение, одышка и шум в ушах. Когда в прошлом году у меня не получалось с непривычки хорошо закапать в глаза поутру, то у меня сразу опускались руки и накатывало ощущение беспомощности и бессмысленности. Что-то похожее бывает ещё когда отключают воду и приходится мыцца из тазика, что бы ты ни делал, такое впечатление что ты облажался. А оно должно всё пройти идеально чтобы получить самоутверждение от результата.
Для меня безусловное ощущение собственной значимости это достаточно новый концепт, и все ещё каждый неловкий момент, ну например фейспалм от ДМ, задним числом делает меня ужасным человеком, которому быдланы во дворе звиздюлями пытались донести этот факт, а он не слушал.
Цитата:
XaeroX писал:
Политические темы были всегда, даже во времена хлру. Справедливости ради, я в них участвовать не любил, т.к. считал это пустой тратой своего времени, мол, зачем спорить об очевидном? Но после 2014 меня слегка бомбануло, потому что непризнание очевидного начало постепенно приводить к трагическим последствиям.
Да очевидное это как любимая девушка или квантовый выбор: любое принятое решение задним числом выглядит единственно верным, а девушка самой красивой.
Другое дело что со временем ты стал выглядеть скорее ahead of the curve чем бухтящим дедом, потому что жизнь догнала тебя в этом плане. Наше поколение же во многом промыто идеологией раннего гугла о том что люди хорошие и конкуренция скорее вредна. Оно и понятно, это имело смысл в изобилии 00х. Поэтому твою позицию типа перестроечного обывателя трудно воспринять в лоб, нужно сначала провести некоторую терапию. А это больно, потому что вокруг тех эмоциональных обоснований во многом построена наша личность.
Цитата:
XaeroX писал:
Мастер, опять же, был ещё на хлру. Тогда он писал исключительно транслитом и косил под эмигранта. Я тогда был уверен, что Мастер живёт где-нибудь в Штатах. Каково же было моё изумление, когда я узнал, что он из Москвы? Но мы в итоге его таки отучили транслитом писать.
К моменту 2014 я плотно сидел на хлфх с середины 2008 за исключением полгода самоизоляции в конце 2010 и за эти 4 года я Мастера ни разу не видел, совсем, вообще, что очень странно. И характера такого обозленного ни у кого не было, все спокойно вежливо сидели общались. Большой неожиданностью для меня все это стало.
Цитата:
XaeroX писал:
Это как? Когда все товарищи в едином порыве - пятилетку в четыре года?
Ну да, когда рынок не насыщен то земли пахать всем хватает. Я вспоминаю насмешку над конференциями для разработчиков: зачем делиться опытом? Типа, отдавать нажитое потом и кровью забесплатно.
Цитата:
Дядя Миша писал:
а что за статьи?
Часть 1
https://hlfx.ru/forum/showthread.php?s=&threadid=4570
Часть 2
https://hlfx.ru/forum/showthread.php?s=&threadid=5130
Отправлено FiEctro 04-02-2026 в 05:55:
Цитата:
Crystallize писал:
Смотри, тут либо я эгоист либо меня воспитали что моя ценность как человека нулевая и я машина для получения пятерок. То есть мне стыдно ложиться спать если я наделал ошибок, и я бы наверное и другим в наказание спать не давал. Когда в 2019 с меня ржали на Хабре по теме фоменковщины то у меня началось сердцебиение, одышка и шум в ушах. Когда в прошлом году у меня не получалось с непривычки хорошо закапать в глаза поутру, то у меня сразу опускались руки и накатывало ощущение беспомощности и бессмысленности. Что-то похожее бывает ещё когда отключают воду и приходится мыцца из тазика, что бы ты ни делал, такое впечатление что ты облажался. А оно должно всё пройти идеально чтобы получить самоутверждение от результата.
Для меня безусловное ощущение собственной значимости это достаточно новый концепт, и все ещё каждый неловкий момент
Чел, это не нормально, не занимайся мазохизмом. Всем свойственно совершать ошибки, это норма. А вот бичевать себя за внешние факторы вообще клиника. Так ты очень скоро вгонишь себя в депрессию. И спи больше, потому что из-за отсутсвия сна твоя продуктивность падает в разы, также как если бы ты каждый день бухал, и в итоге ты себя загоняешь ещё сильнее, постоянный стресс.
Я сам был таким, но сейчас стараюсь не возвращаться к этим привычкам и спать больше. Лучше делать каждый день по чуть чуть, чем рвать себе жопу 2 дня, а потом ходить неделю как зомби с ненавистью к себе.
Цитата:
Crystallize писал:
ну например фейспалм от ДМ, задним числом делает меня ужасным человеком, которому быдланы во дворе звиздюлями пытались донести этот факт, а он не слушал.
Меня он вообще банит почти каждый день, и чего теперь мне спиться от горя?
Ты вообще его в живую видел? Может его не существует вовсе. Может это нейросеть? Почему мнение людей из интернета так тебя задевает?
Ты лучше научись у ДМ остаивать своё личное мнение и позицию.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!