Страницы (2): [1] 2 » Показать все 18 сообщений этой темы на одной странице |
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=3864)
Способы передачи количества боеприпасов с сервера на клиент
Доброго времени суток!
Дело в том что мне необходимо передать на клиент количество боеприпассов кастомных. но дело в том что у меня все переменные типа vuserN заняты (стандартными значениями). а если не заняты явно, то когда я их использую для описаных целей у меня начинают творится непонятные глюки с анимацией всех оружий. очевидно эти поля использует движок после заполнения переменной с типом clientdata_s на серверной dll.
Насколько я понял, из всех полей структуры clientdata_s наверняка свободно лишь поле iuser4, и то, я еще не проверял, ибо одного поля мне все равно мало, у меня три вида кастомных боеприпасов(+ хотелось бы добавить еще парочку). Я даже добавлял свои поля в эту структуру и все равно анимации глючат правда уже совсем по другому. Теперь у меня не проигрываются анимации выстрела ни на одном из оружий кроме, почемуто, gaussки (гаус стреляет на ура, все остальные оружия хорошо перезаряжаются, есть тряска экрана как надо все вообщем но только нет анимации стрельбы и muzzle flashа (но свет от него есть ))).
Все таки как лучше всего передавать ammo на клиент? Что я могу не правильно делать если другого способа не существует?
Какие поля точно свободны? Может быть можно в int запихать просто два байта (патронов все равно максимум 250 у меня) - в таком случае есть ли какие нибудь аналоги BitConverter`а платформы .NET ну или вообще как тут это делать? (просто я более сведущ в C# нежели в C++)
PS:Если это где-то это обсуждалось - пожалуйста не бейте тяжелыми предметами, я правда честно искал и у вас и в google ничего стоящего кроме неполного мутного описания этих полей не нашел.
Ок глянем! thx
Munky патроны, тащем-то, не обязательно передавать на клиент, если не хранить их в классе игрока и CBaseEntity соответственно. Например, есть у нас патроны ammo_9mm. Они передаются на клиент, чтобы синхронизировать int ammo_9mm в классе игрока на клиенте и на сервере. А есть патроны Hand Grenade. В классе игрока они не записаны и передавать вручную ничего не надо. Это какой-то рудимент от кваки, сохранение патронов в классе игрока. Отличие в том что, например в коде глока проверки на патроны такие:
if ( m_pPlayer->ammo_9mm <= 0 ) |
return; |
if ( !m_flStartThrow && m_pPlayer->m_rgAmmo[ m_iPrimaryAmmoType ] > 0 ) |
Ku2zoff, и вам спасибо за ответ!
Ну тогда это должно получится проще чем я думал.
А насчет разбиения int на байты и наоборот - там несколько другой контекст. там же поля структуры заполняются. там же не напрямую мессага отправляется оттуда. хотя возможно ее отправить откуда то еще. но от надо новую мессагу создавать и ловить ее на клиенте как то, верно?) в любом случае попробую пока просто сменить проверку патронов.)
Еще вопрос возник не по теме не много:
Вот у меня достаточно часто такая операция выполняется что например игрок телепортируется к монстру или например монстр с другим ентити меняются местами через origin. Можно ли запилить какойнить универсальный алгоритм чтобы он принимал желаемые новые координаты энтити а возвращал координаты, переместившись в которые монстр(или кто другой) бы не застрял. Просто может быть уже есть похожие наработки? чтобы мне велосипед не изобретать. К тому же это позволит мне например сделать на картах динамически генерируемых монстров (т.е. не через monstermaker и маппинг а полностью автоматически)
Стандартный алгоритм который просто возвращает BOOL не совсем подходит хотя может быть его можно взять за основу. Мнеж нужно не только узнать застрянет или нет. мне нужно найти подходящие координаты.
хм.. звучит не очень красиво.. но хотя если этим не спамить то лагать/вылетать не должно... Ок. Попробуем. если сделаю сюда залью может кому еще пригодится.
Я кстати просто убрал все что намутил с iuser и все. даже не менял ничего. уже не плохо. ток как то странно импульсный пулемет себя ведет. везде анимации норм но у него вместо стрельбы перезарядка все проверил все норм - почему так не понятно. с моделью сравнил. енумы все перепроверил... странно. И не рисует импульсные трейсеры. Я как бы как сделал. до тех пор пока в клиент полностью не добавил пулемет - стреляло нормально. а как в клиент добавил у меня кастомные трейсеро-имитаторы () пропали. не рисует. если игрок ими стреляет. я сделал клоны FireBulletsPlayer/FireBullets в тот же класс CBaseEntity которые делают тоже самое но вместо месаги о трейсере рисуют (если память не изменяет) тоже месагой но кусок луча с нужной мне текстурой. ну и при попадании в стену там код чутка другой. Вот. это дело я засунул по #if defined(CLIENT_WEAPONS) точнее в ветку else этого условия. ииии... ничего. ничего не рисует. не вижу куда стреляю и чем стреляю. а вот монстры стреляют нормально как и раньше импульсными пулями(что не удивительно). Как свои трейсеры нормально сделать на клиенте в моем случае?
Может мне полностью склонировать FireBullets клиентский так же как и серверный вместо того чтобы совсем эту команду не обрабатывать?
Добавлено 30-03-2013 в 13:49:
я наверно зря сделал if defined сделал. там другой макрос проверять надо. знать бы еще какой.
Munky если ты напишешь код в блоке #ifndef CLIENT_DLL ....... #endif то он будет компилироваться только на сервере. Кстать, у себя в моде я вырезал нафиг клиентские пушки, потому что толку от них почти не заметно даже в игре по сети.
ONeiLL, а я именно этого и хочу . Во всяком случае сейчас. Потому что отрисовывать на клиенте специально мне импульсные трейсеры не нужно на данный момент. Потому что они сервером отправляются клиенту как лучи и без клиентской части работают на ура. Я сделал #ifndef CLIENT_DLL везде где нужно было, сейчас с этим все супер.
Осталось лишь понять почему импульсный пулемет стреляет неправильными анимациями.
__________________
vk.com/skullcapstudios
marikcool с пингом 200 ганял и терпимо. + С клиентскими пухами у меня глушители на ЮСП и М4А1 глючили О_о
Добавлено 30-03-2013 в 21:34:
http://www.youtube.com/watch?featur...&v=636QtNzXU7E#!
4:28 - там глюки с глушаком будут
Супер вопрос: float в мессагах передается WRITE_COORD()? сколько оно байт занимает?
Добавлено 31-03-2013 в 13:55:
Вообщем я регистрирую message через REG_USER_MSG в переменную и у меня в переменной после этого дела остается 0. Чем это может быть вызвано?
Временная зона GMT. Текущее время 15:16. | Страницы (2): [1] 2 » Показать все 18 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024