Sidebar

Скриншоты ваших работ

sperma

Well-known member
12.08.2004
4 467
  • Золотая медаль 221
  • Золотая медаль 213
  • Золотая медаль 131
  • Золотая медаль 142
3дмакс бесплатный для студентов на 3 года можно скачать, Блендер бесплатный в стиме, нет давай я буду в Хаммере модели делать 💃🕺🕺🕺💃
 

Aynekko

Маппер
07.06.2010
3 493
28
  • Золотая медаль RC
  • Бронзовая медаль 216
3дмакс бесплатный для студентов на 3 года можно скачать, Блендер бесплатный в стиме, нет давай я буду в Хаммере модели делать 💃🕺🕺🕺💃
Ну скачал :) офигел от кнопок, неинтуитивного интерфейса и закрыл. Ради парочки моделек хаммера достаточно.
 
  • Like
Reactions: RAVENL!GHT

JPEG

Active member
02.10.2013
961
27
Накодил наконец двери нормальные. Никаких триггеров, только func_door 64 штуки. Подходишь и открывается :)
скинь код, пожалуйста) Я когда-то делал демку-мод по сега-игре zero tolerance и там с дверьми плохо вышло, мб когда решусь допилить
 

Aynekko

Маппер
07.06.2010
3 493
28
  • Золотая медаль RC
  • Бронзовая медаль 216
скинь код, пожалуйста) Я когда-то делал демку-мод по сега-игре zero tolerance и там с дверьми плохо вышло, мб когда решусь допилить
Со вчерашнего вечера я нашел несколько багов. И сейчас не уверен, буду ли использовать эти двери. В принципе код можно оставить - эффектные вещи можно сделать, типа двигающиеся браши, когда к ним приближается игрок. Я кодить начал где-то полгода назад, поэтому ламерство полное, строго не суди :D в общем вот код.
Это я добавил в 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;
    }
Новая функция:
Код:
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;
}
Думаю дальше разберешься? AutoDoorRadius это собственно радиус, на котором открывается дверь. AutoTime - это время "пинга". Значения можешь убрать и свои проставить, я их задал вот так, чтобы в фгд писать и в хаммере задавать свои значения радиуса и времени пинга.
Соответственно, дверь каждые 0.5 секунд пингует радиус вокруг себя - если там игрок, то открывается и удерживается - постоянный запрос DoorActivate не дает ей закрыться.
Баги, которые мне не нравятся - это проигрывание звука stopsound каждые 0.5 сек. пока дверь открыта - "лечится" убиранием этого звука из двери, но это уже не то. Второй баг скорее визуальный - двойные двери открываются синхронно, а закрываются иногда почему-то не синхронно. Печаль-беда.
В общем, меня на большее не хватило. Может пригодится хоть :)
 

JPEG

Active member
02.10.2013
961
27
Со вчерашнего вечера я нашел несколько багов. И сейчас не уверен, буду ли использовать эти двери. В принципе код можно оставить - эффектные вещи можно сделать, типа двигающиеся браши, когда к ним приближается игрок. Я кодить начал где-то полгода назад, поэтому ламерство полное, строго не суди :D в общем вот код.
Это я добавил в 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;
    }
Новая функция:
Код:
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;
}
Думаю дальше разберешься? AutoDoorRadius это собственно радиус, на котором открывается дверь. AutoTime - это время "пинга". Значения можешь убрать и свои проставить, я их задал вот так, чтобы в фгд писать и в хаммере задавать свои значения радиуса и времени пинга.
Соответственно, дверь каждые 0.5 секунд пингует радиус вокруг себя - если там игрок, то открывается и удерживается - постоянный запрос DoorActivate не дает ей закрыться.
Баги, которые мне не нравятся - это проигрывание звука stopsound каждые 0.5 сек. пока дверь открыта - "лечится" убиранием этого звука из двери, но это уже не то. Второй баг скорее визуальный - двойные двери открываются синхронно, а закрываются иногда почему-то не синхронно. Печаль-беда.
В общем, меня на большее не хватило. Может пригодится хоть :)
ага, спасибо, сохраню, позже затестю. Так-то я тоже нуб, ты по книге какой-то учишь плюсы?
 

Aynekko

Маппер
07.06.2010
3 493
28
  • Золотая медаль RC
  • Бронзовая медаль 216
ты по книге какой-то учишь плюсы?
Неа. Я дальше ксашевских исходников считай не уходил. Сделал несколько фичей себе в мод по туторам с hlfx и с других сайтов по халфе.
Все началось с того, что в мае мне приспичило сделать перезарядку у гаусса.
 

Gaia

Чёрный вертолёт
Спонсор
04.08.2008
4 623
33
111
63
Код:
        if(FClassnameIs( pMonster->pev, "player"))
        {
            DoorActivate();
        }
