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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Как разделить боезапас глока и мп5? (https://hlfx.ru/forum/showthread.php?threadid=4601)


Отправлено Madara88 12-05-2015 в 14:30:

Half-Life Как разделить боезапас глока и мп5?

Всем привет, у меня собственно такая дилема.
Я хочу, чтобы патроны к глоку и к автомату мп5 в первой хл были раздельными. Чтобы у глока был свой калибр, у мп5 свой (у меня вместо мп5 стоит М16А2). Как их разделить?


Отправлено ***FantoM*** 12-05-2015 в 14:39:

тебе сюда
http://hlfx.ru/forum/showthread.php?threadid=688


Отправлено Ku2zoff 12-05-2015 в 14:48:

***FantoM*** неа, не туда. Там описывается новый тип пуль. А патроны всё те же у револьвера остаются, 357-ые. Чтобы сменить тип патронов, нужно в функции

C++ Source Code:
int CMP5::GetItemInfo(ItemInfo *p)


написать в строке

C++ Source Code:
p->pszAmmo1 = "9mm";


свои патроны, например

C++ Source Code:
p->pszAmmo1 = "5_56x45mm";


Добавлено 12-05-2015 в 20:48:

И исправить все проверки в коде этого оружия. Например, там есть мерзкая штука:

C++ Source Code:
1
void CMP5::Reload( void )
2
{
3
  if ( m_pPlayer->ammo_9mm <= 0 )
4
    return;
5
 
6
  DefaultReload( MP5_MAX_CLIP, MP5_RELOAD, 1.5 );
7
}


Которую надо поменять на православную:

C++ Source Code:
1
void CMP5::Reload( void )
2
{
3
  if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )
4
    return;
5
 
6
  DefaultReload( MP5_MAX_CLIP, MP5_RELOAD, 1.5 );
7
}


Отправлено XaeroX 12-05-2015 в 15:44:

Цитата:
Ku2zoff писал:
Которую надо поменять на православную:

Православие плохо сочетается со свободой и демократией. Ну, то есть, с предиктингом. Для предиктинга ещё придётся немного повозиться с передачей инвентаря на клиент.

__________________

xaerox on Vivino


Отправлено Ku2zoff 12-05-2015 в 16:12:

XaeroX я тут пришёл к выводу, что клиентские пушки не нужны. В текущей реализации точно. Здесь либо переписывать систему, либо отказаться от неё вообще. Взять хотя бы вот эту самую передачу патронов на клиент: патроны передаются, но не весь функционал доделан, перезарядка, к примеру, всё равно серверная. А говнокод с переключением пушек? Ведь в hl_weapons.cpp присутствуют и CBasePlayer::SelectItem и CBasePlayer::SelectLastItem, только они не используются. Как я с этим делом не воевал, не получилось устранить мигание при работающей анимации holster.


Отправлено XaeroX 12-05-2015 в 16:19:

Цитата:
Ku2zoff писал:
не весь функционал доделан, перезарядка, к примеру, всё равно серверная.

Ну доделай. Визуальный лаг в перезарядке не так критичен, как при стрельбе.
Цитата:
Ku2zoff писал:
клиентские пушки не нужны

В сингле и при игре по гигабитной локалке - безусловно. А вот по инету - ещё как нужны.

__________________

xaerox on Vivino


Отправлено Ku2zoff 12-05-2015 в 16:37:

Цитата:
XaeroX писал:
Ну доделай.

Энтварсов вроде бы достаточно для передачи всех параметров... Но как-то не охота их юзать. Но ведь другого быстрого способа передачи нет?

Добавлено 12-05-2015 в 22:37:

Цитата:
XaeroX писал:
А вот по инету - ещё как нужны.

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


Отправлено XaeroX 12-05-2015 в 16:37:

Да, через дельту самый эффективный.
Правда, разрабы халфы чудаки - насоздавали кучи iuser-ов и сами же почти все их выюзали. Хотя имея сорцы движка, могли и отдельные переменные создать. Ну, торопились, наверное.

__________________

xaerox on Vivino


Отправлено Ku2zoff 12-05-2015 в 17:09:

Цитата:
XaeroX писал:
насоздавали кучи iuser-ов и сами же почти все их выюзали.

