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

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



Half-Life Проблемы с переменными

Ввёл переменную которая меняется при подборе или выбрасывания оружия. Собственно код :

C++ Source Code:
1
if ( pItem->m_iId == WEAPON_AK47 )
2
{
3
  pItem->m_BackPack = pItem->m_BackPack;
4
  pItem->m_BackPack = pItem->m_BackPack + MP5_WEIGHT;
5
  //				ALERT ( at_debug, "Backpack weight set to : %d\n", pItem->m_BackPack );
6
}
7
else if ( pItem->m_iId == WEAPON_GLOCK )
8
{
9
  pItem->m_BackPack = pItem->m_BackPack;
10
  pItem->m_BackPack = pItem->m_BackPack + GLOCK_WEIGHT;
11
}
12
ALERT ( at_debug, "Backpack weight add : %d\n", pItem->m_BackPack  );


Но в игре при подъёме АК он мне пишет "Backpack weight set to : 15", а затем при подборе Глока пишет "Backpack weight set to : 10" Хотя поидее должен писать "Backpack weight set to : 25". Собственно что я зделал не так?

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

Старое сообщение 30-04-2008 13:43
- За что?
Government-Man
Призрак

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

Рейтинг



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


>>> pItem->m_BackPack = pItem->m_BackPack;
В чем смысл этой строки?

Добавлено 30-04-2008 в 20:24:

Я конечно не сильно в хлсдк разбираюсь, но... m_BackPack - это я так понимаю, вес "рюкзака" игрока? Тогда какого художника он вообще делает в итеме? %) В плеера добавь...

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

Старое сообщение 30-04-2008 14:24
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



pItem->m_BackPack = pItem->m_BackPack;
Ни в чём, без неё тоже самое

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

Старое сообщение 30-04-2008 14:27
- За что?
Jumpdaphuckup!
Когда-то я здесь был

Дата регистрации: Nov 2005
Проживает: Україна / Харків
Сообщений: 128
Возраст: 37

Рейтинг



В строке pItem->m_BackPack = pItem->m_BackPack; действительно нет никакого смысла. Убери ее.
А чтобы тебе смогли помочь, расскажи куда ты этот код вставил и покажи как и где ты объявляешь переменную m_BackPack.

__________________
avtobus zekov

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

Старое сообщение 30-04-2008 21:17
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



В CBasePlayer::AddPlayerItem добавил.

C++ Source Code:
1
if ( pItem->m_iId == WEAPON_AK47 )
2
{
3
  if( m_BackPack + MP5_WEIGHT >= m_BackPack_Max )
4
  {
5
    UTIL_ShowMessage("#BACKPACK_FULL", this );
6
    return FALSE;
7
  }
8
  else
9
  {
10
    m_BackPack = m_BackPack + MP5_WEIGHT;
11
  }
12
}
13
else if ( pItem->m_iId == WEAPON_GLOCK )
14
{
15
  if( m_BackPack + GLOCK_WEIGHT >= m_BackPack_Max )
16
  {
17
    UTIL_ShowMessage("#BACKPACK_FULL", this );
18
    return FALSE;
19
  }
20
  else
21
  {
22
    m_BackPack = m_BackPack + GLOCK_WEIGHT;
23
  }
24
}
25
else if ( pItem->m_iId == WEAPON_CROWBAR )
26
{
27
  if( m_BackPack + 195 >= m_BackPack_Max ) //test
28
  {
29
    UTIL_ShowMessage("#BACKPACK_FULL", this );
30
    return FALSE;
31
  }
32
  else
33
  {
34
    m_BackPack = m_BackPack + 195; //test
35
  }
36
}
37
 
38
MESSAGE_BEGIN( MSG_ONE, gmsgBackPack, NULL, pev );
39
WRITE_BYTE( m_BackPack );
40
MESSAGE_END();


И в CBasePlayer::DropPlayerItem

C++ Source Code:
1
if ( pWeapon->m_iId == WEAPON_AK47 )
2
{
3
  m_BackPack = m_BackPack - MP5_WEIGHT;
4
}
5
else if ( pWeapon->m_iId == WEAPON_GLOCK )
6
{
7
  m_BackPack = m_BackPack - GLOCK_WEIGHT;
8
}
9
else if ( pWeapon->m_iId == WEAPON_CROWBAR )
10
{
11
  m_BackPack = m_BackPack - 195;
12
}
13
ALERT ( at_debug, "Backpack weight set to : %d\n", m_BackPack );
14
 
15
MESSAGE_BEGIN( MSG_ONE, gmsgBackPack, NULL, pev );
16
WRITE_BYTE( m_BackPack );
17
MESSAGE_END();


В SaveData добавил :
C++ Source Code:
DEFINE_FIELD( CBasePlayer, m_BackPack, FIELD_INTEGER ),
DEFINE_FIELD( CBasePlayer, m_BackPack_Max, FIELD_INTEGER ),


