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 на клиенте.__________________
Отправлено Fox 30-05-2006 в 15:44:
Спасибо! Теперь понял. А не знаешь где можно найти хоть какое-нибудь описание SDK (Иерархия классов, назначение функций, переменных), а то прилагаемые комментарии бывают достаточно скудными? И еще мне интересно, по каким правилам они именуют переменные.
Отправлено XaeroX 30-05-2006 в 16:00:
Цитата:
Fox писал:
А не знаешь где можно найти хоть какое-нибудь описание SDK (Иерархия классов, назначение функций, переменных), а то прилагаемые комментарии бывают достаточно скудными?
Вообще такого вроде нет, по крайней мере я не встречал. Так из названия и описания классов вроде понятна их иерархия. И в cbase.h есть неплохой комментарий.
Цитата:
Fox писал:
И еще мне интересно, по каким правилам они именуют переменные
В каком смысле? Как таковых правил нет, как хочешь, так и именуй.__________________
Отправлено Government-Man 30-05-2006 в 16:04:
Цитата:
Как таковых правил нет, как хочешь, так и именуй.
Правил конечно нет, но есть же соглашение об именах, определенные стили кодирования.
Ну типа: имена переменных типа int начинаются с "i", Переменных-членов класса с префикса "m_", глобальных переменных - с префикса "g_", ... ну и так далее.
Называть переменные, конечно, можно как угодно, но лучше все-таки придерживаться этих простых правил (имхо).
Отправлено XaeroX 30-05-2006 в 16:32:
Government-Man вот именно - стили. У каждого программиста свой стиль (хотя он меняется со временем)
Мой например таков - локальные переменные как можно короче (s, x, y), приватные члены классов - начинать с "_", публичных и глобальных переменных стараться избегать.
__________________
Отправлено Government-Man 30-05-2006 в 16:37:
Так или иначе в HL SDK они названы так, как я писал выше...
Отправлено Дядя Миша 30-05-2006 в 16:47:
Fox на сервере можно получить аттачмент оружия (он закодирован в анимации игрока последним байтом).
Добавлено 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
Так, оффтоп прекращаем.__________________
Отправлено Fox 30-05-2006 в 17:54:
Так, насколько я понял мне нужно делать так:
В client.dll создаем функцию
C++ Source Code:
1 | vec3_t GetWeaponAttachment() |
3 | cl_entity_t *viewmodel = gEngfuncs.GetViewModel(); |
4 | return viewmodel->model->attachment[0]->org; |
(Здесь я полагаю что attachment имеет вид:
C++ Source Code:
5 | vec3_t org; // attachment point |
но возможно я ошибаюсь?
)
В hl.dll
C++ Source Code:
Все таки я не слишком понимаю систему клиент<->сервер. Пожалуй даже столкнулся с ней впервые.
Отправлено XaeroX 30-05-2006 в 18:10:
Цитата:
Fox писал:
но возможно я ошибаюсь?
Ошибаешься, на клиенте аттач - это обычный вектор. То есть:
C++ Source Code:
1 | vec3_t GetWeaponAttachment() |
3 | cl_entity_t *viewmodel = gEngfuncs.GetViewModel(); |
4 | return viewmodel->model->attachment[0]; |
А эффекты надо создавать через евенты, посмотри как лучи егона делаются на клиенте. Хотя зависит от того, что за эффект ты делаешь. Скажи - подумаем как лучше.__________________
Отправлено Fox 30-05-2006 в 18:20:
На самом деле я не то что бы делаю эффекты, я просто изучаю SDK, но в данный момент я делаю луч лазерного прицела. С сервером было попроще я сделал пятно прицела и вернул глоку возможность загнать в ствол 18 патрон. Так как особых идей пока нет, буду добивать луч.
Отправлено Trixon 07-05-2012 в 16:33:
Собственно у меня назрел вопрос: каким образом привязать сброс гильз, маззлфлеш и т.д. конкретно к аттачам модели оружия?
Взял здесь код, немного поправил (game_fx.cpp):
C++ Source Code:
1 | vec3_t GetWeaponAttachment() |
3 | cl_entity_t *viewmodel = gEngfuncs.GetViewModel(); |
4 | return [COLOR=deeppink]viewmodel->attachment[0];[/COLOR] //Иначе не компилируется. |
Пробовал:
C++ Source Code:
1 | vec3_t GetWeaponAttachment() |
4 | return viewmodel->model->submodels->origin; //Также пробовал делать, но здесь, видимо, я совсем что-то не то намудрил. <img src="images/smilies/biggrin.gif" border="0" alt=""> |
Также, параллельно, поправил код (game_fx.cpp):
C++ Source Code:
1 | if (Type == FIREGUN_GLOCK) |
4 | EV_GunSmoke(GetWeaponAttachment(), GUNSMOKE_WHITE_SMALL); |
Помогите, пожалуйста. Мучаюсь уже третий день. Может мысли какие-нибудь есть?__________________
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