HLFX.Ru Forum
Показать все 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


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

Цитата:
PLut писал:
а на клиенте читаешь индекс и пишешь к нему любое описание, название и т.д.

Именно поэтому я в первую очередь избавился от дурацкого халфовского тимплея с передачей имён команд на клиент и мессаг TeamInfo и TeamNames. Хотя вторую думаю вернуть, чтобы дать мапперам возможность называть команды произвольными именами. Я об этой фиче знал конечно, и видел, как её можно использовать в халфе, но в дезматче просто не будет о неё пользы. Реальную её пользу увидел, когда накачал кастомных карт для TFC. Там были уже не просто Red и Blue, а всякие Defenders и Attackers, Renegates и Guerillas, в общем прикольно. Хочу замутить загрузчик кастомных титров, чтобы к карте можно было прикладывать локализованные версии таких названий. Только вот слать их придётся клиенту как и MOTD, целиком в мессаге, чтобы нехорошие личности на стороне клиента не могли подменить

Добавлено 13-05-2015 в 01:31:

Ну или как вариант, юзать PRECACHE_GENERIC для этих текстовиков, чтоб клиенту закачивалась актуальная версия файла с сервера.

Добавлено 13-05-2015 в 01:33:

З.Ы. тимплей себе ужо запилил, исправил с десяток недочётов. Скоро возьмусь за оружия, а это надолго, если доводить до ума клиентские пушки. Так что демка скорее всего будет в июне. А если с ботами, то ещё позже.


Отправлено Ghoul [BB] 13-05-2015 в 09:04:

Цитата:
Ku2zoff писал:
тимплей себе ужо запилил, исправил с десяток недочётов. Скоро возьмусь за оружия, а это надолго, если доводить до ума клиентские пушки. Так что демка скорее всего будет в июне. А если с ботами, то ещё позже.


Смотрите тама со своими оптимизациями -не повторите печальный опыт Xwider'a. Дооптимизировался до вылетов на ровном месте и практически полной потерей совмеsteamости.


Кстати, что в твоем понимании значат боты? Сам писать будешь "хороших" или заюзаешь доступные исходники ?

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 13-05-2015 в 13:34:

Цитата:
Ghoul [BB] писал:
Кстати, что в твоем понимании значат боты? Сам писать будешь "хороших" или заюзаешь доступные исходники ?

Ботов я изначально задумывал именно как ботов для мульта. Но тут недавно придумал хитрый план: если у меня получится сделать нормальный кооп с чейнджлевелом относительно лэндмарка, без использования info_player_coop (хочу переход между уровнями как в l4d), то унаследую от ботов новый тип монстров. Запрещу им отображаться в таблице счёта и буду регулировать их численность, спавнить новых только после смерти старых, чтобы не заполнить лимит в 32 игрока. И юзать хотя бы в качестве противников-людей, чтоб опаснее были. Прочие будут обычными монстрами. Надо только будет решить проблему с балансом игроков, ввести какой-то максимум для реальных клиентов, например 8 (по кол-ву классов), 9-ый слот игрока зарезервирую под HLTV Proxy и запрещу обычным игрокам коннектиться при заполнении этого лимита в 9 игроков. Т.о. останется 22-23 слота для продвинутых монстров, что вполне нормально.

Писать ботов я сам не буду. Возьму паработов, у них прекрасная навигация. Если разберусь в коде товарища ~X~, то что-нибудь полезное возьму из его ботов.

Цитата:
Ghoul [BB] писал:
Смотрите тама со своими оптимизациями -не повторите печальный опыт Xwider'a. Дооптимизировался до вылетов на ровном месте и практически полной потерей совмеsteamости.

Да не, я аккуратно ковыряю.


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

Обсуждение графона и остальных аспектов прогресса игр вынесено в отдельную тему:
http://hlfx.ru/forum/showthread.php?s=&threadid=4602

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 19:35.
Показать все 19 сообщений этой темы на одной странице

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