Теперь всё работает, но появился один глюк, после того как выкидываешь оружие, и после этого забиваешь m_BackPack до максимума, пытаешся поднять оружие которое выкинул, происходит следующее : модель оружия исчезает с земли, выдаётся сообщение что инвентарь полон. Собственно как сделать чтобы модель неубералась с земли когда m_BackPack = 200 или больше? Надеюсь меня кто-то понял.

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

Старое сообщение 01-05-2008 14:21
- За что?
Jumpdaphuckup!
Когда-то я здесь был

Дата регистрации: Nov 2005
Проживает: Україна / Харків
Сообщений: 128
Возраст: 37

Рейтинг



m_BackPack_Max можно сделать константой и не нужно ее сохранять. Например:

code:
#define BACK_PACK_MAX 200

А еще:
code:
m_BackPack = m_BackPack + MP5_WEIGHT;
можно заменить на
code:
m_BackPack += MP5_WEIGHT;


А если по делу, то ставь брэйкпойнт в начале функции
code:
CBasePlayerItem::DefaultTouch
И следи за происходящим на экране

__________________
avtobus zekov

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

Старое сообщение 01-05-2008 15:39
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



Как бы сказать, пушка после того как выкидывается командой дроп, превращяется в энтитю "weaponbox", собственно поэтому и получается глюк с исчезновением модели.

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

Старое сообщение 01-05-2008 15:41
- За что?
Jumpdaphuckup!
Когда-то я здесь был

Дата регистрации: Nov 2005
Проживает: Україна / Харків
Сообщений: 128
Возраст: 37

Рейтинг



Блин, можно было хоть в коде смайлы отключить...

Добавлено 01-05-2008 в 18:49:

Цитата:
ToMMuK писал:
превращяется в энтитю "weaponbox"
Тогда все ясно. Используй CREATE_NAMED_ENTITY для выбрасывания нужного оружия в DropPlayerItem

__________________
avtobus zekov

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

Старое сообщение 01-05-2008 15:49
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



То есть ты имеешь в виду делать проверку на выбрасываемое оружие и создавать энтитю?

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

Старое сообщение 01-05-2008 15:50
- За что?
Jumpdaphuckup!
Когда-то я здесь был

Дата регистрации: Nov 2005
Проживает: Україна / Харків
Сообщений: 128
Возраст: 37

Рейтинг



точно

__________________
avtobus zekov

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

Старое сообщение 01-05-2008 15:53
- За что?
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



Чёто ничего не получается.

C++ Source Code:
1
if ( pWeapon->m_iId == WEAPON_AK47 )
2
{
3
  CREATE_NAMED_ENTITY( MAKE_STRING( "weapon_ak74" ) );
4
  ALERT ( at_debug, "Created entity : weapon_ak74\n" );
5
  //						pev->angles.x = RANDOM_FLOAT( 25, -25 );
6
  //						pev->angles.y = RANDOM_FLOAT( 25, -25 );
7
  //						pev->angles.z = RANDOM_FLOAT( 25, -25 );
8
}
9
else if ( pWeapon->m_iId == WEAPON_GLOCK )
10
{
11
  CREATE_NAMED_ENTITY( MAKE_STRING( "weapon_glock" ) );
12
  ALERT ( at_debug, "Created entity : weapon_glock\n" );
13
  //						pev->angles.x = RANDOM_FLOAT( 25, -25 );
14
  //						pev->angles.y = RANDOM_FLOAT( 25, -25 );
15
  //						pev->angles.z = RANDOM_FLOAT( 25, -25 );
16
}
17
else if ( pWeapon->m_iId == WEAPON_CROWBAR )
18
{
19
  CREATE_NAMED_ENTITY( MAKE_STRING( "weapon_crowbar" ) );
20
  ALERT ( at_debug, "Created entity : weapon_crowbar\n" );
21
  //						pev->angles.x = RANDOM_FLOAT( 25, -25 );
22
  //						pev->angles.y = RANDOM_FLOAT( 25, -25 );
23
  //						pev->angles.z = RANDOM_FLOAT( 25, -25 );
24
}

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

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

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

Рейтинг



Еще бы оно получалось! У тебя backpack объявлен в классе итема. Т.е. ты каждому итему свой весь присваиваешь.
Объяви backpack в классе игрока, тогда уж.
А вес наоборот - бери из итема и плюсуй-отнимай к бэкпаку.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 02-05-2008 11:37
-
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



Всё получилось, осталась одна проблемка, Если выкинуть оружие, затем через команду Гив прописать этоже оружие, и пытаться поднять выброшенное, то оно будет добавлять патроны, а модель не исчезнет.

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

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

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

Рейтинг



ToMMuK ты имеешь в виду модель на полу или в руках?

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 02-05-2008 13:38
-
ToMMuK
SmallHabit'at

Дата регистрации: Jun 2006
Проживает: Рига
Сообщений: 634
Возраст: 32

Рейтинг



Модель на полу.

__________________
Сайт латвийского мода

Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.

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

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



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


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

Временная зона GMT. Текущее время 01:49. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
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