HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > назначение моделей оружия
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



назначение моделей оружия

подскажите как реализовать возможность выбора моделей оружия ( p, v ,w ) с помощью параметров энтитей в редакторе.

в принципе понятно, но не до конца

я пока решил сделать так, но не уверен что это сработает

C++ Source Code:
1
void CCrowbar:: KeyValue( KeyValueData *pkvd )
2
{
3
  if (FStrEq(pkvd->szKeyName, "v_model"))
4
  {
5
    v_model = ALLOC_STRING( pkvd->szValue );
6
    pkvd->fHandled = TRUE;
7
  }
8
  else if (FStrEq(pkvd->szKeyName, "w_model"))
9
  {
10
    w_model = ALLOC_STRING( pkvd->szValue );
11
    pkvd->fHandled = TRUE;
12
  }
13
  else if (FStrEq(pkvd->szKeyName, "p_model"))
14
  {
15
    p_model = ALLOC_STRING( pkvd->szValue );
16
    pkvd->fHandled = TRUE;
17
  }
18
  else
19
  {
20
    CBaseMonster::KeyValue( pkvd );
21
  }
22
}


потом

C++ Source Code:
1
void CCrowbar::Spawn( )
2
{
3
  Precache( );
4
  m_iId = WEAPON_CROWBAR;
5
  if (w_model )
6
    SET_MODEL(ENT(pev), w_model ); //LRC
7
  else
8
    SET_MODEL(ENT(pev), "models/w_crowbar.mdl");
9
  m_iClip = -1;
10
 
11
  FallInit();// get ready to fall down.
12
}


затем кеширование

C++ Source Code:
1
void CCrowbar::Precache( void )
2
{
3
 
4
  if (v_model )
5
    PRECACHE_MODEL(v_model );
6
  else
7
    PRECACHE_MODEL("models/v_crowbar.mdl");
8
 
9
 
10
  if (w_model )
11
    PRECACHE_MODEL(w_model );
12
  else
13
    PRECACHE_MODEL("models/w_crowbar.mdl");
14
 
15
  if (p_model )
16
    PRECACHE_MODEL(p_model );
17
  else
18
    PRECACHE_MODEL("models/p_crowbar.mdl");
19
 
20
  PRECACHE_SOUND("weapons/cbar_hit1.wav");
21
  PRECACHE_SOUND("weapons/cbar_hit2.wav");
22
  PRECACHE_SOUND("weapons/cbar_hitbod1.wav");
23
  PRECACHE_SOUND("weapons/cbar_hitbod2.wav");
24
  PRECACHE_SOUND("weapons/cbar_hitbod3.wav");
25
  PRECACHE_SOUND("weapons/cbar_miss1.wav");
26
 
27
  m_usCrowbar = PRECACHE_EVENT ( 1, "events/crowbar.sc" );
28
}


вопрос что менять в CCrowbar::Deploy ?
и будет ли вообще этот код работать ?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 29-12-2008 20:11
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Как объявлены v_model, w_model и т.п.?
Если как char*, то не будет работать вот это:

C++ Source Code:
v_model = ALLOC_STRING( pkvd->szValue );

Если как string_t - то это:
C++ Source Code:
PRECACHE_MODEL(v_model );


Добавлено 30-12-2008 в 02:32:

Цитата:
fire64 писал:
и будет ли вообще этот код работать ?

А проверить самому?

__________________

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

Старое сообщение 29-12-2008 20:32
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



XaeroX, спасибо
сегодня уже лень, а завтра проверю

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 29-12-2008 20:38
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



fire64 это очень непростая задача.
Изучай старый Xash 0.35, 0.39 - weapon_generic
Там имена грузятся из текстового файлика, но переделать под энтварс достаточно легко. А вот граблей там предостаточно.
Темки для ознакомления
http://half-life.ru/forum/showthrea...t=weapongeneric
http://half-life.ru/forum/showthrea...t=weapongeneric
http://half-life.ru/forum/showthrea...t=weapongeneric

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 29-12-2008 21:21
-
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



Дядя Миша, большое вам спасибо
использовал код из ваших постов,

но есть одна проблема, в мультиплеере же оружие респавнится через определенное время
и дело в том что респавнится оно без параметров, с оригинальной моделью, а не той что установлена на карте

написал следующее

C++ Source Code:
1
/***
2
*
3
*	Copyright © 1996-2002, Valve LLC. All rights reserved.
4
*
5
*	This product contains software technology licensed from Id
6
*	Software, Inc. ("Id Technology").  Id Technology © 1996 Id Software, Inc.
7
*	All Rights Reserved.
8
*
9
*   Use, distribution, and modification of this source code and/or resulting
10
*   object code is restricted to non-commercial enhancements to products from
11
*   Valve LLC.  All other use, distribution, or modification is prohibited
12
*   without written permission from Valve LLC.
13
*
14
****/
15
 
16
#include "extdll.h"
17
#include "util.h"
18
#include "cbase.h"
19
#include "monsters.h"
20
#include "weapons.h"
21
#include "nodes.h"
22
#include "player.h"
23
#include "gamerules.h"
24
 
25
 
26
class CTestWeapon : public CBasePlayerWeapon
27
{
28
public:
29
  void Spawn( void );
30
  void Precache( void );
31
  void	KeyValue( KeyValueData *pkvd );
32
  int GetItemInfo(ItemInfo *p);
33
  void PrimaryAttack( void );
34
  void SecondaryAttack( void );
35
  BOOL Deploy( void );
36
  void Holster( );
37
  void WeaponIdle( void );
38
 
39
  int w_model;
40
  int p_model;
41
  int v_model;
42
 
43
private:
44
  unsigned int m_usCrowbar;
45
};
46
LINK_ENTITY_TO_CLASS( weapon_test, CTestWeapon );
47
 
48
enum test_e {
49
  TEST_IDLE = 0,
50
  TEST_DRAW,
51
};
52
 
53
void CTestWeapon:: KeyValue( KeyValueData *pkvd )
54
{
55
  if (FStrEq(pkvd->szKeyName, "wpn_v_model"))
56
  {
57
    v_model = ALLOC_STRING( pkvd->szValue );
58
    pkvd->fHandled = TRUE;
59
  }
60
  else if (FStrEq(pkvd->szKeyName, "wpn_w_model"))
61
  {
62
    w_model = ALLOC_STRING( pkvd->szValue );
63
    pkvd->fHandled = TRUE;
64
  }
65
  else if (FStrEq(pkvd->szKeyName, "wpn_p_model"))
66
  {
67
    p_model = ALLOC_STRING( pkvd->szValue );
68
    pkvd->fHandled = TRUE;
69
  }
70
  else
71
  {
72
    CBasePlayerWeapon::KeyValue( pkvd );
73
  }
74
}
75
 
76
void CTestWeapon::Spawn( )
77
{
78
  Precache( );
79
  m_iId = WEAPON_TEST;
80
 
81
 
82
  if (w_model )
83
    SET_MODEL(ENT(pev), STRING( w_model) ); //LRC
84
  else
85
    SET_MODEL(ENT(pev), "models/w_crowbar.mdl");
86
 
87
  m_iClip = -1;
88
  FallInit();// get ready to fall down.
89
}
90
 
91
 
92
void CTestWeapon::Precache( void )
93
{
94
 
95
  if (w_model )
96
    PRECACHE_MODEL( (char *)STRING(w_model) );
97
  else
98
    PRECACHE_MODEL("models/w_crowbar.mdl");
99
 
100
  if (v_model )
101
    PRECACHE_MODEL( (char *)STRING(v_model) );
102
  else
103
    PRECACHE_MODEL("models/v_crowbar.mdl");
104
 
105
  if (p_model )
106
    PRECACHE_MODEL( (char *)STRING(p_model) );
107
  else
108
    PRECACHE_MODEL("models/p_crowbar.mdl");
109
}
110
 
111
int CTestWeapon::GetItemInfo(ItemInfo *p)
112
{
113
  p->pszName = STRING(pev->classname);
114
  p->pszAmmo1 = NULL;
115
  p->iMaxAmmo1 = -1;
116
  p->pszAmmo2 = NULL;
117
  p->iMaxAmmo2 = -1;
118
  p->iMaxClip = WEAPON_NOCLIP;
119
  p->iSlot = 0;
120
  p->iPosition = 2;
121
  p->iId = WEAPON_TEST;
122
  p->iWeight = TEST_WEIGHT;
123
  return 1;
124
}
125
 
126
 
127
BOOL CTestWeapon::Deploy( )
128
{
129
  if (v_model || p_model )
130
    return DefaultDeploy( (char *)STRING(v_model), (char *)STRING(p_model), TEST_DRAW, "crowbar" );
131
  else
132
    return DefaultDeploy( "models/v_crowbar.mdl", "models/p_crowbar.mdl", TEST_DRAW, "crowbar" );
133
}
134
 
135
void CTestWeapon::Holster( )
136
{
137
 
138
}
139
 
140
 
141
void CTestWeapon::PrimaryAttack()
142
{
143
 
144
}
145
 
146
void CTestWeapon::SecondaryAttack()
147
{
148
 
149
}
150
 
151
void CTestWeapon:: WeaponIdle( void )
152
{
153
  if ( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() ) return;
154
  float flRand = RANDOM_FLOAT(0, 1);
155
  if ( flRand <= 0.5 )
156
  {
157
    SendWeaponAnim( TEST_IDLE );
158
    m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + RANDOM_FLOAT ( 10, 15 );
159
  }
160
}
161
 
162
 
163
 
164
 

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Отредактировано fire64 30-12-2008 в 08:32

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

Старое сообщение 30-12-2008 08:18
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



fire64 чтобы в мультиплеере работало - изучай исходники Xash 0.39
на форуме я об этом не писал.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 30-12-2008 09:49
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 21:19. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > назначение моделей оружия
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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