сделай проверку на monster_ чтобы неписям двери тоже открывались.
 

Aynekko

Маппер
07.06.2010
3 493
28
  • Золотая медаль RC
  • Бронзовая медаль 216
сделай проверку на monster_ чтобы неписям двери тоже открывались.
Чет не получается, не знаю какое условие проставить (пробовал несколько, один из вариантов FClassnameIs( pMonster->pev, "monster_barney")), но почему-то не хочет на него реагировать, либо игнорировался радиус и открывались вообще все двери О.о Идея здравая, как-то реализовать это было бы неплохо. Но вообще этот вариант двери надо очень сильно допиливать, например чтобы звук не игрался постоянно и как-то избавиться от пинга каждые 0.5 секунд…

UPD 1: В общем там все гораздо сложнее. По-хорошему я уже понял куда воткнуть код - запускать проверку на наличие игрока в радиусе двери нужно после DoorHitTop - когда дверь полностью открылась. Ну и когда игрок покинет этот радиус - закрывать дверь. А в моем изначальном коде ставить не dooractivate, а doorgoup. Думаю, что мысли верные, но реализовать пока не получается.

UPD 2: Хы, вроде бы сделал. Но НЕ ПОНИМАЮ КАК ОНО РАБОТАЕТ. Сейчас создам тему, где все распишу, может кто поможет пофиксить или добавит свои идеи, ну и мало ли кому пригодится код.
 
Последнее редактирование:

Gaia

Чёрный вертолёт
Спонсор
04.08.2008
4 623
33
111
63
Я бы с радостью помог, но сейчас нет под рукой ничего, чтобы затестить, так что ляпну наугад:
в самое начало
Код:
#include "string.h"
и
Код:
  if(FClassnameIs( pMonster->pev, "player") || strstr((char*)pMonster->pev->classname, "monster_") != NULL)
        {
            DoorActivate();
        }
но это пальцем в небо
 

Aynekko

Маппер
07.06.2010
3 493
28
  • Золотая медаль RC
  • Бронзовая медаль 216
Я бы с радостью помог, но сейчас нет под рукой ничего, чтобы затестить, так что ляпну наугад:
в самое начало
Код:
#include "string.h"
и
Код:
  if(FClassnameIs( pMonster->pev, "player") || strstr((char*)pMonster->pev->classname, "monster_") != NULL)
        {
            DoorActivate();
        }
но это пальцем в небо
Попробую. Спасибо за попытку помочь. Тему создал, можешь почитать и прокомментировать что да как :)

Не, крашится игра сразу после загрузки карты.
 
Последнее редактирование:

RAVENL!GHT

Member
20.10.2013
164
24
7
18
Чет не получается, не знаю какое условие проставить (пробовал несколько, один из вариантов FClassnameIs( pMonster->pev, "monster_barney")), но почему-то не хочет на него реагировать, либо игнорировался радиус и открывались вообще все двери О.о Идея здравая, как-то реализовать это было бы неплохо. Но вообще этот вариант двери надо очень сильно допиливать, например чтобы звук не игрался постоянно и как-то избавиться от пинга каждые 0.5 секунд…

UPD 1: В общем там все гораздо сложнее. По-хорошему я уже понял куда воткнуть код - запускать проверку на наличие игрока в радиусе двери нужно после DoorHitTop - когда дверь полностью открылась. Ну и когда игрок покинет этот радиус - закрывать дверь. А в моем изначальном коде ставить не dooractivate, а doorgoup. Думаю, что мысли верные, но реализовать пока не получается.

UPD 2: Хы, вроде бы сделал. Но НЕ ПОНИМАЮ КАК ОНО РАБОТАЕТ. Сейчас создам тему, где все распишу, может кто поможет пофиксить или добавит свои идеи, ну и мало ли кому пригодится код.
Никогда не кодил для первой hl, но знаю что для этого движка естественно ставить большое кол-во проверок. Там ведь надо на сколько я знаю инклуды правильные подключать соотносить. Пробуй ищи завалялось может где чего полезного на гитхабе
 
Последнее редактирование:

Aynekko

Маппер
07.06.2010
3 493
28
  • Золотая медаль RC
  • Бронзовая медаль 216
Пробуй ищи завалялось может где чего полезного на гитхабе
Дык да, я уже полгода сижу в ксашевских исходниках, более-менее стал понимать, что тут вообще происходит)
Вот создал тему насчет дверей, кому интересно почитайте, может идеи кто подкинет, а то здесь уже оффтоп пошел
 
  • Like
Reactions: RAVENL!GHT

Новые сообщения

Донат - Хостинг

Итого
200.00 $
Цель
600.00 $

Доноры Красавчики

Пользователи онлайн

Нет пользователей онлайн.