Русское сообщество по скриптингу

TraceLine с игнорированием определённых ентити  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

TraceLine с игнорированием определённых ентити  [Решено]

Сообщение hren_morjovui » 22 янв 2022, 01:04

Подскажите как провести engfunc(EngFunc_TraceLine,,,,) и игнорировать не всех игроков как с IGNORE_MONSTERS, а определённых. Допустим только игроков своей команды. Чтобы к примеру луч лазерной мины проходил только сквозь игроков своей команды, а по врагам обрывался в точке касания?? :dntknw:
Пробовал как-то так но как-то местами, то работает то под каким-то углом/расстоянии не пашет. :dntknw:
Код: Выделить всё

bool
:my_traceline(Float:start_origin[3], Float:end_origin[3], ignore_ent)
{
    static Float:tr_fraction_fl, Float:start[3], entity_ignore_id, team_id;
    
    start 
= start_origin;
    entity_ignore_id = ignore_ent;
    team_id = player_team[ignore_ent];

    while(entity_ignore_id > 0)
    {
        engfunc(EngFunc_TraceLine, start, end_origin, DONT_IGNORE_MONSTERS, entity_ignore_id, 0);

        get_tr2(0, TR_flFraction, tr_fraction_fl);

        if(tr_fraction_fl != 1.0)
        {
            entity_ignore_id = get_tr2(0, TR_pHit);
            
            if
(pev_valid(entity_ignore_id))
            {
                if((< entity_ignore_id < 33 && team_id == player_team[entity_ignore_id]))
                    get_tr2(0, TR_vecEndPos, start);
                else
                    return false
;
            }
            else
                return false
;
        }
        else
            return true
;
    }
    return false;
}
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Вернуться в Скриптинг

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

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