HLFX.Ru Forum
Показать все 5 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Помогите исправить ошибку с прицелом (https://hlfx.ru/forum/showthread.php?threadid=4751)


Отправлено Luciferchik 08-04-2016 в 22:33:

Wink Помогите исправить ошибку с прицелом

Корочь делал прицел по этому тутору О разбросе оружия, отдаче и динамическом прицеле вылазит такая ошибка при компиле

code:
Creating library Release/client.lib and object Release/client.exp mp5.obj : error LNK2001: unresolved external symbol "public: void __thiscall CBasePlayer::UpdateClientSideSpread(int,float)" (?UpdateClientSideSpread@CBasePlayer@@QAEXHM@Z) C:\Documents and Settings\Administrator\Рабочий стол\Half-Life\valve\cl_dlls\client.dll : fatal error LNK1120: 1 unresolved externals
делал на спирите во норм было делаю на хл такая вот штука получается

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 09-04-2016 в 07:10:

Про клиентские оружия слышал? В спирите их нет, поэтому у тебя там норм было. А в халфе нужно некоторые функции оружий дублировать на клиенте в файле hl_weapons.cpp, а на некоторые ставить заглушки в файле hl_baseentity.cpp. Вот у меня есть такой старый код:

weapons.cpp

C++ Source Code:
1
float CBasePlayerWeapon::GetSpread(void)
2
{
3
  float m_flValue = 0.0;
4
  float m_flPlayerSpeed = m_pPlayer->pev->velocity.Length2D();
5
 
6
  if (FBitSet(m_pPlayer->pev->flags, FL_DUCKING))
7
    m_flValue = m_flSpread / 2;
8
  else
9
  {
10
    //		if (m_flPlayerSpeed > PLAYER_SPEED_RUN)
11
    //			m_flValue = m_flPlayerSpeed / (m_flSpread * (m_flDivider * m_flPlayerSpeed));
12
    //		else
13
    m_flValue = (m_flPlayerSpeed / m_flDivider) * m_flSpread;
14
 
15
    if (m_flValue < m_flSpread)
16
      m_flValue = m_flSpread;
17
  }
18
 
19
  //	ALERT(at_console, "Spread: %f\n", m_flValue);
20
 
21
  if (!FBitSet(m_pPlayer->pev->flags, FL_ONGROUND))
22
    m_flValue *= 1.5;
23
 
24
  return m_flValue;
25
}


hl_weapons.cpp
C++ Source Code:
1
float CBasePlayerWeapon::GetSpread(void)
2
{
3
  float m_flValue = 0.0;
4
  float m_flPlayerSpeed = m_pPlayer->pev->velocity.Length2D();
5
 
6
  m_flValue = (m_flPlayerSpeed / m_flDivider) * m_flSpread;
7
 
8
  if (m_flValue < m_flSpread)
9
    m_flValue = m_flSpread;
10
 
11
  if (FBitSet(m_pPlayer->pev->flags, FL_DUCKING))
12
    m_flValue /= 2;
13
 
14
  if (!FBitSet(m_pPlayer->pev->flags, FL_ONGROUND))
15
    m_flValue *= 2;
16
 
17
  return m_flValue;
18
}

В этом примере функции одинаковые. Зачем дублировать серверную на клиенте? Чтобы у локального игрока (когда он не хост, а клиент) разброс (а соответственно размер прицела) менялся плавно, а не рывками при любом пинге.

Добавлено 09-04-2016 в 13:10:

Luciferchik либо ставь заглушку на UpdateClientSideSpread в hl_baseentity.cpp, либо в коде оружия оборачивай её вызов в #ifndef CLIENT_DLL. Из этой функции отправляется мессага на клиент, поэтому в клиентском коде она не нужна. А вообще тутор - жэсть. Особенно для мультиплеера.


Отправлено Luciferchik 09-04-2016 в 07:46:

Во,спасибо,так и знал что вина всему клиенсткие пушки тож думал применить #ifndef CLIENT_DLL,но чет не заюзал вот и решил спросить совета, а можешь дать ссыль на тутор где можно клиет.пушки вырезать, а то з Xash weapon system чет не получается

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 09-04-2016 в 07:59:

Цитата:
Luciferchik писал:
а то з Xash weapon system чет не получается

Это единственный тутор. Там не сложно. Сравнивай со спиритом по ходу работы с тутором, чтоб получилось нормально.


Отправлено Luciferchik 09-04-2016 в 08:05:

Цитата:
Ku2zoff писал:
Это единственный тутор. Там не сложно. Сравнивай со спиритом по ходу работы с тутором, чтоб получилось нормально.

Ладный будем чаво то мудрить может и выйдет

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Временная зона GMT. Текущее время 22:49.
Показать все 5 сообщений этой темы на одной странице

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