HLFX.Ru Forum
Показать все 12 сообщений этой темы на одной странице

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=5818)


Отправлено cs16forever 06-04-2022 в 02:40:

координаты игроков

как узнать какие координаты "включает в себя " модель игрока?


Отправлено илья2 06-04-2022 в 05:58:

вопрос не очень понятен и точен по больше инфы нужно !

__________________
илья


Отправлено Ku2zoff 06-04-2022 в 07:12:

cs16forever включает три координаты: X, Y, Z. Узнать их можно из соответствующих компонентов player->pev->origin.


Отправлено илья2 06-04-2022 в 07:47:

ну тогда все понятно координаты спавна игрока так бы и сказали они как раз настраиваются вот в этой функции в gamerules.cpp

edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer )
{
edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer );

pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0,0,1);<вот
-Vector(XYZ)
pPlayer->pev->v_angle = g_vecZero;
pPlayer->pev->velocity = g_vecZero;
pPlayer->pev->angles = VARS(pentSpawnSpot)->angles;
pPlayer->pev->punchangle = g_vecZero;
pPlayer->pev->fixangle = TRUE;

return pentSpawnSpot;
}

__________________
илья


Отправлено cs16forever 06-04-2022 в 15:16:

спасибо за ответы.
нет, не спавна.
мне нужно определить, расположение модели игрока в пространтве. т.е. все точки модели.
Где расположен игрок знаю, а вот как определить где его голова, рука, нога? Все координаты стрельнув в которые игрок получит урон.


Отправлено Дядя Миша 06-04-2022 в 18:27:

cs16forever это не так делается.
Тебе нужна функция

void CBasePlayer :: TraceAttack

там в ней уже разобрано куда попала пуля - в голову или в руку.

__________________
My Projects: download page

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

Цитата:

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


Отправлено cs16forever 06-04-2022 в 19:03:

Цитата:
Дядя Миша писал:
[b]cs16forever это не так делается.

спасибо, пригодится.
а как бы мне все таки координаты вычислить? Мне нужны именно координаты модели. есть какой-то готовый способ? чтобы не городить велосипед


Отправлено Ku2zoff 06-04-2022 в 19:25:

cs16forever тебе нужны координаты точки попадания? Их нетрудно получить. Но в процессе самого попадания, а не заранее. Конечной точкой будет ptr->vecEndPos. TraceResult *ptr - один из аргументов TraceAttack. А вот если тебе нужен ориджин хитбокса, тут без доступа к костям модели ничего не получится. А чтобы получить доступ к костям, нужен доступ к SV_StudioSetupBones, которой в обычной халфе нет. Ты напиши, что конкретно хочешь сделать, может быть не нужно городить огород, и есть стандартное средство.


Отправлено илья2 06-04-2022 в 19:30:

эх вечно вы в какие то сложности лезите

__________________
илья


Отправлено cs16forever 06-04-2022 в 23:22:

Цитата:
Ku2zoff писал:
cs16forever тебе нужны координаты точки попадания? Их нетрудно получить. Но в процессе самого попадания, а не заранее. Конечной точкой будет ptr->vecEndPos. TraceResult *ptr - один из аргументов TraceAttack. А вот если тебе нужен ориджин хитбокса, тут без доступа к костям модели ничего не получится. А чтобы получить доступ к костям, нужен доступ к SV_StudioSetupBones, которой в обычной халфе нет. Ты напиши, что конкретно хочешь сделать, может быть не нужно городить огород, и есть стандартное средство.

и точки попаданий и ориджин хитбокса.
Пока что изучаю функционал этого шедевра.

как бы мне подрубить этот метод класса:
C++ Source Code:
CBasePlayer::TraceAttack

в свой код?

делаю плагин(сошку) под метамод для cs 1.6 и вижу только на вооружении , engfuncs, DLL_FUNCTIONS, NEW_DLL_FUNCTIONS.

а как подрубить CBasePlayer не понятно.
В SDK этот код есть, как с ним слинковаться? как с ним работать?


Отправлено Дядя Миша 07-04-2022 в 05:35:

Цитата:
cs16forever писал:
в свой код?

А свой код это где?

__________________
My Projects: download page

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

Цитата:

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


Отправлено cs16forever 07-04-2022 в 06:20:

Цитата:
Дядя Миша писал:
А свой код это где?

метамод сошка.
C++ Source Code:
1
void pfnPlayerPostThink(edict_t *pent)
2
{
3
  // как здесь CBasePlayer::TraceAttack заюзать?
4
  // определить что атаковал другого и т.д.
5
  RETURN_META(MRES_IGNORED);
6
}


C++ Source Code:
1
C_DLLEXPORT int GetEntityAPI2_Post(DLL_FUNCTIONS *pFunctionTable, int *)
2
{
3
  memset(&gpFunctionTable_Post, 0, sizeof(DLL_FUNCTIONS));
4
  gpFunctionTable_Post.pfnPlayerPostThink = pfnPlayerPostThink;
5
  memcpy(pFunctionTable, &gpFunctionTable_Post, sizeof(DLL_FUNCTIONS));
6
  g_pFunctionTable_Post = pFunctionTable;
7
  return true;
8
}

как бы первый метамод плагин


Временная зона GMT. Текущее время 18:02.
Показать все 12 сообщений этой темы на одной странице

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