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

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)


Отправлено Aynekko 16-07-2022 в 10:45:

В чем отличие m_pCurrentEntity->curstate.angles от m_pCurrentEntity->angles (на клиенте)?

__________________
Мой мод на Xash


Отправлено Дядя Миша 16-07-2022 в 11:18:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено a1batross 16-07-2022 в 16:31:

Aynekko в curstate всё что прилетело с сервера сейчас, в prevstate на кадр раньше. Как сказал Дядя Миша выше, менять их бессмысленно.

Просто angles например может вычисляться интерполируя углы из prev и cur. Для игроков там конечно всё сложнее, но в общем случае понять можно.

__________________
Xash3D FWGS форк


Отправлено SNMetamorph 16-07-2022 в 23:59:

Цитата:
a1batross писал:
в curstate всё что прилетело с сервера сейчас, в prevstate на кадр раньше.

А на кадр ли? Или это просто инфа с прошлого апдейта с сервера? А ведь оно явно реже чем каждый кадр происходит, и собственно зависит от updaterate

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Aynekko 17-07-2022 в 07:43:

Я просто почему спросил, в голдсорсе в StudioSetUpTransform angles берутся из curstate, а в ксашмоде и движке из просто angles. Я у себя вращал модельку игрока и игрок-клиент отображался не так, как локальный игрок, до тех пор пока я не поменял на curstate. Вот не знаю почему.

__________________
Мой мод на Xash


Отправлено Aynekko 31-07-2022 в 07:52:

Еще раз вопрос по клипнодам и солидности поверхностей. А то я запутался. Вот есть стандартный куб. Он генерирует клипноды. Получается, 6 клипнод?
А можно ли сделать чтобы была только 1 клипнода, то есть одна поверхность солидная, а остальные проходишь насквозь?
Не совсем понимаю, как это работает.
Хочется оптимизировать карту в плане клипнод, и на карте слишком много брашей с лишними стенками.

__________________
Мой мод на Xash


Отправлено Дядя Миша 31-07-2022 в 09:05:

Цитата:
Aynekko писал:
Хочется оптимизировать карту в плане клипнод

Не имеет смысла, там же 32-х битный лимит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2022 в 08:38:

При каком условии освещение у модели берется от солнца вместо пола? Случайно обнаружил, что в замкнутой комнате если покрасить потолок null'ом, то освещение будет от солнца.

__________________
Мой мод на Xash


Отправлено Дядя Миша 04-08-2022 в 09:41:

1. нужно наличие light_enviroment. Угол падения солнца пересылается на клиент и используется для трассировки полигонов над игроком, согласно этому углу. Поэтому, если, допустим игрок заходит в тень, то и свет от солнца пропадает кагбы. Очень реалистичный механизм для 98-го года.

2. Трасса должна упереться в полигон с флажком SURF_DRAWSKY, который в свою очередь берётся из текстуры с названием SKY.

3. Можно еще поставить для модели принудительно всегда брать свет от солнца, вы могли видеть этот флажок в моём модельвьювере. Используется для вертолётов и Нихиланса.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2022 в 10:11:

А почему модель может быть черной? Лайт_енв на карте нет, и я точно стою на освещенном браше. Буквально стоя на соседнем браше игрок освещен нормально. Значит освещение берется не с пола, а вообще непонятно откуда...

__________________
Мой мод на Xash


Отправлено Дядя Миша 04-08-2022 в 11:57:

Так если light_environment на карте нету, то вектор направления на солнце нулевой, вот и получается чёрный цвет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2022 в 13:10:

Одного тогда понять не могу, как так получается, если комната закрытая, ская там нет, потолок не null текстурой и не энтитя. Проходит насквозь получается. А где эта проверка находится, не подскажешь?

__________________
Мой мод на Xash


Отправлено Дядя Миша 04-08-2022 в 13:25:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 04-08-2022 в 13:34:

Да, то же самое. Пол нормально освещен, а стоя на нем, игрок и монстры черные.

__________________
Мой мод на Xash


Отправлено hgrunt_2020 05-08-2022 в 12:15:

Странности с сейвом

Создал я свою энтитю, лутбокс с патронами, но при сейве вылазит ошибка:"Can't find address: 10064860". По адресу 10064860 у меня 0001:00063860 ??_9@$BLE@AE 10064860 f i h_cycler.obj(лутбокс у меня находится в h_cycler)
И, что ещё не приятнее это то что не сейвится состояние использования

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Дядя Миша 05-08-2022 в 15:11:

Забыл прописать EXPORT своим тчинкам или тачам.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 05-08-2022 в 17:43:

Цитата:
hgrunt_2020 писал:
не сейвится состояние использования

Либо писать статус использования в кастомную переменную, а переменную в сейвдату, либо писать статус в один из энтварсов. У логических точечных энтить с парой-тройкой параметров можно хранить всё в pev->health, armorvalue, speed, fov и проч., если они не заюзаны в коде этой энтити.

Добавлено 06-08-2022 в 00:43:

Цитата:
Aynekko писал:
Пол нормально освещен, а стоя на нем, игрок и монстры черные.

Пол мировой браш, или энтитя? Обычно такое происходит, если игрок стоит на энтите.


Отправлено Luciferchik 05-08-2022 в 18:57:

для чего предназначена функция DECLARE_CLASS и какую суть несет в себе?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Aynekko 05-08-2022 в 20:02:

Цитата:
Ku2zoff писал:
Обычно такое происходит, если игрок стоит на энтите.

В том весь и прикол, что браш самый обычный, а рядом пол продолжается в func_wall и на нем как раз все нормально (ну потому что r_lighting_extended в ксаше )

__________________
Мой мод на Xash


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

Цитата:
Luciferchik писал:
для чего предназначена функция DECLARE_CLASS и какую суть несет в себе?

Это не функция, это макрос. Костыль для сериализации, которую С++ изкаропки не может.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено hgrunt_2020 06-08-2022 в 00:23:

Дядя Миша у лутбокса нет ни тчинка ни тача

Добавлено 06-08-2022 в 03:23:

Дядя Миша

C++ Source Code:
1
class CLootbox : public CBaseMonster
2
{
3
  void Spawn(void);
4
  void Use(CBaseEntity* pActivator, CBaseEntity* pCaller, USE_TYPE useType, float value);
5
  virtual int	ObjectCaps(void);
6
  void	KeyValue(KeyValueData* pkvd);
7
  virtual BOOL IsAlive(void) { return FALSE; }
8
  int	Classify(void) { return	CLASS_CYCLER; }
9
public:
10
 
11
  virtual int		Save(CSave& save);
12
  virtual int		Restore(CRestore& restore);
13
  static	TYPEDESCRIPTION m_SaveData[];
14
  int m_item;
15
  int m_count;
16
};

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено hgrunt_2020 06-08-2022 в 06:43:

Дядя Миша я понял в чем дело
в спавне я удалил строчку SetUse(Use); и все стало нормально

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 06-08-2022 в 07:26:

Цитата:
hgrunt_2020 писал:
SetUse(Use)

Так делать нельзя. Как и SetTouch(Touch) или SetThink(Think), или SetBlocked(Blocked), поскольку Use, Touch, Think и Blocked - виртуальные функции CBaseEntity, из них вызываются каллбэки:
C++ Source Code:
1
virtual void Think( void ) { if (m_pfnThink) (this->*m_pfnThink)(); };
2
virtual void Touch( CBaseEntity *pOther ) { if (m_pfnTouch) (this->*m_pfnTouch)( pOther ); };
3
virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
4
{
5
  if (m_pfnUse)
6
    (this->*m_pfnUse)( pActivator, pCaller, useType, value );
7
}
8
virtual void Blocked( CBaseEntity *pOther ) { if (m_pfnBlocked) (this->*m_pfnBlocked)( pOther ); };

Функции каллбэкам присваиваются здесь:
C++ Source Code:
#define SetThink( a ) m_pfnThink = static_cast <void (CBaseEntity::*)(void)> (a)
#define SetTouch( a ) m_pfnTouch = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (a)
#define SetUse( a ) m_pfnUse = static_cast <void (CBaseEntity::*)( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )> (a)
#define SetBlocked( a ) m_pfnBlocked = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (a)

Сделано это с той целью, чтобы тчинков, тачей, юзов и блокедов у энтити было много, и юзер мог их переключать.

Добавлено 06-08-2022 в 14:26:

SetUse и всё остальное имеет смысл, если твоя функция юза называется нестандартно: CLootbox::LootboxUse. Заметь, блокедов с нестандартными названиями нету, потому что свойства платформ, дверей и прочего почти не меняются, и ответ на блокировку у них всегда один - дамаг для заблокировавшей энтити. А тчинки, тачи и юзы меняются у многих энтить в процессе их работы.


Отправлено hgrunt_2020 06-08-2022 в 07:52:

Ku2zoff я не знал, потому и вышла такая ошибка

Добавлено 06-08-2022 в 10:52:

Ku2zoff теперь всё прекрасно работает
https://youtu.be/QzwoF5j5LYg

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Aynekko 06-08-2022 в 19:11:

Цитата:
Aynekko писал:
А почему модель может быть черной? Лайт_енв на карте нет, и я точно стою на освещенном браше. Буквально стоя на соседнем браше игрок освещен нормально. Значит освещение берется не с пола, а вообще непонятно откуда...

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

Я разобрался в чем была проблема. Скейл текстуры. Он был равен 0.25. И стоя на нем, модели были черные. Сделал 0.5, все нормально.
Я никогда не перестану удивляться ксашу/голде.

__________________
Мой мод на Xash


Отправлено hgrunt_2020 06-08-2022 в 22:37:

Aynekko лол, проблема была всего лишь в скейле!? Удивительно.

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Дядя Миша 07-08-2022 в 07:00:

Скейл текстуры или лайтмапы?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 07-08-2022 в 08:02:

Текстуры. Была наложена на браш со скейлом 0.25.

__________________
Мой мод на Xash


Отправлено Дядя Миша 07-08-2022 в 08:23:

Тогда может у лайтмапы наоборот уменьшить разрешение?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 07-08-2022 в 08:48:

Через zhlt_texturestep?

__________________
Мой мод на Xash


Отправлено Дядя Миша 07-08-2022 в 09:05:

Ну да. Во всяком случае стоит попробовать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 07-08-2022 в 09:24:

Попробовал, фейс тупо черный, если значение step больше 16. Ставил 8, все норм, но модели все еще черные. Скейл текстуры на фейсе 0.25.

__________________
Мой мод на Xash


Отправлено Decay 07-08-2022 в 09:59:

А какой размер текстуры? Вдруг это влияет.


Отправлено Aynekko 07-08-2022 в 10:02:

Цитата:
Decay писал:
А какой размер текстуры? Вдруг это влияет.

256x256

__________________
Мой мод на Xash


Отправлено Дядя Миша 07-08-2022 в 12:47:

Цитата:
Aynekko писал:
Попробовал, фейс тупо черный, если значение step больше 16

ну там скорее всего какая-то тень падает и при низком разрешении покрывает весь полигон.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Luciferchik 10-08-2022 в 18:33:

В одной из тем заговорили за худ оружия и натолкнуло меня на то, что в хл слоты нельзя переключать скролом, но можно цифрами с помощью тутора от тв.Scrama. Так вот реально это объединить чтобы не просто слоты активировались и ты подтверждал выбор, а сразу сменялось как в КС:бегать

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 11-08-2022 в 06:52:

Luciferchik в функциях CHudAmmo::UserCmd_NextWeapon и CHudAmmo::UserCmd_PrevWeapon в теле цикла for ( int loop = 0; loop <= 1; loop++ ) перед return вставь следующий код:

C++ Source Code:
1
if (CVAR_GET_FLOAT("hud_fastswitch") != 0)
2
{
3
  ServerCmd(wsp->szName); // меняем пушку
4
  g_weaponselect = wsp->iId; // сохраняем Id пушки в глобальную переменную для доступа из input.cpp, CL_CreateMove. Наверное это для пердиктинга
5
  gpLastSel = gpActiveSel; // запоминаем последнюю пушку
6
  gpActiveSel = NULL; // зануляем активную пушку, чтобы скрыть слоты
7
}


Отправлено Luciferchik 11-08-2022 в 14:56:

Ku2zoff огромная благодарность, работает как часики ещё бы засвечивать худ на пару секунд и будет уже точно как в кс

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 11-08-2022 в 15:45:

Luciferchik чтобы засвечивать слоты, надо занулять gpActiveSel через некоторое время, а не сразу. Но пока он не занулён - стрелять нельзя, первый клик подтверждает выбор оружия, скрывая слоты. Надо написать новое поведение для слотов при hud_fastswitch: чтобы при переключении они высвечивались, и постепенно угасали, и левый клик не перехватывался. Сейчас попробую. Обычно я таким не морочусь, но раз уж залез в эту тему, то надо привести fastswitch в нормальное состояние, каким он должен быть. Чтобы оружия переключались скроллом, а нажатие на клавишу слота циклично прокручивало оружия в этом слоте, а не выбирало только первую пушку.


Отправлено Luciferchik 11-08-2022 в 15:55:

Цитата:
Ku2zoff писал:
Luciferchik чтобы засвечивать слоты, надо занулять gpActiveSel через некоторое время, а не сразу. Но пока он не занулён - стрелять нельзя, первый клик подтверждает выбор оружия, скрывая слоты. Надо написать новое поведение для слотов при hud_fastswitch: чтобы при переключении они высвечивались, и постепенно угасали, и левый клик не перехватывался. Сейчас попробую. Обычно я таким не морочусь, но раз уж залез в эту тему, то надо привести fastswitch в нормальное состояние, каким он должен быть. Чтобы оружия переключались скроллом, а нажатие на клавишу слота циклично прокручивало оружия в этом слоте, а не выбирало только первую пушку.
Это звучит отлично и неплохо было бы в туторы сделать дополнения к старому тутору по fastswitch, а то так и потеряется в постах и забудется

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 11-08-2022 в 17:13:

Цитата:
Luciferchik писал:
неплохо было бы в туторы

В спирите от Скрамы половина этого кода есть. Короче вот:

1. Доводим фастсвитч до ума, чтобы он листал позиции в слотах. Есть в вышеназванном спирите. ammo.cpp, объявляем там новую структурку:
C++ Source Code:
WEAPON *gpLastSel;		// Last weapon menu selection
WEAPON *gpCurWeapon; // код Скрамы

Спускаемся до функции WeaponsResource :: SelectSlot, вставляем новый блок кода:
C++ Source Code:
1
// if fast weapon switch is on, then weapons can be selected in a single keypress
2
  // but only if there is only one item in the bucket
3
WEAPON *p2 = GetNextActivePos( p->iSlot, p->iSlotPos );
4
if ( !p2 )
5
{	// only one active item in bucket, so change directly to weapon
6
ServerCmd( p->szName );
7
g_weaponselect = p->iId;
8
return;
9
}
10
else // код Скрамы
11
{
12
  if (gpCurWeapon->iSlot == iSlot)
13
  {
14
    p = GetNextActivePos(gpCurWeapon->iSlot, gpCurWeapon->iSlotPos);
15
    if (!p) p = GetFirstPos(gpCurWeapon->iSlot);
16
    ServerCmd(p->szName);
17
    g_weaponselect = p->iId;
18
  }
19
  else
20
  {
21
    ServerCmd(p->szName);
22
    g_weaponselect = p->iId;
23
  }
24
  return;
25
}

Спускаемся до функции CHudAmmo::MsgFunc_CurWeapon, и задаём там значение нашей новой структурке:
C++ Source Code:
if ( iState == 0 )	// we're not the current weapon, so update no more
  return 1;
 
m_pWeapon = pWeapon;
gpCurWeapon = pWeapon; // код Скрамы


Всё, фастсвитч листает пушки в слоте, а не выбирает лишь самую первую.

2. Заставляем слоты отображаться некоторое время. Говнокод, чтобы было понятно, куда копать:
C++ Source Code:
WEAPON *gpLastSel;		// Last weapon menu selection
WEAPON *gpCurWeapon; // код Скрамы
float flFadeTime; // время видимости слотов

CHudAmmo::Think, вставить этот кусочек туда:
C++ Source Code:
1
if (!gpActiveSel)
2
  return;
3
 
4
// начало говнокода
5
if (CVAR_GET_FLOAT("hud_fastswitch"))
6
{
7
  if (gpActiveSel)
8
  {
9
    if (gpActiveSel != (WEAPON*)1)
10
    {
11
      ServerCmd(gpActiveSel->szName);
12
      g_weaponselect = gpActiveSel->iId;
13
    }
14
 
15
    if (flFadeTime <= gEngfuncs.GetClientTime())
16
    {
17
      gpLastSel = gpActiveSel;
18
      gpActiveSel = NULL;
19
    }
20
  }
21
  return;
22
}
23
// конец говнокода
24
 
25
// has the player selected one?
26
if (gHUD.m_iKeyBits & IN_ATTACK)

WeaponsResource :: SelectSlot:
C++ Source Code:
1
else // код Скрамы
2
{
3
  if (gpCurWeapon->iSlot == iSlot)
4
  {
5
    p = GetNextActivePos(gpCurWeapon->iSlot, gpCurWeapon->iSlotPos);
6
    if (!p) p = GetFirstPos(gpCurWeapon->iSlot);
7
    ServerCmd(p->szName);
8
    g_weaponselect = p->iId;
9
  }
10
  else
11
  {
12
    ServerCmd(p->szName);
13
    g_weaponselect = p->iId;
14
  }
15
  gpActiveSel = p; // говнокод
16
  flFadeTime = gEngfuncs.GetClientTime() + 0.5; // снова говнокод
17
  return;
18
}


Отправлено Luciferchik 11-08-2022 в 19:24:

Ku2zoff По твоему примеру вроде как работает но нужно ещё допиливать. Комменты конечно позабавили мы ведь не профи в коде поэтому пишем как можем

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено hgrunt_2020 12-08-2022 в 07:03:

Мне Ku2zoff подсказал что можно под глянуть ограничение пушек в кс 1.6, я ограничение сделал, но как теперь сделать так что бы при юзе пушки которая лежит на полу она попадала в инвентарь, а та что занимала этот же слот легла на её же место

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 12-08-2022 в 08:29:

hgrunt_2020 у тебя команда Drop работает? Ну то есть, если выкинуть пушку, то подбирается другая? Поищи в player.cpp вот этот комментарий:

C++ Source Code:
// if we land here with a valid pWeapon pointer, that's because we found the
  // item we want to drop and hit a BREAK;  pWeapon is the item.

Там код выкидывания веапонбокса. Убери return для сингла, чтобы можно было выбрасывать пушки в одиночной игре. После вызова pWeaponBox->PackWeapon( pWeapon ); назначай веапонбоксу модель оружия, которое выкидывается, например так:
C++ Source Code:
1
switch (pWeapon->m_iId)
2
{
3
case WEAPON_CROWBAR:
4
    SET_MODEL(ENT(pWeaponBox->pev), "models/w_crowbar.mdl");
5
  break;
6
}

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

Как только это наладишь, чтобы пушки нормально заменялись при выбрасывании, убери функцию Touch у пушек и сделай им Use. В юзе делай проверку на наличие у игрока пушки такого же класса, и если она есть, вызывай DropPlayerItem с аргументом, где будет название выкидываемой пушки:
C++ Source Code:
pPlayer->DropPlayerItem("weapon_crowbar");

Чтобы случайно не менять пушки, ставь им флаг FCAP_CONTINUOUS_USE и считай время в функции юза. Если игрок жмёт кнопку например секунду, пушка сменяется. Когда дублирующей пушки нет, то можно время не считать, и подбирать пушку сразу.
Наверное, напишу себе такой код, потому что планирую делать глок и беретту, дигл и питон. Может быть ещё что-то. Чтобы не забивать слоты, а заставить игрока делать выбор. Например, глок с глушителем для стелс-прохождения.


Отправлено hgrunt_2020 12-08-2022 в 09:43:

Ku2zoff она работает но криво, некоторые пушки не подбирает а подбирает только их патроны

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 12-08-2022 в 10:09:

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


Отправлено hgrunt_2020 12-08-2022 в 11:19:

Ku2zoff вот дроп что у мен

