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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- weapon Attachment (https://hlfx.ru/forum/showthread.php?threadid=275)


Отправлено Fox 30-05-2006 в 15:20:

weapon Attachment

Народ подскажите, как мне получить координаты атачмента у оружия (например, Glock) в данный момент времени. Я не понимаю, как получить доступ к нужной мне модели - v_9mmhandgun.md. Пробовал функциеей GetAttachment(int, Vector, Vector) из CGlock, но я так понял что моделью CGlock является w_9mmhandgun.mdl, которая не имеет атачмента, что приводит к вылетанию из игры. Через m_pPlayer тоже ничего не выходит. Как быть?


Отправлено XaeroX 30-05-2006 в 15:37:

Fox
на сервере этого сделать, по-видимому, нельзя. Но зато можно на клиенте:

C++ Source Code:
cl_entity_t *viewmodel = gEngfuncs.GetViewModel();
return viewmodel->model->attachment[i];

Если ты хочешь прицепить к модели лучи, это нужно делать именно на клиенте. Или скажем, mullzeflash - смотри ф-ю HUD_StudioEvent в entity.cpp на клиенте.

__________________

xaerox on Vivino


Отправлено Fox 30-05-2006 в 15:44:

Спасибо! Теперь понял. А не знаешь где можно найти хоть какое-нибудь описание SDK (Иерархия классов, назначение функций, переменных), а то прилагаемые комментарии бывают достаточно скудными? И еще мне интересно, по каким правилам они именуют переменные.


Отправлено XaeroX 30-05-2006 в 16:00:

Цитата:
Fox писал:
А не знаешь где можно найти хоть какое-нибудь описание SDK (Иерархия классов, назначение функций, переменных), а то прилагаемые комментарии бывают достаточно скудными?

Вообще такого вроде нет, по крайней мере я не встречал. Так из названия и описания классов вроде понятна их иерархия. И в cbase.h есть неплохой комментарий.
Цитата:
Fox писал:
И еще мне интересно, по каким правилам они именуют переменные

В каком смысле? Как таковых правил нет, как хочешь, так и именуй.

__________________

xaerox on Vivino


Отправлено Government-Man 30-05-2006 в 16:04:

Цитата:
Как таковых правил нет, как хочешь, так и именуй.


Правил конечно нет, но есть же соглашение об именах, определенные стили кодирования.
Ну типа: имена переменных типа int начинаются с "i", Переменных-членов класса с префикса "m_", глобальных переменных - с префикса "g_", ... ну и так далее.

Называть переменные, конечно, можно как угодно, но лучше все-таки придерживаться этих простых правил (имхо).


Отправлено XaeroX 30-05-2006 в 16:32:

Government-Man вот именно - стили. У каждого программиста свой стиль (хотя он меняется со временем)
Мой например таков - локальные переменные как можно короче (s, x, y), приватные члены классов - начинать с "_", публичных и глобальных переменных стараться избегать.

__________________

xaerox on Vivino


Отправлено Government-Man 30-05-2006 в 16:37:

Так или иначе в HL SDK они названы так, как я писал выше...


Отправлено Дядя Миша 30-05-2006 в 16:47:

Fox на сервере можно получить аттачмент оружия (он закодирован в анимации игрока последним байтом).

code:
m_pPlayer->pev->sequence = (pev->sequence & 0x0FFF) | ((attachment&0xF)<<12);


Добавлено 30-05-2006 в 20:47:

ЗЫ. В СДК переменные именуются согласно "венгерской нотации". Перед указателем ставится префикс m_p или p.
Перед интегром - m_i или i. Перед флоатом m_f или f.
Глобальные переменные обзначаются как gp.
Вообщем-то все просто и логично, однако у этого метода есть свои противники.


Отправлено XaeroX 30-05-2006 в 16:51:

Дядя Миша там номер, наверное... А нужен же вектор.

Добавлено 30-05-2006 в 23:51:

Цитата:
Дядя Миша писал:
Глобальные переменные обзначаются как gp.

Это указатели.
Цитата:
Дядя Миша писал:
Перед флоатом m_f или f.

Или m_fl, fl

Так, оффтоп прекращаем.

__________________

xaerox on Vivino


Отправлено Fox 30-05-2006 в 17:54:

Так, насколько я понял мне нужно делать так:
В client.dll создаем функцию

C++ Source Code:
1
vec3_t GetWeaponAttachment()
2
{
3
  cl_entity_t *viewmodel = gEngfuncs.GetViewModel();
4
  return viewmodel->model->attachment[0]->org;
5
}

(Здесь я полагаю что attachment имеет вид:
C++ Source Code:
1
{
2
  char name[32];
3
  int type;
4
  int bone;
5
  vec3_t org; // attachment point
6
  vec3_t vectors[3];
7
}

но возможно я ошибаюсь?
)

В hl.dll
C++ Source Code:
1
Vector A;
2
#ifdef CLIENT_DLL
3
A=GetWeaponAttachment()
4
#endif



Все таки я не слишком понимаю систему клиент<->сервер. Пожалуй даже столкнулся с ней впервые.


Отправлено XaeroX 30-05-2006 в 18:10:

Цитата:
Fox писал:
но возможно я ошибаюсь?

Ошибаешься, на клиенте аттач - это обычный вектор. То есть:
C++ Source Code:
1
vec3_t GetWeaponAttachment()
2
{
3
  cl_entity_t *viewmodel = gEngfuncs.GetViewModel();
4
  return viewmodel->model->attachment[0];
5
}

А эффекты надо создавать через евенты, посмотри как лучи егона делаются на клиенте. Хотя зависит от того, что за эффект ты делаешь. Скажи - подумаем как лучше.

__________________

xaerox on Vivino


Отправлено Fox 30-05-2006 в 18:20:

На самом деле я не то что бы делаю эффекты, я просто изучаю SDK, но в данный момент я делаю луч лазерного прицела. С сервером было попроще я сделал пятно прицела и вернул глоку возможность загнать в ствол 18 патрон. Так как особых идей пока нет, буду добивать луч.


Отправлено Trixon 07-05-2012 в 16:33:

Собственно у меня назрел вопрос: каким образом привязать сброс гильз, маззлфлеш и т.д. конкретно к аттачам модели оружия?

Взял здесь код, немного поправил (game_fx.cpp):

C++ Source Code:
1
vec3_t GetWeaponAttachment()
2
{
3
  cl_entity_t *viewmodel = gEngfuncs.GetViewModel();
4
  return [COLOR=deeppink]viewmodel->attachment[0];[/COLOR] //Иначе не компилируется.
5
}


Пробовал:
C++ Source Code:
1
vec3_t GetWeaponAttachment()
2
{
3
  //...
4
  return viewmodel->model->submodels->origin; //Также пробовал делать, но здесь, видимо, я совсем что-то не то намудрил. <img src="images/smilies/biggrin.gif" border="0" alt="">
5
}


Также, параллельно, поправил код (game_fx.cpp):
C++ Source Code:
1
if (Type == FIREGUN_GLOCK)
2
{
3
  //...
4
  EV_GunSmoke(GetWeaponAttachment(), GUNSMOKE_WHITE_SMALL);
5
  //...
6
}


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

__________________
HL:WE


Отправлено Дядя Миша 07-05-2012 в 16:39:

В чём конкретно проблема?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Trixon 07-05-2012 в 16:42:

Проблема в том, что гильзы выпадают с того МЕСТА, с которого я включаю thirdperson (вид от третьего лица) в моде HLWE (думаю, это не существенно).
Также, есть p_ модель с двумя аттачментами (перекомпилированная).

Т.е. вместо координат, в которые входит "ориджин, вперёд и т.д.", у меня стоит вектор аттачмента. Но, тем не менее, координата "замораживается".

з.ы.
Недавно присоединился к доработке мода HLWE.

__________________
HL:WE


Временная зона GMT. Текущее время 05:17. Страницы (3): [1] 2 3 »
Показать все 34 сообщений этой темы на одной странице

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