И стали юзать vuser-ы. Вузеры для передачи векторов, а не интеджеров. Но каждый из 3х компонетов вектора - флоат, так что можно их тоже юзать
Цитата:
XaeroX писал:
Хотя имея сорцы движка, могли и отдельные переменные создать.

Меня всегда огорчало, что нельзя добавить собственные переменные в дельту. Для оружий, я считаю, нужна вообще отдельная структура. И она есть (weapon_data_t). Но почему-то всё продублировано через энтварсы игрока.

Добавлено 12-05-2015 в 23:00:

А стоп, не дублировано. У игрока - специфические переменные игрока. Почему бы не передавать патроны в weapon_data_t? Тогда можно будет выкинуть TabulateAmmo и отвязать патроны от игрока. И освободить вузеры и фузеры. Которые очень жалко тратить на пушки. Вот, к примеру, я заюзал iuser3 для ползания, как и авторы DoD. А fuser1 хочу заюзать под стамину.

Добавлено 12-05-2015 в 23:08:

Ох, ну как же выкинуть TabulateAmmo, если эта функция индексирует патроны! Чтобы передавать их как интеджеры.

Добавлено 12-05-2015 в 23:09:

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


Отправлено Superuser8 12-05-2015 в 17:14:

Ku2zoff интересно было бы почитать про такое.

[offtop] Да и вообще про оптимизацию мультиплеера [/offtop]


Отправлено XaeroX 12-05-2015 в 17:29:

Цитата:
Ku2zoff писал:
Меня всегда огорчало, что нельзя добавить собственные переменные в дельту.

Можно. Но только в том случае, если они учтены в коде дельты в движке. То есть совсем-совсем собственные нельзя, да.
Цитата:
Ku2zoff писал:
weapon_data_t

Ну вот в волатиле и будет всё по уму сделано. Тем более что мы, в отличие от вальвы, никуда не торопимся. У нас с вами впереди целая вечность, ну лет 30-40 точно есть в запасе.

__________________

xaerox on Vivino


Отправлено Madara88 12-05-2015 в 17:38:

Цитата:
Ku2zoff писал:
Которую надо поменять на православную:

Вот как раз я с ней и мучался!
Спасибо большое =)


Отправлено Ku2zoff 12-05-2015 в 17:46:

Цитата:
XaeroX писал:
если они учтены в коде дельты в движке. То есть совсем-совсем собственные нельзя, да.

Ну так я об этом и говорю. Да ладно с ними, с именами. Проблема в количестве. Что если их все переюзать? На пользовательские мессаги и эвенты переходить?
У меня пока ровно одна причина не отказываться от клиентских пушек. Так как разброс пуль и размер прицела я меняю динамически, в зависимости от скорости игрока (не путать с КС, там это дело зависит от порога скорости, т.е. после превышения определённых значений прицел увеличивается, у меня же он пропорционален скорости), то мне нужно этот размер прицела передавать как-то на клиент. Ни энтварсы, ни пользовательская мессага не дают нужного результата: у нелокального игрока прицел изменяет размер не плавно, а с подёргиваниями. Боюсь, что при высоком пинге будет вообще ад. Поэтому я завёл клиентское зеркало для рассчёта размера прицела. Оно работает для КЛИЕНТСКИХ пушек, поэтому даёт всегда плавный результат для любого игрока.


Отправлено XaeroX 12-05-2015 в 18:06:

Ku2zoff
Клиентский расчёт визуального прицела - это нормальная практика. А то, что он на сервере рывками - это не заметно, он же только в функциях трейса используется.

__________________

xaerox on Vivino


Отправлено PLut 12-05-2015 в 18:40:

Ku2zoff Твой месседж мне напомнил о том, что в бдефе я много мессаг переписал, потому что более половины того, что я передавал на клиент, можно было запросто считать на клиенте. Например, инвентарь: передаешь индекс предмета и пару параметров, а на клиенте читаешь индекс и пишешь к нему любое описание, название и т.д. Так же и поинты защиты у меня считались как защита с шлема и брони и я передавал конечное число на клиент, а потом я подумал, зачем это передавать, если я и так на клиенте знаю защиту брони и шлема. Минус 4 лишних байта в мессаге.

__________________
Base Defense on Steam, ModDB


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

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