Иконка ресурса

Lie Flat Optimized 0.0.1

Нет прав для скачивания
Сообщения
3,050
Реакции
1,739
Помог
80 раз(а)
Пользователь Алексеич разместил новый ресурс:

Lie Flat Optimized - Упавший арсенал принимает "правильный угол"

Плагин исправляет недоработки движка GameDll. Выброшенные предметы (оружия, бомба, гранаты) на поверхность (пол, косые стены) приминают угол наклона поверхности, ранее предметы ложились перпендикулярно поверхности. Более подробное описание функции плагина стоить смотреть на скриншотах и видео.


Посмотреть вложение 184 Посмотреть вложение 185 Посмотреть вложение 186
Узнать больше об этом ресурсе...
 
Сообщения
2,288
Реакции
1,740
Помог
31 раз(а)
Может глупый вопрос, но как по нагрузке?
 
Сообщения
263
Реакции
335
Помог
4 раз(а)
playtoska, Причём тут HLDS и ReHLDS? И о каком "фиксе" вы говорите?
 
Сообщения
212
Реакции
334
Помог
3 раз(а)
Может стоит учитывать, что могут существовать так же браш ентити с наклонной поверхностью?
 
Сообщения
264
Реакции
80
Помог
1 раз(а)
доброе утро. скажите как правильно удалить звук, и все что с ним связано?
Код:
items/weapondrop1.wav

Код:
#include <amxmodx>
#include <fakemeta>
#include <xs>
#include <engine>

#define PLUGIN "Lie Flat Optimized"
#define VERSION "1.1"
#define AUTHOR "Nomexous"

new const BOUNCE[] = "items/weapondrop1.wav"

public plugin_precache()
{
precache_sound(BOUNCE)
}

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_touch("weaponbox", "worldspawn", "WeaponboxTouched")
// register_touch("weaponbox", "func_breakable", "WeaponboxTouched")
}

public WeaponboxTouched(weaponbox, worldspawn)
{
LieFlat(weaponbox)
// return PLUGIN_HANDLED
}

LieFlat(ent)
{
static Float:origin[3], Float:traceto[3], trace = 0, Float:fraction

entity_get_vector(ent, EV_VEC_origin, origin)

// We want to trace downwards 10 units.
xs_vec_sub(origin, Float:{0.0, 0.0, 10.0}, traceto)

engfunc(EngFunc_TraceLine, origin, traceto, IGNORE_MONSTERS|IGNORE_MISSILE, ent, trace)
engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, BOUNCE, 0.25, ATTN_STATIC, 0, PITCH_NORM)

// Most likely if the entity has the FL_ONGROUND flag, flFraction will be less than 1.0, but we need to make sure.
get_tr2(trace, TR_flFraction, fraction)

if(fraction == 1.0)
{
return
}
// Normally, once an item is dropped, the X and Y-axis rotations (aka roll and pitch) are set to 0, making them lie "flat."
// We find the forward vector: the direction the ent is facing before we mess with its angles.
static Float:original_forward[3], Float:angles[3], Float:angles2[3]

entity_get_vector(ent, EV_VEC_angles, angles)
angle_vector(angles, ANGLEVECTOR_FORWARD, original_forward)

// If your head was an entity, no matter which direction you face, these vectors would be sticking out of your right ear,
// up out the top of your head, and forward out from your nose.
static Float:right[3], Float:up[3], Float:fwd[3]

// The plane's normal line will be our new ANGLEVECTOR_UP.
get_tr2(trace, TR_vecPlaneNormal, up)

// The cross product (aka vector product) will give us a vector, which is in essence our ANGLEVECTOR_RIGHT.
xs_vec_cross(original_forward, up, right)
// And this cross product will give us our new ANGLEVECTOR_FORWARD.
xs_vec_cross(up, right, fwd)

// Converts from the forward vector to angles. Unfortunately, vectors don't provide enough info to determine X-axis rotation (roll),
// so we have to find it by pretending our right anglevector is a forward, calculating the angles, and pulling the corresponding value
// that would be the roll.
vector_to_angle(fwd, angles)
vector_to_angle(right, angles2)

// Multiply by -1 because pitch increases as we look down.
angles[2] = -1.0 * angles2[0]

// Finally, we turn our entity to lie flat.
entity_set_vector(ent, EV_VEC_angles, angles)
}

 
Сообщения
44
Реакции
14
Помог
1 раз(а)
Замечательный плагин! Но существует ещё одна популярная проблема, кидая оружие в 90-градусную стену прям впритык, оно туда проваливается. Было бы замечательно допилить плагин спустя 3 года и исправить данную проблему, хотя не думаю что кому-то кроме меня это нужно :)
 
