HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > weapon Attachment
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Fox
Новичок

Дата регистрации: May 2006
Проживает: (void)
Сообщений: 4
Возраст: 36

Рейтинг



weapon Attachment

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

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

Старое сообщение 30-05-2006 15:20
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34510
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

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

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

__________________

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

Старое сообщение 30-05-2006 15:37
-
Fox
Новичок

Дата регистрации: May 2006
Проживает: (void)
Сообщений: 4
Возраст: 36

Рейтинг



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

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

Старое сообщение 30-05-2006 15:44
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34510
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

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

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

__________________

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

Старое сообщение 30-05-2006 16:00
-
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


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


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

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

Отредактировано Government-Man 30-05-2006 в 16:18

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

Старое сообщение 30-05-2006 16:04
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34510
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

__________________

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

Старое сообщение 30-05-2006 16:32
-
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


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

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

Старое сообщение 30-05-2006 16:37
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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.
Вообщем-то все просто и логично, однако у этого метода есть свои противники.

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

Старое сообщение 30-05-2006 16:47
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34510
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

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

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

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

Или m_fl, fl

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

__________________

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

Старое сообщение 30-05-2006 16:51
-
Fox
Новичок

Дата регистрации: May 2006
Проживает: (void)
Сообщений: 4
Возраст: 36

Рейтинг



Так, насколько я понял мне нужно делать так:
В 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



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

Отредактировано Fox 30-05-2006 в 18:01

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

Старое сообщение 30-05-2006 17:54
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34510
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

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

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

__________________

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

Старое сообщение 30-05-2006 18:10
-
Fox
Новичок

Дата регистрации: May 2006
Проживает: (void)
Сообщений: 4
Возраст: 36

Рейтинг



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

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

Старое сообщение 30-05-2006 18:20
- За что?
Trixon
Быдлокодер

Дата регистрации: Jul 2006
Проживает: Ростов-на-Дону
Сообщений: 3
Возраст: 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

Отредактировано Trixon 07-05-2012 в 16:39

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

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

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

Рейтинг



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

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 07-05-2012 16:39
-
Trixon
Быдлокодер

Дата регистрации: Jul 2006
Проживает: Ростов-на-Дону
Сообщений: 3
Возраст: 33

Рейтинг



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

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

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

__________________
HL:WE

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

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



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


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

Временная зона GMT. Текущее время 04:49. Новая тема    Ответить
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > weapon Attachment
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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