C++ Source Code:
1
void CBasePlayer::DropPlayerItem ( char *pszItemName )
2
{
3
  if ( !strlen( pszItemName ) )
4
  {
5
    // if this string has no length, the client didn't type a name!
6
      // assume player wants to drop the active item.
7
    // make the string null to make future operations in this function easier
8
    pszItemName = NULL;
9
  }
10
 
11
  CBasePlayerItem *pWeapon;
12
  int i;
13
 
14
  for ( i = 0 ; i < MAX_ITEM_TYPES ; i++ )
15
  {
16
    pWeapon = m_rgpPlayerItems[ i ];
17
 
18
    while ( pWeapon )
19
    {
20
      if ( pszItemName )
21
      {
22
        // try to match by name.
23
        if ( !strcmp( pszItemName, STRING( pWeapon->pev->classname ) ) )
24
        {
25
          // match!
26
          break;
27
        }
28
      }
29
      else
30
      {
31
        // trying to drop active item
32
        if ( pWeapon == m_pActiveItem )
33
        {
34
          // active item!
35
          break;
36
        }
37
      }
38
 
39
      pWeapon = pWeapon->m_pNext;
40
    }
41
 
42
 
43
    // if we land here with a valid pWeapon pointer, that's because we found the
44
      // item we want to drop and hit a BREAK;  pWeapon is the item.
45
    if ( pWeapon )
46
    {
47
      g_pGameRules->GetNextBestWeapon( this, pWeapon );
48
      if (pWeapon->iSlot() <= 2)
49
        Slots[pWeapon->iSlot()] = false;
50
 
51
      UTIL_MakeVectors ( pev->angles );
52
 
53
      pev->weapons &= ~(1 << pWeapon->m_iId);// take item off hud
54
 
55
      CWeaponBox *pWeaponBox = (CWeaponBox *)CBaseEntity::Create( "weaponbox", pev->origin + gpGlobals->v_forward * 10, pev->angles, edict() );
56
      pWeaponBox->pev->angles.x = 0;
57
      pWeaponBox->pev->angles.z = 0;
58
      pWeaponBox-&gt<img src="images/smilies/pp2.gif" border="0" alt="">ackWeapon( pWeapon );
59
      pWeaponBox->pev->velocity = gpGlobals->v_forward * 300 + gpGlobals->v_forward * 100;
60
 
61
      // drop half of the ammo for this weapon.
62
      int	iAmmoIndex;
63
 
64
      iAmmoIndex = GetAmmoIndex ( pWeapon->pszAmmo1() ); // ???
65
 
66
      if ( iAmmoIndex != -1 )
67
      {
68
        // this weapon weapon uses ammo, so pack an appropriate amount.
69
        if ( pWeapon->iFlags() & ITEM_FLAG_EXHAUSTIBLE )
70
        {
71
          // pack up all the ammo, this weapon is its own ammo type
72
          pWeaponBox-&gt<img src="images/smilies/pp2.gif" border="0" alt="">ackAmmo( MAKE_STRING(pWeapon->pszAmmo1()), m_rgAmmo[ iAmmoIndex ] );
73
          m_rgAmmo[ iAmmoIndex ] = 0;
74
 
75
        }
76
        else
77
        {
78
          // pack half of the ammo
79
          pWeaponBox-&gt<img src="images/smilies/pp2.gif" border="0" alt="">ackAmmo( MAKE_STRING(pWeapon->pszAmmo1()), m_rgAmmo[ iAmmoIndex ] / 2 );
80
          m_rgAmmo[ iAmmoIndex ] /= 2;
81
        }
82
 
83
      }
84
 
85
      return;// we're done, so stop searching with the FOR loop.
86
    }
87
  }
88
}


Добавлено 12-08-2022 в 14:05:

Ku2zoff а не, эт мой косяк, в AddPlayerItem у меня
C++ Source Code:
if (pItem->iSlot() > 1 && pItem->iSlot() <= 4)

а в DropPlayerItem
C++ Source Code:
if (pWeapon->iSlot() <= 2)

оно не обнуляется, вот и не берётся новая пушка

Добавлено 12-08-2022 в 14:19:

Ku2zoff странно, то он нормально подбирает то черти что
https://youtu.be/lYGF6EmvLbA

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 12-08-2022 в 11:55:

Цитата:
hgrunt_2020 писал:
то он нормально подбирает то черти что

Оружие положенное на карту маппером != оружие, выброшенное игроком. Игрок выбрасывает веапонбоксы, в которых внутри содержатся пушки. Соответственно, нужно либо делать проверку для массива внутри веапонбокса, либо выбрасывать энтити пушек, а не веапонбоксы.


Отправлено hgrunt_2020 12-08-2022 в 12:48:

Ku2zoff а что по поводу того что не отображаются иконки вентиля и сайги?

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено hgrunt_2020 13-08-2022 в 13:43:

Ku2zoff Я наконец то починил ограничение и дроп)
https://youtu.be/3wHnsDy9W-g

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Luciferchik 13-08-2022 в 21:23:

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

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено hgrunt_2020 13-08-2022 в 23:14:

Luciferchik перемещать их относительно screenheight и screenwidth, глянь расположение спрайтов в хл 1, именно их x и y в коде

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 14-08-2022 в 01:33:

Цитата:
Luciferchik писал:
чтобы при смене расширения они оставались на задуманном месте?

XRES(число) и YRES(число), вроде бы.


Отправлено hgrunt_2020 14-08-2022 в 05:25:

Почему не на весь экран?

Почему текстура не отрисовывается на весь экран, при чем не важно спрайт это или тга(скрин https://yapx.ru/v/TUrMT ), вот код отрисовки

C++ Source Code:
1
void DrawNV()
2
{
3
  if (g_iNvg == 0) return;
4
  if (ScopeTex < 0)
5
    ScopeTex = glLoadTgaFromPak("/gfx/ui_nv.tga");
6
  glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
7
  glBindTexture(GL_TEXTURE_2D, ScopeTex);
8
  glEnable(GL_BLEND);
9
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
10
  glBegin(GL_QUADS);
11
  //top left
12
  glTexCoord2f(0.0f, 1.0f);
13
  glVertex3f(0, 0, 0);
14
 
15
  //bottom left
16
  glTexCoord2f(0.0f, 0.0f);
17
  glVertex3f(0, ScreenHeight, 0);
18
 
19
  //bottom right
20
  glTexCoord2f(1.0f, 0.0f);
21
  glVertex3f(ScreenWidth, ScreenHeight, 0);
22
 
23
  //top right
24
  glTexCoord2f(1.0f, 1.0f);
25
  glVertex3f(ScreenWidth, 0, 0);
26
 
27
 
28
  glEnd();
29
}


Добавлено 14-08-2022 в 08:25:

починил методом подбора, ScreenWidth и ScreenHeight умножил на 1.5525 и встало на свои места

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Luciferchik 14-08-2022 в 10:06:

Цитата:
hgrunt_2020 писал:
Luciferchik перемещать их относительно screenheight и screenwidth, глянь расположение спрайтов в хл 1, именно их x и y в коде

благодарю, как раз по screenheight и screenwidth получилось что надо

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Дядя Миша 15-08-2022 в 16:44:

А вы как определяете где говнокод, а где нет?
Вот как раз таинственный множитель на 1.5525 это и есть говнокод.
Как вы это число получили? Ни деление 16/9 ни 16/10 его не даёт.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 19-08-2022 в 06:32:

Почему из-за большого браша func_water ксаш вылетает? Размер браша 6000х7500 юнитов, высота 300 юнитов. 6000х7000, как ни странно, работает. Скейл текстуры воды сверху - 14.0, остальные фейсы покрыты NULL. Что это за лимит опять, можно ли его расширить?
Создавать несколько func_water не предлагайте - видны швы

__________________
Мой мод на Xash


Отправлено Дядя Миша 19-08-2022 в 07:51:

Потому что SubdividePolygon_r рекурсивная функция, а стек не бесконечен.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 19-08-2022 в 08:16:

А что тогда можно сделать в этом случае? "Расширить лимиты" так сказать. Надо бы браш большого размера.

Добавлено 19-08-2022 в 11:16:

Поднял SUBDIVIDE_SIZE с 64 до 128, это помогло О.о

__________________
Мой мод на Xash


Отправлено Дядя Миша 19-08-2022 в 08:46:

Ну естественно помогло, размер шага уменьшился, значит и рекурсия стала короче. Еще можно в настройках проекта увеличить размер стека, но то такое...

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено hgrunt_2020 22-08-2022 в 04:17:

Cделал я себе ограничение пушек в инвентаре, всё хорошо, до сейв рестора, после сейв рестора вновь можно подобрать пушку в слот, и в слоту уже не 1 пушка а 2, чего быть не должно.
Для ограничения я завёл себе

C++ Source Code:
BOOL				Slots[5];

добавление Slots в сейв не помогло.
Да бы работало ограничение в CBasePlayer::AddPlayerItem в начале
C++ Source Code:
1
if (pItem->iSlot() > 1 && pItem->iSlot() <= 4)
2
{
3
  if (Slots[pItem->iSlot()])
4
    return FALSE;
5
  Slots[pItem->iSlot()] = true;
6
}

и в CBasePlayer::DropPlayerItem в условии if ( pWeapon )
C++ Source Code:
if (pWeapon->iSlot() > 0 && pWeapon->iSlot() <= 4)
  Slots[pWeapon->iSlot()] = false;

Так и как же сделать так, что бы после сейв рестора ещё одна пушка не подбиралась

Добавлено 22-08-2022 в 07:17:

А, прошу прощения, я сам всё починил, просто я в сейв записал
DEFINE_FIELD(CBasePlayer, Slots, FIELD_BOOLEAN)
а надо было
DEFINE_ARRAY(CBasePlayer, Slots, FIELD_BOOLEAN, 5)

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено илья2 22-08-2022 в 19:49:

привет кто из кодеров может понять рендеры текстур

kRenderNormal, // src
kRenderTransColor, // c*a+dest*(1-a)
kRenderTransTexture, // src*a+dest*(1-a)
kRenderGlow, // src*a+dest -- No Z buffer checks
kRenderTransAlpha, // src*srca+dest*(1-srca)
kRenderTransAdd, // src*a+dest

особенно интересуют эти значения

// src
// c*a+dest*(1-a)
// src*a+dest*(1-a)
// src*a+dest -- No Z buffer checks
// src*srca+dest*(1-srca)
// src*a+dest

__________________
илья


Отправлено Ku2zoff 22-08-2022 в 21:18:

илья2 https://twhl.info/wiki/page/Tutoria...nder_Properties
Значения тебе без надобности, формулы, вычисляющие итоговую прозрачность и цвет всё равно внутри движка.

Добавлено 23-08-2022 в 04:18:

Если совсем интересно, то src - исходная текстура, a - альфа, c - цвет, dest - скорее всего результат первого перемножения.


Отправлено Дядя Миша 23-08-2022 в 05:44:

src - исходный цвет
dst - цвет экрана (то что уже успели нарисовать)
a - alpha (renderamt)
c - color (rendercolor)
srca - альфаканал текстуры

Добавлено 23-08-2022 в 08:44:

На десктопах есть большая проблема к сожалению. Там невозможно прочитать цвет экранного пикселя из шейдера - ошибка совмещённого доступа.
Но на мобилках другая архитектура и там можно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 23-08-2022 в 06:51:

ясно полезная инфа пригодиться

__________________
илья


Отправлено SNMetamorph 23-08-2022 в 18:20:

Цитата:
Дядя Миша писал:
На десктопах есть большая проблема к сожалению. Там невозможно прочитать цвет экранного пикселя из шейдера - ошибка совмещённого доступа.

Поэтому скринкопии приходится делать? А точно ли нельзя? Может в OpenGL 4.x появилась фича такая, я мельком что-то подобное видел.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 23-08-2022 в 20:51:

Цитата:
SNMetamorph писал:
Поэтому скринкопии приходится делать?

Да.

Цитата:
SNMetamorph писал:
А точно ли нельзя?

Это ограничение архитектуры десктопных GPU.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 04-09-2022 в 11:42:

возможно ли поставить оружие на нулевой слот ? пробовал ставить вылет и все.

__________________
илья


Отправлено Дядя Миша 04-09-2022 в 12:08:

ну раз вылет - значит нельзя

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-09-2022 в 12:09:

илья2 слотов можно сделать сколь угодно много, были бы клавиши. Просто подвинь всё оружие на один слот, чтобы первый выполнял функции нулевого.


Отправлено илья2 04-09-2022 в 13:30:

я перепутал не слоты а на нулевое количество WEAPON_NONE сорян.

__________________
илья


Отправлено Ku2zoff 04-09-2022 в 14:49:

илья2 ну вот нафига? pev->weapons передаёт битовую маску, а не десятичное число с номером оружия. WEAPON_NONE и так по-умолчанию имеется у игрока. Вылет происходит на этапе какой-то проверки на нулёвость, которых тонна на сервере и на клиенте. А зачем вообще занимать нулевой Id? Их же 29 или 30 штук доступно.


Отправлено Дядя Миша 04-09-2022 в 15:08:

WEAPON_NONE - это 0. Сам подумай, можно ли на ноль что-то вешать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 04-09-2022 в 15:15:

Цитата:
Ku2zoff писал:
илья2 А зачем вообще занимать нулевой Id? Их же 29 или 30 штук доступно.
ну как зачем например кулаки поставить с самого начала круто же будет

__________________
илья


Отправлено Дядя Миша 04-09-2022 в 15:19:

Если оружие невозможно убрать - ему не нужен никакой идентификатор.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 04-09-2022 в 15:21:

илья2 номер Id не влияет на слот, занимаемый оружием. Вот так у монтировки:

C++ Source Code:
p->iSlot = 0;
p->iPosition = 0;
p->iId = WEAPON_CROWBAR; // 1

Id у неё 1, а слот нулевой. Пусть у тебя будут кулаки, скажем с Id 16 сразу после снарков. А ты задай им слот 0 и позицию 0. А монтировке слот 0 и позицию 1. Тогда кулаки будут впереди монтировки в механизме переключения оружия.


Отправлено илья2 04-09-2022 в 15:24:

Цитата:
Дядя Миша писал:
WEAPON_NONE - это 0. Сам подумай, можно ли на ноль что-то вешать.
ладно ты прав нельзя. C чего я подумал что это хорошая идея

Добавлено 04-09-2022 в 18:24:

можно поставить оружие в спавн самого игрока с самого начала будет в полне норм

__________________
илья


Отправлено Ku2zoff 04-09-2022 в 15:27:

Цитата:
илья2 писал:
можно поставить оружие в спавн самого игрока

game_player_equip и всего делов. Только это мультиплеерная энтить, ей надо сейв/рестор массива даваемых игроку предметов по-хорошему прикрутить.


Отправлено илья2 05-09-2022 в 21:57:

как убрать оружие с инвентаря игрока ? есть ли код для этого ?

__________________
илья


Отправлено Ku2zoff 06-09-2022 в 02:37:

Энтитя player_weaponstrip. Только она убирает ВСЕ оружия и опционально костюм. Но можно дописать ей функционал выборочного убирания оружия.


Отправлено илья2 06-09-2022 в 08:34:

Цитата:
Ku2zoff писал:
Но можно дописать ей функционал выборочного убирания оружия.
и что надо дописать ?

__________________
илья


Отправлено Ku2zoff 06-09-2022 в 08:50:

Цитата:
илья2 писал:
и что надо дописать ?

Цитата:
Ku2zoff писал:
функционал выборочного убирания оружия

Дам подсказку. CBasePlayer::RemoveAllItems.
C++ Source Code:
1
int i;
2
CBasePlayerItem *pPendingItem;
3
for (i = 0; i < MAX_ITEM_TYPES; i++)
4
{
5
  m_pActiveItem = m_rgpPlayerItems[i];
6
  while (m_pActiveItem)
7
  {
8
    pPendingItem = m_pActiveItem->m_pNext;
9
    m_pActiveItem->Drop( );
10
    m_pActiveItem = pPendingItem;
11
  }
12
  m_rgpPlayerItems[i] = NULL;
13
}
14
m_pActiveItem = NULL;

В цикле while надо воткнуть проверку оружия по m_iId или по класснейму. Если пушка из массива не совпадает с целевой, continue, то есть продолжаем перебор массива. Если совпадает, то делаем Drop. Для удобства надо подавать в эту функцию в кач-ве аргумента не только булевую переменную на выброс костюма, но и const char с класснеймом целевого предмета. Типа так:
C++ Source Code:
CBasePlayer *pPlayer;
pPlayer->RemoveAllItems("weapon_crowbar");

Есть ещё функция CBasePlayer::RemovePlayerItem, но она принимает в кач-ве аргумента указатель на класс.


Отправлено Дядя Миша 06-09-2022 в 08:56:

Помнится для корректного выбрасывания пушки в P2 я довольно много кода дописывал. Там по нормальному не сделаешь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 06-09-2022 в 09:20:

Дядя Миша для выбрасывания да. А для удаления уже всё есть в RemovePlayerItem.


Отправлено илья2 06-09-2022 в 11:11:

а если поставить несуществующую позицию и слот. оружие удалиться из худа ?
например так:

p->iSlot = -1;
p->iPosition = -1;

или так

p->iSlot = NULL;
p->iPosition = NULL;

Добавлено 06-09-2022 в 13:43:

проверил работает. Надо было самого начала так сделать не догадался малек.

Добавлено 06-09-2022 в 13:47:

все оказывается просто было и не надо было изобретать велосипед

Добавлено 06-09-2022 в 14:11:

вот так это в принципе и работает кулаки которые без костюма находятся на -1 слоте и позиции а когда достаем и одеваем костюм то кулаки уже в костюме ну в общем как в brutal half-life

https://youtu.be/yP448eB-0eY

__________________
илья


Отправлено Ku2zoff 06-09-2022 в 11:23:

Цитата:
илья2 писал:
а если поставить несуществующую позицию и слот. оружие удалиться из худа ?

А как переключаться на него в таком случае? Можно конечно забиндить на клавишу, как в квейке. Не все об этом знают, но можно.

Добавлено 06-09-2022 в 18:23:

Цитата:
илья2 писал:
как убрать оружие с инвентаря игрока ?

Цитата:
илья2 писал:
а если поставить несуществующую позицию и слот. оружие удалиться из худа ?

Ты уж определись, убрать оружие из инвентаря (то есть совсем), или из худа. Не забудь сделать bind "клавиша" "weapon_kulaki", чтобы можно было на них переключиться.


Отправлено илья2 06-09-2022 в 12:01:

а зачем переключаться если лучше на ствол переключится без костюма а потом с костюмом кулаки будут

Добавлено 06-09-2022 в 15:01:

да и еще. Кулаки с костюмом они намного лучше чем без него. Там урон по мощнее. Эти кулаки они так чтобы хоть какое нибуть оружие при старте было это лучше чем ничего

__________________
илья


Отправлено Ku2zoff 06-09-2022 в 13:31:

Цитата:
илья2 писал:
Кулаки с костюмом они намного лучше чем без него. Там урон по мощнее.

Ты их отдельными оружиями сделал? А потом вам не хватает лимита в 32 пушки... Даже в стоковом хлсдк есть возможность менять боди у пушек.


Отправлено илья2 06-09-2022 в 14:50:

Цитата:
Ku2zoff писал:
А потом вам не хватает лимита в 32 пушки

я по секрету скажу лимит я давно уже снял кое кто помог мне в этом жаль что не срослась у нас с ним дружба

__________________
илья


Отправлено Aynekko 10-09-2022 в 17:46:

Проблема - env_model не крутится через local avelocity. Либо я что-то не так делаю.

C++ Source Code:
1
if( pModel )
2
{
3
  pModel->SetLocalAvelocity( pModel->pev->movedir * Speed );
4
  Vector v = pModel->GetLocalAvelocity();
5
  ALERT( at_console, "%f %f %f\n", v.x, v.y, v.z );
6
}

Speed равен 1000. В консоль выводится (0 1000 0). То есть вектор в порядке.
Энтитя - env_model. Обращаюсь я к ней через поинтер из другой энтити, как уже ясно. Если бы энтити не было, был бы вылет. Что я упускаю? Не крутится по оси моделька и все тут.

__________________
Мой мод на Xash


Отправлено Дядя Миша 10-09-2022 в 18:44:

Ну а как она будет крутиться, если по дефолту ей задан MOVETYPE_NONE?

C++ Source Code:
1
void SV_Physics_None( CBaseEntity *pEntity )
2
{
3
  if( !SV_RunThink( pEntity ))
4
    return;
5
 
6
  if( pEntity->m_hParent )
7
    pEntity->RelinkEntity( TRUE );
8
}

Тут нет операций ни с оригином, ни с углами. Только тчинк.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 10-09-2022 в 19:08:

В общем смена мувтайпа на ходу тоже не помогла. В итоге я поставил func_rotating с галкой start on (галка обязательна). И только тогда мой код нормально работает и я могу управлять скоростью вращения через SetLocalAvelocity.

__________________
Мой мод на Xash


Отправлено Дядя Миша 10-09-2022 в 19:53:

Цитата:
Aynekko писал:
В общем смена мувтайпа на ходу тоже не помогла

Ну значит так менял. Мувтайп прекрасно меняется на горячую.

Добавлено 10-09-2022 в 22:53:

Ты какой мувтайп-то ставил вообще?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 10-09-2022 в 21:06:

Цитата:
Дядя Миша писал:
Ты какой мувтайп-то ставил вообще?

movetype_push, подсмотрел у func_rotating. Но дело в том, что ротатинг тоже не крутился, пока я его не включил. Я смотрел у него спаун и похоже что movetype_push у него стоит с момента спауна. В общем не знаю почему, но авелосити извне я могу ему поменять только когда он включен. Не юзом со значением, а именно через setlocalavelocity.

__________________
Мой мод на Xash


Отправлено Дядя Миша 11-09-2022 в 07:00:

Цитата:
Aynekko писал:
movetype_push



MOVETYPE_NOCLIP ставь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 11-09-2022 в 07:20:

Цитата:
Дядя Миша писал:
MOVETYPE_NOCLIP ставь.

Действительно работает, спасибо.
А фейспалмить вот не нужно, откуда я вообще мог знать такие особенности движка? Почему я могу вращать только определенный мувтайп по оси, а не все, что мне захочется? Странно как-то.
А пуш я взял, потому что он стоит в func_rotating и он работает. Логично? Думаю да

__________________
Мой мод на Xash


Отправлено Дядя Миша 11-09-2022 в 07:32:

Цитата:
Aynekko писал:
Почему я могу вращать только определенный мувтайп по оси, а не все, что мне захочется?

Ну а ты логически подумай, если бы можно было вращать любой мувтайп, для чего бы их тогда наплодили целую кучу?

Цитата:
Aynekko писал:
А пуш я взял, потому что он стоит в func_rotating и он работает. Логично?

https://www.hlfx.ru/forum/showthrea...=&threadid=3064

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 11-09-2022 в 07:44:

Цитата:
Дядя Миша писал:
Ну а ты логически подумай, если бы можно было вращать любой мувтайп

Я предполагал, что одно ходит, другое летает, третье не имеет гравитации, вот такое вот. Вращение по оси для меня воспринималось как просто визуальный эффект, уж не подумал бы, что такие вещи на это влияют.
Цитата:
Дядя Миша писал:
https://www.hlfx.ru/forum/showthrea...=&threadid=3064

Интересно, спасибо!

__________________
Мой мод на Xash


Отправлено Дядя Миша 11-09-2022 в 07:58:

Цитата:
Aynekko писал:
Вращение по оси для меня воспринималось как просто визуальный эффект

Но ведь вентилятор толкает своими лопастями. Какой же это визуальный эффект?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 11-09-2022 в 07:59:

Цитата:
Aynekko писал:
А пуш я взял

Зачем MOVETYPE_PUSH для точечной энтити?
Цитата:
Дядя Миша писал:
MOVETYPE_NOCLIP ставь.

На неё не будет действовать гравитация в таком случае. Вдруг понадобиться, чтобы env_model падали на пол, если расставлены выше пола? Хотя, навряд ли.


Отправлено Aynekko 11-09-2022 в 08:49:

Цитата:
Дядя Миша писал:
Но ведь вентилятор толкает своими лопастями. Какой же это визуальный эффект?

Короче говоря, я думал, что setlocalavelocity будет просто вращать angles объекта, и все. И уж мысль про мувтайп у меня даже не подумала проскочить.

__________________
Мой мод на Xash


Отправлено Ku2zoff 11-09-2022 в 10:36:

Цитата:
Aynekko писал:
будет просто вращать angles объекта, и все.

А в чём разница между вращать просто и вращать непросто? Если задаёшь avelocity на сервере, то вращается и физическая модель объекта, и по сети передаётся вращение на клиент для визуальной модели. Если хочешь вращать только для визуального эффекта, вращать надо на клиенте. Тогда, по идее, и мувтайп без разницы какой.


Отправлено Luciferchik 23-09-2022 в 15:25:

как менять боди на оружии в реальном времени, например есть у меня моделька оружия с двумя видами рук, но руки меняются только по консольной команде и при смени оружия туда назад

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 23-09-2022 в 17:29:

Luciferchik обычная халфа или ксашмод? В обычной халфе налету не сменишь ни боди, ни скин. Только при воспроизведении очередной анимации либо через SendWeaponAnim, либо через PLAYBACK_EVENT. Не знаю, как там в актуальном ксашмоде, по-моему в нём Xash Weapon System отсутствует, надо тащить из Spirit 1.9 две мессаги: на бодю и на скин. И в идеале отключать пердиктинг, чтобы не мешал.

Добавлено 24-09-2022 в 00:29:

Вообще, вот, применяй этот тутор.


Отправлено Luciferchik 23-09-2022 в 19:13:

Ku2zoff ксашмод, Xash Weapon System стащен из Spirit 1.9, значит на любую смену боди нужно делать анимацию, в идле анимации что не делай ничего не будет меняться

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Ku2zoff 24-09-2022 в 11:02:

Цитата:
Luciferchik писал:
значит на любую смену боди нужно делать анимацию

Ну по идее да, потому что сразу оно не обновляется. Если хочется налету менять, делай это в ItemPostFrame.


Отправлено Luciferchik 24-09-2022 в 12:11:

Цитата:
Ku2zoff писал:
Ну по идее да, потому что сразу оно не обновляется. Если хочется налету менять, делай это в ItemPostFrame.

благодарю за ответ, просто хотелось попробовать что-то типа а-ля Сталкера с модами оружия либо как в моде под Гмод

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Aynekko 28-09-2022 в 11:30:

На что влияет предиктинг оружия в халфе? Это только визуальное отображение на клиенте (анимация без задержек) или же оказывается влияние на сервер (клиент сообщает о уже сделанном выстреле, попадании и т.д.)?

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-09-2022 в 13:36:

Цитата:
Aynekko писал:
клиент сообщает о уже сделанном выстреле, попадании и т.д.

Если бы клиент занимался подобными вещами, то все бы читерили напропалую. Нет, только за визуальную часть отвечает, очень мерзко, когда ты жмёшь выстрел, а пушка начинает стрелять с ощутимым лагом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 28-09-2022 в 13:41:

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

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 28-09-2022 в 14:21:

Цитата:
Aynekko писал:
Ведь в коде сервера в PrimaryAttack выставляется тайминг следующей атаки.

Но клиентское время таки идёт на клиенте.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 02-10-2022 в 14:47:

Вот еще такой вопрос. На сервере мы можем делать тряску экрана

C++ Source Code:
1
MESSAGE_BEGIN( MSG_ONE, gmsgShake, NULL, pPlayer->edict() );		// use the magic #1 for "one client"
2
 
3
WRITE_SHORT( shake.amplitude );				// shake amount
4
WRITE_SHORT( shake.duration );				// shake lasts this long
5
WRITE_SHORT( shake.frequency );				// shake noise frequency
6
 
7
MESSAGE_END();

А как это запустить сразу на клиенте? То есть чтобы клиент посылал движку эти три числа после какого-то действия, и экран бы трясся.

__________________
Мой мод на Xash


Отправлено Ku2zoff 02-10-2022 в 15:53:

Aynekko дёрни клиентскую часть мессаги из движка в дллку и вызывай её сразу на клиенте. Сорцы ксаша открыты. pfnCalcShake, pfnApplyShake, и саму мессагу CL_ParseScreenShake. Делов минут на 10. Ну, точнее, вызывать надо не мессагу, а заполнять структурку screen_shake_t.

C++ Source Code:
1
void CL_ParseScreenShake( sizebuf_t *msg )
2
{
3
  clgame.shake.amplitude = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<12));
