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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)


Отправлено SNMetamorph 17-04-2021 в 12:31:

Значится, я рисую у энтити их обьем таким вот образом
https://github.com/SNMetamorph/gold...report.cpp#L114
Проблема в том, что у func_tank питч инвертированный получается, хотя у всех остальных энтити всё выглядит нормально и питч такой как надо. Как это решить?
А ещё я заметил, что у некоторых энтити их ориджин находится как бы в центре хулла, а у других он находится в самом низу хулла. Как определить где находится центр для какой-то конкретной энтити? Есть флаг некий для этого?

__________________
GoldSrc Monitor (https://gamebanana.com/gamefiles/8977)
mem2pix (https://github.com/SNMetamorph/mem2pix)
Xash3D Modding Discord (https://discord.com/invite/Ycgd9QqB9z)


Отправлено Crystallize 19-04-2021 в 15:13:

Написал такую штуку и столкнулся с тем что в конце при выводе через printf оба значения по нулям.

C++ Source Code:
1
void GetAngleScaler( float scaler, float scaler1 )
2
{
3
  vec3_t tang, tang1;
4
  if( Length( cl.velocity ) ) GetLocalTangent(tang, tang1);
5
 
6
  Con_Printf( "tang %f tang1 %f\n", tang[1],tang1[1] );
7
  scaler = tang[1] / 90.0f;
8
  scaler1 = tang1[1] / 90.0f;
9
  if( !scaler ) scaler = 1.0f;
10
  if( !scaler1 ) scaler1 = 1.0f;
11
 
12
 
13
  if( cl.viewangles[1] < tang[1] )
14
    scaler = 1.0f / scaler;
15
  if( cl.viewangles[1] < tang1[1] )
16
    scaler1 = 1.0f / scaler1;
17
 
18
  Con_Printf( "GAS sc %f sc1 %f\n", scaler, scaler1 );
19
}
20
 
21
 
22
/*
23
================
24
CL_AdjustAngles
25
 
26
Moves the local angle positions
27
================
28
*/
29
 
30
void CL_AdjustAngles ()
31
{
32
  float	speed;
33
  float	up, down;
34
  static float scaler, scaler1;
35
  vec3_t	plpos, camang, dir;
36
  vec3_t	cmps={0,0,0};
37
 
38
  entity_t	*ent;
39
  ent = &cl_entities[cl.viewentity];
40
  VectorCopy( ent->currentorigin, plpos );
41
 
42
  if (in_speed.state & 1)
43
    speed = host_frametime * cl_anglespeedkey.value;
44
  else
45
    speed = host_frametime;
46
 
47
  GetAngleScaler( scaler, scaler1 );
48
  Con_Printf( "sc %f sc1 %f\n", scaler, scaler1 );


Отправлено SNMetamorph 19-04-2021 в 16:29:

Цитата:
Crystallize писал:
Написал такую штуку и столкнулся с тем что в конце при выводе через printf оба значения по нулям.

C++ Source Code:
1
void GetAngleScaler( float scaler, float scaler1 )
2
{
3
  vec3_t tang, tang1;
4
  if( Length( cl.velocity ) ) GetLocalTangent(tang, tang1);
5
 
6
  Con_Printf( "tang %f tang1 %f\n", tang[1],tang1[1] );
7
  scaler = tang[1] / 90.0f;
8
  scaler1 = tang1[1] / 90.0f;
9
  if( !scaler ) scaler = 1.0f;
10
  if( !scaler1 ) scaler1 = 1.0f;
11
 
12
 
13
  if( cl.viewangles[1] < tang[1] )
14
    scaler = 1.0f / scaler;
15
  if( cl.viewangles[1] < tang1[1] )
16
    scaler1 = 1.0f / scaler1;
17
 
18
  Con_Printf( "GAS sc %f sc1 %f\n", scaler, scaler1 );
19
}
20
 
21
 
22
/*
23
================
24
CL_AdjustAngles
25
 
26
Moves the local angle positions
27
================
28
*/
29
 
30
void CL_AdjustAngles ()
31
{
32
  float	speed;
33
  float	up, down;
34
  static float scaler, scaler1;
35
  vec3_t	plpos, camang, dir;
36
  vec3_t	cmps={0,0,0};
37
 
38
  entity_t	*ent;
39
  ent = &cl_entities[cl.viewentity];
40
  VectorCopy( ent->currentorigin, plpos );
41
 
42
  if (in_speed.state & 1)
43
    speed = host_frametime * cl_anglespeedkey.value;
44
  else
45
    speed = host_frametime;
46
 
47
  GetAngleScaler( scaler, scaler1 );
48
  Con_Printf( "sc %f sc1 %f\n", scaler, scaler1 );

Как я понял, тебе надо в GetAngleScaler передавать ссылки на переменные, а ты передаешь внутрь просто переменные.
То есть обьявление функции должно быть таким:
C++ Source Code:
void GetAngleScaler( float &scaler, float &scaler1 )

__________________
GoldSrc Monitor (https://gamebanana.com/gamefiles/8977)
mem2pix (https://github.com/SNMetamorph/mem2pix)
Xash3D Modding Discord (https://discord.com/invite/Ycgd9QqB9z)


Отправлено Crystallize 19-04-2021 в 17:26:

SNMetamorph он хочет закрывающую скобку перед символом ссылки


Отправлено nemyax 19-04-2021 в 18:47:

Crystallize
Так это сишный файл, наверно. А в сях только указатели и нету неко ких ссылок.


Отправлено Crystallize 20-04-2021 в 01:43:

nemyax а, ну да сишный. Но в чём проблема что оно не работает через простые флоаты?


Отправлено Дядя Миша 20-04-2021 в 06:17:

Причём тут простые флоаты. Тебе надо как-то вернуть значения.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено nemyax 20-04-2021 в 06:49:

Цитата:
Crystallize писал:
в чём проблема что оно не работает через простые флоаты?

Работает, только оно меняет локальные копии переменных в вызванной функции. В вызывающей они как проинициализировались нулями по дефолту, так и сидят на нулях. Кстати зачем ты их объявил статичными?


Отправлено SNMetamorph 20-04-2021 в 14:30:

Цитата:
Crystallize писал:
он хочет закрывающую скобку перед символом ссылки

Через что компилируешь? Попробуй для файла этого сделать расширение .cpp

__________________
GoldSrc Monitor (https://gamebanana.com/gamefiles/8977)
mem2pix (https://github.com/SNMetamorph/mem2pix)
Xash3D Modding Discord (https://discord.com/invite/Ycgd9QqB9z)


Отправлено Дядя Миша 20-04-2021 в 15:32:

Цитата:
SNMetamorph писал:
Попробуй для файла этого сделать расширение .cpp

в данном случае не советую

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено nemyax 20-04-2021 в 16:12:

Нужно просто вот так переписать:

C++ Source Code:
1
void GetAngleScaler( float *out_scaler, float *out_scaler1 )
2
{
3
  float scaler  = *out_scaler;
4
  float scaler1 = *out_scaler1;
5
  /*
6
    оригинальное тело твоей функции
7
    */
8
  *out_scaler  = scaler;
9
  *out_scaler1 = scaler1;
10
}

И соответственно вызывать так:
C++ Source Code:
GetAngleScaler( &scaler, &scaler1 );

Но со статиком непонятно. Ты, похоже, путаешь статические переменные, объявленные внутри функции и снаружы.


Отправлено Crystallize 22-04-2021 в 12:34:

Спасибо всем

Цитата:
nemyax писал:
Работает, только оно меняет локальные копии переменных в вызванной функции. В вызывающей они как проинициализировались нулями по дефолту, так и сидят на нулях. Кстати зачем ты их объявил статичными?

Скомпилить пытался хоть как-то, зачем же ещё. Сейчас уже не помню точно. Когда я код открыл они вообще инициализировались через ={0,0,0}. Так-то я перепишу это место чтобы возвращалось одно значение, из двух там одно по определению ненужное, просто писал реализацию по-быстрому чтобы было от чего плясать.

Цитата:
SNMetamorph писал:
Через что компилируешь? Попробуй для файла этого сделать расширение .cpp

Шестёркой

Цитата:
nemyax писал:
Но со статиком непонятно. Ты, похоже, путаешь статические переменные, объявленные внутри функции и снаружы.

Я с чего-то решил что при указании входных переменных они не просто передаются туда, а у функций аж scope становится общий, ну типа войд волшебный


Отправлено Aynekko 23-04-2021 в 08:29:

Стоит ли в пределах одной комнаты, ну или одного открытого места, объединять кучу func_illusionary или wall в одну энтитю? Если у них свойства совпадают.
Я так понимаю, что один иллюженари/волл считается как "модель" и занимает edict, то лучше делать все, скажем, перила одним func_wall и это будет считаться как один edict? Или func_wall, состоящий из нескольких брашей, все равно как-то разбивается движком?

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 11:00:

Можно детайлами делать, у детайлов есть настройка zhlt_noclip 1
Но конечно если это стёкла, то не получится.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Ku2zoff 23-04-2021 в 12:23:

Aynekko если для таких брашей не нужны рендермоды, то лучше их делать детайлами. В случае с перилами или стёклами - func_wall. Объединять их в одну энтитю можно, но с оговоркой. Если у тебя, грубо говоря, два func_wall в виде букв "L" или "Г", и расположены они так, что один занимает угол напротив другого по диагонали, то если объединить их в одну энтить - пушабли через пустое пространство между ними не катаются. Сталкивался с таким. Возможно, что и монстры могут не ходить.


Отправлено Aynekko 23-04-2021 в 12:49:

Цитата:
Ku2zoff писал:
если для таких брашей не нужны рендермоды, то лучше их делать детайлами.

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

Про пушабли не знал (но я ими и не пользуюсь впрочем). А вот монстры нормально ходят.

Мне главное понять, как edict'ы считаются, стоит ли так заморачиваться или без разницы. По логике, т.к. я уже лазил в коде, у каждого func_wall свой спаун, свои параметры и т.д., каждый инициализируется, поэтому наверное по возможности стоит делать все одной энтитей.

__________________
Мой мод на Xash


Отправлено Ku2zoff 23-04-2021 в 12:55:

Цитата:
Aynekko писал:
Мне главное понять, как edict'ы считаются, стоит ли так заморачиваться или без разницы.

Лимит на эдикты даже в обычной халфе можно поднять до 4096 штук, поэтому это не проблема. Проблема в MAX_MODELS и MAX_MAP_MODELS. Ты же работаешь под ксашем, поэтому забей. Я работаю под голдсорсом, поэтому у меня есть несколько вариантов как эти лимиты экономить. Первый экономится засовыванием нескольких моделей в одну (см. патроны в HLWE), а второй детайлами и внешними BSP-моделями для пушаблей, поездов и для того, для чего не важно освещение.


Отправлено Aynekko 23-04-2021 в 12:59:

Цитата:
Ku2zoff писал:
Проблема в MAX_MODELS и MAX_MAP_MODELS. Ты же работаешь под ксашем, поэтому забей.

Забить не получится, т.к. я уже превышал этот лимит и пришлось перекомпилировать движок. На самой большой карте надо будет пройтись и пообъединять все это дело. Много такой брашевой лабуды, а также env_static'ов. Около 800 "моделей" точно есть на карте.

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 14:09:

Цитата:
Aynekko писал:
т.к. я уже превышал этот лимит и пришлось перекомпилировать движок

лимит до 4096 повышать можно, потом протокол сломается.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 23-04-2021 в 14:44:

Цитата:
Дядя Миша писал:
лимит до 4096 повышать можно

К сожалению, я не думаю, что компиляторы позволят. Ну или я что-то не так делаю. Вот делал тестовую карту - 896 env_static и столько же func_illusionary (стеклянные палки). Light_environment желтый, сами модели белые. Результат вот такой.

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 15:00:

Да, в компиляторх тоже лимит на 1024 модели, их тоже пересобрать бы надо.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 23-04-2021 в 15:35:

Я сейчас поменял MAX_MAP_MODELS в параноевских компиляторах на 2048. Перекомпилил все p2, только вместо p2rad взял hlrad (который в параноевском сдк). Результат остался тот же. p2rad у меня не хочет компилится - у меня шестая визуалка, ругается на

C++ Source Code:
ALIGN16 byte	block[64];
ALIGN16 byte	outBlock[16];

Может как раз в этом дело, что я свет хлрадом считаю, а не p2rad...

С другой стороны, я подсунул p2rad, который уже имелся - все скомпилилось, но со светом проблема так и осталась как на скрине.

__________________
Мой мод на Xash


Отправлено Ku2zoff 23-04-2021 в 15:44:

Цитата:
Aynekko писал:
Я сейчас поменял MAX_MAP_MODELS в параноевских компиляторах на 2048

Перегони часть брашевых моделей в mdl, и ставь на карту как енв_статики. Те, которые не требуют коллизии, например. Причём, в одну модель ты можешь зашить целую кучу бодей таких пропсов.
Однако, жэсть. Чего там можно придумать на карте уровня первой халфы, чтоб вылезти за лимиты?


Отправлено Aynekko 23-04-2021 в 15:57:

Цитата:
Ku2zoff писал:
Перегони часть брашевых моделей в mdl, и ставь на карту как енв_статики. Те, которые не требуют коллизии, например. Причём, в одну модель ты можешь зашить целую кучу бодей таких пропсов.

Да это понятно. Просто на бумаге ксаш поддерживает 4096 моделей, а по факту выставив 1700 "моделей" (850 енв_статик и столько же иллюженари) у моделей просто не считается освещение. Движок запускает - это да.
Цитата:
Ku2zoff писал:
Чего там можно придумать на карте уровня первой халфы, чтоб вылезти за лимиты?

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 17:06:

Aynekko ты используешь повертексное освещение для env_static ?

Добавлено 23-04-2021 в 20:06:

Фонарные столбы это же модельки?

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 23-04-2021 в 17:58:

Цитата:
Дядя Миша писал:
ты используешь повертексное освещение для env_static ?

Да, столбы и горы в этой пещере сделаны через env_static

__________________
Мой мод на Xash


Отправлено Дядя Миша 23-04-2021 в 18:26:

Ну неплохо, мне нравится.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 23-04-2021 в 18:37:

Раз нравится, то вот еще скрин скину. Опять же все скалы моделями накидал (так проще и быстрее, и выглядит имхо лучше). Модели не мои - портировал из NFS Payback

Собственно больше скринов есть по ссылке в подписи, на моддб.

__________________
Мой мод на Xash


Отправлено Aynekko 25-04-2021 в 16:18:

Есть такой баг в халфе, который раздражает - когда идешь по самому краю браша, начинает проигрываться звук ходьбы по-умолчанию - CHAR_TEX_CONCRETE. К примеру если идти по тонкому деревянному брусу, его очень легко словить. Шерстил код, смог добраться только до PM_TraceTexture в самом ксаше, где дальше идет PM_TraceSurface. А тут уже тупик, ибо ничего непонятно (лично мне). Понял я только одно, путем алертов в консоль, что идет трасса ровно из центра игрока вниз. Поэтому ничего и не находится под игроком.
Может кто-нибудь фиксил это?

__________________
Мой мод на Xash


Отправлено Дядя Миша 25-04-2021 в 16:30:

Может быть делать четыре-пять трасс. Одна по центру и 4 по углам ббокса.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 25-04-2021 в 16:32:

Цитата:
Дядя Миша писал:
Может быть делать четыре-пять трасс. Одна по центру и 4 по углам ббокса.

Это была первая мысль, но я решил что она слишком костыльная и быть может есть другой способ. Ну что ж

__________________
Мой мод на Xash


Отправлено Ku2zoff 25-04-2021 в 17:00:

Цитата:
Aynekko писал:
но я решил что она слишком костыльная

Достаточно делать два трейса под левую и правую ногу, вместо одного по центру. Нагрузка на проц не должна сильно вырасти. Даже монстрам можно на современных компах сделать трейс материалов для шагов. Это в 98 году вальва не сделала, наверное, из-за низкой производительности.


Отправлено Дядя Миша 25-04-2021 в 17:09:

Цитата:
Aynekko писал:
но я решил что она слишком костыльная и быть может есть другой способ

игро-зависимый код весь из костылей состоит, это нормально.
Главное чтобы бакэнд был грамотный.

Добавлено 25-04-2021 в 20:08:

Цитата:
Ku2zoff писал:
Достаточно делать два трейса под левую и правую ногу, вместо одного по центру

А не получится. Представь ситуацию, когда игрок стоит краешком спины на тонком браше и двигается боком. И трейсы опять уйдут в пустоту.

Добавлено 25-04-2021 в 20:09:

Цитата:
Ku2zoff писал:
Даже монстрам можно на современных компах сделать трейс материалов для шагов

в ксаш-моде было сделано еще в 2012-м

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено ncuxonaT 25-04-2021 в 17:13:

Из коллизий никак нельзя получить материал пола? Кидание трассы для звука шагов звучит как забивание гвоздей микроскопом.


Отправлено Дядя Миша 25-04-2021 в 17:58:

Цитата:
ncuxonaT писал:
Из коллизий никак нельзя получить материал пола?

так трасса и делается только для модели пола.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 25-04-2021 в 21:54:

В общем все получилось. Сделал проверку сначала центральным трейсом - если там fraction 1 (что случается только на краях браша), то включаются 4 дополнительных трейса по углам хулла. Все сделал внутри PM_CategorizeTextureType. Работает прям как в сорсе, что и хотел.

__________________
Мой мод на Xash


Отправлено KorteZZ 26-04-2021 в 02:39:

В КС 1.6 есть трюк, который довольно сложно исполнить: можно прыгнуть с просто невероятной высоты на краешек браша и не потерять ХП. Также на старых версиях, если поставить бомбу и сидеть неподалеку на стыке текстур и стрелять в них, то после твоей смерти от взрыва, на следующем раунде ты получишь порядка 7К баксов, чего хватает на авапу, фулл армор и раскид. Уже на втором раунде))

__________________

Killing Floor: Horzine Outbreak


Отправлено Aynekko 06-05-2021 в 13:15:

Можно ли как-то визуализировать util_traceline и tracehull? Чтобы видно было, куда и насколько идет трейс. С линией еще как-то обхожусь алертами, а с хуллом как определять?

__________________
Мой мод на Xash


Отправлено Дядя Миша 06-05-2021 в 14:48:

Цитата:
Aynekko писал:
Чтобы видно было, куда и насколько идет трейс

заспавнить какой-нибудь спрайт на месте vecEndPos ?

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 06-05-2021 в 15:18:

Цитата:
Дядя Миша писал:
заспавнить какой-нибудь спрайт на месте vecEndPos ?

UTIL_ParticleEffect помог более-менее

__________________
Мой мод на Xash


Отправлено Ku2zoff 07-05-2021 в 16:51:

Что-то мне гугол не может дать внятного ответа, видимо за давностью лет. Подскажите, кто знает, порядок выхода версий HLSDK. Насколько я понял, сначала была версия под древний движок, несовместимая с современным. А потом сразу, внезапно и резко, как понос, появилась версия с новыми интерфейсами, вгуёвыми менюшками, пердиктингом и прочими радостями жызни. И она три раза патчилась до 2002 или 2003 года. А потом 10 лет была тишина, пока валвэ не решили забубенить собственную консоль на линуксе:
SDK 1.0
SDK 2.0
SDK 2.1
SDK 2.2
SDK 2.3
SDK 2.4 (2.3 с поддержкой линукса и макоси).
Возник закономерный вопрос, а не было ли до версии 2.0 чего-то промежуточного без клиентских пушек, но совместимого с обновлённым движком?


Отправлено Дядя Миша 08-05-2021 в 04:24:

Нет, не было. Оригинальную версию 1.0 сейчас вообще найти невозможно, то есть - это восстановленные сорцы из HL SDK 2.0 Full.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Ku2zoff 08-05-2021 в 04:34:

Цитата:
Дядя Миша писал:
восстановленные сорцы из HL SDK 2.0 Full

Найти SDK 2.0 было той ещё задачей. Фкалекцыю добавил. Пробежался виндиффом, в этой версии из клиентских пушек только глок для теста. Теперь я разгадал загадку, почему в папке wpn_shared только один ствол. Его туда положили при внедрении клиентских оружий, а остальные пушки адаптировали, но оставили на своих местах.


Отправлено Shapirlic 08-05-2021 в 15:28:

Подкиньте компилятор для первой ХЛ который может делать тени сквозь браши с прозрачными текстурами(тень лестницы от браша с текстурой лестницы например)


Отправлено Crystallize 08-05-2021 в 17:12:

по-моему любой из современных должен уметь


Отправлено JPEG 08-05-2021 в 18:05:

Цитата:
Ku2zoff писал:
Найти SDK 2.0 было той ещё задачей. Фкалекцыю добавил. Пробежался виндиффом, в этой версии из клиентских пушек только глок для теста. Теперь я разгадал загадку, почему в папке wpn_shared только один ствол. Его туда положили при внедрении клиентских оружий, а остальные пушки адаптировали, но оставили на своих местах.

по-идее всё доступное хранится тут https://valvearchive.com/archive/Ha...SDK%20Releases/

Добавлено 08-05-2021 в 21:05:

Цитата:
Shapirlic писал:
Подкиньте компилятор для первой ХЛ который может делать тени сквозь браши с прозрачными текстурами(тень лестницы от браша с текстурой лестницы например)

https://www.temaps.com/topics/60

__________________
необычные моды half-life

перехожу на другой двиг


Отправлено Shapirlic 08-05-2021 в 19:04:

Цитата:
JPEG писал:
https://www.temaps.com/topics/60

Спасибо


Отправлено Shapirlic 09-05-2021 в 12:08:

Есть ли способ повысить разрешение лайтмапы локально на каком то участке кроме как скейлить текстуры вниз?


Отправлено Дядя Миша 09-05-2021 в 12:33:

Есть, но это только под Ксашем работает.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 12-05-2021 в 08:00:

Подскажите, никак не могу понять. Как вывести число через UTIL_ShowMessage? Скажем у меня есть float четотам = 1.015. Как ее вывести на экран именно через message? И чтобы с подписью "такое-то равно 1.015".

__________________
Мой мод на Xash


Отправлено Ku2zoff 17-05-2021 в 05:00:

Aynekko:

C++ Source Code:
char msg[64];
sprintf(msg, "Float is: %f", flFloat);
UTIL_ShowMessage(msg, (CBaseEntity*)pPlayer);

Только вот я не уверен, правильно ли это. Может быть, стоит подсовывать первым аргументом UTIL_VarArgs("Float is: %f"\n", flFloat).


Отправлено Aynekko 17-05-2021 в 09:19:

Цитата:
Ku2zoff писал:
Aynekko:
C++ Source Code:
char msg[64];
sprintf(msg, "Float is: %f", flFloat);
UTIL_ShowMessage(msg, (CBaseEntity*)pPlayer);

Только вот я не уверен, правильно ли это. Может быть, стоит подсовывать первым аргументом UTIL_VarArgs("Float is: %f"\n", flFloat).

Спасибо большое. Сделал через утил_худмесседж. Там задал параметры, где текст распологается и каким цветом. А что делает вараргс, я что-то не понял. В коде прописал, но не вижу нигде.

__________________
Мой мод на Xash


Отправлено nekonomicon 21-05-2021 в 06:52:

Цитата:
Aynekko писал:
А что делает вараргс, я что-то не понял. В коде прописал, но не вижу нигде.

Делает почти тоже самое, что и sprintf, только копирует строку в статический буфер и возвращает указатель на него:
https://github.com/ValveSoftware/ha.../util.cpp#L1082
По факту чуть медленнее sprintf и поточно-небезопасная функция, но зато удобная.


Отправлено Aynekko 21-05-2021 в 10:38:

nekonomicon спасибо за разъяснение

__________________
Мой мод на Xash


Отправлено Aynekko 21-05-2021 в 21:32:

Народ, вожусь с trigger_push, прошерстил инет и даже нашел какие-то концы на этом форуме про FL_BASEVELOCITY, но так ни до чего и не додумался. Там что-то с самой физикой игры.
Суть проблемы - есть подводный туннель, который полностью внутри func_water, а внутри туннеля trigger_push. Пуш не толкает. Если включить и выключить noclip, то толкнет один раз и замолкает.
Припоминаю, что в хл2 игрока толкало под водой. Как это исправить, или может есть какие идеи, как еще это реализовать?
На одном сайте была идея поставить кучу мелких пушей друг за другом, чтобы кидало из одного в другой. Но это ж бред…хоть и может сработать.

__________________
Мой мод на Xash


Отправлено KiQ 22-05-2021 в 00:29:

Aynekko может флаг Once Only стоит?

Добавлено 22-05-2021 в 03:29:

Алсо, триггер должен быть растянут на весь туннель

__________________
-Brain is dead-


Отправлено Aynekko 22-05-2021 в 06:02:

Цитата:
KiQ писал:
Aynekko может флаг Once Only стоит?
Алсо, триггер должен быть растянут на весь туннель

Норм все. Я с этой проблемой еще много лет назад сталкивался.

__________________
Мой мод на Xash


Отправлено Дядя Миша 22-05-2021 в 08:17:

Там поидее надо не триггер пуш, а несолидный конвейер, чёб игрока извнутри тащило.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 22-05-2021 в 09:17:

Цитата:
Дядя Миша писал:
Там поидее надо не триггер пуш, а несолидный конвейер, чёб игрока извнутри тащило.

Не работает. Несолидный конвеер вообще не имеет эффекта. Проверял "на воздухе". Сделал его солидным, тогда тащит (когда сверху стою).

Добавлено 22-05-2021 в 11:40:

Как всегда, все решается костылем. Но вопрос открытый - как это пофиксить в коде?
А пока я поставил multi_manager, который дергает этот push каждые 0.05 секунды. Включает и выключает его. Если поставить 0.1, то получается дергано. И все, стабильно тащит под водой.

Добавлено 22-05-2021 в 12:17:

Окей, я КАЖЕТСЯ, нашел своеобразный фикс, который сработал, как ни странно.
Было:
C++ Source Code:
pOther->SetBaseVelocity( vecPush );
pevToucher->flags |= FL_BASEVELOCITY;

Стало:
C++ Source Code:
vecPush *= 0.01;
pOther->SetBaseVelocity( vecPush );
//		pevToucher->flags |= FL_BASEVELOCITY;

Значение 0.01 подогнал, оно соответствует пушу со скоростью 100. А иначе игрока толкнет со всей дури. А интересность заключается в том, что этот "фикс" убил двух зайцев - заработал пуш под водой, и при этом игрока больше не толкает, если он держится за лестницу под водой.
Однако, пуш теперь не работает на суше.

Поэтому, я делаю флаг для хаммера underwater push, где буду юзать этот "фикс" в нужных ситуациях, и на этом вопрос закрыт. Если есть предложения, как это пофиксить правильнее, буду только рад.

UPD: мм, не работает эта шняга при низком фпс. Буду думать дальше.

__________________
Мой мод на Xash


Отправлено Aynekko 24-05-2021 в 14:22:

Убрал зависимость от фпс, но все равно пуш ведет себя немного странно (ну это немудрено). Если поставить флаг FL_BASEVELOCITY, то получается вообще треш.
Пока получилось так, сделал спаунфлаг, и тестирую два пуша рядом. Снизу оригинал, сверху мой огород. Шестерка подобрана эмпирически.

C++ Source Code:
1
else
2
{
3
  if( pev->spawnflags & EXPERIMENTAL )
4
  {
5
    // Push field, transfer to base velocity
6
    Vector vecPush = (pev->speed * m_vecPushDir) * 6 * gpGlobals->frametime;
7
 
8
    //		if ( pevToucher->flags & FL_BASEVELOCITY )
9
    vecPush = vecPush + pOther->GetBaseVelocity();
10
 
11
    if( vecPush.z > 0 && FBitSet( pOther->pev->flags, FL_ONGROUND ))
12
    {
13
      pOther->pev->flags &= ~FL_ONGROUND;
14
      Vector origin = pOther->GetAbsOrigin();
15
      origin.z += 1.0f;
16
      pOther->SetAbsOrigin( origin );
17
    }
18
 
19
    if( pOther->m_iActorType == ACTOR_DYNAMIC )
20
      WorldPhysic->AddForce( pOther, vecPush * (1.0f / gpGlobals->frametime) * 0.5f );
21
    pOther->SetBaseVelocity( vecPush );
22
    //		pevToucher->flags |= FL_BASEVELOCITY;
23
  }
24
  else
25
  {
26
    // Push field, transfer to base velocity
27
    Vector vecPush = (pev->speed * m_vecPushDir);
28
 
29
    if ( pevToucher->flags & FL_BASEVELOCITY )
30
      vecPush = vecPush + pOther->GetBaseVelocity();
31
 
32
    if( vecPush.z > 0 && FBitSet( pOther->pev->flags, FL_ONGROUND ))
33
    {
34
      pOther->pev->flags &= ~FL_ONGROUND;
35
      Vector origin = pOther->GetAbsOrigin();
36
      origin.z += 1.0f;
37
      pOther->SetAbsOrigin( origin );
38
    }
39
 
40
    if( pOther->m_iActorType == ACTOR_DYNAMIC )
41
      WorldPhysic->AddForce( pOther, vecPush * (1.0f / gpGlobals->frametime) * 0.5f );
42
    pOther->SetBaseVelocity( vecPush );
43
    pevToucher->flags |= FL_BASEVELOCITY;
44
  }
45
}

Под водой толкает медленно, но противостоять не получается, пока до стенки не дотолкает. Конечно, проблема где-то еще. Но мне знаний не хватает.
Наверное, все-таки остановлюсь на мультименеджере, который будет постоянно триггерить пуш. Работает отлично, но костыль какой-то бредовый.

__________________
Мой мод на Xash


Отправлено Ku2zoff 30-05-2021 в 18:27:

Поставлена задача: автоматически рассчитывать расстояние, на которое камера приближается к монитору. Пока что юзаю две энтити - сам монитор и точку обзора, куда перемещается pparams->vieworg. В планах строить вектор, перпендикулярный поверхности, из центра браша, рассчитывать расстояние так, чтобы монитор умещался в экран по одной из осей впритык. Нужно как-то сделать поправку на FOV. Подскажите, есть ли какое-то решение, не охота городить огород.

FOV 100:

https://i.imgur.com/Q2QmNCh.jpg

FOV 90:

https://i.imgur.com/Nx0UoD7.jpg

Добавлено 31-05-2021 в 01:27:

Размер VGUI-меню подгоняется под размер брашевого экрана (привет из тутора про рамки выделения). И все элементы меню динамически меняют своё положение и размер. В теории, какую бы форму не имел монитор, меню в нём спокойно уместится. Тестировал на разных разрешениях, начиная от 640х480. Всё помещается. Но вот с FOV проблема. У меня по дефолту стоит 100 для моего разрешения экрана. Для обычных не широкоформатных мониторов годится 90, а если 1080p и выше, то я думаю, что подойдёт значение 105-110 и т.д. Если получится это победить, то дело останется за малым - дописать парсер текстовиков для мониторов (да, количество кнопок, менюшек, прочего, а также команды и тексты я планирую грузить из файлов). Команды вообще делаются просто, находим активный монитор, который в данный момент юзает игрок, и в client command отправляем что-то типа "monitor_use menu1 param1". Ну а энтить монитора уже разруливает параметры и управляет другими энтитями. Я очень рад, что нашёл альтернативу ксашевским OpenGL-мониторам. Картинка видеонаблюдения на скринах реалтаймовая. И оттуда даже звук есть, в общем, каеф.


Отправлено Дядя Миша 30-05-2021 в 19:07:

Цитата:
Ku2zoff писал:
Я очень рад, что нашёл альтернативу ксашевским OpenGL-мониторам

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено XaeroX 30-05-2021 в 19:46:

Цитата:
Ku2zoff писал:
Я очень рад, что нашёл альтернативу ксашевским OpenGL-мониторам.

pparams->nextView?

__________________
"It's a friend of mine - a Cheshire Cat," said Alice: "allow me to introduce it."
"I don't like the look of it at all," said the King: "however, it may kiss my hand if it likes."
"I'd rather not," the Cat remarked.


Отправлено Ku2zoff 30-05-2021 в 20:11:

Цитата:
XaeroX писал:
pparams->nextView?

Да. Из ограничений - нельзя сделать, чтобы монитор рисовал картинку, когда игрок в него не смотрит, а просто стоит рядом. Точнее можно, но она будет заметно плавать, т.к. динамический подбор размера вьюпорта не очень быстро работает. Но попробовать стоит, хотя бы ради пары мест, где это можно заюзать. OpenGL-хаки использовать не хочу, glCopyTexImage2D или как там эта функция правильно называется, не работает нормально на обновлённом рендерере халфы - не масштабируется. Да и не нужны эти эффекты в общем-то. 3D небо я сделал обычным способом, даже научился его переключать, чтобы динамически менять скайбоксы. Осталось научить фонарик равномерно светить при разных скейлах текстуры, и всё в шоколаде.


Отправлено Дядя Миша 31-05-2021 в 04:39:

Цитата:
Ku2zoff писал:
динамический подбор размера вьюпорта не очень быстро работает



Цитата:
Ku2zoff писал:
3D небо я сделал обычным способом

а есть необычный?

Цитата:
Ku2zoff писал:
Осталось научить фонарик равномерно светить при разных скейлах текстуры, и всё в шоколаде.

как мало человеку для счастья нужно

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 17-06-2021 в 08:34:

Подскажите по такому нубскому вопросу. Ставлю звук:

C++ Source Code:
EMIT_SOUND_DYN(ENT(pev), CHAN_STATIC, "sound.wav", 0.25, 2.0, SND_CHANGE_PITCH | SND_CHANGE_VOL, 100);

Звук издается игроком, но меня смущает то, что в случае мультиплеера этот звук будет слышен всем игрокам, а нужно чтобы его слышал только клиент. Как это сделать?

__________________
Мой мод на Xash


Отправлено BALISTA 18-06-2021 в 12:24:

Цитата:
Aynekko писал:
нужно чтобы его слышал только клиент

Нужно играть его на клиенте


Отправлено Ku2zoff 18-06-2021 в 12:46:

Цитата:
Aynekko писал:
нужно чтобы его слышал только клиент

C++ Source Code:
gEngfuncs.pfnPlaySoundByName
gEngfuncs.pfnPlaySoundByIndex
gEngfuncs.pfnPlaySoundByNameAtLocation
gEngfuncs.pfnPlaySoundVoiceByName
gEngfuncs.pfnPlaySoundByNameAtPitch

Целая куча клиентских функций для воспроизведения звука. Не знаю, какие точно из них есть в ксаше. Но связка мессага на клиент + воспроизведение на клиенте точно поможет скрыть звук от других игроков.


Отправлено Дядя Миша 18-06-2021 в 12:46:

Цитата:
Aynekko писал:
Звук издается игроком, но меня смущает то, что в случае мультиплеера этот звук будет слышен всем игрокам, а нужно чтобы его слышал только клиент. Как это сделать?

в энгфунксах есть BUILD_SOUND_MSG, через него можно посылать звуки, которые услышит только один игрок.
Я его под ксашем толком не проверял, но должно работать.

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме


Отправлено Aynekko 18-06-2021 в 17:58:

Спасибо всем за помощь.

__________________
Мой мод на Xash


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

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