Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 28 мар 2024, 18:18

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: NPC и прыжки
СообщениеДобавлено: 20 ноя 2021, 19:51 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
26 мар 2024, 13:29
Сообщения: 273
Откуда: Иркутск
Всех приветствую!

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


1) в Plugin Init было добавлено



Код:

     // ZB_CLASSNAME - класснейм NPC

    register_touch("worldspawn", ZB_CLASSNAME, "npc_jump")

    register_touch("func_brush", ZB_CLASSNAME, "npc_jump")

    register_touch("func_breakable", ZB_CLASSNAME, "npc_jump")

    register_touch("func_wall",ZB_CLASSNAME,"npc_jump")

   




2) Вот код самого "виновника торжества"


Код:

public npc_jump(crap, entity)

{

new victim = FindClosesEnemy(entity)

if(is_user_alive(victim))

    {                 

        if(g_entity_jumpdelay[entity] < get_gametime())                       

        {                                               

            g_entity_jumpdelay[entity] = (get_gametime() + 1.0)

                                                               

            new Float:entity_origin[3], Float:entity_angle[3]

            pev(entity, pev_origin, entity_origin)                 

            entity_origin[2]-=32.0 // Checking origin from the feet (not sure value is correct)   

            pev(entity, pev_v_angle, entity_angle)


                                                                                         

            // Get the origin in front of the player, and see if something is standing between the 2 points   

            new Float:futur_origin[3]                                                                         

                                                   

            origin_infront(entity_angle, entity_origin, 100.0, futur_origin)


            static Float:vecAngles[3]

                 

            new trace_handle = create_tr2()                                                   

            engfunc(EngFunc_TraceLine, entity_origin, futur_origin, IGNORE_MONSTERS, victim, trace_handle)

            get_tr2(trace_handle, TR_vecEndPos, futur_origin)                           

                                                                     

            if(get_distance_f(entity_origin, futur_origin) < 100.0)

            {   in_jump_state[entity]=1

                                                                 

                engfunc(EngFunc_MakeVectors, entity_angle)                       

                new Float:forward_vector[3]

                get_global_vector(GL_v_forward, forward_vector)


                entity_angle[0] = forward_vector[0] * 900.0

                entity_angle[1] = forward_vector[1] * 900.0

                entity_angle[2] = 3000.0               

                             

                set_pev(entity, pev_velocity, entity_angle)

                in_jump_state[entity]=0           

             

            }

        }


    }


}



3) Функция origin_infront


Код:

origin_infront(Float:vAngles[3], Float:vecOrigin[3], Float:flDistance, Float:vecOutput[3]) // By Exolent

{

    static Float:vecAngles[3]

    xs_vec_copy(vAngles, vecAngles)


    engfunc(EngFunc_MakeVectors, vecAngles)

    global_get(glb_v_forward, vecAngles)


    xs_vec_mul_scalar(vecAngles, flDistance, vecAngles)


    xs_vec_add(vecOrigin, vecAngles, vecOutput)

}



Вот видео взаимодействия NPC и ящиков





Вот видео взаимодействия NPC и лестниц


_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: NPC и прыжки
СообщениеДобавлено: 03 дек 2021, 14:37 
Не в сети
Зарегистрирован:
23 авг 2012, 10:06
Последнее посещение:
01 дек 2023, 15:03
Сообщения: 98
Привет, NPC это же не боты - верно?
А может есть какая-то возможность сделать NPC этих (для Half Life), которые могут принимать урон от игрока такой же
(типа 12HP в тело с пистолета, 120 HP при попадании с арбалета и т.п), но настраивать их движение черз меню.
1 - коротки стрейфы в стороны
2 - длинные стрейфы в стороны
2 - BunnyHop т.е распрыжка вперед/круговая
3 - ГауссДжампы
...
9 - полный рандом
Может стэк настраивать им - типа 100/0 или 100/100

Такое возможно?


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: NPC и прыжки
СообщениеДобавлено: 11 дек 2021, 13:27 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
26 мар 2024, 13:29
Сообщения: 273
Откуда: Иркутск
Mr_Death писал(а):
Привет, NPC это же не боты - верно?
А может есть какая-то возможность сделать NPC этих (для Half Life), которые могут принимать урон от игрока такой же
(типа 12HP в тело с пистолета, 120 HP при попадании с арбалета и т.п), но настраивать их движение черз меню.
1 - коротки стрейфы в стороны
2 - длинные стрейфы в стороны
2 - BunnyHop т.е распрыжка вперед/круговая
3 - ГауссДжампы
...
9 - полный рандом
Может стэк настраивать им - типа 100/0 или 100/100
10 - можно грабить корованы
Такое возможно?

1) Сделать-то всё возможно, вопрос лишь какими средствами. На Pawn подобное реализовывать - сущий геморой, лучше свой модуль на си для таких целей писать. Тогда встает вопрос "зачем?". Есть же всякие Parabot'ы и прочее? зачем огород городить?(хотя там бхопа и гаусджампов нет)
2)Что ты подразумеваешь под "настраивать их движение через меню" ? А в плане дамага -ну тут они вроде как и без того подобный урон получают.

_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: NPC и прыжки
СообщениеДобавлено: 13 дек 2021, 13:59 
Не в сети
Зарегистрирован:
23 авг 2012, 10:06
Последнее посещение:
01 дек 2023, 15:03
Сообщения: 98
Glaster писал(а):
1) Сделать-то всё возможно, вопрос лишь какими средствами. На Pawn подобное реализовывать - сущий геморой, лучше свой модуль на си для таких целей писать. Тогда встает вопрос "зачем?". Есть же всякие Parabot'ы и прочее? зачем огород городить?(хотя там бхопа и гаусджампов нет)
2)Что ты подразумеваешь под "настраивать их движение через меню" ? А в плане дамага -ну тут они вроде как и без того подобный урон получают.

Конечно для тренировки.
Ясное дело, что можно по тарелочкам стрелять и т.д, но наверное нет ничего эффективнее, чем тренировать аим непосредственно в игре.
Во многих играх есть модули/отдельные карты для тренировок (КС ГО, Старкрафт и прочее) в HL - есть Bhop карты только (насколько я знаю).

Parabot конечно есть, но заставить их делать только правый стрейф, например - невозможно! Про распрыжку и гаусс джампы это вообще 1н раз только видел.
У меня еще есть проблема с ботами ХЛ, что когда превышаешь высоту, определенную, происходит креш игры (например на кроссе улетаешь с помощью гаусса вверх с вертолетной площадки).
Из-за этого была сложность в реализации одной карты :scratch:

Настроить движение через меню - у этих/этого NPC есть менюшка. Где ты можешь указать вариант движения - например только правый стрейф короткий/длинный.
Т.е стрейф и возвращение в исходную точку или движение только в право, рандомные движения.

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

Получится такой чисто "задротский" тренажер)


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: NPC и прыжки
СообщениеДобавлено: 13 дек 2021, 16:41 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
26 мар 2024, 13:29
Сообщения: 273
Откуда: Иркутск
Mr_Death писал(а):
Получится такой чисто "задротский" тренажер)

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

_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB