![]() |
Показать все 45 сообщений этой темы на одной странице |
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=4636)
Вопросы по коду
Всем добрый день
Накопилось несколько вопросов по коду (добавляю потом ещё):
1) где можно (и можно ли) установить pev->renderfx для v_ и p_ моделек? (Хочется поставить glowshell). У меня получилось сделать glowshell у монстров и итемов на полу
2) куда добавить новые поля монстрам и игрокам? (К примеру в entvars или CBaseMonster) Надо добавить уровень и XP
Спасибо
1) Да, можно. Применять его надо в вьюмодели на клиенте.
Например, скопировать с игрока вот так:
1 | void V_CalcGunAngle ( struct ref_params_s *pparams ) |
2 | { |
3 | cl_entity_t *viewent; |
4 |
5 | viewent = gEngfuncs.GetViewModel(); |
6 | if ( !viewent ) |
7 | return; |
8 |
9 | // ...оригинальный код... |
10 |
11 | //add renderfx |
12 | cl_entity_t *ent = gEngfuncs.GetLocalPlayer(); |
13 | if (ent) |
14 | { |
15 | viewent->curstate.renderfx = ent->curstate.renderfx; |
16 | viewent->curstate.renderamt = ent->curstate.renderamt; |
17 | viewent->curstate.rendercolor.r = ent->curstate.rendercolor.r; |
18 | viewent->curstate.rendercolor.g = ent->curstate.rendercolor.g; |
19 | viewent->curstate.rendercolor.b = ent->curstate.rendercolor.b; |
20 | } |
21 | } |
у вьюмодели получилось установить эффект.
а как быть с p_ моделькой? та которая отображается в руках у других игроков?
Добавлено 18-07-2015 в 00:55:
вопрос по хаду:
я создал VGUI менюшку, хочу для примера вывести туда хп игрока (мультиплеер), как получить указатель на entvars игрока (если он вообще есть на клиенте)? пробовал через gEngfuncs.GetLocalPlayer()->curstate.health, но там 0
1 | int CStudioModelRenderer::StudioDrawPlayer( int flags, entity_state_t *pplayer ) |
2 | { |
3 |
4 | // код-код-код |
5 |
6 | if (pplayer->weaponmodel) |
7 | { |
8 | cl_entity_t saveent = *m_pCurrentEntity; |
9 |
10 | model_t *pweaponmodel = IEngineStudio.GetModelByIndex( pplayer->weaponmodel ); |
11 |
12 | m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata (pweaponmodel); |
13 | IEngineStudio.StudioSetHeader( m_pStudioHeader ); |
14 |
15 | StudioMergeBones( pweaponmodel ); |
16 |
17 | IEngineStudio.StudioSetupLighting (&lighting); |
18 |
19 | [color=orange][b]StudioRenderModel( );[/b][/color] |
20 |
21 | StudioCalcAttachments( ); |
22 |
23 | *m_pCurrentEntity = saveent; |
24 | } |
25 |
26 | // код-код-код |
27 |
28 | } |
m_pCurrentEntity->curstate.renderfx = pplayer->renderfx; |
m_pCurrentEntity->curstate.renderamt = pplayer->renderamt; |
m_pCurrentEntity->curstate.rendercolor.r = pplayer->rendercolor.r; |
m_pCurrentEntity->curstate.rendercolor.g = pplayer->rendercolor.g; |
m_pCurrentEntity->curstate.rendercolor.b = pplayer->rendercolor.b; |
Пора уже давно избавиться от говноедства в виде передачи здоровья и батареек через ж...мессаги. Вальва ж нам дельты дала. Вот и заполняйте их...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
ок, спасибо за разъяснения
>Вальва ж нам дельты дала
>упаковка энтитией
>дельты
буду признателен если подскажете где почитать про эти вещи (можно на английском). Сам ничего не нагуглил
demoth
Файл "NetworkEntity.doc" в Half-Life SDK.
Если у тебя его нет, могу выложить.
XaeroX,
есть)
В двух словах, "дельта" (да, из математики пошло) - это каждый кадр просчёт разницы между состояниями одной структуры данных и пересылки разницы адресатам. Поскольку во всех entity_state/clientdata (или как их там) есть health, то лучше здоровье передевать через них, а не городить MESSAGE_BEGIN() как было в ХЛ 1015. Я у себя в XDM это запилил и оно работает. Сэкономило мне парочку message index-ов и избавило от шелухи в виде отдельных пакетов с их заголовками, обёртками, задержками, порядками... В общем, чего и вам желаю
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
У тебя каждый кадр посылается один бит информации "поле health не изменилось". Каждый кадр, Карл! Так уж устроена дельта.
А т.к. health меняется относительно редко, то не логичнее ли посылать его именно отдельной мессагой? Вот и в Valve так рассудили.
да, после такого чтива не поспишь..
допустим хочу видеть какое то кастомное поле в окошке
1) я добавляю в какую то из этих сущностей поле
clientdata_t ( в эту скорее всего да?)
entity_state_t
entity_state_player_t
custom_entity_state_t
2) добавляю необходумую дельту в delta.lst
3) как то манипулирую новым полем на сервере
4) основной вопрос - как и на что мне надо получить указатель в соответсвующем Update() окошка чтобы увидеть новое поле (допустим у локального игрока)?
Не понел. Разве не посылается ли delta в момент, когда она изменилась, а не во время каждого кадра? Например, добавил я в дельту pev->iuser4. Теперь оно каждый кадр отправляться будет что ли, даже если оно меняется раз в 3 секунды? Может ли быть, что оно не дошло до клиента?
И ещё. Попробовал я в моде убрать все клиентские события выстрелов оружия и собрал все сообщения MESSAGE в одну. Там же отправляется аж 3 сообщения при выстреле (анимация оружия, TE_bounceshell и количество патронов). Может ли быть, что это окончательно не дойдёт до клиента?
XaeroX
А что лучше. events или ненадёжная мессага в плане оптимизации? Ведь всё равно же проиграется ли на клиенте анимация или нет.
ILZM
Эвенты тоже ненадёжные, если не указан флаг FEV_RELIABLE.
Главное отличие от мессаг в том, что они могут предиктиться на клиенте, и в этом случае будут проиграны даже в случае, если потеряются по дороге.
~ X ~
>Вальва ж нам дельты дала
XaeroX
>В них ничего нельзя добавлять[в enitity_state]
не соединяются у меня эти стейтменты, зачем мне дельты если максимум что я могу сделать это использовать 2 - 3 незанятых user поля?
в общем можно параметры, которые не очень часто меняются, передавать сообщениями, для остальных - юзеры.
посмотреть бы код бейз дефенса...
если не трудно - подскажите какую энтити использовать? а то в проекте несколько структур с user полями
demoth
Это всё одна структура, entity_state_t.
Остальные - её оверрайды, например, для игрока или для кастом-энтити (с флагом FL_CUSTOM).
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
demoth Спроси что тебя конкретно интересует в бдефе и я тебе расскажу
__________________
Base Defense on Steam, ModDB
Что такое бдеф?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
бдеф - base defence
да все фичи оттуда интересны)
если конкретно
1) как всё таки посылаются новые статы (деньги, опыт, уровень)
2) как сделать чтобы появившиеся монстры сразу охотились за игроком
3) каким образом реализованы скилы
4) инвентарь
кстати линукс версии так и не вышло?
demoth
1. Через vuser. Туда я с горяча засунул информацию, которая не так часто обновляется, буду переделывать потом.
2. Этого у меня нет. Они могут найти игрока только если его видели хоть раз.
3. Функция UsePlayerSkill проверяет класс и переменную m_iCurrentSkill, в зависимости от них при вызове и активирует скилл, но там тонкости есть, ибо ауры сделаны отдельно и пассивки тоже. Пассивки активируются там где тебе нужно (например увеличение урона при каждом попадании в монстра).
4. Инвентарь сделан по тутору для хл2, оттуда брал проверку наличия места в инвентаре при подъеме шмотки. У меня получилось 3 структуры, состоящие из информации (айди шмотки, тип, защита, 3 параметра) и так для 11-ти вроде слотов (0, 1, 2, 3 - эквипы на игрока и остальные 8 - сам инвентарь). Почему три структуры: первая серверная для игрока, вторая серверная для вещей и третья клиентская для игрока. Вещи имеют свой полноценный инвентарь, можно сказать, а сделано это для возможности паковать все вещи из инвентаря при смерти в рюкзак, который дропается, чтобы поднять при респауне. При манипуляциях любых с вещами мы отправляем мессагу на клиент, состоящую из всех параметров шмотки, перечисленных выше, и слота, в который мы все это будем заносить/обновлять. Когда мы одеваем новую шмотку взамен старой, то в коде это выглядит просто как сохранение шмотки из первого слота в буфер, копируем в первый слот содержимое второго слота, после этого из буфера копируется шмотка из первого слота во второй. С клиента, графической оболочки идут команды такого типа: moveitem "slot1" "slot2", dropitem "slot1", upgradeitem "slot1" и т. д.
С линуксом не дружу. Однако, друг запускал на линуксе и мы успешно играли по сети. Вайн что ли, не знаю, он разбирается в этом, а я нет. Факт есть фактом, что играли по сети без каких-либо проблем.
__________________
Base Defense on Steam, ModDB
PLut
круто, я подумаю над этим
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ А как это "как в дыусэксе"?
__________________
Base Defense on Steam, ModDB
PLut
Неужели даже мой фотоотчёт не пробудил интерес к игре?
XaeroX Я его не видел
__________________
Base Defense on Steam, ModDB
XaeroX В Дьябло тоже такой инвентарь, где вещи могут занимать несколько клеток. Про фотоотчет я слышал, но его сам не видел.
~ X ~ В бдефе 1 клетка - 1 шмотка. Учитывая, что я гоняюсь за разрешением 640х480, то не могу я создавать огромные окна с кучей информации и одновременно держать общий стиль этих окон. Всё просто и минималистично.
__________________
Base Defense on Steam, ModDB
PLut deus ex работал в 640*480. Не в этом суть... ох, щи- эти скрины... мои глаза +_+
Я не знаю, что хуже - спецназовцы с крыльями или понитреды...
Добавлено 27-07-2015 в 03:41:
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
даауж. суда по недавней беседе у кое-кого от них знатно бомбануло...
__________________
http://www.moddb.com/mods/monorail-quest
__________________
ㅤ
Cybermax тебя лишают увлекательнейшего квеста "распихай или уйди ни с чем"! %)
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ ...или ониме (против которого, кстати, я ничего не имею).
thambs Порой у меня у самого полыхает от реакции людей на них.
Нет, ну вот правда, ангелы с мечами это норм, а с мп5 - ТАКОГО НЕ МОЖЕТ БЫТЬ.
Бдеф как бы и есть слияние пришельцев, современного вооружения и старой магии, учений. Таков игровой мир, каша со вкусом.
Как бы из-за отсутствия моделей люди порой бросают разработку и идут в падик бухать. Я просто нашел оригинальное решение проблемы и продолжил дело.
__________________
Base Defense on Steam, ModDB
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Временная зона GMT. Текущее время 05:22. | Показать все 45 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024