Сообщения
1,560
Реакции
1,572
Помог
2 раз(а)
Сообщения
1,560
Реакции
1,572
Помог
2 раз(а)
Фиксовочка )
Если дописать в plugin_init()
Код:
        register_touch("item_thighpack", "worldspawn", "WeaponboxTouched")
        register_touch("weapon_shield", "worldspawn", "WeaponboxTouched")
То будет ложить правильно Щиты и Щипцы на землю

Вот пример

Щит

cstrike 2022-02-24 14-33-40-52.jpgcstrike 2022-02-24 14-39-14-69.jpg

Щипцы

cstrike 2022-02-24 14-38-04-04.jpgcstrike 2022-02-24 14-39-58-02.jpg

Было бы даже ещё не плохо ложить и труп игрока правильно,что-бы он не встрявал в землю
 
Сообщения
70
Реакции
6
Я попробовал это, и это работает очень хорошо, можно ли добавить в код модели игроков, когда они умирают, чтобы они правильно падали на землю, не скрывая половину модели.

Код:
#include <amxmodx>
#include <fakemeta>
#include <xs>
#include <engine>

#define PLUGIN "Lie Flat Optimized"
#define VERSION "1.1"
#define AUTHOR "Nomexous"

new const BOUNCE[] = "items/weapondrop1.wav"

public plugin_precache()
{
    precache_sound(BOUNCE)
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_touch("weaponbox", "worldspawn", "WeaponboxTouched")
    // register_touch("weaponbox", "func_breakable", "WeaponboxTouched")
}

public WeaponboxTouched(weaponbox, worldspawn)
{
    LieFlat(weaponbox)
    // return PLUGIN_HANDLED
}

LieFlat(ent)
{
    static Float:origin[3], Float:traceto[3], trace = 0, Float:fraction

    entity_get_vector(ent, EV_VEC_origin, origin)   
    
    // We want to trace downwards 10 units.
    xs_vec_sub(origin, Float:{0.0, 0.0, 10.0}, traceto)

    engfunc(EngFunc_TraceLine, origin, traceto, IGNORE_MONSTERS|IGNORE_MISSILE, ent, trace)
    engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, BOUNCE, 0.25, ATTN_STATIC, 0, PITCH_NORM)

    // Most likely if the entity has the FL_ONGROUND flag, flFraction will be less than 1.0, but we need to make sure.
    get_tr2(trace, TR_flFraction, fraction)
    
    if(fraction == 1.0)
    {   
        return
    }
    // Normally, once an item is dropped, the X and Y-axis rotations (aka roll and pitch) are set to 0, making them lie "flat."
    // We find the forward vector: the direction the ent is facing before we mess with its angles.
    static Float:original_forward[3], Float:angles[3], Float:angles2[3]
    
    entity_get_vector(ent, EV_VEC_angles, angles)
    angle_vector(angles, ANGLEVECTOR_FORWARD, original_forward)
    
    // If your head was an entity, no matter which direction you face, these vectors would be sticking out of your right ear,
    // up out the top of your head, and forward out from your nose.
    static Float:right[3], Float:up[3], Float:fwd[3]
    
    // The plane's normal line will be our new ANGLEVECTOR_UP.
    get_tr2(trace, TR_vecPlaneNormal, up)
    
    // The cross product (aka vector product) will give us a vector, which is in essence our ANGLEVECTOR_RIGHT.
    xs_vec_cross(original_forward, up, right)
    // And this cross product will give us our new ANGLEVECTOR_FORWARD.
    xs_vec_cross(up, right, fwd)

    // Converts from the forward vector to angles. Unfortunately, vectors don't provide enough info to determine X-axis rotation (roll),
    // so we have to find it by pretending our right anglevector is a forward, calculating the angles, and pulling the corresponding value
    // that would be the roll.
    vector_to_angle(fwd, angles)
    vector_to_angle(right, angles2)

    // Multiply by -1 because pitch increases as we look down.
    angles[2] = -1.0 * angles2[0]
    
    // Finally, we turn our entity to lie flat.
    entity_set_vector(ent, EV_VEC_angles, angles)
}
 
Сообщения
1,560
Реакции
1,572
Помог
2 раз(а)
чтобы они правильно падали на землю, не скрывая половину модели.
Для трупов это не сделать никак - пробовали уже
По крайней мере в амхх не сделать

Может там всякие метахуки ток могут подойти для этого
 
Сообщения
70
Реакции
6
Только русский или английский допустимые языки на форуме.
@недефиниран,Добре, разбирам, ако това не работи, ще го използвам. Благодаря за информацията
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу