HLFX.Ru Forum Страницы (2): « 1 [2]
Показать все 4062 сообщений этой темы на одной странице

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)


Отправлено Ku2zoff сегодня в 16:15:

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


Отправлено JPEG сегодня в 17:06:

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

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

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


Отправлено Ku2zoff сегодня в 17:56:

Кстати говоря, можно вообще не использовать лазерную точку как источник координат. Достаточно сделать трейс из глаз игрока в направлении прицела. Прямо на клиенте. Будет конечная точка, которая упирается в мир или энтитю. А дальше играться с 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
}

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


Временная зона GMT. Текущее время 20:03. Страницы (2): « 1 [2]
Показать все 4062 сообщений этой темы на одной странице

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