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

Дата регистрации: Mar 2012
Проживает: (void)
Сообщений: 36

Рейтинг



(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
}

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

Старое сообщение 26-03-2013 22:06
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


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

А это что?

__________________

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

Старое сообщение 27-03-2013 03:51
-
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



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

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


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

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

Старое сообщение 27-03-2013 09:28
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


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

__________________

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

Старое сообщение 27-03-2013 10:16
-
Andrei
Частый гость

Дата регистрации: Mar 2012
Проживает: (void)
Сообщений: 36

Рейтинг



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

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

Старое сообщение 27-03-2013 14:19
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

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

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

Старое сообщение 27-03-2013 16:11
-
 XaeroX
Crystice Softworks

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

Рейтинг



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


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

__________________

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

Старое сообщение 27-03-2013 16:37
-
Andrei
Частый гость

Дата регистрации: Mar 2012
Проживает: (void)
Сообщений: 36

Рейтинг



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

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

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

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

Старое сообщение 27-03-2013 17:35
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

Что мешает?

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

Старое сообщение 27-03-2013 18:10
-
Andrei
Частый гость

Дата регистрации: Mar 2012
Проживает: (void)
Сообщений: 36

Рейтинг



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

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
}

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

Старое сообщение 27-03-2013 18:19
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

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

Старое сообщение 27-03-2013 18:38
-
Andrei
Частый гость

Дата регистрации: Mar 2012
Проживает: (void)
Сообщений: 36

Рейтинг



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

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
}

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

Старое сообщение 27-03-2013 19:14
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

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

Старое сообщение 27-03-2013 19:19
-
Andrei
Частый гость

Дата регистрации: Mar 2012
Проживает: (void)
Сообщений: 36

Рейтинг



Да,именно так. Я знаю,что это не верно. Поэтому мне по сути нужен эдикт,с которого я получу 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 какая-то проблема с этим эдиктом.


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

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

Старое сообщение 27-03-2013 19:26
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



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

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

Старое сообщение 27-03-2013 20:41
-
Тема: (Опционально)
Ваш ответ:



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


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

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

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

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

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

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