HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Страницы (271): « Первая ... « 267 268 269 270 [271]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 695

Рейтинг



Хочу сделать, чтобы трейн поворачивался в сторону энтити указанной в строке 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);

Но трейн поворачивается в сторону патч-корнеров. В чём ошибка?

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

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

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

Рейтинг



Да он всегда вертелся в сторону патчкорнеров. Чёт не припоминаю я такой настройки у трейна. Это ты наверное с 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'

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

Старое сообщение 13-10-2025 15:56
-
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 695

Рейтинг



Цитата:
Дядя Миша писал:
Да он всегда вертелся в сторону патчкорнеров. Чёт не припоминаю я такой настройки у трейна. Это ты наверное с 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

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

Старое сообщение 14-10-2025 06:50
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
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'

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

Старое сообщение 14-10-2025 08:00
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
JPEG писал:
у меня по концепции вирусы вайрфреймовые, т.е. будет одна локация, база вирусов, целиком выглядящая так. Ну и на уровнях будут небольшие вайрфреймовые куски, а-ля поражённые вирусом.
А всё остальное будет выглядеть с закосом под рейтрейсинговую графику 90-х и нулевых, как в 3д-обоях. Для этого через блендер просто запекаю всё в модели

Главное - единообразие, чтобы всё выглядело цельно. И по максимуму использовать икспишные фишки. Например, сделать целую локацию по игре пинбол. Олдфагам зайдёт. Я бы ещё виртуального помощника добавил в качестве комментатора или квестодателя. Какие они были? Скрепка, дед в колпаке и псина жёлтая, кажется.

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

Старое сообщение 14-10-2025 11:20
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 695

Рейтинг



Цитата:
Ku2zoff писал:
Главное - единообразие, чтобы всё выглядело цельно. И по максимуму использовать икспишные фишки. Например, сделать целую локацию по игре пинбол. Олдфагам зайдёт. Я бы ещё виртуального помощника добавил в качестве комментатора или квестодателя. Какие они были? Скрепка, дед в колпаке и псина жёлтая, кажется.


собакен) https://youtu.be/Jwo3YAymfFc
пинбол да, будет, я его задумывал как что-то типа города, но с текстурами того пинбола, и там будет шарик-пушабля с физикой баунса, чтобы отскакивал. Его можно пинать и таким образом громить нпс

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

Старое сообщение 14-10-2025 12:31
- За что?
ZGreen
Роугнесс

Дата регистрации: Sep 2007
Проживает: Красноярск
Сообщений: 433
Возраст: 38

Рейтинг



Цитата:
JPEG писал:
И по максимуму использовать икспишные фишки. Например, сделать целую локацию по игре пинбол.

Так-то он для 95й винды появился.

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

Старое сообщение 14-10-2025 12:53
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 695

Рейтинг



Цитата:
Дядя Миша писал:
Ну дык добавляй, а от нас-то что требуется?


так сделал, заработало:

m_pLookEnt = CBaseEntity::Instance( FIND_ENTITY_BY_TARGETNAME ( NULL, STRING( m_lookAt ) ) );
Vector delta = m_pLookEnt->pev->origin - pev->origin;

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

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

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

Рейтинг



JPEG

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение вчера 07:57
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
ZGreen писал:
Так-то он для 95й винды появился.

Я 95-й виндой вообще не пользовался, довелось только 98-й немного. Помню, что-то такое, что пинбол в ХР по наследству перешёл из предыдущих версий. Это же не отменяет того факта, что он там был, и многие с ним познакомились именно в XP. Вообще, совместимость с 16-битными приложухами в 32-битной XP вроде ещё была, поэтому многое из Windows 9x могло запускаться.

Добавлено вчера в 23:15:

JPEG вот, глянь. Накалякал за 20 минут на коленке лагающий спрайт. Остаётся только сгладить движения и посчитать расстояние до игрока, чтобы играться с масштабом.
C++ Source Code:
1
gmsgWinCursor = REG_USER_MSG("WinCursor", 2);
2
 
3
extern int gmsgWinCursor;
4
 
5
void CRpg::UpdateSpot( void )
6
{
7
 
8
#ifndef CLIENT_DLL
9
  if (m_fSpotActive)
10
  {
11
    if (!m_pSpot)
12
    {
13
      m_pSpot = CLaserSpot::CreateSpot();
14
 
15
      MESSAGE_BEGIN(MSG_ONE, gmsgWinCursor, NULL, m_pPlayer->pev);
16
      WRITE_SHORT(m_pSpot->entindex());
17
      MESSAGE_END();
18
 
19
      ALERT(at_console, "Creating spot, index: %i\n", m_pSpot->entindex());
20
    }
21
 
22
    UTIL_MakeVectors( m_pPlayer->pev->v_angle );
23
    Vector vecSrc = m_pPlayer->GetGunPosition( );;
24
    Vector vecAiming = gpGlobals->v_forward;
25
 
26
    TraceResult tr;
27
    UTIL_TraceLine ( vecSrc, vecSrc + vecAiming * 8192, dont_ignore_monsters, ENT(m_pPlayer->pev), &tr );
28
 
29
    UTIL_SetOrigin( m_pSpot->pev, tr.vecEndPos );
30
  }
31
  else
32
  {
33
    MESSAGE_BEGIN(MSG_ONE, gmsgWinCursor, NULL, m_pPlayer->pev);
34
    WRITE_SHORT(-1);
35
    MESSAGE_END();
36
  }
37
#endif
38
 
39
}
40
 
41
int g_iWinCursor;
42
 
43
int __MsgFunc_WinCursor(const char* pszName, int iSize, void* pbuf)
44
{
45
  BEGIN_READ(pbuf, iSize);
46
  g_iWinCursor = READ_SHORT();
47
  return 1;
48
}
49
 
50
void HUD_DrawCursor(void)
51
{
52
  if (!(gHUD.m_iWeaponBits & (1 << (WEAPON_SUIT)))) return;
53
  if (gHUD.m_iHideHUDDisplay & HIDEHUD_ALL) return;
54
  if (g_iUser1) return;
55
  if (g_iWinCursor <= 0) return;
56
 
57
  cl_entity_t* ent = gEngfuncs.GetEntityByIndex(g_iWinCursor);
58
 
59
  if (!ent) return;
60
 
61
  vec3_t world, screen;
62
 
63
  VectorCopy(ent->origin, world);
64
 
65
  vec3_t origin_diff;
66
  static vec3_t origin_last;
67
 
68
  origin_diff = world - origin_last;
69
  origin_last = origin_last + origin_diff * (50.0 * gHUD.m_flTimeDelta);
70
  origin_last.Normalize();
71
 
72
  gEngfuncs.pTriAPI->WorldToScreen(world - origin_diff, screen);
73
 
74
  screen[0] = XPROJECT(screen[0]);
75
  screen[1] = YPROJECT(screen[1]);
76
 
77
  int r, g, b, a;
78
  a = MIN_ALPHA;
79
 
80
  UnpackRGB(r, g, b, RGB_YELLOWISH);
81
  ScaleColors(r, g, b, a);
82
 
83
  SPR_Set(gHUD.GetSprite(gHUD.GetSpriteIndex("cross")), r, g, b);
84
  SPR_DrawAdditive(0, screen[0], screen[1], &gHUD.GetSpriteRect(gHUD.GetSpriteIndex("cross")));
85
 
86
  gEngfuncs.Con_DPrintf("Client Cursor, index is %i\n", g_iWinCursor);
87
}

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

Старое сообщение вчера 16:15
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 695

Рейтинг



Цитата:
Ku2zoff писал:
вот, глянь. Накалякал за 20 минут на коленке лагающий спрайт. Остаётся только сгладить движения и посчитать расстояние до игрока, чтобы играться с масштабом.

