Ахаха)) Это все звучит мега странно - моделировать в хаммере)
Скорее, это просто привычно нам, старым извращугам)
Скорее, это просто привычно нам, старым извращугам)
Ну скачал3дмакс бесплатный для студентов на 3 года можно скачать, Блендер бесплатный в стиме, нет давай я буду в Хаммере модели делать![]()
Я почему-то сразу Poke646 вспомнилДелаю вот
скинь код, пожалуйста) Я когда-то делал демку-мод по сега-игре zero tolerance и там с дверьми плохо вышло, мб когда решусь допилитьНакодил наконец двери нормальные. Никаких триггеров, только func_door 64 штуки. Подходишь и открывается
Со вчерашнего вечера я нашел несколько багов. И сейчас не уверен, буду ли использовать эти двери. В принципе код можно оставить - эффектные вещи можно сделать, типа двигающиеся браши, когда к ним приближается игрок. Я кодить начал где-то полгода назад, поэтому ламерство полное, строго не судискинь код, пожалуйста) Я когда-то делал демку-мод по сега-игре zero tolerance и там с дверьми плохо вышло, мб когда решусь допилить
if ( FBitSet(pev->spawnflags, SF_DOOR_AUTOMATED) )
{
SetThink(DoorThink);
if (!AutoDoorRadius)
AutoDoorRadius = 192;
if (!AutoTime)
AutoTime = m_flWait - 0.2;
if (AutoTime < 0.5)
AutoTime = 0.5; // don't kill the engine pls
pev->nextthink = gpGlobals->time + AutoTime;
}
void CBaseDoor::DoorThink ( void )
{
CBaseEntity *pMonster = NULL;
if( (pMonster = UTIL_FindEntityInSphere( pMonster, pev->origin, AutoDoorRadius)) != NULL )
{
if(FClassnameIs( pMonster->pev, "player"))
{
DoorActivate();
}
}
SetThink ( DoorThink );
pev->nextthink = gpGlobals->time + AutoTime;
}
ага, спасибо, сохраню, позже затестю. Так-то я тоже нуб, ты по книге какой-то учишь плюсы?Со вчерашнего вечера я нашел несколько багов. И сейчас не уверен, буду ли использовать эти двери. В принципе код можно оставить - эффектные вещи можно сделать, типа двигающиеся браши, когда к ним приближается игрок. Я кодить начал где-то полгода назад, поэтому ламерство полное, строго не судив общем вот код.
Это я добавил в cbasedoor::spawn (новый флаг надо задать, да)
Новая функция:Код:if ( FBitSet(pev->spawnflags, SF_DOOR_AUTOMATED) ) { SetThink(DoorThink); if (!AutoDoorRadius) AutoDoorRadius = 192; if (!AutoTime) AutoTime = m_flWait - 0.2; if (AutoTime < 0.5) AutoTime = 0.5; // don't kill the engine pls pev->nextthink = gpGlobals->time + AutoTime; }
Думаю дальше разберешься? AutoDoorRadius это собственно радиус, на котором открывается дверь. AutoTime - это время "пинга". Значения можешь убрать и свои проставить, я их задал вот так, чтобы в фгд писать и в хаммере задавать свои значения радиуса и времени пинга.Код:void CBaseDoor::DoorThink ( void ) { CBaseEntity *pMonster = NULL; if( (pMonster = UTIL_FindEntityInSphere( pMonster, pev->origin, AutoDoorRadius)) != NULL ) { if(FClassnameIs( pMonster->pev, "player")) { DoorActivate(); } } SetThink ( DoorThink ); pev->nextthink = gpGlobals->time + AutoTime; }
Соответственно, дверь каждые 0.5 секунд пингует радиус вокруг себя - если там игрок, то открывается и удерживается - постоянный запрос DoorActivate не дает ей закрыться.
Баги, которые мне не нравятся - это проигрывание звука stopsound каждые 0.5 сек. пока дверь открыта - "лечится" убиранием этого звука из двери, но это уже не то. Второй баг скорее визуальный - двойные двери открываются синхронно, а закрываются иногда почему-то не синхронно. Печаль-беда.
В общем, меня на большее не хватило. Может пригодится хоть![]()
Неа. Я дальше ксашевских исходников считай не уходил. Сделал несколько фичей себе в мод по туторам с hlfx и с других сайтов по халфе.ты по книге какой-то учишь плюсы?
Большой путь начинается с маленького шага)Все началось с того, что в мае мне приспичило сделать перезарядку у гаусса.
if(FClassnameIs( pMonster->pev, "player"))
{
DoorActivate();
}
Чет не получается, не знаю какое условие проставить (пробовал несколько, один из вариантов FClassnameIs( pMonster->pev, "monster_barney")), но почему-то не хочет на него реагировать, либо игнорировался радиус и открывались вообще все двери О.о Идея здравая, как-то реализовать это было бы неплохо. Но вообще этот вариант двери надо очень сильно допиливать, например чтобы звук не игрался постоянно и как-то избавиться от пинга каждые 0.5 секунд…сделай проверку на monster_ чтобы неписям двери тоже открывались.
#include "string.h"
if(FClassnameIs( pMonster->pev, "player") || strstr((char*)pMonster->pev->classname, "monster_") != NULL)
{
DoorActivate();
}
Попробую. Спасибо за попытку помочь. Тему создал, можешь почитать и прокомментировать что да какЯ бы с радостью помог, но сейчас нет под рукой ничего, чтобы затестить, так что ляпну наугад:
в самое начало
иКод:#include "string.h"
но это пальцем в небоКод:if(FClassnameIs( pMonster->pev, "player") || strstr((char*)pMonster->pev->classname, "monster_") != NULL) { DoorActivate(); }
Никогда не кодил для первой hl, но знаю что для этого движка естественно ставить большое кол-во проверок. Там ведь надо на сколько я знаю инклуды правильные подключать соотносить. Пробуй ищи завалялось может где чего полезного на гитхабеЧет не получается, не знаю какое условие проставить (пробовал несколько, один из вариантов FClassnameIs( pMonster->pev, "monster_barney")), но почему-то не хочет на него реагировать, либо игнорировался радиус и открывались вообще все двери О.о Идея здравая, как-то реализовать это было бы неплохо. Но вообще этот вариант двери надо очень сильно допиливать, например чтобы звук не игрался постоянно и как-то избавиться от пинга каждые 0.5 секунд…
UPD 1: В общем там все гораздо сложнее. По-хорошему я уже понял куда воткнуть код - запускать проверку на наличие игрока в радиусе двери нужно после DoorHitTop - когда дверь полностью открылась. Ну и когда игрок покинет этот радиус - закрывать дверь. А в моем изначальном коде ставить не dooractivate, а doorgoup. Думаю, что мысли верные, но реализовать пока не получается.
UPD 2: Хы, вроде бы сделал. Но НЕ ПОНИМАЮ КАК ОНО РАБОТАЕТ. Сейчас создам тему, где все распишу, может кто поможет пофиксить или добавит свои идеи, ну и мало ли кому пригодится код.
Дык да, я уже полгода сижу в ксашевских исходниках, более-менее стал понимать, что тут вообще происходит)Пробуй ищи завалялось может где чего полезного на гитхабе