4
  clgame.shake.duration = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<12));
5
  clgame.shake.frequency = (float)(word)MSG_ReadShort( msg ) * (1.0f / (float)(1<<8));
6
  clgame.shake.time = cl.time + max( clgame.shake.duration, 0.01f );
7
  clgame.shake.next_shake = 0.0f; // apply immediately
8
}

Это то, что принимает мессага с сервера. Вот и сделай помимо этого ещё какой-нибудь CL_MakeScreenShake(float amp, float dur, float freq, float time). Я так заставлял экран трястись от ударов альт. атакой разводного ключа прямо в эвенте.


Отправлено Aynekko 02-10-2022 в 18:50:

Понял, уже сделал

Добавлено 02-10-2022 в 21:50:

Столкнулся с такой штукой касаемо baseline. В общем создаю я спрайт на сервере через SpriteCreate. После его создания я задаю ему свойства, рендермод и прозрачность.
И вот незадача - на клиенте мне рапортует, что у него baseline.rendermode и baseline.renderamt равны нулю. И только после сейврестора уже показывает нужные числа.
Вот и собственно вопрос, а как мне обновить baseline после того, как я задал свойства?

__________________
Мой мод на Xash


Отправлено Дядя Миша 03-10-2022 в 09:02:

Вазелин сохраняется только для объектов, которые спавнятся с уровня, для объектов, создаваемых во время игры он неактуален и не нужен.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-10-2022 в 13:39:

Aynekko а зачем ты на клиенте берёшь свойства из вазелина? Надо брать из курстейта.


Отправлено Дядя Миша 03-10-2022 в 13:54:

Цитата:
Aynekko писал:
И только после сейврестора уже показывает нужные числа.

Ну естественно. Вазелин для новой карты создаётся для тех энтить, что на ней расположены. А для рестора - для всех энтить, сохранённых в сейв. Туда вообще лезть не следует, не читать не писать. Единственное исключение - ворлдспаун.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 03-10-2022 в 14:30:

Цитата:
Ku2zoff писал:
Aynekko а зачем ты на клиенте берёшь свойства из вазелина? Надо брать из курстейта.

Я постоянно меняю curstate на клиенте, а в baseline хранится оригинальное число, которое я использую, как отправную точку. Впрочем, выход я уже нашел.

__________________
Мой мод на Xash


Отправлено Ku2zoff 03-10-2022 в 14:37:

Цитата:
Aynekko писал:
Я постоянно меняю curstate на клиенте, а в baseline хранится оригинальное число, которое я использую, как отправную точку.

Как вариант можно использовать для хранения исходных значений пользовательскую структурку. А вообще для чего тебе это? Удобней управлять значениями на сервере, потому что в классе энтити можно завести 100500 переменных для хранения исходных значений.


Отправлено Aynekko 03-10-2022 в 15:21:

Цитата:
Ku2zoff писал:
вообще для чего тебе это?

Плавное исчезание энтити на расстоянии для оптимизации, ну и чтоб красиво было. На сервере - значит попрощаться с плавностью в мультиплеере

__________________
Мой мод на Xash


Отправлено Дядя Миша 03-10-2022 в 15:51:

Цитата:
Aynekko писал:
Я постоянно меняю curstate на клиенте

curstate - только для чтения. Менять его нельзя ни в коем случае.
Впрочем все три стейта - baseline, curstate, prevstate нельзя менять.

Цитата:
Aynekko писал:
а в baseline хранится оригинальное число, которое я использую, как отправную точку

Это никакая не отправная точка. Удивительно, что оно у тебя вообще работает.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 03-10-2022 в 16:18:

Цитата:
Дядя Миша писал:
curstate - только для чтения. Менять его нельзя ни в коем случае.

Почему нельзя? Я так понял он каждый раз с сервера приходит все равно. Я его прям на входе ловлю и пишу туда свое. Все работает

Добавлено 03-10-2022 в 19:18:

Цитата:
Дядя Миша писал:
Это никакая не отправная точка.

Я же говорю, я ее просто так использую. Ну, главное работает.

__________________
Мой мод на Xash


Отправлено Дядя Миша 03-10-2022 в 16:28:

Цитата:
Aynekko писал:
Я так понял он каждый раз с сервера приходит все равно

В мультике он далеко не каждый кадр приходит с сервера. Да и вообще, потом не удивляйся, если начнётся что-то странное. Автор XDM тоже занимался подобными вещами, в результате его мод работал всё хуже и хуже.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 03-10-2022 в 16:33:

Ну я тестирую, экспериментирую. Конечно в случае чего переделаю. Я тестил на пинге 100 (фейковом), никаких проблем не обнаружил пока что.

__________________
Мой мод на Xash


Отправлено Ku2zoff 07-10-2022 в 13:35:

Цитата:
Aynekko писал:
На сервере - значит попрощаться с плавностью в мультиплеере

Должно быть решение на уровне рендерера, не затрагивающее энтварсы.

Добавлено 07-10-2022 в 20:35:

Есть идея. Пометь энтить каким-нибудь флагом, и запрети для таких энтить передачу pev->renderamt по сети:
C++ Source Code:
1
state->rendermode    = ent->v.rendermode;
2
if (!FBitSet(ent->v.flags, FL_MYFLAG)) state->renderamt     = ent->v.renderamt;
3
state->renderfx      = ent->v.renderfx;
4
state->rendercolor.r = ent->v.rendercolor.x;
5
state->rendercolor.g = ent->v.rendercolor.y;
6
state->rendercolor.b = ent->v.rendercolor.z;

Так, на всякий случай. А оригинальное значение renderamt замени на кастомный keyvalue и передавай свободным энтварсом, например iuser1.


Отправлено Aynekko 08-10-2022 в 12:10:

Цитата:
Дядя Миша писал:
curstate - только для чтения. Менять его нельзя ни в коем случае.

Тем временем в CL_FxBlend():
C++ Source Code:
1
case kRenderFxFadeFast:
2
  if( RP_NORMALPASS( ))
3
  {
4
    if( e->curstate.renderamt > 3 )
5
      e->curstate.renderamt -= 4;
6
    else e->curstate.renderamt = 0;
7
  }
8
blend = e->curstate.renderamt;
9
break;

Цитата:
Ku2zoff писал:
передавай свободным энтварсом, например iuser1.

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 08-10-2022 в 13:44:

Цитата:
Aynekko писал:
Тем временем в CL_FxBlend():

Хак от Вальвы. Еще и не timebased.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено hgrunt_2020 12-10-2022 в 12:52:

Вернёмся к моему старому вопросу!

Цитата:
Ku2zoff писал:
значит, между анимациями контроллер сбрасывается в дефолтное положение. ent->curstate.controller[0] нужно задавать значение не в функции выстрела, а каждый кадр. Или в HUD_Frame, или в StudioDrawModel/StudioSetupBones.

Ну посылать переменную я способен, а работать с HUD_Frame/StudioDrawModel/StudioSetupBones не умею. Что, как, зачем, и почему?

Добавлено 12-10-2022 в 13:53:

так, я смог это сделать но ничего не дало, как сбрасывалось так и сбрасывается

Добавлено 12-10-2022 в 13:54:

C++ Source Code:
1
extern int iWpnId;
2
 
3
void DLLEXPORT HUD_Frame( double time )
4
{
5
  ServersThink( time );
6
  if (iWpnId == WEAPON_TIHAR || iWpnId == WEAPON_GAUSS)
7
  {
8
    gEngfuncs.GetViewModel()->curstate.controller[0] = gHUD.m_iBone1;
9
  }
10
  GetClientVoiceMgr()->Frame(time);
11
}


Добавлено 12-10-2022 в 14:46:

при этом curstate.controller[0] имеет заданное ему значение и не поднимается плавно до него

Добавлено 12-10-2022 в 15:20:

Я починил баг! Один товарищ написал мне следующее:
Цитата:

Cкорее всего причина в том что код интерполяции пытается использовать данные контроллера за прошлый кадр, но поскольку движок это дело обновляет, то для вьюмодельки это число пустое, потому-что это энтитя на клиенте.

Я изучил код связанный с костями и увидел что там идёт расчет с curstate.controller и latched.prevcontroller, который у меня всегда был равен 0, потому стрелка и прыгала до 0

Добавлено 12-10-2022 в 15:52:

https://youtu.be/Lri8ifPxxSc вот результат

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Ku2zoff 12-10-2022 в 15:04:

Цитата:
hgrunt_2020 писал:
curstate.controller и latched.prevcontroller

Поэтому надо было сразу глядеть StudioSetupBones, а следом StudioCalcBoneAdj. Там как раз эта интерполяция делается. Понятно, что для вьюмодельки нету latched.prevcontroller, у неё нет никакой информации из предыдущего кадра. Поэтому нельзя сделать интерполяцию между анимациями. Да и не нужно, стрёмно будет выглядеть, надо по-хитрому высчитывать тайминги. Ну нафиг такой геморрой.


Отправлено Дядя Миша 12-10-2022 в 18:29:

На вьюмодельках, я вообще не припоминаю, чтобы контроллеры костей использовались.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено hgrunt_2020 12-10-2022 в 22:28:

Дядя Миша ну я первый кто их использует)

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено илья2 23-10-2022 в 18:09:

всем привет: Spawned a NULL entity! к чему относиться данная ошибка ?

__________________
илья


Отправлено hgrunt_2020 24-10-2022 в 06:25:

Дословный перевод: Заспавнена Нуллевая энтитя

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено илья2 24-10-2022 в 09:51:

да вы представьте что я придумал->XVCORE97 или в другом названии СУПЕР ПРОТОТИП-что это ?--->:прототип синтезированной сверх новой колотронной дыры
закупоренном в особом контейнере высокого назначения опасность!!!:--->особо опасное супер сверх оружие !!!.

Да писателям фантастам такое бы понравилось

__________________
илья


Отправлено hgrunt_2020 24-10-2022 в 10:16:

илья2
1. Это надо было писать в фулде
2. Рекомендую немного поизучать русский язык и грамматику в целом

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено илья2 24-10-2022 в 10:44:

Это надо было писать в фулде:да точно надо было

Добавлено 24-10-2022 в 13:44:

кому интересно сейчас я создаю новое оружие XVL989

__________________
илья


Отправлено илья2 31-10-2022 в 17:08:

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

https://imgur.com/a/OR6i8TQ

Добавлено 31-10-2022 в 16:21:

Может, есть способ изначально удалить это оружие ? с пустой обоймой ?

Добавлено 31-10-2022 в 20:08:

ну все я исправил баг

__________________
илья


Отправлено hgrunt_2020 04-11-2022 в 07:55:

Цитата:
Дядя Миша писал:
А вы как определяете где говнокод, а где нет?
Вот как раз таинственный множитель на 1.5525 это и есть говнокод.
Как вы это число получили? Ни деление 16/9 ни 16/10 его не даёт.

Ух, уже три месяца прошло, а я только щас выяснил чем является этот множитель - это переменная hud_scale. Я был удивлён, когда так получилось, а выяснил я это опытным путём. Изменяя разрешение экрана и значение hud_scale я понял что число 1.5525 и значение hud_scale совпадают при максимальном разрешении, уменьшая же разрешение я заметил что изображение увеличивается

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Aynekko 04-11-2022 в 17:09:

Как правильно посчитать кол-во активных игроков на сервере?
Я взял код из multiplayer rules:

C++ Source Code:
1
int CountPlayers( void )
2
{
3
  int	num = 0;
4
 
5
  for ( int i = 1; i <= gpGlobals->maxClients; i++ )
6
  {
7
    CBaseEntity *pEnt = UTIL_PlayerByIndex( i );
8
 
9
    if ( pEnt )
10
      num = num + 1;
11
  }
12
 
13
  return num;
14
}

Запускаю сервер, показывает 0. Зашел на сервер - 1. Вышел с сервера... все равно 1.
Команда status в дедикатед сервере не показывает никаких игроков. Как правильно посчитать их тогда?

Добавлено 04-11-2022 в 20:09:

В общем залез я в движок и посмотрел, что делает сервер, когда игрок уходит. А он там обнуляет кейбуфферы.
Так что я сделал вот так:
C++ Source Code:
1
int playercount = 0;// CountPlayers();
2
for( int i = 1; i <= gpGlobals->maxClients; i++ )
3
{
4
  CBasePlayer *pPlayer = (CBasePlayer*)UTIL_PlayerByIndex( i );
5
 
6
  // skip invalid players
7
  if( !pPlayer )
8
    continue;
9
 
10
  const char *model = g_engfuncs.pfnInfoKeyValue( g_engfuncs.pfnGetInfoKeyBuffer( pPlayer->edict() ), "model" );
11
  if( model[0] <= 0 )
12
    continue;
13
 
14
  playercount++;
15
}

Делаю проверку на кейбуффер "model". Работает.
Если у вас будут другие более адекватные варианты, я только приветствую.

__________________
Мой мод на Xash


Отправлено илья2 07-11-2022 в 06:39:

извините что поднимаю старую тему опять на теже грабли:а точно ли 512 лимит прекешей зарыт в движок не в карты ли ? я пробовал сломаные исходники на картах half-life там все нормально работает захожу в карты opossing force все глючит.

Добавлено 07-11-2022 в 09:30:

особенно меня удивляет вот эта ошибка Host_Error: PF_precache_model_I: Model 'models/houndeye.mdl' failed to precache because the item count is over the 512 limit.

houndeye этот объект был в картах халф лайфа захожу в карты opossing force пожалуйста ошибка прекеша

Добавлено 07-11-2022 в 09:32:

кажется это не оптимизированные карты или не совсем правильно скомпилированные где в half-life картах лимит превышен а в opossing force картах лимит занижен

Добавлено 07-11-2022 в 09:36:

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

Добавлено 07-11-2022 в 09:39:

а есть ли оптимизированные карты opossing force где лимит завышен ?

__________________
илья


Отправлено Дядя Миша 07-11-2022 в 08:54:

Цитата:
илья2 писал:
зарыт в движок не в карты ли

Это общий лимит как для встроенных моделей, так и для внешних.
Поэтому он может меняться от карты к карте. Если на карте много всяких дверей, пушаблей и поездов, то слотов для моделей остаётся меньше.
Поэтому уровни действительно влияют на этот лимит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 07:35:

Поэтому уровни действительно влияют на этот лимит:о все таки прав

Добавлено 08-11-2022 в 10:31:

но я до сих пор не знаю как этот лимит одолеть удаляю монстров оружия из исходников ничего не помогает как же так ?

Добавлено 08-11-2022 в 10:34:

оружие гильзы спрайты отдельными бодями в одну модель делать очень сложно

Добавлено 08-11-2022 в 10:35:

а прошлое мое исправление все таки не совсем помогло

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 07:55:

Цитата:
илья2 писал:
удаляю монстров оружия из исходников ничего не помогает

Монстры и оружия в исходниках не занимают слоты моделей, до тех пор, пока ты не поставил их на уровень. Так что ты зря их удалял.
Всё зависит от конкретной карты.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 08-11-2022 в 09:48:

Так, а сам лимит увеличить никак нельзя?


Отправлено илья2 08-11-2022 в 09:54:

я в тупиковой ситуации что делать ?

Добавлено 08-11-2022 в 12:54:

лимит все портит

__________________
илья


Отправлено Aynekko 08-11-2022 в 10:12:

На ксаш перейди и забудь о лимитах.

__________________
Мой мод на Xash


Отправлено илья2 08-11-2022 в 10:25:

Все таки это все из за оружий ! Удалил я больше оружия с не охотой . Все заработало как надо. Мда. плохо, что в Half-life есть такая штука, как лимит.

Добавлено 08-11-2022 в 13:25:

Цитата:
Aynekko писал:
На ксаш перейди и забудь о лимитах.

придется переходить если хочется про лимиты забыть

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 10:31:

Цитата:
FiEctro писал:
Так, а сам лимит увеличить никак нельзя?

Можно, для этого и был написан Xash3D, ну и не только для этого.

Добавлено 08-11-2022 в 13:31:

Цитата:
илья2 писал:
Удалил я больше оружия с не охотой

Надо было удалять не сами оружия а их вызов в UTIL_PrecacheOther.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 11:00:

Цитата:
Дядя Миша писал:
Надо было удалять не сами оружия а их вызов в UTIL_PrecacheOther. [/B]

тогда они работать будут неправильно и все равно будут просить прекеш

Добавлено 08-11-2022 в 13:55:

7 оружий пришлось удалять это ужас

Добавлено 08-11-2022 в 13:56:

надо пробовать на ксаше запустить может и получиться лимит одолеть

Добавлено 08-11-2022 в 14:00:

а что если попробовать удалить 7 монстров если игра требует удалить 7 оружий то это должно по идее и с монстрами прокатить надо попробовать

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 11:39:

Цитата:
илья2 писал:
тогда они работать будут неправильно и все равно будут просить прекеш

Ты не понял. Не в коде самих оружий удаляй, а в util.cpp или в player.cpp где там, я не помню уже. Вообщем код который отвечает за impulse 101.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 12:01:

да теперь понял это в player.cpp

Добавлено 08-11-2022 в 14:49:

можно попробовать

Добавлено 08-11-2022 в 14:51:

Попробовал я монстров По удалять. Не, не работает такой вариант. Только с оружий лимит убирается. Бред, конечно, но это так.

Добавлено 08-11-2022 в 14:52:

Это значит, что монстров можно делать сколько угодно, а вот оружия уже нет. Так не получиться.

Добавлено 08-11-2022 в 14:59:

impulse 101 а толку ну удалю там оружия все равно проблема прекеша

Добавлено 08-11-2022 в 15:01:

проблема то появляется с перехода с карты на карту а не при impulse 101

__________________
илья


Отправлено Chyvachok 08-11-2022 в 12:05:

Ну с модом-солянкой по любому рано или поздно придётся переезжать, или извращаться и как Гуль все запихивать в одну модель.

А вообще не пойму откуда вообще такие анальные лимиты, почему в Думе к примеру можно делать карты на тысячи монстров что даже современный комп тормозит дико от такого кол-ва, на ГЗДум полно всяких оружейных солянок где сотни оружий, или взять тот же Russian Overkill где того оружия мало того что кучи, так еще оно все дикое и убойное что с одного выстрела половину уровня выносит не тянет комп, будешь играть в пошаговую игру, а в Халве запили Flak Cannon из Анрила и какой-то дезматч на 32 игрока уже сломается от него.


Отправлено илья2 08-11-2022 в 12:16:

А вообще не пойму откуда вообще такие анальные лимиты:да вот и мне хотелось бы понять это

Добавлено 08-11-2022 в 15:16:

ведь в халфу еще можно много всего добавлять почему тогда такие лимиты ставят ?

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 12:47:

Цитата:
Chyvachok писал:
А вообще не пойму откуда вообще такие анальные лимиты, почему в Думе к примеру можно делать карты на тысячи монстров

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 15:06:

перешел я на ксаш да баг с прекешом исчез но есть другие баги со звуками с glowshell с shockrifle

Добавлено 08-11-2022 в 15:56:

мда это уже баги самого движка

Добавлено 08-11-2022 в 18:06:

А что нибудь кроме ксаш есть ? Что похоже на Халфу. Но снимет лимит, а то он весь мод мне сломал, Все придется переделывать.

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 15:40:

Да, ксаш хорошо выявляет баганый код. Исправляй теперь ошибки в своём коде.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 15:52:

ксаш хорошо выявляет баганый код:но у меня в халфе все нормально работает значит он не баганый хотя вам виднее

Добавлено 08-11-2022 в 18:52:

Исправляй теперь ошибки в своём коде:да у меня просто выбора нету придется исправлять

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 15:55:

Цитата:
илья2 писал:
но у меня в халфе все нормально работает значит он не баганый хотя вам виднее

Обсуждалось не раз и не два. Голдсорс очень часто игнорирует явные ошибки до поры до времени. А потом всё сыплется нахрен и уже невозможно понять что произошло. Под ксашем протестировано более 2500 модов на предмет корректной работы.

Цитата:
илья2 писал:
да у меня просто выбора нету придется исправлять

Лимиты ты всё равно никак не подымашь другим способом.
Кидай сюда что не работает, я подскажу как исправить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 16:03:

Цитата:
Дядя Миша писал:
Кидай сюда что не работает, я подскажу как исправить.

ок хорошо

Добавлено 08-11-2022 в 19:03:

в оружии идет двойной повтор анимации

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 16:06:

Цитата:
илья2 писал:
в оружии идет двойной повтор анимации

Ты какой ксаш качал? Мой оригинальный или FWGS?

Попробуй просто выставить в консоли cl_lw 0 для начала.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 16:32:

вот этот https://www.moddb.com/engines/xash3...4-extras-stable

Добавлено 08-11-2022 в 19:10:

прбовал старые версии там еще хуже больше багов

Добавлено 08-11-2022 в 19:11:

Цитата:
Дядя Миша писал:
Попробуй просто выставить в консоли cl_lw 0 для начала.

не не работает

Добавлено 08-11-2022 в 19:32:

вот еще то же самое

__________________
илья


Отправлено илья2 08-11-2022 в 18:04:

еще нож тоже повторяет

Добавлено 08-11-2022 в 20:24:

ну все я исправил баг в функции PrimaryAttack есть двойной повтор Swing
SetThink(&CFists2::SwingAgain); который перенаправляется на

void CFists2::SwingAgain(void)
{
Swing(0);<----вот здесь как раз и есть повтор
}

было
void CFists2::PrimaryAttack()
{
if (!Swing(1))
{
#ifndef CLIENT_DLL
SetThink(&CFists2::SwingAgain);
pev->nextthink = gpGlobals->time + 0.1;

switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}

//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
#endif
}
}
стало
void CFists2::PrimaryAttack()
{
if (!Swing(1))
{
#ifndef CLIENT_DLL
pev->nextthink = gpGlobals->time + 0.1;

switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}

//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
#endif
}
}

Добавлено 08-11-2022 в 20:24:

надо и в остальных исходниках это исправить

Добавлено 08-11-2022 в 20:40:

правда после таких махинаций идет двойное повторение декаля после удара о стену

Добавлено 08-11-2022 в 21:04:

все исправил if (!Swing(1))->if (Swing(1))

было
void CFists2::PrimaryAttack()
{
if (Swing(1))
{
#ifndef CLIENT_DLL

pev->nextthink = gpGlobals->time + 0.1;

switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}

//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
#endif
}
}

стало
void CFists2::PrimaryAttack()
{
switch (RANDOM_LONG(0, 1))
{
case 0:
m_pPlayer->pev->punchangle.x = -10; // pitch
m_pPlayer->pev->punchangle.y = -10; // yaw
m_pPlayer->pev->punchangle.z = 10; // roll
break;
case 1:
m_pPlayer->pev->punchangle.x = 10; // pitch
m_pPlayer->pev->punchangle.y = 10; // yaw
m_pPlayer->pev->punchangle.z = -10; // roll
break;
}

//UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
Vector vecDir;
float flZVel = m_pPlayer->pev->velocity.z;
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * -100;
m_pPlayer->pev->velocity.z = flZVel;
if (Swing(1))
{
pev->nextthink = gpGlobals->time + 0.1;
}
}

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 18:21:

Ты клиентские оружия делал или нет?

Добавлено 08-11-2022 в 21:20:

Я не могу твои архивы открыть, сохраняй в zip.

Добавлено 08-11-2022 в 21:21:

Не знаю, что ты там такое сделал, но cl_lw 0 должно было помочь в данном случае.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 18:55:

Цитата:
Дядя Миша писал:
Ты клиентские оружия делал или нет?

Добавлено 08-11-2022 в 21:20:

Я не могу твои архивы открыть, сохраняй в zip.

Добавлено 08-11-2022 в 21:21:

Не знаю, что ты там такое сделал, но cl_lw 0 должно было помочь в данном случае.

оружия у меня всегда в dlls находятся не знаю что ты имеешь виду под словом клиентские

Я не могу твои архивы открыть, сохраняй в zip:ок

Не знаю, что ты там такое сделал, но cl_lw 0 должно было помочь в данном случае:я же говорю не помогло

Добавлено 08-11-2022 в 21:47:

ууууууууууууу как надоели эти баги

Добавлено 08-11-2022 в 21:47:

голова кипит

Добавлено 08-11-2022 в 21:55:

если ты про клиентские пушки xash weapon system то нет я туда не заглядывал

__________________
илья


Отправлено Дядя Миша 08-11-2022 в 19:15:

Ок, тогда попробуй наоборот cl_lw 1
И кстати после установки этого значения, надо движок полностью перезапускать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 08-11-2022 в 19:38:

Цитата:
Дядя Миша писал:
Ок, тогда попробуй наоборот cl_lw 1
И кстати после установки этого значения, надо движок полностью перезапускать.

я уже исправил этот баг с повтором. cl_lw не нужен я сейчас с другим багом вожусь

__________________
илья


Отправлено илья2 09-11-2022 в 09:43:

Ну что ж, продолжаем исправлять баги В этом коде я создаю молнию через пушку. Работала функция нормально. Теперь эта функция направляется на оригин карты, а не на позицию forward-а. как исправить?

void CShockrifle::CreateChargeEffect2( void )
{
#ifndef CLIENT_DLL
if( g_pGameRules->IsMultiplayer())
return;
int iBeam = 0;

for( int i = 2; i < 5; i++)
{
if( !m_pBeam[iBeam] )
m_pBeam[iBeam] = CBeam::BeamCreate("sprites/lgtning.spr", 1000);
m_pBeam[iBeam]-> PointEntInit( m_pPlayer->GetGunPosition() + gpGlobals->v_forward * 500, m_pPlayer->entindex() );
m_pBeam[iBeam]->SetStartAttachment(1);
m_pBeam[iBeam]->SetEndAttachment(i);
m_pBeam[iBeam]->SetNoise( 75 );
m_pBeam[iBeam]->pev->scale= 10;
m_pBeam[iBeam]->SetColor( 0, 253, 253 );
m_pBeam[iBeam]->SetScrollRate( 30 );
m_pBeam[iBeam]->SetBrightness( 190 );
iBeam++;
}
#endif
}

Добавлено 09-11-2022 в 12:43:

у меня появляется подозрение что он не считает функцию GetGunPosition

__________________
илья


Отправлено Aynekko 09-11-2022 в 11:01:

Прежде, чем использовать forward вектор, нужно сначала сделать векторы через MakeVectors. Не вижу этого у тебя.

__________________
Мой мод на Xash


Отправлено илья2 09-11-2022 в 11:31:

не не получилось прописывал это

Vector v_forward;

UTIL_MakeVectors( m_pPlayer->pev->v_angle + gpGlobals->v_forward );

__________________
илья


Отправлено Aynekko 09-11-2022 в 13:21:

Цитата:
илья2 писал:
UTIL_MakeVectors( m_pPlayer->pev->v_angle + gpGlobals->v_forward );

Это неправильно. gpGlobals->v_forward это результат MakeVectors. Ты не можешь его там использовать. Ну, вернее, можешь, только зачем. Оставь только v_angle.

__________________
Мой мод на Xash


Отправлено илья2 09-11-2022 в 14:00:

да все я другой код поставил даже лучше прежнего теперь моя пушка настоящими молниями бьет

Добавлено 09-11-2022 в 16:30:

поставил эвент от гауски и изменил под молнии

Добавлено 09-11-2022 в 16:32:

этот код он создаёт такие слабенькие молнии не массивные

Добавлено 09-11-2022 в 17:00:

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

__________________
илья


Отправлено илья2 09-11-2022 в 14:00:

2 файл

__________________
илья


Отправлено Дядя Миша 09-11-2022 в 14:20:

Цитата:
илья2 писал:
m_pPlayer->pev->v_angle + gpGlobals->v_forward

То есть ты прибавляешь к углам эйлера вектор и удивляешься, почему у тебя пушка неверно стреляет?

Цитата:
илья2 писал:
TE_SPRITETRAIL почему то разучились летать нормально

Ну в гауссе они же нормально летают?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 09-11-2022 в 15:16:

Ну в гауссе они же нормально летают?:не в гаусе в плазменной винтовке

Добавлено 09-11-2022 в 17:36:

в гауссе если ты про это балы то да норм летают но они в эвентах прописаны

Добавлено 09-11-2022 в 17:37:

как их из евентах вызывать я не совсем понимаю

Добавлено 09-11-2022 в 17:39:

хотя если покопаться подольше в гауссе может что то и нарою из этого

Добавлено 09-11-2022 в 18:16:

PLAYBACK_EVENT_FULL( FEV_NOTHOST, edict(), m_usPlasma, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0.0, 0, 0.0 );

как этот эвент заставить вызывать через оригин гранаты ? у меня он вызывается на оригин карты

Добавлено 09-11-2022 в 18:16:

гранаты то есть плазмы

__________________
илья


Отправлено Дядя Миша 09-11-2022 в 15:31:

Цитата:
илья2 писал:
в гауссе если ты про это балы то да норм летают но они в эвентах прописаны

А ты как сделал?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 09-11-2022 в 15:39:

Цитата:
Дядя Миша писал:
А ты как сделал?

все просто брал sporelauncher и штудировал его под plasma rifle добаляя всякие эффекты которые я знал

Добавлено 09-11-2022 в 18:35:

а эффект отлёта спрайтов делал через мессагу TE_SPRITETRAIL

Добавлено 09-11-2022 в 18:36:

добавляя скорости этой мессаги

Добавлено 09-11-2022 в 18:36:

вроде ничего сложного нет для plasmarifle

Добавлено 09-11-2022 в 18:38:

ну что дядя миша как вызывать евент TE_SPRITETRAIL через оригин гранаты ?

Добавлено 09-11-2022 в 18:39:

конечно я не все хитрости кодинга знаю поэтому и задаю такие вопросы но кое какие хитрости тесть знания у меня в памяти есть

__________________
илья


Отправлено Дядя Миша 09-11-2022 в 15:39:

Цитата:
илья2 писал:
добавляя скорости этой мессаги

Ты наверное слишком много скорости добавил. Попробуй назад открутить.

Цитата:
илья2 писал:
как вызывать евент TE_SPRITETRAIL через оригин гранаты ?

Там с флагами всё связано, надо нужные флаги прописать, но я уже не помню, какие именно. Попробуй FEV_NOTHOST заменить на FEV_GLOBAL к примеру.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 09-11-2022 в 19:40:

не FEV_GLOBAL ставил не работает
Попробуй назад открутить тоже не работает
Добавлено 09-11-2022 в 18:52:

мда с TE_SPRITETRAIL здесь конкретные проблемы

Добавлено 09-11-2022 в 19:59:

ееее пошло дело пошло исправляю баг да

Добавлено 09-11-2022 в 20:04:

мда правда есть один минус в этом способе размер спрайтов маленький

Добавлено 09-11-2022 в 20:05:

хотя ладно пойдет что есть то есть

Добавлено 09-11-2022 в 20:28:

класс исправил работает как надо

Добавлено 09-11-2022 в 22:22:

мдаа не думал что столкнусь с такой проблемой звук не воспроизводиться !

EMIT_SOUND(ENT(pev), CHAN_VOICE, "weapons/fatrongrenade/hl2ep1citadelexplosion.wav", 1, ATTN_NORM);

функция вроде нормальная точно такие же там стоят нормально воспроизводятся наверное проблема со звуком или нет ?

Добавлено 09-11-2022 в 22:32:

дядя миша а ты уверен что ксаш баги видит может он сам баганутый это как минимум странно такое видеть что все звуки норм воспроизводятся а этот нет

Добавлено 09-11-2022 в 22:40:

я конечно не знаю поможет ли это или нет но вот сам звук может там есть ошибка хотя вряд тли

https://disk.yandex.ru/d/UiDA_iCUOpLxyw

__________________
илья


Отправлено Дядя Миша 09-11-2022 в 19:43:

Частота дискретизации - 48 килогерц. Переконвертируй в 44100 хотя бы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 09-11-2022 в 20:06:

Цитата:
Дядя Миша писал:
Переконвертируй в 44100 хотя бы.

44100 попробуем

Добавлено 09-11-2022 в 23:06:

о заработало спасибо

__________________
илья


Отправлено Дядя Миша 09-11-2022 в 20:35:

Ну вот, за полдня всё исправил, а говорил - сто тысяч миллионов багов.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 09-11-2022 в 22:08:

ну теперь то да все ксашовские баги я исправил

Добавлено 10-11-2022 в 00:39:

Но все таки давай признаемся, что он все таки глюканутый. У меня он иногда вылетает, ошибки выдает. Не постоянно конечно, иногда кнопки на клавиатуре не всегда работают. это уже баги. Ксаша. Не моего мода.

Добавлено 10-11-2022 в 01:08:

ксаш еще и проигрывает сам атаку выстрела без разрешения мыши ну и как это понять ?

__________________
илья


Отправлено Дядя Миша 10-11-2022 в 07:31:

Ну значит не все баги ты исправил.
Можешь еще попробовать Xash FWGS, там предиктинг должен лучше работать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 10-11-2022 в 09:29:

в принципе эти баги в игре особо сильно не мешают можно и забыть про них

Добавлено 10-11-2022 в 12:22:

как сделать не убиваемого монстра ? ничего не получается ставил 100000 хп бестолку

Добавлено 10-11-2022 в 12:29:

а здоровье монстров обязательно надо через gSkillData делать ?

__________________
илья


Отправлено Next Day 10-11-2022 в 09:31:

Посмотри код Gman


Отправлено илья2 10-11-2022 в 09:47:

да кое что есть в TakeDamage

Добавлено 10-11-2022 в 12:43:

найс сработало спасибо

Добавлено 10-11-2022 в 12:47:

да как хорошо что в халф лайф есть такой не убиваемый монстр под названием gman

__________________
илья


Отправлено илья2 10-11-2022 в 22:21:

кто знает можно ли в исходниках ставить вот такие числа>1000000000000 ?

Добавлено 11-11-2022 в 01:10:

это у нас триллион

Добавлено 11-11-2022 в 01:21:

я вот знаю что в java кодинге можно ставить и трилион и квантилион квадриллион а здесь все таки к сожалению есть кое какие ограничения по цифрам миллиард и все а дальше компилятор выдает ошибку. Но можно ли это ограничение снять ?

__________________
илья


Отправлено Gandalv 11-11-2022 в 09:55:

Я вот никогда не делал моды, но не понимаю, как можно делать моды, не зная основ с++

https://metanit.com/cpp/tutorial/2.3.php
Хотя бы эту ссылку открой и читай до просветления.

__________________
Углеродные звезды с древними спутниками, которые колонизируют разумные грибы...
Газовые гиганты, на которых обитает метеорологический разум...
Миры, растянутые на мембранах, где измерения пересекаются...
Это невозможно описать нашим ограниченным языком...


Отправлено илья2 11-11-2022 в 13:38:

а вот так оказываться можно если хочется сильно

Добавлено 11-11-2022 в 16:34:

честно прочитал ничего не понял

Добавлено 11-11-2022 в 16:35:

есть про байты биты наверно надо сначала это понять

Добавлено 11-11-2022 в 16:38:

мдаа и как это понять ? https://ru.wikipedia.org/wiki/%D0%9...%BA%D0%BE%D0%B4

Добавлено 11-11-2022 в 16:38:

вообще не в тему

__________________
илья


Отправлено Дядя Миша 11-11-2022 в 13:43:

илья2 а зачем тебе сто тысяч миллионов? Ты хочешь записать госдолг США?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 11-11-2022 в 14:43:

ну это да я по приколу такие большие цифры пишу

Добавлено 11-11-2022 в 16:48:

вооот смотрите какое больше число 1000000000000000000000000000

Добавлено 11-11-2022 в 16:49:

было бы прикольно такие цифры большие ставить

Добавлено 11-11-2022 в 16:52:

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

Добавлено 11-11-2022 в 17:22:

ага вот как прописывается long
long b = 1000000000;

b это уже само число

Добавлено 11-11-2022 в 17:22:

начинаю понимать немного

Добавлено 11-11-2022 в 17:26:

мда печально "длинный", за которым следует "длинный", является незаконным

Добавлено 11-11-2022 в 17:31:

error C2177: constant too big

Добавлено 11-11-2022 в 17:34:

даааааа сработало круто прописал вот эту функцию:
float num3 = 1000000000000000000000000000000.0f;

Добавлено 11-11-2022 в 17:43:

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

__________________
илья


Отправлено XaeroX 11-11-2022 в 14:55:

Цитата:
илья2 писал:
было бы прикольно такие цифры большие ставить

Ну так ты в коде используй число 100000, а нолики потом при выводе в HUD пририсуй сколько нужно.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено илья2 11-11-2022 в 19:22:

Цитата:
XaeroX писал:
Ну так ты в коде используй число 100000, а нолики потом при выводе в HUD пририсуй сколько нужно.

Ну так ты в коде используй число 100000:число 100000 маленькое
а нолики потом при выводе в HUD пририсуй сколько нужно:смысл не в худе мне же не нужно больше патронов делать на 100000 мне нужно по приколу большое число просто написать чтобы скомпилилось без ошибок. Хотя поняв потом что я ерундой какой та занимаюсь это уже особо не нужно

__________________
илья


Отправлено илья2 19-11-2022 в 13:36:

почему под TakeDamage нельзя делать radiusdamage ставлю radiusdamage монстр просто зависает и все

__________________
илья


Отправлено Vadiman 02-12-2022 в 19:15:

Доброго времени суток!
Несколько вопросов:
1) Хочу доработать зомбаков - чтобы при смерти игрока они шли его жрать (технически проигрывая victory_dance ивент). По идее это сложно реализовать, ведь нужно определять радиус в котором все monster_zombie почуят хрючево и начнут сбегаться к игроку. Я пробовал стащить аналогичную тему у буллсквида, но ничего не вышло.
2) Как сделать у оружия анимацию "первого подбирания"? Ну то есть находит игрок новое оружие и проигрывается единожды анимация, как он его осматривает или там пафосно затвор взводит, итд.
3) Как реализовать смену сабмодели рук у оружия? Слишком ли это заморочное дело? Вроде в спирите такое есть но мне весь функционал этого мода не нужен


Отправлено Shadow762 02-12-2022 в 22:18:

Цитата:
Vadiman писал:
2) Как сделать у оружия анимацию "первого подбирания"? Ну то есть находит игрок новое оружие и проигрывается единожды анимация, как он его осматривает или там пафосно затвор взводит, итд.


Не знаю как это делается у профессионалов, но я бы завел переменную в классе пушки в weapons.h например со значением FALSE по умолчанию.

Далее, в ::DEPLOY методе проверил, равна ли она FALSE, если да, то (на примере mp5) -
C++ Source Code:
1
BOOL CMP5::Deploy( )
2
{
3
  if ( <ПЕРЕМЕННАЯ> == FALSE ) {
4
    <ПЕРЕМЕННАЯ> == TRUE;
5
    return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY_FIRST, "mp5" );
6
  }
7
  return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY, "mp5" );
8
}


таким образом при следующих деплоях проверка не пройдет и будет работать штатный деплой.

Правда после обезоруживания игрока через с Player_weaponstrip и последующего подбора пушки деплой будет штатный скорее всего.

__________________
я Z


Отправлено Luciferchik 11-12-2022 в 02:13:

Подскажите где можно почитать тутор по вгуи, помню были на хл.ру, а сайт уже давно лёг на покой

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Shadow762 12-12-2022 в 04:45:

Цитата:
Luciferchik писал:
Подскажите где можно почитать тутор по вгуи, помню были на хл.ру, а сайт уже давно лёг на покой


http://ralertmod.narod.ru/sham-vgui.htm

__________________
я Z


Отправлено Luciferchik 13-12-2022 в 06:08:

Цитата:
Shadow762 писал:
http://ralertmod.narod.ru/sham-vgui.htm

Благодарю огромное

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Vadiman 25-12-2022 в 18:26:

Цитата:
Shadow762 писал:
Не знаю как это делается у профессионалов, но я бы завел переменную в классе пушки в weapons.h например со значением FALSE по умолчанию.

Далее, в ::DEPLOY методе проверил, равна ли она FALSE, если да, то (на примере mp5) -
C++ Source Code:
1
BOOL CMP5::Deploy( )
2
{
3
  if ( <ПЕРЕМЕННАЯ> == FALSE ) {
4
    <ПЕРЕМЕННАЯ> == TRUE;
5
    return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY_FIRST, "mp5" );
6
  }
7
  return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY, "mp5" );
8
}


таким образом при следующих деплоях проверка не пройдет и будет работать штатный деплой.

Правда после обезоруживания игрока через с Player_weaponstrip и последующего подбора пушки деплой будет штатный скорее всего.

Спасибо! Правда полноценно работает при load/save, а по факту сразу перебивается (скорее всего WeaponIdle), но я пытался время там регулировать и полностью его убирать, пока не знаю как решить


Отправлено Shadow762 28-12-2022 в 00:53:

Цитата:
Vadiman писал:
Спасибо! Правда полноценно работает при load/save, а по факту сразу перебивается (скорее всего WeaponIdle), но я пытался время там регулировать и полностью его убирать, пока не знаю как решить

Один добрый человек подсказал, ту самую <ПЕРЕМЕННУЮ> следует занести в сейвдату в weapons.cpp
по аналогии с дрободаном
но учти, что у большинства пух сейвдаты нет, так что создавай эти методы на подобии тех пух, что внесены в сейвдату
C++ Source Code:
1
TYPEDESCRIPTION	CShotgun::m_SaveData[] =
2
{
3
  DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME),
4
  DEFINE_FIELD(CShotgun, m_fInSpecialReload, FIELD_INTEGER),
5
  DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME),
6
  DEFINE_FIELD(CShotgun, m_flPumpTime, FIELD_TIME),
7
};
8
IMPLEMENT_SAVERESTORE(CShotgun, CBasePlayerWeapon);

А что касается перебивания анимации - там же есть параметр, которые отвечает за ее длительность
подставить количество кадров деленное на FPS в анимации и все будет отлично

__________________
я Z


Отправлено Vadiman 01-01-2023 в 12:55:

Цитата:
Shadow762 писал:
Один добрый человек подсказал, ту самую <ПЕРЕМЕННУЮ> следует занести в сейвдату в weapons.cpp
по аналогии с дрободаном
но учти, что у большинства пух сейвдаты нет, так что создавай эти методы на подобии тех пух, что внесены в сейвдату
C++ Source Code:
1
TYPEDESCRIPTION	CShotgun::m_SaveData[] =
2
{
3
  DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME),
4
  DEFINE_FIELD(CShotgun, m_fInSpecialReload, FIELD_INTEGER),
5
  DEFINE_FIELD(CShotgun, m_flNextReload, FIELD_TIME),
6
  DEFINE_FIELD(CShotgun, m_flPumpTime, FIELD_TIME),
7
};
8
IMPLEMENT_SAVERESTORE(CShotgun, CBasePlayerWeapon);

А что касается перебивания анимации - там же есть параметр, которые отвечает за ее длительность
подставить количество кадров деленное на FPS в анимации и все будет отлично


Все равно перебивается. Ладно, нафиг тогда эти анимации
Но спасибо за помощь


Отправлено [CFR] B@N@N 01-01-2023 в 16:23:

Легко же ты сдался...


Отправлено FreeSlave 17-01-2023 в 21:17:

TRACE_TEXTURE в TEXTURETYPE_PlaySound возвращает нулевой указатель при ударе монтировкой по скайбоксу. Это нормально?
Хотел проверить на удар по скаю, но вот не вышло. Или возвращение нулевого указателя и есть сигнал о том, что попали в скай?

Ради интереса даже заглянул в код XDM и нашёл там коммент

code:
pTextureName = TRACE_TEXTURE(pEntity->edict(), vecSrc, vecEnd);// BUGBUG: at some strange angles this shit fails and returns "sky"!!

Т.е. при каких-то условиях sky всё-таки может вернуться?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Ku2zoff 19-01-2023 в 11:07:

FreeSlave помнится, в стародавние времена, когда я пользовался 2003-й студией и SDK 2.3, компиляция и в дебаге, и в релизе давала такой результат, что TRACE_TEXTURE возвращала что-то такое, из-за чего тип материала не определялся. Будто бы текстура не прописана в materials.txt.
https://hlfx.ru/forum/showthread.ph...4491#post144491


Отправлено Дядя Миша 19-01-2023 в 13:30:

Там сама система материалов немного бажная, вот и глючит.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 19-01-2023 в 18:44:

Так материалы ни при чем. Вопрос о движковой функции pfnTraceTexture и определение ская.

__________________
I'm on github
I'm on opendesktop.org


Отправлено илья2 05-02-2023 в 20:15:

как сделан основной crosshair из dmc ?

пробовал найти любые ресурсы по этому ничего не нашел

__________________
илья


Отправлено FreeSlave 06-02-2023 в 00:22:

Цитата:
илья2 писал:
как сделан основной crosshair из dmc ?

пробовал найти любые ресурсы по этому ничего не нашел


Код DMC открыт же https://github.com/ValveSoftware/ha...l/ammo.cpp#L846

Там просто рисуется знак плюса
C++ Source Code:
1
/******************* DRAW CROSSHAIR *********************/
2
iCrossLength = gHUD.m_scrinfo.charWidths[ *chCrossHair ];
3
iCrossY = ScreenHeight / 2 - gHUD.m_scrinfo.iCharHeight / 2;
4
iCrossX = ScreenWidth / 2 - iCrossLength / 2;
5
 
6
gHUD.DrawHudString( iCrossX, iCrossY, iCrossX + 50, chCrossHair, 170, 170, 170 );
7
/******************* DRAW CROSSHAIR *********************/

__________________
I'm on github
I'm on opendesktop.org


Отправлено илья2 06-02-2023 в 06:04:

а ну теперь понятно он вырисовываться как отдельный худ

Добавлено 06-02-2023 в 09:04:

все спасибо теперь этот код можно в свои исходники ставить

__________________
илья


Отправлено Luciferchik 18-02-2023 в 13:57:

Здарова всем, играл как-то с друзьями в л4д и стало интересно, а как в мультиплеере рисовать себе в худ хп товарищей?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено erfty 20-02-2023 в 19:30:

точечные энтити, выполняющие роль брашей будут нагружать карту( по сравнению с обычными брашами)? и кста , есть источник света, чтоб его не надо было компилить(энтитя источника света, свет этот не компилится а накарте отображается)?


Отправлено Skaarj 20-02-2023 в 19:34:

Какие то попытки создать вечный двигатель.
И чтоб ресурсы не ело, и чтоб мильён полигонов. Бесплатно.
Не, это так не работает.


Отправлено erfty 20-02-2023 в 19:54:

Цитата:
Skaarj писал:
Какие то попытки создать вечный двигатель.
И чтоб ресурсы не ело, и чтоб мильён полигонов. Бесплатно.
Не, это так не работает.

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


Отправлено Skaarj 20-02-2023 в 21:32:

Это вроде как плагинами делают, AmxMod и всякое такое.
Ну или ремейк карты с нуля делай. Либо по декомпилу, либо ищи исправленный декомпил, если карта популярная.


Отправлено илья2 04-03-2023 в 07:39:

как скомпилировать исходники decay ? может я неправильный visual studio использую ?
ссылки на исходники:
сорцы:https://github.com/FWGS/hlsdk-portable/tree/decay-pc
сорцы2:https://github.com/hoaxer/Half-Life-Decay

Добавлено 04-03-2023 в 10:39:

выполнял еще такую функцию
mkdir build && cd build
cmake ../
но безрезультатно выдает ошибки

__________________
илья


Отправлено FreeSlave 04-03-2023 в 20:16:

илья2 ветка Decay в hlsdk-portable недоделанная (и пока вообще заброшенная). Не пытайся её использовать.

Сорцы, выложенные самим разработчиком, содержат проект под старые версии Visual Studio. Мб в студии конвертация проекта сработает.

__________________
I'm on github
I'm on opendesktop.org


Отправлено erfty 08-03-2023 в 17:25:

Цитата:
FreeSlave писал:
илья2 ветка Decay в hlsdk-portable недоделанная (и пока вообще заброшенная). Не пытайся её использовать.

Сорцы, выложенные самим разработчиком, содержат проект под старые версии Visual Studio. Мб в студии конвертация проекта сработает.

если будет время то пофикси waf в ветке invasion пж а то там вообще сломано(иль можно на телефон собрать)


Отправлено chakki.skrip 19-04-2023 в 16:13:

В последнее время я стал часто сталкиваться с некорректным воспроизведением анимации у вставленной на карту модели. Анимация воспроизводится рывками, кадры проскакивают. Но дело в том, что сама анимация зациклена и не имеет швов. Изменение значения framerate у cycler_sprite или fps в qc файле модели изменяет характер бага.
https://youtu.be/SSbUEfq-1ps

Опытным путем пришел к тому, что скорость воспроизведения анимации следует задавать в qc файле модели, а при размещении модели с анимацией на карте значение framerate должно быть равно количеству кадров анимации модели. В таком случае анимация воспроизводится практически корректно, но прыгающие кадры все еще имеют место.
Менее наглядное видео (таймкод)
https://youtu.be/5jD2j4DxZbs?t=92

Что можно предпринять, чтобы анимация всегда воспроизводилась корректно?


Отправлено ZGreen 19-04-2023 в 16:41:

А 200 фепсов не многовато для голдовой модельки? Попробуй поднимать фреймрейт от 30 и смотреть, когда начинает проявляться. Как бы там от тикрейта сервера и клиентского фпс не было зависимости еще.


Отправлено chakki.skrip 19-04-2023 в 16:50:

Пробовал множество значений framerate от 0.01 до нескольких тысяч. Также и с fps в qc. Больше всего тестов с framerate провел со значениями 1, 10, 30 и 60.
Количество кадров в самой анимации также менял. В основном 30, 60 240 кадров. Но на полное решение проблемы это не влияло.


Отправлено ZGreen 19-04-2023 в 16:59:

А у тебя точно кейфрейм верно в анимации стоит? Частая ошибка такая, что последний кадр анимации равен первому, а от этого естественно получится как-будто анимация подергивается. Ну условно, у тебя шарик должен повернуться на 360 градусов за 360 секунд, стало быть за последнюю секунду шарик должен стремиться к начальному положению, но не достигать его.

Добавлено 19-04-2023 в 23:59:

Во вьюере-то оно как себя ведет?


Отправлено chakki.skrip 19-04-2023 в 17:10:

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


Отправлено Aynekko 19-04-2023 в 17:17:

Этот рывок происходит в 100% случаев? Если просто стоять и смотреть на модель.

__________________
Мой мод на Xash


Отправлено chakki.skrip 19-04-2023 в 17:20:

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


Отправлено Дядя Миша 19-04-2023 в 17:48:

Цитата:
chakki.skrip писал:
значение framerate должно быть равно количеству кадров анимации модели

framerate - это множитель.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено chakki.skrip 20-04-2023 в 04:41:

Цитата:
Дядя Миша писал:
framerate - это множитель.

Но почему анимация воспроизводится некорректно?


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

Ну его не стоит ставить менее 0.01 или более 10.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено chakki.skrip 20-04-2023 в 06:55:

Цитата:
Дядя Миша писал:
Ну его не стоит ставить менее 0.01 или более 10.

framerate 1, fps в qc 30 - скорость вращения высокая; иногда перескакивают кадры;
framerate 1, fps в qc 10 - скорость ниже, но анимация воспроизводится уже некорректно. Кадры идут примерно так: 1 2 3 4 5 3 4 5 6 7 8 9 10 8 9 10 11...
framerate 1, fps в qc 1 - скорость приемлемая, воспроизведение анимации некорректное. Слайдшоу из случайных кадров будто: 1 4 122 124.

framerate 10, fps в qc 30, 10 - высокая скорость вращения
framerate 10, fps в qc 1 - аналогично framerate 1, fps в qc 10
framerate 10, fps в qc 0.125 - воспроизводится отрезок анимации, да и то некорректно. Если в анимации 240 кадров, то воспроизводится лишь несколько кадров, грубо говоря: 1 3 5 7 9 11 1 3 5 7 9 11 1 3 5 7 9 11

framerate 240, fps в qc 0.125 - хорошая скорость анимации и плавность, но иногда проскакивают кадры. Я имею в виду, что был порядок в плане воспроизведения кадров от 1 до 240, но в какой-то момент анимация может пропустить 100 кадров(визуально).

При framerate ниже 0.01 анимации, насколько я помню, вообще не было. А при выставлении значений выше количества кадров анимации(240, 680, 1024 и т.д.) скорость анимации не изменялась, но менялся характер воспроизведения(с пролагами).


Отправлено Дядя Миша 20-04-2023 в 08:03:

Если скорость воспроизведения выше общего фреймрейта, то кадры и будут перескакивать, естественно.
У одинарного вещественного точность не бесконечная, а в голдсорсе фреймрейт не квантизирован, в отличие, от сорса, например.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено erfty 21-04-2023 в 14:31:

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


Отправлено XaeroX 21-04-2023 в 14:33:

erfty
Видева без звука - как водка без пива!

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено erfty 21-04-2023 в 14:50:

а если гифка??


Отправлено Aynekko 25-04-2023 в 12:50:

Вопрос - как определить энтитю локального игрока так, чтобы быть уверенным, что это энтитя именно мы, а не кто-то другой?
Поясню: у меня есть боты на сервере. Есть визуальный эффект на экране, который зависит от значения gEngfuncs.GetLocalPlayer()->curstate.vuser1.z. Пока я в игре - все хорошо. Но если я зайду в спектаторы (становлюсь невидимым, несолидным и т.д.) я иногда вижу этот эффект на экране, когда у какого-то бота, по всей видимости, изменилось это значение (ведь он тоже игрок).
В моем понимании выходит, что GetLocalPlayer возвращает мне локального игрока, а т.к. я в спеках и как бы "не совсем игрок", он подсовывает данные бота, ведь он локальный.

__________________
Мой мод на Xash


Отправлено Ku2zoff 27-04-2023 в 11:17:

Aynekko режим спектатора - это когда подключаешься к HLTV Proxy. Прокси, по сути, такой же клиент, подключенный к серверу. А вот подключенные к прокси - уже не клиенты, а зрители-спектаторы. А "зайти в спектаторы" - перейти в режим обсервера. Игрок остаётся таким же подключенным клиентом, так же занимает слот на сервере, и к нему применяются все те же правила, что и к другим клиентам. Единственное, работает фильтр по pev->iuser1, отсекая всё ненужное и добавляя нужное. Чтобы у тебя не вылезал эффект, когда ты обсервер, добавь проверку на g_iUser1. Можно пойти дальше, и рисовать чужой эффект при наблюдении от первого лица. Через g_iUser2 можно получить индекс наблюдаемого игрока, а после его vuser1.z.

Добавлено 27-04-2023 в 18:17:

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

Нет, это твои данные. Значение меняется у тебя.


Отправлено Aynekko 27-04-2023 в 14:14:

Цитата:
Ku2zoff писал:
Чтобы у тебя не вылезал эффект, когда ты обсервер, добавь проверку на g_iUser1

Спасибо. Оказалось, дело и не в vuser. Там было еще одно условие, которое я меняю из CHudHealth::MsgFunc_Damage. Почему этот msg вызывают боты, когда я в наблюдателях, я пока не понял. Проверка на g_iUser1 помогла.

__________________
Мой мод на Xash


Отправлено Дядя Миша 27-04-2023 в 19:28:

Цитата:
Aynekko писал:
а т.к. я в спеках и как бы "не совсем игрок", он подсовывает данные бота, ведь он локальный.

В Ксаше спектаторы никогда не тестировались и их работа вообще не гарантируется.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 03-05-2023 в 11:58:

Цитата:
Aynekko писал:
Почему этот msg вызывают боты, когда я в наблюдателях, я пока не понял.

А не должны. MSG_ONE только для одного клиента. Которым является бот, его энтварсы используются. Ищи проблему на клиентской стороне.


Отправлено erfty 04-06-2023 в 23:32:

Можно ли в хлсдк прямо в коде создать обычный куб вместо использования модельки?Хитбокс то можно создать а я вот иемнно про визуальную часть.


Отправлено hgrunt_2020 05-06-2023 в 09:43:

erfty вопрос: зачем? Чисто теоретически можно, да, теоретически можно что угодно, а на практике чорт его знает.

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Crystallize 05-06-2023 в 10:26:

erfty ну посмотри как рисовать командами типа GL_QUAD, GL_TRIANGLE (точно не помню) главное координаты вершин и ювишки текстур корректно задать.


Отправлено Luciferchik 05-06-2023 в 13:09:

Стало интересно могут ли кнопки в хл иметь две функции, то есть на примере перезарядки если просто нажать R то играет анимация перезарядки, а если зажать то отображается менюшка или что-то другое


Отправлено erfty 05-06-2023 в 21:48:

Цитата:
Crystallize писал:
erfty ну посмотри как рисовать командами типа GL_QUAD, GL_TRIANGLE (точно не помню) главное координаты вершин и ювишки текстур корректно задать.

а если на всех рендерах хочу?


Отправлено Crystallize 06-06-2023 в 00:48:

erfty так д3д же автоматом транслирует, нет? Я не разбирался.

Добавлено 06-06-2023 в 07:48:

Цитата:
Luciferchik писал:
Стало интересно могут ли кнопки в хл иметь две функции, то есть на примере перезарядки если просто нажать R то играет анимация перезарядки, а если зажать то отображается менюшка или что-то другое

В коде отслеживается отдельно отпускание и нажимание клавиши, так что можно.


Отправлено Luciferchik 06-06-2023 в 04:58:

Цитата:
Crystallize писал:
В коде отслеживается отдельно отпускание и нажимание клавиши, так что можно.


Это оно m_pPlayer->m_afButtonPressed?
Да и ещё чтоб вызвать кастомную анимацию нужно вызвать SendWeaponAnim или есть более разумные методы?

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Crystallize 06-06-2023 в 11:30:

Luciferchik на клиенте input.cpp, там KeyUp, KeyDown, CL_KeyState.


Отправлено Luciferchik 06-06-2023 в 15:21:

Цитата:
Crystallize писал:
Luciferchik на клиенте input.cpp, там KeyUp, KeyDown, CL_KeyState.
Спасибо, я вспомнил просто очень давно делал прицел который реагировал на движения и он был завязан на стейтах клавиш

__________________
Sometimes you have to get knocked down lower than you've even been to stand up taller than you everwere.
You so sad. No, i just die everyday...
I can't do anything around here without everybody getting up in my shit...
The aim of life is self-development.


Отправлено Deadlocked1337 28-06-2023 в 15:46:

HUD

Как сделать "изогнутый" HUD, как в Crysis 2/Cyberpunk 2077/ULTRAKILL?


Отправлено Crystallize 29-06-2023 в 06:02:

Deadlocked1337 Скорее всего он рендерится в отдельный буфер и искажается шейдером.


Отправлено Дядя Миша 29-06-2023 в 06:25:

Он там наверное в 3D рендерится, но с отключённым тестом на глубину.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Deadlocked1337 06-07-2023 в 21:28:

Visual Studio

Есть ли какая-то особая версия Visual Studio, которая умеет компилировать код Paranoia 2?


Отправлено Crystallize 07-07-2023 в 05:36:

Шестерка Corporate c процессор-паком.


Отправлено Nitrw 09-07-2023 в 06:40:

Всем привет! Сделал свою карту c расширением *.bsp в hammer, теперь появился вопрос - как в неё поиграть?


Отправлено hgrunt_2020 09-07-2023 в 11:14:

Nitrw ну допустим сделал ты карту в формате BSP. Теперь вопрос: для какого движка?

__________________
И главное, Артём, помни: не ешь желтый снег!


Отправлено Crystallize 15-07-2023 в 16:13:

Цитата:
hgrunt_2020 писал:
Всем привет! Сделал свою карту c расширением *.bsp в hammer, теперь появился вопрос - как в неё поиграть?

Нужно кинуть bsp в папку valve/maps
и набрать в консоли игры:
map имякарты


Отправлено Crystallize 17-07-2023 в 09:53:

А почему при спрыгивании с каната игроку дают инерцию через AbsVelocity, а не через BaseVelocity?


Отправлено Дядя Миша 17-07-2023 в 10:27:

Кто его знает. Может так в опфоре было.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 17-07-2023 в 12:29:

code:
void CRopeSegment :: Touch( CBaseEntity* pOther ) { if( pOther->IsPlayer() ) { CBasePlayer *pPlayer = (CBasePlayer *)pOther; // Electrified wires deal damage. - Solokiller if( m_bCauseDamage ) { if( gpGlobals->time >= pev->dmgtime ) { if( pev->dmg < 0 ) pOther->TakeHealth( -pev->dmg, DMG_GENERIC ); else pOther->TakeDamage( pev, pev, pev->dmg, DMG_SHOCK ); pev->dmgtime = gpGlobals->time + 0.5f; } } if( GetMasterRope()->IsAcceptingAttachment() && !pPlayer->IsOnRope( )) { if( m_bCanBeGrabbed ) { pOther->SetAbsOrigin( m_Data.mPosition ); pPlayer->SetOnRopeState( true ); pPlayer->SetRope( GetMasterRope() ); GetMasterRope()->AttachObjectToSegment( this );

Никак не пойму где класс камеры идет проверка на расстояние до игрока. Там проверяется все что угодно но не это.


Отправлено Дядя Миша 17-07-2023 в 13:07:

Хм, ну если вызвана функция Touch, значит игрок уже дотронулся до веровки.
В противном случае, как бы она вызвалась?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 18-07-2023 в 01:37:

Дядя Миша Я посмотрел, по-моему её никто не вызывает. Ну то есть изначально, так-то она сама может вызвать себя.


Отправлено Дядя Миша 18-07-2023 в 08:05:

Цитата:
Crystallize писал:
Я посмотрел, по-моему её никто не вызывает

Ну как это никто?
Физика её вызывает. Через каллбэки.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 18-07-2023 в 09:14:

Дядя Миша А можно как-то сделать чтоб такие вещи в поиске Студии показывались?


Отправлено Дядя Миша 18-07-2023 в 10:16:

Разумеется нет. Про такие вещи даже компилятор не знает. Только в рантайме.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Deadlocked1337 20-07-2023 в 20:32:

У меня сразу несколько вопросов.
1. Как скомпилировать исходники п2? Компилятор упорно останавливается на 59%.
2. Как выдернуть код худа из п2? Думаю вместо него поставить худ из хл1.

__________________
Leaving this world isn't as scary as it sounds.


Отправлено Дядя Миша 20-07-2023 в 22:28:

Цитата:
Deadlocked1337 писал:
Компилятор упорно останавливается на 59%.

Что это за компилятор такой - проценты пишет?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Deadlocked1337 21-07-2023 в 09:25:

Дядя Миша, батник, что был в комплекте с кодом.

Прерывается на


Цитата:
Добавление mainui\mainui.dsp  59% OK
Прервано пользователем

Добавление mainui\menufont.H
Работа программы прервана

__________________
Leaving this world isn't as scary as it sounds.


Отправлено Дядя Миша 21-07-2023 в 10:44:

Я никакого батника в комплекте с кодом не прикладывал.
Это вопросы к тому, кто приложил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 21-07-2023 в 16:32:

Наконец-то раздуплил физический смысл брать текущий момент времени, прибавлять к нему и сравнивать. То есть мы как бы отмечаем момент в будущем, ок.

По какому принципу код игрока делится на пре-тчинк и пост-тчинк? Например почему канат именно в претчинке? У меня сложилось впечатление что в претчинке мы ставим какие-то флаги в основном, а в пост-тчинке по ним уже действуем.


Отправлено Дядя Миша 21-07-2023 в 16:53:

PreThink - до запуска физической симуляции игрока. PostThink - соответственно после.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 21-07-2023 в 17:57:

Дядя Миша ну а с точки зрения этой симуляции в чем разница перед или после что-то делать? Это сделано потому что одни процессы физичные, а другие - нет?


Отправлено Дядя Миша 21-07-2023 в 18:21:

Ну допустим ты делаешь что-то такое и хочешь чтобы симулятор физики это учёл уже прямо на этом кадре. Значит надо делать в PreThink. А в PostThink ты уже собираешь результаты симуляции - куда там игрок уткнулся, сколько ящиков задел, нуитд.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено chakki.skrip 30-07-2023 в 18:13:

Здравствуйте. Хотелось бы получить информацию по следующему вопросу.
После уменьшения размера хулла игрока в 4 раза view модель полностью входит в геометрию, если подойти вплотную к стене.

Это происходит с такими размерами хуллов:
( 0 0 0 ) ( 0 0 0 )
( -4 -4 -8 ) ( 4 4 8 )
( -16 -16 -16 ) ( 16 16 16 )
( -4 -4 -4 ) ( 4 4 4 )

Но если увеличить размер хулла в длину/ширину, то уже такое не происходит:
( 0 0 0 ) ( 0 0 0 )
( -6 -6 -8 ) ( 6 6 8 )
( -16 -16 -16 ) ( 16 16 16 )
( -6 -6 -4 ) ( 6 6 4 )

Можно ли решить это на стороне сервера?


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

Цитата:
chakki.skrip писал:
Можно ли решить это на стороне сервера?

нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено chakki.skrip 31-07-2023 в 11:26:

Цитата:
Дядя Миша писал:
нет.

Понял, благодарю за ответ


Отправлено Crystallize 10-08-2023 в 20:30:

Как сделать printf в матчлибе? Там ниче не работает.

Бывает ли что перпендикуляр к прямой косячит? У меня персонаж движется по прямой, и постоянно ищет перпендикуляр к ней. До точки пересечения с прямой разрешено некое расстояние, так что это как бы цилиндр. Скорость небольшая, что-то вроде 5-10 юнитов за кадр. И вот хотя по длине ему остается 20-25 юнитов, персонаж внезапно выпадает из этого объема.


Отправлено Дядя Миша 10-08-2023 в 21:05:

Цитата:
Crystallize писал:
Как сделать printf в матчлибе?

о какой именно матчлибе идёт речь?

Цитата:
Crystallize писал:
Бывает ли что перпендикуляр к прямой косячит?

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-08-2023 в 21:37:

Дядя Миша матчлиба в ксашмоде.


Отправлено Дядя Миша 10-08-2023 в 21:42:

А зачем тебе выводить сообщения непременно внутри самой матчлибы?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SNMetamorph 11-08-2023 в 08:08:

Цитата:
Crystallize писал:
Как сделать printf в матчлибе? Там ниче не работает.

В смысле? А что мешает-то? Есть snprintf, есть fmt если хочется удобно.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 11-08-2023 в 11:53:

Цитата:
Crystallize писал:
Я знаю только что в 2010 году чтобы повысить качество на Ютубе, мы в адрес дописывали &fmt=18.

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 11-08-2023 в 12:15:

Цитата:
SNMetamorph писал:
В смысле? А что мешает-то? Есть snprintf, есть fmt если хочется удобно.

Матчлиба не знает ничего такого и ругается на undeclared identifier.

Добавлено 11-08-2023 в 19:15:

Цитата:
Дядя Миша писал:
А зачем тебе выводить сообщения непременно внутри самой матчлибы?

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


Отправлено Дядя Миша 11-08-2023 в 12:43:

Цитата:
Crystallize писал:
Я пытаюсь переделать функцию с возвращающей вектор на войд, но ей почему-то не нравится число параметров

Покажи что ты там хочешь переделать и главное зачем.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 12-08-2023 в 00:20:

Разобрался, там оставалось магическое число 999 а сегмент рельсы был 1024


Отправлено Crystallize 16-08-2023 в 18:16:

code:
for ( int k = 1; k<gpGlobals->maxEntities; k++, pStartEdict++ ) { if ( pStartEdict->free ) // Not in use continue; if ( !FStrEq ( STRING(pStartEdict->v.classname), "path_track" ) ) // if not match continue; // maps won't be super large, spam segments if 999 units is not long enough if ( (pStartEdict->v.origin - pev->origin).Length() > 1024.0f ) continue; pEndTmp = UTIL_FindEntityByTargetname ( NULL, STRING ( pStartEdict->v.target ) ); if (!pEndTmp ) continue; // test plpos against infinite and finite cylinder TempPos = NearestOnLine ( pStartEdict->v.origin, pEndTmp->pev->origin, pev->origin ); if( !VectorCompareEpsilon( TempPos, g_vecZero, ON_EPSILON ) && ((TempPos - pev->origin ).Length() < 64) ) { NewNearest = TempPos; // good one idStart = ENTINDEX( pStartEdict ); idEnd = ENTINDEX( pEndTmp->edict() ); break; } }


Собственно вот где было число 999.

Кстати внимание вот на этот изврат к энт-индексами в конце. Мне вообще нужно просто найти в цикле пару энтитей. Проблема что когда старался работать сначала с эдиктами (чтобы пореже запускать FindEntityByTargetname), по ходу цикла эти эдикты терялись по какой-то загадочной причине. Понятия не имею в чём может быть дело, цикл это всё же не выход из функции. Разве что это какие-то особенности работы с эдиктами.


Отправлено Дядя Миша 16-08-2023 в 18:40:

1024 вижу, 64 вижу. 999 не вижу.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 16-08-2023 в 19:45:

Дядя Миша 999 было на месте 1024, там вон коммент есть.


Отправлено Crystallize 20-08-2023 в 11:23:

Цитата:
Дядя Миша писал:
1024 вижу, 64 вижу. 999 не вижу.

а эдикты?...

Как делать чтобы на сервере при открытой консоли или при паузе, в коде игрока не накапливалось ускорение у физики? pparams-то на сервере нету.


Отправлено Дядя Миша 20-08-2023 в 11:40:

Цитата:
Crystallize писал:
в коде игрока не накапливалось ускорение у физики?

а оно накапливается? И какая связь с pparams?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 20-08-2023 в 13:45:

Дядя Миша
Накапливается. В коде игрока (player.cpp) у меня каждый кадр что-то прибавляется к скорости. И если открыть консоль то видно что значение продолжает отбиваться и за пару секунд доходит до 2000, т.е. игра замерла но код игрока все ещё продолжает выполняться.
На клиенте это решали проверкой pparams->frametime потому что он обнуляется при паузе. Но на сервере оно не доступно, а gpGlobals->frametime на паузе не обнуляется.


Отправлено Дядя Миша 20-08-2023 в 13:46:

Но если консоль открыта, игрок же всё равно не двигается. А когда консоль закроется, это будет сброшено.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 20-08-2023 в 15:01:

Дядя Миша Любопытно какие механизмы могут существовать которые будут сбрасывать. Потому что на сервере вообще нет ничего связанного с паузами и консолями. Если я неправильно написал код мне бы понять как правильно, может быть надо его в playermove вместо этого пихать?

Добавлено 20-08-2023 в 22:01:

Цитата:
Дядя Миша писал:
Но если консоль открыта, игрок же всё равно не двигается.

GetAbsVelocity тем не менее не зануляется


Отправлено Дядя Миша 20-08-2023 в 17:45:

а pmove->frametime или чёт такое?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 21-08-2023 в 18:09:

Дядя Миша О, обнуляется, спасибо. Интересно почему у него точность только три знака, а потом идут нули.

Почему игрок на которого применили SetAbsVelocity при движении как-то покачивается по синусоиде вверх-вниз как на волнах? Как будто всего на несколько юнитов.


Отправлено Дядя Миша 21-08-2023 в 18:13:

Цитата:
Crystallize писал:
Интересно почему у него точность только три знака

Потому что он восстанавливается из usercmd.msec у которого весь лимит - 250 милисекунд, путём умножения на тысячу.

Цитата:
Crystallize писал:
Почему игрок на которого применили SetAbsVelocity при движении как-то покачивается по синусоиде вверх-вниз как на волнах?

от третьего лица?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 21-08-2023 в 18:27:

Цитата:
Дядя Миша писал:
от третьего лица?

да


Отправлено Дядя Миша 21-08-2023 в 20:54:

Может это какой-нибудь CalcBob чудит?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Aynekko 06-09-2023 в 10:36:

Никак не могу понять, как можно передать строчку текста на клиент. А точнее, прописать в keyvalue энтити текст и потом, зная индекс энтити, получить его на клиенте. Я хотел попробовать ALLOC_STRING и получить id строчки на клиенте, но у меня в клиенте нет такой функции.

__________________
Мой мод на Xash


Отправлено Дядя Миша 06-09-2023 в 18:48:

ALLOC_STRING только на сервере.
Только через MESSAGE_BEGIN и WRITE_STRING.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 07-09-2023 в 03:56:

Цитата:
Дядя Миша писал:
Может это какой-нибудь CalcBob чудит?

Кстати да, я боб отключил и это пропало.


Отправлено APAMk2 28-09-2023 в 06:36:

Вопросец, а можно-ли в MP при смене карты сохранить весь инвентарь игрока как это происходит в сингле? Бегло покопал форум и гуголь, ничего не нашёл, подозреваю просто где-то кусок из сингла в мультиплеер перенести, направьте по верному пути плз.


Отправлено Дядя Миша 28-09-2023 в 07:20:

В принципе можно, но халфа на такое не рассчитана, поэтому парой строк кода тут не отделаешься, придётся заморочиться. В том же квейке подобное было сделать куда как проще. Да оно там и работало - в кооперативе.

Вообщем надо выделить некоторое место и сохранить туда информацию о броне, здоровье, патронах и пушках для каждого игрока. А при заходе на новый уровень - дать всё это игроку. Какая-то глобальная структурка нужна где всё это держать во время смены уровня.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 28-09-2023 в 11:08:

Цитата:
Дядя Миша писал:
Какая-то глобальная структурка

Вроде game.h подходящее место, только теперь не знаю где остальной код дописывать, multiplay_gamerules.cpp похоже для этого не подходит, либо я не туда дописываю код (пробовал в CHalfLifeMultiplay::ChangeLevel и CHalfLifeMultiplay::Think), т.к. он не исполняется(ни один ALERT не сработал).
Структура:
C++ Source Code:
1
//game.h
2
 
3
extern struct PlayerChangeLevelSave
4
{
5
  int health = 100;
6
  int hev_charge = 0;
7
  int ammo_count[15] = {15};
8
  int have_weapons[23];
9
};


Сохранение и загрузка данных:
C++ Source Code:
1
//multiplay_gamerules.cpp
2
 
3
#include ......
4
 
5
PlayerChangeLevelSave player1, player2;
6
std::vector<PlayerChangeLevelSave> players = {player1, player2};
7
 
8
...
9
 
10
void CHalfLifeMultiplay::Think()
11
 
12
...
13
 
14
for (int i = 0; i <= 1; i++)
15
{
16
  CBaseEntity* pPlayer = UTIL_PlayerByIndex(i);
17
  players[i].health = pPlayer->pev->health;
18
  ALERT(at_console, "1Health:%i", pPlayer->pev->health);
19
  players[i].hev_charge = pPlayer->pev->armorvalue;
20
  ALERT(at_console, "1HEV:%i", pPlayer->pev->armorvalue);
21
  players[i].ammo_count[1] = pPlayer->ammo_9mm;
22
}
23
 
24
ChangeLevel(); //intermission is over
25
 
26
...
27
 
28
void CHalfLifeMultiplay::ChangeLevel()
29
...
30
 
31
CHANGE_LEVEL(szNextMap, NULL);
32
 
33
for (int i = 0; i <= 1; i++)
34
{
35
  CBaseEntity* pPlayer = UTIL_PlayerByIndex(i);
36
  pPlayer->pev->health = players[i].health;
37
  ALERT(at_console, "Health: %i", players[i].health);
38
  pPlayer->pev->armorvalue = players[i].hev_charge;
39
  ALERT(at_console, "HEV: %i", players[i].hev_charge);
40
  pPlayer->ammo_9mm = players[i].ammo_count[1];
41
}


Отправлено Дядя Миша 28-09-2023 в 14:34:

Сохранять надо перед вызовом ChangeLevel, тут всё правильно.
А восстанавливать в PutClientInServer чёт такое вообщем.
Ну и завести ещё переменную, что игрока ожидает инвентарь с прошлого уровня, сделать проверку на мультиплеер.
Там кажется есть PlayerSpawn или подобная функция. Вот в ней попробуй.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 28-09-2023 в 16:57:

Перенёс в PlayerSpawn загрузку параметров, ох и долго-же я себе голову ломал...
По какой-то причине игре немного насрать на тот ChangeLevel что в multiplay_gamerules.cpp, перенёс сохранение в trigger.cpp и всё заработало , спасибо за помощь, пошёл допиливать код в адекватное состояние.


Отправлено SNMetamorph 28-09-2023 в 18:58:

Цитата:
APAMk2 писал:
Вопросец, а можно-ли в MP при смене карты сохранить весь инвентарь игрока как это происходит в сингле? Бегло покопал форум и гуголь, ничего не нашёл, подозреваю просто где-то кусок из сингла в мультиплеер перенести, направьте по верному пути плз.

Ищи на гитхабе исходники gravgun мода, там это было реализовано как-то.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 28-09-2023 в 19:10:

Цитата:
APAMk2 писал:
немного насрать на тот ChangeLevel что в multiplay_gamerules.cpp, перенёс сохранение в trigger.cpp и всё заработало

Это очень просто. Тот чейнджлевел по задумке авторов должен был срабатывать после вызова функции NextLevel в triggers.cpp.
Однако эта функция не вызывается вообще ниоткуда

C++ Source Code:
1
/*
2
go to the next level for deathmatch
3
only called if a time or frag limit has expired
4
*/
5
void NextLevel( void )
6
{

Возможно это наследие из первокваки, которое забыли подключить. Что-то такое я там припоминаю.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 01-10-2023 в 18:43:

Цитата:
Crystallize писал:
Интересно почему у него точность только три знака, а потом идут нули

Цитата:
Дядя Миша писал:
Потому что он восстанавливается из usercmd.msec у которого весь лимит - 250 милисекунд, путём умножения на тысячу.

Это получается у игрока свой особый фреймтайм? Я в PreThink двигаю игрока через SetAbsVelocity, и двигаю рядом спрайт, в основном для отладки, и спрайт держится рядом только если использовать этот калечный pmove->frametime, иначе постепенно уползает вперед.


Отправлено Дядя Миша 01-10-2023 в 19:11:

Цитата:
Crystallize писал:
Это получается у игрока свой особый фреймтайм?

Именно так. И время для него идёт иначе.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 05-10-2023 в 08:20:

Как временно отключить гравитацию конкретно игроку? Чтобы он не дрейфовал вниз когда его передвигает SetAbsVelocity. Просто выставить мувтип fly не срабатывает.


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

pev->gravity = 0.0f;

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 08-10-2023 в 12:51:

Решил ради тестов попробовать портануть модельку солдата из Q2 под ХЛ, столкнулся конечно-же с проблемой вертексной анимации и перегоне её в скелетную, чёт вспомнил о QR и QW, покопал их подфорум, ничё по этому поводу внятного не нашёл, ну неужели ничего внятного за все эти годы никто не придумал и нужно по классике ручками костылять модель в Т-позу и потом клеить на неё скелет из ХЛ или и того хуже - запиливать код вертексной анимации?


Отправлено Дядя Миша 08-10-2023 в 13:11:

А что тут можно придумать внятного? Вертексная анимация получается путём запекания скелетной, т.е. это конвертация с потерями.
А то что утеряно уже никаким алгоритмом обратно не восстановишь, разве что нейросетью, которая лепит отсебятину, похожую на правду.

Добавлено 08-10-2023 в 16:11:

Цитата:
APAMk2 писал:
или и того хуже - запиливать код вертексной анимации?

Старый ксаш умеет в вертексную анимацию. Новый, впрочем, тоже.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 08-10-2023 в 13:20:

Цитата:
Дядя Миша писал:
pev->gravity = 0.0f;

Неработает(( Он все равно падает, причем не с обычной скоростью а раз в десять медленнее.


Отправлено APAMk2 08-10-2023 в 13:41:

Цитата:
Дядя Миша писал:
Старый ксаш умеет в вертексную анимацию. Новый, впрочем, тоже.

Вот тут поподробнее, если можно, для этого нужны какие-то доп. телодвижения, ведь так? Просто сунуть модельку у меня не получилось, вылет с указанием на файл gl_context.c


Отправлено Дядя Миша 08-10-2023 в 14:38:

Цитата:
APAMk2 писал:
вылет с указанием на файл gl_context.c

В ксаше нет такого файла. Это наверное FWGS или другой форк. Все вопросы к ним.

Добавлено 08-10-2023 в 17:38:

Ну и разумеется он понимает модельки только от первой кваки.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 08-10-2023 в 18:20:

Цитата:
APAMk2 писал:
Вот тут поподробнее, если можно, для этого нужны какие-то доп. телодвижения, ведь так? Просто сунуть модельку у меня не получилось, вылет с указанием на файл gl_context.c

Env_sprite в ксашмоде загружает анимированные квейковские модели
https://xash3d.ru/doku.php?id=xashx...D0%B8:env_model


Отправлено Дядя Миша 08-10-2023 в 19:13:

Цитата:

env_model может отображать статичный кадр alias-модели формата Quake mdl. env_sprite полноценно загружает её с анимацией. Модель будет видна на стандартном рендере gl_renderer 0. Удивительно но даже сам автор XashXT забыл о наличии такой фичи в своём продукте.

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 08-10-2023 в 19:28:

Цитата:
Crystallize писал:
Env_sprite в ксашмоде загружает анимированные квейковские модели


Помнится когда делал карты для DMC, использовал Env_sprite чтобы загружать халфовские модели, т.к. все остальные способы там выпилили


Отправлено APAMk2 10-10-2023 в 10:43:

В дикее был индикатор состояния перса (в т.ч. и на пк), типа прыгаешь, стоишь, сидишь, решил добавить его к себе, полез в исходники пк-порта и таки нашёл нужный файл ( https://github.com/hoaxer/Half-Life...l_dlls/mode.cpp ), перетащил весь связанный код к себе, запускаю и что вижу? Лишь фонарик, прикол в том что если убрать спрайты для него из hud.txt - появляется новый индикатор, фонарика естесна нет, что это такое и как быть не понимаю.

UPD. подкинул hud.txt из дикея - всё заработало, потом добавил строчки индикатора ровно туда где и в дикее - тоже заработало, максимально странная шняга.


Отправлено Ku2zoff 11-10-2023 в 14:02:

Цитата:
APAMk2 писал:
добавил строчки индикатора ровно туда где и в дикее - тоже заработало, максимально странная шняга

Да неважно где находятся строчки. Важны правильные координаты в них и правильное их количество, указанное числом в первой строке hud.txt


Отправлено APAMk2 12-10-2023 в 16:31:

Цитата:
Ku2zoff писал:
Да неважно где находятся строчки

Дело даже не в этом было, кое-кто кривыми ручёнками удалил один из UnpackRGB у фонарика и благополучно об этом забыл, восстановил - заработало всё, тут только одно фиксить - голову.


Но не будем о грустном, пытаюсь добавить акимбо-варианты для оружия, как определить что оружие есть у игрока на сервере и через какую функцию лучше всё провернуть? AddToPlayer похоже вызывается 1 раз при подборе и дальше вызывается AddDuplicate через который я не вкурил как получить указатель на игрока т.к. он принимает в аргументы лишь 1 CBasePlayerItem, а какой-нибудь удобный способ получить указатель на игрока я не нашёл.


Отправлено Ku2zoff 13-10-2023 в 13:18:

Цитата:
APAMk2 писал:
как определить что оружие есть у игрока на сервере и через какую функцию лучше всё провернуть? AddToPlayer похоже вызывается 1 раз при подборе и дальше вызывается AddDuplicate через который я не вкурил как получить указатель на игрока т.к. он принимает в аргументы лишь 1 CBasePlayerItem, а какой-нибудь удобный способ получить указатель на игрока я не нашёл.

Как определить, что оружие есть у игрока:
C++ Source Code:
if (игрок->pev->weapons & (1<<WEAPON_ОРУЖИЕ);

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


Отправлено APAMk2 13-10-2023 в 14:17:

Цитата:
Ku2zoff писал:
Чтобы при наличии одной пушки (именно одной, подобранной один раз, при подбирании второй точно такой же делалось "акимбо")?

Именно так.
Цитата:
Ku2zoff писал:
писать переменную о том, что оно уже есть в энтварсы игрока

Возможно ошибаюсь, но ведь можно сделать переменную в классе стандартной, не "акимбо" пушки (mp5 к примеру) и оно будет работать, разве нет?


Отправлено Ku2zoff 13-10-2023 в 23:16:

Цитата:
APAMk2 писал:
Возможно ошибаюсь, но ведь можно сделать переменную в классе стандартной, не "акимбо" пушки (mp5 к примеру) и оно будет работать, разве нет?

Верно. Заведи в классе пушки переменную, которая будет нулевой при первом поднятии игроком такой пушки. А вот если игрок поднимет вторую такую же пушку, в AddToPlayer присвой этой переменной единицу. В сейвдату пушки это надо сохранять, если мод сингловый. Ну а дальше, если переменная равна единичке, пушка становится акимбо. Класс у неё не меняется, у неё меняются свойства. Плясать нужно уже от этой переменной. Если она не нулевая, то вьюмодель оружия будет уже другая - с двумя пушками в двух руках. Ну и так далее.


Отправлено APAMk2 14-10-2023 в 13:08:

Смог реализовать, но чуть иначе, переменная где-то вообще оказалась не нужна, в класс обычной пушки добавляю AddDuplicate в котором через pOriginal->m_pPlayer получаю игрока и уже проворачиваю всё что мне нужно, только вот теперь единственно нужно вот это:

code:
if (игрок->pev->weapons & (1<WEAPON_ОРУЖИЕ);

но наоборот (проверить что ствола у игрока нет).


Отправлено Crystallize 15-10-2023 в 17:30:

Из флагов блокирующих гравитацию игрока, ONROPE и ONTRAIN бесполезны, а ONBARNACLE ломает код из SetAbsVelocity и SetAbsOrigin.

Гравитация почему-то пересиливается только юзанием обоих этих команд, иначе будет медленное сползание по нескольку юнитов за кадр. Раньше я думал что это гравитация просто применяется после SetAbsVelocity чтобы программисту не нужно было думать про неё лишний раз, но теперь я хз.


Отправлено Дядя Миша 15-10-2023 в 19:19:

Не пойму, почему у тебя pev->gravity = 0 не работает.
Она обязана работать, иначе бы игрок соскальжевал с лестниц.
Ну засунь в pmove сообщение, посмотри чему равен pmove>gravity.

Добавлено 15-10-2023 в 22:19:

Ты под халфой-то делаешь или под ксашем?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-10-2023 в 19:36:

Под ксашем
Я еще не пробовал делать ответвления в PM_ функции и там подменять.
Я сувал туда дебаг, он писал что вычитает 6.4 из pmove->velocity[2]
Гравитация была обычная 800, за один кадр 13, ну и там она по половинкам получается 6


Отправлено Дядя Миша 16-10-2023 в 05:14:

вообщем зануляй гравити у игрока и всё должно работать.
Прямо в классе игрока pev->gravity = 0.0f;

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 17-10-2023 в 10:26:

Обнаружил что в переиздании второй кваки (вот внезапно) все модельки пересадили на кости в формате md5, сгенерил одной утилитой из этой модели smd для компиляции, а вот как для неё написать qc не знаю, дайте какие-нибудь статьи о компиляции моделей для монстров, ничего похожего не нашёл.


Отправлено Дядя Миша 17-10-2023 в 11:09:

Тут статьей не обойтись. Тут целое дело. Я даже studiomdl дорабатывал, чтобы собрать эти модельки в формат халфы.

Может как-нибудь попозже напишу об этом. Но те модельки которые вы видели в сентябрьской демке - это тоже скелетка из ремастера, но уже первой кваки.

Цитата:
APAMk2 писал:
сгенерил одной утилитой из этой модели smd для компиляции

Не подскажешь название утилитки? Я Noesis юзаю, но он весьма неудобен.

Добавлено 17-10-2023 в 14:09:

ЗЫ. Модельки эти с развесовкой, поэтому нормально они будут выглядеть только под старым ксашем. И собирать их можно только моим компилятором моделей. Но да, это вполне реально. Я сам удивился.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 17-10-2023 в 11:16:

Цитата:
Дядя Миша писал:
Noesis

Да, именно он, первым попался по запросу "md5 to mdl".
Пока попробую скомпилить хотя-бы чтобы под старым ксашем на карту в cycler ткнуть, хотя-бы пойму как это делается.


Отправлено Дядя Миша 17-10-2023 в 12:08:

На тебе примерчег QC.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 17-10-2023 в 13:17:

Скомпилил модельку, пришлось немного с qc-шкой пошаманить (некоторых костей не было в том, что выплюнул Noesis), а также текстуру отзеркалить по вертикали т.к. uv-мапа не сходилась, моделька даже под FWGS завелась, единственно солдатик больно уж карликовый получился, но не страшно, со скейлом пошаманить и нормалёк.


Отправлено Дядя Миша 17-10-2023 в 13:56:

Цитата:
APAMk2 писал:
а также текстуру отзеркалить по вертикали т.к. uv-мапа не сходилась

Известная проблема. в настройках экспорта Noesis поставь галку Flip UV Maps или чёт такое.

Добавлено 17-10-2023 в 16:56:

А скейл можно прямо в QC задать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 17-10-2023 в 16:22:

Попробовал перенести супершотган, вышло неплохо и быстро (модель за 5 минут буквально перекомпилил), с монстрами беда т.к. попробовал налепить солдата на грунтов и они кроме как очень криво стрелять и дохнуть ничего не могут, даже ходить, а так хоть щас садись и делай Q2Remake.


Отправлено Дядя Миша 17-10-2023 в 18:46:

С ходьбой беда - эти анимации не содержат motion vector.

Добавлено 17-10-2023 в 21:46:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 19-10-2023 в 15:11:

Цитата:
Дядя Миша писал:
вообщем зануляй гравити у игрока и всё должно работать.
Прямо в классе игрока pev->gravity = 0.0f;

Нифига, PM_ живет своей жизнью.
Я думаю дело в этом:
code:
if (pmove->gravity) ent_gravity = pmove->gravity; else ent_gravity = 1.0;


Добавлено 19-10-2023 в 22:11:

Цитата:
Дядя Миша писал:
Тут статьей не обойтись. Тут целое дело. Я даже studiomdl дорабатывал, чтобы собрать эти модельки в формат халфы.

Может как-нибудь попозже напишу об этом. Но те модельки которые вы видели в сентябрьской демке - это тоже скелетка из ремастера, но уже первой кваки.

Лучше напиши о приключениях углов при передаче между движком клиентом и сервером, как вы с Квероксом дошли до умножения на ШЕСТЬ в попытках это понять, и т.д.


Отправлено Дядя Миша 19-10-2023 в 15:31:

Не на шесть, а на девять. Там не приключения. Есть вью-англес, они следуют за мышкой и есть просто англес, у которых питч поделён на 3, эти ориентируют тушку игрока. Пришло из кваки, понятное дело. В халфе это в принципе было уже не нужно, там тушку можно было ориентировать анимациями, но всё равно оставили. А вот в хл2 по идее этого уже нет.

Добавлено 19-10-2023 в 18:31:

Цитата:
Crystallize писал:
Я думаю дело в этом:

вот в pmove->gravity и приходит pev->gravity. Смотри что там.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено APAMk2 09-11-2023 в 15:00:

Делаю наклоны из за углов как в Сталкере, сделал прототип чисто наклоняющий взгляд на 30 градусов в input.cpp, как оказалось одного наклона камеры недостаточно, как можно сместить камеру? В view.cpp это сделано через изменение vieworg в pparams, может как-то можно его получить? Также думаю как можно интерполировать значение наклона камеры чтобы наклон был плавный.


Отправлено Crystallize 17-01-2024 в 18:19:

Цитата:
Crystallize писал:
Нифига, PM_ живет своей жизнью.
Я думаю дело в этом:

code:
if (pmove->gravity)
ent_gravity = pmove->gravity;
else
ent_gravity = 1.0;



Там получается два компонента у гравитации. Однако не в том смысле в котором она по половинкам применяется в PM_ функциях. Нельзя просто дать разрешение на нулевую гравитацию в пмуве как выше и прописать pev->gravity=0 где-то, это пол-дела. Там ещё остается какая-то гравитация которая приходит из vecAbsVelocity и действует даже если в PM_ функциях всё по нулям.


Отправлено Дядя Миша 17-01-2024 в 19:17:

Цитата:
Crystallize писал:
Там ещё остается какая-то гравитация которая приходит из vecAbsVelocity

Не гравитация, а просто вектор недообнуляется, наверное. Такое вполне может быть. Он же обнуляется не просто с течением времени, а по наступлению некоторого события, например если игрок нащупал дно.

Добавлено 17-01-2024 в 22:17:

Да я же вам рассказывал про забавный баг в первом Квейке. На e1m3 в конце уровня есть такой лифт к выходу с уровня и там игрока подстерегают два демона. Если убить их так, что они останутся на этом подъемнике, то, когда подъемник начнёт опускаться, мёртвые демоны поедут куда-то влево-вправо, ну вообщем кто куда. Почему так происходит? Демоны обычно гибнут в полёте, когда их велосити не равен нулю и падают на землю с актуальным велосити. Но поскольку монстр при падении получает флаг FL_ONGROUND это уже не имеет значения. А вот когда подъемник начинает опускаться вместе с демонами, он им обнуляет флаг FL_ONGROUND и велосити вновь начинает применяться. Вот они и продолжают ехать в ту сторону, куда прыгали перед смертью. Но - строго в 2д плоскости

Добавлено 17-01-2024 в 22:17:

И таких приколов в кушной физике довольно много.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Sigurth 20-01-2024 в 04:16:

Прилипание игрока к полу

Подскажите, как можно убрать "прилипание" игрока к полу по время FlyMove и NoClipMove? Подобный эффект можно наблюдать в режиме спектатора, особенно в кс 1.6, когда в летите прямо, у вас под ногами наклонная поверхность, и вы в итоге летите не прямо, а "скользите" по поверхности вниз. Можете проверить на de_dust2. Но если на режим спектатора мне глубоко начихать, то вот после уменьшения скорости передвижения по лестницам, при малом PITCH игроку не хватает скорости, чтобы отлипнуть от пола и начать подниматься, что меня очень огорчает. Фиксил кто-нибудь такое?

__________________
Никогда не поздно сделать мод под хл1


Отправлено Crystallize 20-01-2024 в 07:25:

Sigurth я такое замечал на ксашмоде в начале 2020 когда игрался с переносом уровней из хл2, но Дядя Миша меня толи не понял, толи не поверил.


Отправлено Aynekko 20-01-2024 в 07:55:

Цитата:
Sigurth писал:
Подскажите, как можно убрать "прилипание" игрока к полу по время FlyMove и NoClipMove?

void PM_CatagorizePosition (void):
C++ Source Code:
1
if( pmove->movetype == MOVETYPE_NOCLIP || pmove->spectator )
2
  point[2] = pmove->origin[2]; // diffusion - no glueing with ground when noclipping or spectating
3
else
4
  point[2] = pmove->origin[2] - 2;

__________________
Мой мод на Xash


Отправлено Дядя Миша 20-01-2024 в 08:49:

Было:

C++ Source Code:
1
// Always try and unstick us unless we are in NOCLIP mode
2
if ( pmove->movetype != MOVETYPE_NOCLIP && pmove->movetype != MOVETYPE_NONE )
3
{
4
  if ( PM_CheckStuck() )
5
  {
6
    return;  // Can't move, we're stuck
7
  }
8
}
9
 
10
// Now that we are "unstuck", see where we are ( waterlevel and type, pmove->onground ).
11
PM_CatagorizePosition();

Стало:
C++ Source Code:
1
// Always try and unstick us unless we are in NOCLIP mode
2
if ( pmove->movetype != MOVETYPE_NOCLIP && pmove->movetype != MOVETYPE_NONE )
3
{
4
  if ( PM_CheckStuck() )
5
  {
6
    return;  // Can't move, we're stuck
7
  }
8
 
9
  // Now that we are "unstuck", see where we are ( waterlevel and type, pmove->onground ).
10
  PM_CatagorizePosition();
11
}

Так сложно догадаться, правда?

Добавлено 20-01-2024 в 11:49:

Собственно вот это говно, которое заставляет игрока "прилипать"
C++ Source Code:
1
// If we are on something...
2
if (pmove->onground != -1)
3
{
4
  // Then we are not in water jump sequence
5
  pmove->waterjumptime = 0;
6
  // If we could make the move, drop us down that 1 pixel
7
  if (pmove->waterlevel < 2 && !tr.startsolid && !tr.allsolid)
8
    VectorCopy (tr.endpos, pmove->origin);
9
}

Но вам вообще не нужен весь этот код в режиме полёта.

Цитата:
Crystallize писал:
но Дядя Миша меня толи не понял, толи не поверил.

Дядя Миша не отвечает на вопросы из разряда, кушоет ли он мёд.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 25-01-2024 в 14:49:

я хотел написать Vector c = array[ (byte)(a*b) ]
а написал Vector c = array[ (byte)a*b ]
И у вектора отдельно компонент x запортился. Не выдался неверный элемент, не запортился весь вектор, а только один компонент. Странно.


Отправлено nemyax 25-01-2024 в 23:38:

Цитата:
Crystallize писал:
я хотел написать Vector c = array[ (byte)(a*b) ]

Что оно должно было делать по твоей задумке?


Отправлено Crystallize 26-01-2024 в 01:28:

nemyax Массив с положительными и отрицательными ячейками, чтобы знать какие рельсины впереди а какие позади тебя. Не все, просто пара ближайших. Один множитель это индекс -2 -1 1 2, другой это направление 1 -1 по или против нумерации. Ну а байт это переполнение буфера чтобы -1 стало 255.


Отправлено Дядя Миша 26-01-2024 в 05:46:

Цитата:
Crystallize писал:
Массив с положительными и отрицательными ячейками, чтобы знать какие рельсины впереди а какие позади тебя


Позади тебя очевидно рельсы, которые ты уже проехал. Впереди тебя рельсы, которые ты собираешься проехать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 26-01-2024 в 06:00:

Цитата:
Дядя Миша писал:
if (pmove->onground != -1)


Интересно кстати, почему -1? Он же по идее вообще булевым должен быть.


Отправлено Crystallize 26-01-2024 в 06:37:

Цитата:
Дядя Миша писал:

Позади тебя очевидно рельсы, которые ты уже проехал. Впереди тебя рельсы, которые ты собираешься проехать.

Да никто не знает что там позади тебя а что впереди. Особенно когда неизвестно с какой стороны ты прилетел и в какую сторону поехал. Есть только сегмент на котором ты сел, чей он таргет, кто его таргет, и переменная с направлением движения. Она и создаёт концепцию "позади тебя", "впереди тебя" и т.д.


Отправлено Дядя Миша 26-01-2024 в 07:05:

Цитата:
FiEctro писал:
Интересно кстати, почему -1? Он же по идее вообще булевым должен быть.

Не, там номер энтити хранится.

Цитата:
Crystallize писал:
Да никто не знает что там позади тебя а что впереди.

Так у тебя же там двусвязный список из патч-треков.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 26-01-2024 в 07:55:

Цитата:
Дядя Миша писал:
Не, там номер энтити хранится.


Там же написано on ground. Зачем в onground хранить номер энтитии? Да ещё и так хардкодить его ?


Отправлено Crystallize 26-01-2024 в 08:32:

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

Так он субъективен для самой рельсы. Если ты на него посмотришь не с той стороны, то для тебя он инвертирован.

Добавлено 26-01-2024 в 15:32:

Цитата:
FiEctro писал:
Там же написано on ground. Зачем в onground хранить номер энтитии? Да ещё и так хардкодить его ?

Наверное потому что энтити бывают брашевыми и при этом солидными.


Отправлено nemyax 26-01-2024 в 09:43:

Цитата:
Crystallize писал:
Есть только сегмент на котором ты сел, чей он таргет, кто его таргет, и переменная с направлением движения.

Тогда зачем ещё и массив строить? Всё ж и так есть.


Отправлено Crystallize 26-01-2024 в 10:20:

Цитата:
nemyax писал:
Тогда зачем ещё и массив строить? Всё ж и так есть.

Там есть ещё и бегунки которые трейсят рельсу как ноги. И если игрок не сильно заехал на текущий сегмент то задний бегунок всё ещё едет на преведущем и для него все индексы рельсов и углов рельсов будут на один меньше (если игрок поехал в направлении нумерации рельсов) или на один больше (если он поехал против нумерации). И тут можно было бы нагромоздить двухуровневую систему условий-макросов, как оно одно время и было. Но чтобы наглядно отразить в коде, что статусы сегментов(leaving, this, coming, postcoming) сдвигаются именно все вместе и на единицу, я дал им индексы и их декрементировал.

Добавлено 26-01-2024 в 17:20:

Т.е. массов нужен чтобы это было бы как бы общее пространство и при сдвиге сразу попадать на новое корректное значение.


Отправлено Дядя Миша 27-01-2024 в 13:11:

Цитата:
FiEctro писал:
Зачем в onground хранить номер энтитии?

Значит понадобилось.

Цитата:
FiEctro писал:
Да ещё и так хардкодить его

В каком смысле?

Цитата:
Crystallize писал:
Если ты на него посмотришь не с той стороны, то для тебя он инвертирован.

А ты через дотпродукт найди сторону

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 27-01-2024 в 13:48:

Дядя Миша я ищу ее один раз когда игрок запрыгивает, сравниваю его вектор скорости с вектором данного сегмента.


Отправлено Дядя Миша 27-01-2024 в 19:13:

Цитата:
Crystallize писал:
сравниваю его вектор скорости с вектором данного сегмента.

И каков же вектор сегмента?

Добавлено 27-01-2024 в 22:13:

Цитата:
Crystallize писал:
сравниваю его вектор скорости

Ну представь что игрок запрыгнул вертикально вверх. Просто нажал прыжок.
И что тогда?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 27-01-2024 в 21:35:

Цитата:
Дядя Миша писал:
И каков же вектор сегмента?

Конец минус начало

Цитата:
Дядя Миша писал:
Ну представь что игрок запрыгнул вертикально вверх. Просто нажал прыжок.
И что тогда?

Я это учел, там усреднение между направлением движения и направлением взгляда. Поэтому он все же поедет потихоньку. Но если он смотрел строго перпендикулярно то не поедет Стрейфиться игрок не может.


Отправлено Дядя Миша 28-01-2024 в 07:38:

Цитата:
Crystallize писал:
Конец минус начало

У любого патч-трека два конца.

Цитата:
Crystallize писал:
Я это учел, там усреднение между направлением движения и направлением взгляда

Это не учёл, это хак.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 29-01-2024 в 15:45:

где можно найти нормальные исходники half-life 2 ? и какой программой их надо комплить ? пробовал сам найти исходники но они нормально не компилятся

__________________
илья


Отправлено FiEctro 29-01-2024 в 15:47:

Цитата:
илья2 писал:
где можно найти нормальные исходники half-life 2 ? и какой программой их надо комплить ? пробовал сам найти исходники но они нормально не компилятся



Гугли Source SDK.


Отправлено илья2 29-01-2024 в 15:54:

а какой программой компилить ?

__________________
илья


Отправлено FiEctro 29-01-2024 в 16:10:

Цитата:
илья2 писал:
а какой программой компилить ?



Visual Studio вроде как 2005, но может уже и под более старшие версии есть.


Отправлено илья2 29-01-2024 в 19:16:

в общем пишет ошибку hl fatal error LNK1106: invalid file or disk full: cannot seek to 0x697B.

version https://git-lfs.github.com/spec/v1
oid sha256:aaccecc6e45e3d25188411e664772b750bdd433fc9c33a96080a055f22382ae5
size 41450

как исправить ?

Добавлено 29-01-2024 в 21:52:

source-sdk-2004

Добавлено 29-01-2024 в 22:16:

еще постоянно жалуется на #include <windows.h> его просто нету. Мда в общем постоянные заморочки

__________________
илья


Отправлено Crystallize 30-01-2024 в 01:33:

илья2 держи сдк
https://mega.nz/file/UfRhyLRC#v5VUL...0AijoX86LqKKDY8


Отправлено илья2 30-01-2024 в 05:58:

Цитата:
Crystallize писал:
илья2 держи сдк
https://mega.nz/file/UfRhyLRC#v5VUL...0AijoX86LqKKDY8

а что толку компилит с одной единственной ошибкой invalid file or disk full а как эту ошибку исправить я не знаю.

Добавлено 30-01-2024 в 08:58:

я еще на другом компьютере не пробовал надо попробовать может там скомпилится нормально.

__________________
илья


Отправлено Дядя Миша 30-01-2024 в 06:07:

илья2 так мож у тебя на диске места не хватает? Проверь сколько у тебя свободного места на диске С.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 30-01-2024 в 07:09:

Цитата:
илья2 писал:
а что толку компилит с одной единственной ошибкой invalid file or disk full а как эту ошибку исправить я не знаю.


Так он тебе англицким языком пишет что у тебя диск переполнен. Освободи место на диске.


Отправлено илья2 30-01-2024 в 07:54:

27,1 гб осталось это что разве переполнен ?

__________________
илья


Отправлено FiEctro 30-01-2024 в 07:58:

илья2
Попробуй от имени администратора запустить, возможно винда блокирует доступ к диску.

Вот твоя ошибка:
https://stackoverflow.com/questions...k-to-0x5a57bebc

Зайди в Project Settings->Librarian->Command Line->Additional options и добавь /expectedoutputsize:600000000 в линкер.


Отправлено илья2 30-01-2024 в 08:49:

и добавь /expectedoutputsize:600000000 в линкер:не работает

Добавлено 30-01-2024 в 11:49:

от имени администратора запустить:тоже не работает

__________________
илья


Отправлено Дядя Миша 30-01-2024 в 10:06:

Цитата:
илья2 писал:
и добавь /expectedoutputsize:600000000 в линкер:не работает

Покажи куда добавлял.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 30-01-2024 в 10:18:

вот:https://imgur.com/a/YawjhRF

Добавлено 30-01-2024 в 13:18:

и все таки я не понимаю как такой крутой мод как overcharged мог быть сделан ? если даже обычный пацан как я не может нормально исходники half-life 2 скомпилить и немного их переделать. Или у разработчика свои секреты есть

__________________
илья


Отправлено Дядя Миша 30-01-2024 в 10:43:

Попробуй в All Options прописать явно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 30-01-2024 в 10:54:

илья2
а какая у тебя версия студии?

И проверь чтобы у твоей папки с СДК не стояло атрибута "только чтение".


Отправлено илья2 30-01-2024 в 13:54:

Цитата:
FiEctro писал:
илья2
а какая у тебя версия студии?

Microsoft Visual Studio . NET 2003 Enterprise Architect версии 7.1

Добавлено 30-01-2024 в 16:29:

Цитата:
Дядя Миша писал:
Попробуй в All Options прописать явно.

так не получается не дает писать. Может где то есть файл где все эти скрипты прописаны ?

Добавлено 30-01-2024 в 16:47:

https://imgur.com/jsOaJl9

Добавлено 30-01-2024 в 16:51:

что интересно при нажатии на ошибку переносит на файл tier0.lib

Добавлено 30-01-2024 в 16:53:

где прописывается size-размер 41450
хеш код oid sha256:aaccecc6e45e3d25188411e664772b750bdd433fc9c33a96080a055f22382ae5
и ссылка на какой то сайт https://git-lfs.github.com/spec/v1

Добавлено 30-01-2024 в 16:54:

где требуется скачать какой то гид ларге файл стораге ?

__________________
илья


Отправлено Ku2zoff 31-01-2024 в 13:15:

Цитата:
илья2 писал:
Microsoft Visual Studio . NET 2003 Enterprise Architect версии 7.1

Как ты её вообще установил? 7.1 на десятку не ставится, какой-то из пререквизитов, кажись J# redist отказывается устанавливаться и всё, труба. Найди исходники Half-Life 2 посвежее, например под 2005 или 2010 студию. Бета вроде бы компилится ещё шестой студией, а вот самый первый сорс сдк, ЕМНИП, 7.1, она же 2003. Ищи сорс сдк для оранжбокс - будет самое то.

Добавлено 31-01-2024 в 20:15:

В наше время и сорцы, и студию найти не трудно: интернет есть. А я вот из-за сначала от безысходности, а после по привычке до 2013 года юзал эту самую 7.1.


Отправлено Crystallize 31-01-2024 в 14:52:

илья2 судя по всему утебя там промежуточные файлы в проекте друг друга перезаписывают потому что оно все в одной папке. Может просто перейди на Эп1 или орандж бокс.


Отправлено илья2 31-01-2024 в 15:26:

Цитата:
Ku2zoff писал:
В наше время и сорцы, и студию найти не трудно: интернет есть.

трудно не найти трудно скомпилировать

__________________
илья


Отправлено FiEctro 31-01-2024 в 15:39:

Цитата:
илья2 писал:
Microsoft Visual Studio . NET 2003 Enterprise Architect версии 7.1


Я бы всетаки порекомендовал обновиться
https://archive.org/details/en_visu...x86_dvd_6816332

https://developer.valvesoftware.com...g_Visual_Studio


Отправлено илья2 31-01-2024 в 16:02:

Build: 1 succeeded, 0 failed, 0 skipped

ООО наконец то как я долго этого ждал скомпилилось наконец скомпилилось ура

Добавлено 31-01-2024 в 18:48:

еее client и server скомпилились

Добавлено 31-01-2024 в 18:51:

осталось только проверить их в игре

Добавлено 31-01-2024 в 19:02:

мда не долго я радовался вылезает вот эта ошибка https://imgur.com/a/XAbNvGf

__________________
илья


Отправлено Дядя Миша 31-01-2024 в 20:28:

К хл2 наплодили кучу версий движка, там всё несовместимое.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено илья2 01-02-2024 в 08:22:

Цитата:
Дядя Миша писал:
там всё несовместимое.

и что делать все забыть про сорцы ?

__________________
илья


Отправлено Дядя Миша 01-02-2024 в 08:43:

Искать новый SDK или старую версию движка, под которой эта библиотека заведётся.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 01-02-2024 в 09:32:

Цитата:
илья2 писал:
и что делать все забыть про сорцы ?


Я тебе скинул что делать. Открой ссылку там всё написано.


Отправлено илья2 01-02-2024 в 09:43:

Цитата:
FiEctro писал:
Я тебе скинул что делать. Открой ссылку там всё написано.

я попробую

__________________
илья


Отправлено илья2 03-02-2024 в 12:56:

мдааа попробовал я твой способ после компила вот такая абра кадабра вылезает:https://imgur.com/a/r7j7o47 я даже не знаю что это такое может проблема что я стимовский half-life 2 запускаю или надо что то другое запускать ?

Добавлено 03-02-2024 в 15:38:

кажется я начинаю понимать это дебаггер он предупреждает об ошибке в директории game_controls/base игра работает запускается но худ в костюме работает неправильно все патроны здоровье энергия костюма куда то заноситься в угол.

Добавлено 03-02-2024 в 15:56:

только я не пойму а на какой объект ссылается дебаггер ? base.cpp такого файла нету.

__________________
илья


Отправлено FreeSlave 07-02-2024 в 11:40:

В каких случаях SetObjectCollisionBox должен отличаться от размера, выставляемого в UTIL_SetSize?

И ещё. Моё давнишнее наблюдение, в сути которого я, однако, не копался. Если у прожектайла ненулевой размер, то он не будет попадать в модельку за пределами размера, выставленного через UTIL_SetSize. Для корректной работы нужно увеличивать размер, дабы он покрывал всю модельку. Пример: гаргу в ХЛ выставляется размер такой же как у агрунта. Из-за этого прожектайлы с ненулевым размером пролетают сквозь модельку (если не стрелять по ногам). Прожектайлов с ненулевым размером в ХЛ вроде как нет, но могут быть с кастомным кодом. В опфоре таковыми являются снаряды шокроача. И в опфоре выставляемый размер у гарга действительно увеличен для соответствия геометрии модельки.
Собственно, как определяется столкновение? Какую роль играет размер монстра и хитбоксы его модели. И в чем особенность проверки столкновения у прожектайлов с нулевым размером? Чисто из наблюдений получается, что движок для энтить с ненулевым размером сначала проверяет столкновение по размерам и в случае успеха проверяет дополнительно хитбоксы, иначе - столкновения не происходит. А для энтить с нулевым размером трасса, должно быть, работает иначе, и сразу "попадает" в хитбокс.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 07-02-2024 в 13:23:

absmin и absmax - это размеры ббокса, с которыми объект линкуется в дерево. Они очевидно не должны быть меньше реального размера, заданного в SetSize. Но могут быть больше. Например для ротатаблей.
Ротатабля же неизвестно в какую сторону крутится - можно взять её общий радиус. Чтобы другой предмет гарантированно в ней не застрял.

Цитата:
FreeSlave писал:
И в чем особенность проверки столкновения у прожектайлов с нулевым размером?

Там задаётся ббокс +\15 юнитов, чёб ими легче попадать было.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FreeSlave 08-02-2024 в 14:40:

Цитата:
Дядя Миша писал:
Там задаётся ббокс +\15 юнитов, чёб ими легче попадать было.

Ракеты и арбалетные стрелы в ХЛ прекрасно бьют в макушку гарга, хотя расстояние между верхушкой заданной в SetSize и макушкой гарга явно больше 15 юнитов.
А вот Ббокс, выставляемый через SetObjectCollisionBox, у гарга да, увеличенный по сравнению с его SetSize и как раз примерно соответствует размерам модельки.
Я, кстати, вспомнил, что есть в ХЛ снаряды с ненулевым размером - это хорнеты мухобойки. Они в HL пролетают сквозь Гарга (если не стрелять по ногам, опять же).

Насчёт +15/-15 - это ты наверно про MOVETYPE_FLYMISSILE кстати. Но он в халфовском сдк не используется.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 08-02-2024 в 16:21:

Я уже не помню точно как это в халфе использовалось. Были какие-то отличия от кваки.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 12-02-2024 в 15:42:

Меня смущает эффект от команды r_drawentities 5. У игрока кубик ААББ и он вращается но при этом как будто коллидит без учета вращения. Я думал только в КС хулл игрока вращается?


Отправлено Дядя Миша 12-02-2024 в 15:52:

Не-не, это не колоизационный хулл.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 12-02-2024 в 15:55:

Цитата:
Crystallize писал:
Я думал только в КС хулл игрока вращается?

В КС хулл игрока вращается??

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено a1batross 12-02-2024 в 17:28:

del

__________________
Xash3D FWGS форк


Отправлено Crystallize 13-02-2024 в 01:42:

XaeroX типа, поэтому якобы проходит в неаксиальные коридоры Уже чем 32.5*1.4142. Хотя наверное это просто учёт нормалей при надувании хулла.


Отправлено Дядя Миша 13-02-2024 в 07:47:

Это чисто визуальный эффект, он не имеет никакого отношения к коллизии.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 24-02-2024 в 20:29:

В фитцквейке нельзя обновить r.refdef.vieworg через VectorAdd. Вот Мастер бы развонялся...


Отправлено Дядя Миша 24-02-2024 в 20:40:

Цитата:
Crystallize писал:
В фитцквейке нельзя обновить r.refdef.vieworg через VectorAdd. Вот Мастер бы развонялся...

Скорее расскажи ему об этом

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 02-03-2024 в 14:57:

Цитата:
Дядя Миша писал:
Скорее расскажи ему об этом

А что его где-то можно найти сейчас?


Отправлено XaeroX 02-03-2024 в 15:03:

Crystallize
Мастера? Конечно можно. Он просто к нам на форум принципиально не ходит, наверное, мы его чем-то огорчили.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!


Отправлено Crystallize 02-03-2024 в 17:04:

XaeroX он всё ещё дрочит свой XDM и маппак?!
я думал разочаровался во всём и потому ушёл. Но видимо разочаровался он только в нас.


Отправлено Crystallize 12-03-2024 в 02:07:

Что делать если шестерка зависает где-то на стадии проверки ошибок?


Отправлено Дядя Миша 12-03-2024 в 06:02:

Какая шестёрка? Студия? У компиляции нет фазы проверки ошибок.
Ты что-то путаешь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 12-03-2024 в 06:59:

Дядя Миша В общем я жму F7, курсор песочные часы и студия перестает реагировать на клики. И нагрузка на проц даже не повышается.


Отправлено FiEctro 12-03-2024 в 07:03:

Цитата:
Crystallize писал:
Что делать если шестерка зависает где-то на стадии проверки ошибок?


Перестать мучать мамонта. Ну или пересаживаться на XP.


Отправлено Дядя Миша 12-03-2024 в 07:07:

Странно. Не приходилось с таким сталкиваться. Это любой проект так?

Добавлено 12-03-2024 в 10:07:

Цитата:
FiEctro писал:
Перестать мучать мамонта

Я вот перешёл на 2005-ю студию, так эта зараза через два дня работы просто перестала выполнять фазу Post Build. Ни от чего. Причём оно начало постепенно отваливаться. Сперва на одном проекте, потом на другом.
А я в толк взять не могу, почему изменений не видно. А оно оказывается свежскомпиленные файлы не копирует, так и лежит старье. Никаких ошибок не выдаётся, ничего. Просто не копирует и всё. И тут понял, почему народ в большинстве перешёл на какие-то автосборки и прочие системы автоматизации. Неудивительно, когда от студии такая подляна началась.
Так что нет уж. Сами это дерьмо юзайте.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 12-03-2024 в 07:14:

Цитата:
Дядя Миша писал:
Я вот перешёл на 2005-ю студию,


Так это тоже мамонт.


Отправлено Дядя Миша 12-03-2024 в 07:17:

Ну у более новых студий ещё какие-то приколы будут.
Мне работать надо, а не воевать с чужими глюками.

Добавлено 12-03-2024 в 10:17:

Потом всё это без проблем соберётся свежей студией, т.к. изначально пишется совместимо.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 12-03-2024 в 07:45:

Цитата:
Дядя Миша писал:
Странно. Не приходилось с таким сталкиваться. Это любой проект так?

Фитцквейк и ксашмод. На ксашмоде удавалось обходить, на фитцквейке три раза подряд вчера словил.

Добавлено 12-03-2024 в 14:45:

Цитата:
Дядя Миша писал:
Я вот перешёл на 2005-ю студию, так эта зараза через два дня работы просто перестала выполнять фазу Post Build.

Скорее всего непредусмотренный эффект от работы под 10-кой, ну или что у тебя сейчас стоит.


Отправлено Дядя Миша 12-03-2024 в 09:02:

Цитата:
Crystallize писал:
Скорее всего непредусмотренный эффект от работы под 10-кой, ну или что у тебя сейчас стоит.

На XP это началось. Какой непредусмотренный эффект?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 14-03-2024 в 10:41:

Цитата:
Дядя Миша писал:
Странно. Не приходилось с таким сталкиваться. Это любой проект так?

Там проблема конкретно с сохранением исходника. Он не может этого сделать видимо. При том что смарт wmic пишет что состояние диска ок.

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


Отправлено Дядя Миша 14-03-2024 в 11:26:

Я уже не помню что там в квейке. Сам ковыряет и меня спрашивает

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 15-03-2024 в 04:31:

Можно ли маппать под HL в каком-нибудь радианте? Чтобы вадники открывал и текстуры показывал? Volatile-Radiant тот же?

Мне просто нравится что в радианте не надо край браша мышкой ловить.
Вот это я нашел https://hlfx.ru/forum/showthread.php?s=&threadid=3717 но про текстуры там не сказано.


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

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