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

Дата регистрации: Jul 2011
Проживает: г. Киев
Сообщений: 13
Возраст: 30

Рейтинг



Нужна помощь в дороботке backweapons

Для контри на amxx есть мод backweapons(модели оружия на спине), вот решил я сделать в своем моде подобную фичу.

В общем я все cделал, все работает отлично но только когда я один на сервере)), если на сервере больше одного игрока возникает такая проблема, допустим у меня и в другого игрока есть ak47, в обоих игроков модель ak47 отображается на спине, но если один из игроков вибросит ak47 то модель исчезает в обоих игроков.

Как решить эту проблему?

Все изменения делал в: CStudioModelRenderer::StudioDrawPlayer и на сервере в каждую пушку добавил кеширование модели b_назание_пушки.mdl

C++ Source Code:
1
char PModelname[24];
2
char WeapName[24];
3
WEAPON *p;
4
 
5
for (int i = MAX_WEAPONS-1; i > 0; i-- )
6
{
7
  p = gWR.GetWeapon(i);
8
  if ( gHUD.m_iWeaponBits & ( 1 << p->iId ) )
9
  {
10
 
11
    for (int i1=0; i1<20; ++i1)
12
    {
13
      if(pweaponmodel->name[9+i1]=='.' )
14
      {
15
        PModelname[i1] = '\0';
16
      }
17
      else
18
      {
19
        PModelname[i1] = pweaponmodel->name[9+i1];
20
      }
21
      WeapName[i1] = p->szName[7+i1];
22
    }
23
    if( p->iId ==6 || p->iId ==5 || p->iId ==3 || p->iId == 4)
24
    {
25
      char modname[24] = {"models/b_"};
26
      strcat(modname, WeapName);
27
      strcat(modname, ".mdl\0");
28
 
29
 
30
      bweaponmodel[i] = IEngineStudio.Mod_ForName(modname,1);
31
 
32
      if(strcmp(WeapName,PModelname))
33
      {
34
        m_bStudioHeader[i] = (studiohdr_t *)IEngineStudio.Mod_Extradata (bweaponmodel[i]);
35
 
36
        IEngineStudio.StudioSetHeader( m_bStudioHeader[i] );
37
        StudioMergeBones( bweaponmodel[i]);
38
        IEngineStudio.StudioSetupLighting (&lighting);
39
        StudioRenderModel( );
40
        StudioCalcAttachments( );
41
        *m_pCurrentEntity = saveent;
42
      }
43
    }
44
  }
45
 
46
};
47
 

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

Старое сообщение 30-01-2013 21:39
- За что?
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 24

Рейтинг



а ты не думал,что gHUD.m_iWeaponBits и вообще весь класс худа(включая аммо.цпп) это чисто клиентские фишки,а амхх - серверный мод? Вобщем тебе либо нужно взять pev->weapons на клиенте из энтитии игрока которого рисуешь (вроде как так нельзя сделать, не помню), либо отослать все оружия, т.е 4 байта(1 WRITE_LONG) для каждого клиента каждому клиенту с этим самым pev->weapons ну и конечно же выбранное оружие, это аж целых пять байт. можно конечно отослать 1 байт на выбранное оружие, но там уже надо по-другому делать. Ну и соответственно тебе нужно будет смотреть если ли нужное тебе оружие именно у этого игрока, а не у тебя в gHUD или где-то еще в клиентском стаффе.

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

Старое сообщение 31-01-2013 02:05
- За что?
 Дядя Миша
who said meow?

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

Рейтинг



WeaponBits актуальны только для локального игрока. А ты проверяешь их "для себя", а пушки рисуешь "для всех".

__________________
My Projects: download page

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

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

Старое сообщение 31-01-2013 08:14
-
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1515
Возраст: 35

Рейтинг



лучше чисто на сервере атачами сделать.

__________________
vk.com/skullcapstudios

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

Старое сообщение 31-01-2013 09:18
- За что?
 Дядя Миша
who said meow?

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

Рейтинг



Ну да. Создаем энтить с MOVETYPE_FOLLOW, указываем в aiment игрока и всё. Точно также аттачатся флаги в CTF.

__________________
My Projects: download page

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

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

Старое сообщение 31-01-2013 16:44
-
Danger
Новичок

Дата регистрации: Jul 2011
Проживает: г. Киев
Сообщений: 13
Возраст: 30

Рейтинг



Цитата:
HAWK0044 писал:.... отослать все оружия, т.е 4 байта(1 WRITE_LONG) для каждого клиента каждому клиенту с этим самым pev->weapons....


А как получить pev->weapons другого игрока на серевере?

Ещо вопрос в entity_state_s есть переменые iuser1, iuser2 и т.д. В их можно передавать дание ис сервера? если да, то как?

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

Старое сообщение 01-02-2013 22:37
- За что?
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6049
Возраст: 30

Рейтинг



Danger в иузерах 1 и 2 передаются данные для режима наблюдения. Так что их трогать не надо.

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

Старое сообщение 02-02-2013 03:18
- За что?
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1515
Возраст: 35

Рейтинг



Цитата:
Danger писал:
Ещо вопрос в entity_state_s есть переменые iuser1, iuser2 и т.д. В их можно передавать дание ис сервера? если да, то как?

через delta.lst можно расшарить на передачу любой параметр из entvars структуры.

__________________
vk.com/skullcapstudios

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

Старое сообщение 02-02-2013 05:22
- За что?
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 24

Рейтинг



Danger находишь объект класса другова игрока на сервере,например
CBasePlayer *Target = (CBasePlayer*)UTIL_PlayerByIndex(1); естественно по индексу.Ну а далее
Target->pev->weapons .

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

Старое сообщение 02-02-2013 09:10
- За что?
 Дядя Миша
who said meow?

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

Рейтинг



Цитата:
Danger писал:
А как получить pev->weapons другого игрока на серевере?

Странный вопрос. А зачем получать pev->weapons другого игрока?
Всё решается в классе того же игрока без дополнительных проверок просто и изящно. Вы, вместо того, чтобы разобраться как всё устроено уподобляетесь тому чукче, который таскал камаз, прицепив к нему собачью упряжку. Или тому суровому лесорубу, который валил лес бензопилой, а потом ему мужыки сказали, что её завести надо.

__________________
My Projects: download page

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

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

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



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


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

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

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

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

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

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