Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 27 апр 2024, 10:28

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: SV_Multicast
СообщениеДобавлено: 08 мар 2014, 19:20 
Не в сети
Зарегистрирован:
09 апр 2013, 19:15
Последнее посещение:
17 июл 2023, 18:44
Сообщения: 150
Откуда: Томск-7
Добрый вечер!
Меня интересует данная функция, SV_Multicast.
Умеет ли эта функция посылать данные одному игроку?

Имеется перехваченная функция в которой по стандарту посылаются месседжи MSG_*
и в конец функции вызывается SV_Multicast.
Не имея представления и ассемблер мало дал понять, что делает данная функция, но как выяснилось в этой функции идет цикл всех игроков и отправляет данные.
Как послать всё одному игроку ?

Спасибо.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 08 мар 2014, 20:02 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
22 апр 2024, 13:24
Сообщения: 6867
Привет.
А чем engfunc(EngFunc_MessageBegin,MSG_ONE не устроил?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 08 мар 2014, 20:11 
Не в сети
Зарегистрирован:
09 апр 2013, 19:15
Последнее посещение:
17 июл 2023, 18:44
Сообщения: 150
Откуда: Томск-7
расскажу всю ситуацию)
мне требуется воспроизвести emit_sound для одного игрока.

перехватываю SV_BuildSoundMsg.

Код:
void SV_BuildSoundMsg(edict_t *pEdict,int channel,const char *sample,float volume,float attn,int flags,int pitch,const float *pOrigin,sizebuf_t *buf)
{
   int soundIndex;
   int playerIndex;

   soundIndex = Config->SV_LookupSoundIndex(sample);
   playerIndex = ENTINDEX(pEdict);

   Config->MSG_WriteByte(buf,SVC_SOUND);
   Config->MSG_StartBitWriting(buf);
   Config->MSG_WriteBits(0,9);            //flags
   Config->MSG_WriteBits(channel,3);         //channel
   Config->MSG_WriteBits(playerIndex,11);         // player index
   Config->MSG_WriteBits(soundIndex,8);         // sound index
   Config->MSG_WriteBitVec3Coord(pEdict->v.origin);   // origin
   Config->MSG_EndBitWriting(buf);

   Config->SV_Multicast_f(pEdict,pEdict->v.origin,4,0);
   //SV_Multicast(edict_t *pEdict,vec3_t pOrigin,int flags,int singleplayer)
}

в данном случае без SV_Multicast_f не обойтись звука попросту не будет, очень нуждаюсь послать именно одному игроку не важно какому.




p.s понял что вместо buf нужно отправлять буфер игрока, cl->netchan.message.
получить client_t вроде можно через svs
но беда, я не могу найти svs на винде(((


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 08 мар 2014, 22:45 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
22 апр 2024, 13:24
Сообщения: 6867
А pfnBuildSoundMsg не подошло?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 08 мар 2014, 22:46 
Не в сети
Зарегистрирован:
09 апр 2013, 19:15
Последнее посещение:
17 июл 2023, 18:44
Сообщения: 150
Откуда: Томск-7
хм pfnBuildSoundMsg вроде как косячный, что не поставишь будет всегда svc_bad


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 08 мар 2014, 23:43 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
22 апр 2024, 13:24
Сообщения: 6867
Судя по почти прямой передаче параметров в SV_StartSound, должно быть возможно нормальное использование. И при этом передача будет на одного игрока.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 08 мар 2014, 23:52 
Не в сети
Зарегистрирован:
09 апр 2013, 19:15
Последнее посещение:
17 июл 2023, 18:44
Сообщения: 150
Откуда: Томск-7
Да там есть только одна возможность, игнорировать pEdict
SV_StartSound(int type,edict_t *pEdict,.....)
type = 1, будет игнорировать звук для pEdict, окружающие слышат.
А вот с точностью наоборот нету.

 "декомпил engine_i486.so"


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 09 мар 2014, 02:35 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
22 апр 2024, 13:24
Сообщения: 6867
Спасибо, интересная задачка была.
Код:
   new Float:origin[3];
   pev(id, pev_origin, origin);
   engfunc(EngFunc_BuildSoundMsg, 0, CHAN_WEAPON, "items/9mmclip1.wav", 255.0, ATTN_NORM, 0, PITCH_NORM, MSG_ONE, SVC_NOP, origin, id);


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 09 мар 2014, 04:23 
Не в сети
Аватара пользователя
Зарегистрирован:
06 июн 2010, 16:53
Последнее посещение:
09 апр 2024, 17:07
Сообщения: 1143
Откуда: Владивосток
s1lent
Надеюсь Льва и наш форум при следующем релизе WHBlocker-а [opengl + ESP] не забудешь упомянуть в кредитсах? :D

_________________
Изображение
Vi Veri Veniversum Vivus Vici


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: SV_Multicast
СообщениеДобавлено: 09 мар 2014, 11:27 
Не в сети
Зарегистрирован:
09 апр 2013, 19:15
Последнее посещение:
17 июл 2023, 18:44
Сообщения: 150
Откуда: Томск-7
Lev
бесценная благодарность.

KORD_12.7
да не вопрос, как я уже писал, что нуждаюсь в любой помощи :roll:


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB