HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- XashXT (https://hlfx.ru/forum/forumdisplay.php?forumid=30)
-- XashXT/3D [Вопросы и ответы] (https://hlfx.ru/forum/showthread.php?threadid=3689)
Отправлено Дядя Миша 04-03-2021 в 17:03:
scr_conspeed
Добавлено 04-03-2021 в 20:03:
Вообще что мешает набрать в консоли makehelp и ознакомиться с авто-документацией?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 08-03-2021 в 19:24:
Такая проблема у меня.
В общем сделал я "оружие" - ставить турели monster_sentry. На основную атаку нажимаешь и перед игроком спавнится дружественная турель. Дело в том, что если заспавнить турель, сохраниться и загрузиться - она исчезнет. Спавню таким образом - это код Primary attack:
C++ Source Code:
CBaseMonster *pSentry = (CBaseMonster*)Create( "monster_sentry", TurretSpawnPosition, g_vecZero, m_pPlayer->edict() ); |
pSentry->m_iClass = CLASS_PLAYER_ALLY; |
До этого кода идет трейс на возможность поставить турель (стена или нпс на пути), после идет отьем "патронов" у игрока и выставление времени следующей атаки, в общем как обычно. Все работает норм, за исключением сейврестора.
РАЗОБРАЛСЯ
Из-за этого не сохранялось.
C++ Source Code:
pSentry->pev->classname = MAKE_STRING("_playersentry"); |
Оказывается надо было прописать у турели
C++ Source Code:
LINK_ENTITY_TO_CLASS( _playersentry, CSentry ); |
И да, подмена класса энтити мне нужна 
__________________
Мой мод на Xash
Отправлено Дядя Миша 09-03-2021 в 06:01:
C++ Source Code:
pSentry->pev->classname = MAKE_STRING("_playersentry") |
А это еще откуда? 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 09-03-2021 в 11:53:
Цитата:
Дядя Миша писал:
C++ Source Code:
pSentry->pev->classname = MAKE_STRING("_playersentry") |
А это еще откуда?
Это мое. Я ж говорю, сделал турели, и мне надо было чтобы у них "энтитянейм" поменялся с monster_sentry на ту, что мне надо. Кто ж знал, что нельзя менять на что попало, а только на то, что есть в link_entity_to_class.__________________
Мой мод на Xash
Отправлено Дядя Миша 09-03-2021 в 15:02:
Восстановление энтить происходит по их имени. Но у одной энтити конечно может быть несколько имён. Только ты неправильно сделал.
Ты просто создавай
C++ Source Code:
CBaseMonster *pSentry = (CBaseMonster*)Create( "_playersentry", TurretSpawnPosition, g_vecZero, m_pPlayer->edict() ); |
а вот эту пакость
C++ Source Code:
pSentry->pev->classname = MAKE_STRING("_playersentry"); |
выброси. Потому что иначе у тебя все туррели поменяют имя на _playersenrty, опять будешь жаловаться, что что-то работать перестало.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 09-03-2021 в 19:14:
Точно, спасибо. Раз я сделал линк, то можно же сразу делать.
Добавлено 09-03-2021 в 21:34:
Цитата:
Ku2zoff писал:
Я заинтересовался, попозже сегодня сам проверю опфор на предмет вылета. И напишу себе такой шок-эффект, пригодится для чего-нибудь.
Ku2zoff, если есть возможность, проверь такой баг с этой прожектилей. Еле отловил его.
Задал солдату очень маленькую скорость прожектили. Так вот, когда солдата разносит в клочья или труп исчезает (то есть энтитя удалена из мира), а прожектиля все еще летит - то когда она коснется чего-либо, будет вылет.
Починилось вот так:
В класс шока пишем
C++ Source Code:
В спаун шока пишем
C++ Source Code:
m_hOwner = Instance( pev->owner ); |
Во FlyThink закинул постоянную проверку:
C++ Source Code:
И все - вылеты приекратились. Вроде бы понятно, что к чему тут, но этот солдат так же пуляется другой энтитей (которую я причем сам делал), у которой owner не обнуляется, при этом даже без солдата никаких вылетов нет. Хотя EHANLDE и Instance я прописал там. От греха подальше закинул проверку на овнера и в свою энтитю, черт ее знает.
P.S. в опфоре не получилось проверить. Прожектиля летит слишком быстро. Пытался разорвать шок-трупера, пока летит прожектиля. Либо там этого бага нет, либо я так и не смог попасть в тайминг.
Добавлено 09-03-2021 в 22:14:
Странное что-то. Ксаш вылетает, когда солдат стреляет шок-энтитей. Но только тогда, когда выставлен параметр -dev. Без него вылета нет. Таких приколов я еще не видел. 
__________________
Мой мод на Xash
Отправлено Aynekko 10-03-2021 в 18:42:
Цитата:
Aynekko писал:
Странное что-то. Ксаш вылетает, когда солдат стреляет шок-энтитей. Но только тогда, когда выставлен параметр -dev. Без него вылета нет. Таких приколов я еще не видел.
Загадка разгадана. Если вкратце, вылет был из-за этого:
C++ Source Code:
А надо было вот так сделать - обнулять кадры:
C++ Source Code:
3 | if(m_pSprite->pev->frame > 9) |
4 | m_pSprite->pev->frame = 0; |
5 | m_pSprite->pev->frame++; |
Причем если выставить "> 11", то будет вылет, т.к. в спрайте 11 кадров. 10 не стал, поставил 9. Было бы удобно конечно брать инфу о кадрах из спрайта, но я не знаю пока как.
А дальше еще интереснее. Спрайт создается как
C++ Source Code:
m_pSprite = CSprite::SpriteCreate( "sprites/shock.spr", GetAbsOrigin(), TRUE ); |
m_pSprite->SetAttachment( edict(), 0 ); |
И если оставить неправильный код во FlyThink
C++ Source Code:
То ксаш в режиме -dev будет сыпать в консоль ошибками вида "Warning: R_GetSpriteFrame: no such frame 11 (sprites/shock.spr)" (оттуда и узнал про ошибку).
А теперь к спауну спрайта добавляем код
C++ Source Code:
m_pSprite->pev->scale = 0.6; |
m_pSprite->SetTransparency( kRenderTransAdd, 255, 0, 50, 150, kRenderFxNoDissipation ); |
И все, ксаш вместо вывода в консоль ошибки о кадрах просто вылетает.
И уже потом, когда я выставил зануление кадров после 9-го, вылеты прекратились, так же как и спам в консоль.__________________
Мой мод на Xash
Отправлено Ku2zoff 11-03-2021 в 08:11:
Цитата:
Aynekko писал:
if (m_pSprite)
__m_pSprite->pev->frame++;
Он вообще должен сам анимироваться... m_pSprite->SetThink(&CSprite::AnimateUntilDead), по-моему. Вручную прибавлять кадры - это какой-то костыль.
Отправлено Дядя Миша 11-03-2021 в 11: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 11-03-2021 в 14:11:
Цитата:
Ku2zoff писал:
Он вообще должен сам анимироваться... m_pSprite->SetThink(&CSprite::AnimateUntilDead)
Спасибо, не знал про такое. Но, почему-то не работает. Убрал свое условие и поставил твою строчку в createeffects
C++ Source Code:
2 | m_pSprite = CSprite::SpriteCreate( "sprites/shock.spr", GetAbsOrigin(), TRUE ); |
5 | m_pSprite->SetThink(&CSprite::AnimateUntilDead); |
Просто статичный спрайт. Выставил прожектиле совсем маленькую скорость, так что рассмотрел со всех сторон.
Ну и еще баг нашел. После выстрела летящая прожектиля несолидная для игрока - сквозь нее ходишь. Сохранился, загрузился. И тут она уже бьет игрока и уничтожается. Интересно…)
Странно, выставил алерт, так вот после загрузки сохранения мое условие во flythink активируется.
C++ Source Code:
Теряется овнер почему-то.
UPDATE: нашелся овнер. Не думал, что надо сохранять его
C++ Source Code:
DEFINE_FIELD( m_hOwner, FIELD_EHANDLE ), |
__________________
Мой мод на Xash
Отправлено Дядя Миша 11-03-2021 в 18:09:
В халфе два овнера, причём маленький действует на трассу, а большой просто для удобства. Из-за этого путаница.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Casperx69x 25-03-2021 в 11:58:
Доброго времени суток. Я таки опять с вопросами.
При добавлении травы, можно редачить ее свойства, но вот что значит последняя цифра в столбике в grassinfo.txt?
Все еще озадачен вопросом gib-сов. У меня есть катсцена, где взрывается здание, и вот нужно у func_breakable увеличить время gib-сов до полного растворения, чтоб это не так убого выглядело. Где это посмотреть в коде?
в документации на сайте указано, что можно указать направление и скорость вращения скайбокса, если указать все значения, ничего не меняется. Это вырезали в последней версии? Мой косяк? Если есть в старых версиях, подскажите в какой пжлст.
В ксаше есть ограничение на количество зеркал? Почему-то при добавлении их больше одного, фпс падает до пары кадров (Хотел намутить отражения в окнах, внутри дома, добавил окно и просто капец)
В func_landscape есть какие-то настройки в редакторе, кроме zhlt_landscape, zhlt_texturestep, zhlt_maxextent?
В последней версии ксаша и ксашнт, точно работают лоды? Делал по инструкции с добавлением в сами модели, и что-то ничего не пашет.
Какие есть еще возможности движка, которые не указаны в документации? Просто имхо, про текстуры ландшафта нет инфы, кусок инфы на кмс и все, так же про func_landscape. Если есть доп инфа, можно в лс пожалуйста
и бога ради сделайте пустую карту коробку с env_physbox, где она якобы разрушается от выстрелов и залейте мне в личку. У меня тупо это не работает. Я прям хз,что делать...
Отправлено Aynekko 25-03-2021 в 12:10:
Цитата:
Casperx69x писал:
func_breakable увеличить время gib-сов до полного растворения, чтоб это не так убого выглядело. Где это посмотреть в коде?
В CBreakable::Die есть WRITE_BYTE(25) - duration 2.5 seconds - это не оно?Цитата:
Casperx69x писал:
Почему-то при добавлении их больше одного, фпс падает до пары кадров (Хотел намутить отражения в окнах, внутри дома, добавил окно и просто капец)
Одно зеркало уже по сути тупо умножает еполи и вполи на 2. Про 2 зеркала рядом я вообще молчу...из-за этого пришлось отказаться от нихЦитата:
Casperx69x писал:
можно указать направление и скорость вращения скайбокса
Интересная фича, это 2д или 3д? 3д можно парентом прикрепить к ротатингу__________________
Мой мод на Xash
Отправлено Casperx69x 25-03-2021 в 12:26:
Aynekko я может туплю, но вот вот тут про скайбокс https://clck.ru/TufN7 (извиняюсь за сокращатель ссылок)
Сделай пустую карту коробку с env_physbox, где она якобы разрушается от выстрелов и залей мне в личку. У меня тупо это не работает. Я прям хз,что делать...
Отправлено Дядя Миша 25-03-2021 в 12:31:
Цитата:
Casperx69x писал:
но вот что значит последняя цифра в столбике в grassinfo.txt?
Random Seed. База для генератора рандомной расстановки травы.
Трава ставится случайно, но каждый раз одинаково. Вот это число позволяет поиграться со случайностью.
Цитата:
Casperx69x писал:
Это вырезали в последней версии?
да вырезали. Для 3д неба это не так актуально, можно сделать ротатаблей.
Цитата:
Casperx69x писал:
Почему-то при добавлении их больше одного, фпс падает до пары кадров
какая видеокарта, как зеркала стоят? Друг напротив друга?
Цитата:
Casperx69x писал:
Делал по инструкции с добавлением в сами модели, и что-то ничего не пашет.
а как определил, что не пашет? Поиграйся с кваром r_lod_bias, посмотри, будут ли они меняться.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'