спасибо, скоро попробую. До этого пробовал из ракеты его сделать, но это был полный провал)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

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

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

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

Рейтинг



Кстати говоря, можно вообще не использовать лазерную точку как источник координат. Достаточно сделать трейс из глаз игрока в направлении прицела. Прямо на клиенте. Будет конечная точка, которая упирается в мир или энтитю. А дальше играться с diff, last, и расстоянием от игрока до этой точки. Из плюсов - рисовать спрайт прямо на клиенте через Triapi с нужными рендермодами, ничего не будет проваливаться в геометрию, можно добавить анимации, например смену со стрелки на руку, или текстовый курсор, или добавление песочных часов. В общем, как и есть в винде.

Добавлено сегодня в 00:56:

C++ Source Code:
1
#include "pmtrace.h"
2
#include "pm_defs.h"
3
 
4
extern vec3_t v_origin, v_angles;
5
 
6
void HUD_DrawCursor(void)
7
{
8
  if (!(gHUD.m_iWeaponBits & (1 << (WEAPON_SUIT)))) return;
9
  if (gHUD.m_iHideHUDDisplay & HIDEHUD_ALL) return;
10
  if (g_iUser1) return;
11
 
12
  vec3_t start, end, forward, world, screen;
13
 
14
  VectorCopy(v_origin, start);
15
  AngleVectors(v_angles, forward, NULL, NULL);
16
  VectorMA(start, 8192, forward, end);
17
 
18
  pmtrace_t *trace = gEngfuncs.PM_TraceLine(start, end, PM_TRACELINE_ANYVISIBLE, 2, -1);
19
  VectorCopy(trace->endpos, world);
20
 
21
  vec3_t origin_diff;
22
  static vec3_t origin_last;
23
 
24
  origin_diff = world - origin_last;
25
  origin_last = origin_last + origin_diff * (25.0 * gHUD.m_flTimeDelta);
26
  origin_last.Normalize();
27
 
28
  gEngfuncs.pTriAPI->WorldToScreen(world - origin_diff, screen);
29
 
30
  screen[0] = XPROJECT(screen[0]);
31
  screen[1] = YPROJECT(screen[1]);
32
 
33
  gEngfuncs.pTriAPI->RenderMode(kRenderTransTexture);
34
  gEngfuncs.pTriAPI->CullFace(TRI_NONE);
35
  gEngfuncs.pTriAPI->Color4f(1.0, 1.0, 1.0, 1.0);
36
 
37
  gEngfuncs.pTriAPI->SpriteTexture((struct model_s*)gEngfuncs.GetSpritePointer(SPR_Load("sprites/dot.spr")), 0);
38
 
39
  gEngfuncs.pTriAPI->Begin(TRI_QUADS);
40
  gEngfuncs.pTriAPI->TexCoord2f(0, 0);
41
  gEngfuncs.pTriAPI->Vertex3f(screen[0], screen[1], 0);
42
 
43
  gEngfuncs.pTriAPI->TexCoord2f(1, 0);
44
  gEngfuncs.pTriAPI->Vertex3f(screen[0] + XRES(5), screen[1], 0);
45
 
46
  gEngfuncs.pTriAPI->TexCoord2f(1, 1);
47
  gEngfuncs.pTriAPI->Vertex3f(screen[0] + XRES(5), screen[1] + YRES(5), 0);
48
 
49
  gEngfuncs.pTriAPI->TexCoord2f(0, 1);
50
  gEngfuncs.pTriAPI->Vertex3f(screen[0], screen[1] + YRES(5), 0);
51
  gEngfuncs.pTriAPI->End();
52
}

Чисто клиентское решение.

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

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



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


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

Временная зона GMT. Текущее время 08:39. Новая тема    Ответить
Страницы (271): « Первая ... « 267 268 269 270 [271]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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