HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Как разделить боезапас глока и мп5?
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Madara88
Новичок

Дата регистрации: May 2015
Проживает: Мухосранск
Сообщений: 18

Рейтинг



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

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

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

Старое сообщение 12-05-2015 14:30
- За что?
***FantoM***
Житель форума

Дата регистрации: Nov 2014
Проживает: Да
Сообщений: 392

Рейтинг



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

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

Старое сообщение 12-05-2015 14:39
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



***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
}

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

Старое сообщение 12-05-2015 14:48
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35046
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

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

__________________

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

Старое сообщение 12-05-2015 15:44
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



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

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

Старое сообщение 12-05-2015 16:12
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35046
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

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

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

__________________

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

Старое сообщение 12-05-2015 16:19
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



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

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

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

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

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

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

Старое сообщение 12-05-2015 16:37
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35046
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

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

Старое сообщение 12-05-2015 16:37
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
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 игрока, потому что при переключении пушки она наверное будет обнуляться.

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

Старое сообщение 12-05-2015 17:09
- За что?
Superuser8
Частый гость

Дата регистрации: Mar 2015
Проживает: Тюмень
Сообщений: 84
Возраст: 29

Рейтинг



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

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

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

Старое сообщение 12-05-2015 17:14
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35046
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

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

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

__________________

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

Старое сообщение 12-05-2015 17:29
-
Madara88
Новичок

Дата регистрации: May 2015
Проживает: Мухосранск
Сообщений: 18

Рейтинг



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

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

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

Старое сообщение 12-05-2015 17:38
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



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

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

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

Старое сообщение 12-05-2015 17:46
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35046
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

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

Старое сообщение 12-05-2015 18:06
-
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 31

Рейтинг



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

__________________
Base Defense on Steam, ModDB

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

Старое сообщение 12-05-2015 18:40
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 03:08. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Как разделить боезапас глока и мп5?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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