HLFX.Ru Forum Страницы (2): [1] 2 »
Показать все 23 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- (edict_s) Как достать Edict игрока ? (https://hlfx.ru/forum/showthread.php?threadid=3861)


Отправлено Andrei 26-03-2013 в 22:06:

(edict_s) Как достать Edict игрока ?

Здравствуйте. Мне нужен эдикт игрока,как его достать?

C++ Source Code:
1
void UpdateClientData_Post(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd)
2
{
3
  edict_t* pEntity = const_cast< edict_t * >( ent );
4
 
5
  UTIL_ColorChat(0, " %d ", pEntity );
6
 
7
  cd->m_flNextAttack = gpGlobals->time + 0.001;
8
 
9
  RETURN_META(MRES_IGNORED);
10
}


Отправлено XaeroX 27-03-2013 в 03:51:

Цитата:
Andrei писал:
const struct edict_s *ent

А это что?

__________________

xaerox on Vivino


Отправлено pRoxxx 27-03-2013 в 09:28:

Цитата:
XaeroX писал:
А это что?

Судя по этому
C++ Source Code:
UTIL_ColorChat(0, " %d ", pEntity );


Ему надо не Эдикт, а айди.


Отправлено XaeroX 27-03-2013 в 10:16:

pRoxxx
Он же написал, что ему нужен эдикт.
Когда понадобится айди - он так и напишет. Чего мы гадать будем?

__________________

xaerox on Vivino


Отправлено Andrei 27-03-2013 в 14:19:

pRoxxx,да вы правы. Извините.


Отправлено Дядя Миша 27-03-2013 в 16:11:

Цитата:
pRoxxx писал:
Судя по этому
C++ Source Code:
UTIL_ColorChat(0, " %d ", pEntity );
Ему надо не Эдикт, а айди.

Судя вот по этому, тут нужен не ID, а IQ.


Отправлено XaeroX 27-03-2013 в 16:37:

Как вариант - IDDQD.

__________________

xaerox on Vivino


Отправлено Andrei 27-03-2013 в 17:35:

Я не понимаю,объясните пожалуйста.

Мне просто нужно проверить тут значение v.iuser2

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


Отправлено Дядя Миша 27-03-2013 в 18:10:

Цитата:
Andrei писал:
Мне просто нужно проверить тут значение v.iuser2

Что мешает?


Отправлено Andrei 27-03-2013 в 18:19:

Ноль всегда возвращает.

C++ Source Code:
1
void UpdateClientData_Post(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd)
2
{
3
  edict_t* pEntity = const_cast< edict_t * >( ent );
4
 
5
  UTIL_ColorChat(0, "%d", pEntity->v.iuser2);
6
 
7
  cd->m_flNextAttack = gpGlobals->time + 0.001;
8
 
9
  RETURN_META(MRES_IGNORED);
10
}


Отправлено Дядя Миша 27-03-2013 в 18:38:

А покажи место, где ты пишешь в него ID.


Отправлено Andrei 27-03-2013 в 19:14:

Когда получаю оружие:

C++ Source Code:
1
void CBaseWeapon::AddToPlayer( void *pPrivate1, void *pPrivate2 )
2
{
3
  edict_t* pWeapon = PrivateToEdict(pPrivate1);
4
  edict_t* pEdict = PrivateToEdict(pPrivate2);
5
 
6
  if(!IsValidPev(pWeapon) || !IsValidPev(pEdict))
7
  {
8
    RETURN_META(MRES_IGNORED);
9
  }
10
 
11
  pWeapon->v.iuser2 = 25;
12
 
13
  RETURN_META(MRES_IGNORED);
14
}


Отправлено Дядя Миша 27-03-2013 в 19:19:

Так ты в оружие сохраняешь это число. А потом ищешь его у игрока?


Отправлено Andrei 27-03-2013 в 19:26:

Да,именно так. Я знаю,что это не верно. Поэтому мне по сути нужен эдикт,с которого я получу Entity оружия.

edict_t *pEntity = get_pdata_cbase(pPlayer, m_pActiveItem, XO_MONSTER);

UTIL_ColorChat(0, "%d", pEntity->v.iuser2);

Это работает в любой функции.

C++ Source Code:
1
edict_t *get_pdata_cbase( edict_t *pEntity, int iOffset, int _linuxdiff = 5 )
2
{
3
 
4
#ifdef __linux__
5
  iOffset += _linuxdiff;
6
#endif
7
 
8
  if (iOffset <0)
9
  {
10
    return 0;
11
  }
12
 
13
  void *ptr = *((void **)((int *)pEntity->pvPrivateData + iOffset));
14
 
15
  return PrivateToEdict(ptr);
16
 
17
}



В UpdateClientData какая-то проблема с этим эдиктом.


Может я не совсем верно доношу до вас мысль,но я думаю вы понимаете,что я хочу. Надеюсь на вашу помощь,дабы понять и не делать впреть таких глупых ошибок


Отправлено Дядя Миша 27-03-2013 в 20:41:

Нее, актив итем даст только текущую пушку в руках.
Перебирай массив m_rgpPlayerItems.


Временная зона GMT. Текущее время 20:13. Страницы (2): [1] 2 »
Показать все 23 сообщений этой темы на одной странице

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