EngFunc_TraceLine проходит сквозь стены, чего быть не должно

Сообщения
3
Реакции
0
trace запускается с положения игрока одной команды в игрока другой команды. Очевидно, что хотя бы в начале карты trace проходит через стену.
Тест на карте de_dust2, вместо игроков боты

1725038143098.png

Код:
@DrawEsp() {
    if(!bEspEnabled) {
        set_task(fDrawFreq, "@DrawEsp");
        return;
    }
    
    new CsTeams:iPlayerTeam, CsTeams:iTargetTeam;
    new pStartOrigin, pEndOrigin;
    new viStartOrigin[3], viEndOrigin[3], viHitPoints[3];
    new i, j;
    for(i=1; i<iMaxPlayers; i++) {
        if(!is_user_connected(i) || !vbPlHaveEsp[i]) { continue; }
        
        iPlayerTeam = get_ent_data(i, "CBasePlayer", "m_iTeam");
        if(iPlayerTeam == CS_TEAM_UNASSIGNED) { continue; }
        if(bSpecOnly && !(iPlayerTeam == CS_TEAM_SPECTATOR)) { continue; }
        
        if(iPlayerTeam == CS_TEAM_SPECTATOR) {
            if(pev(i, pev_iuser1) == 3) { continue; } // 3 free look
            if(viPlSpecTarget[i] == 0) { continue; } // no spec target
            iPlayerTeam = get_ent_data(viPlSpecTarget[i], "CBasePlayer", "m_iTeam");
        }
        
        get_user_origin(i, viStartOrigin, 0);
        for(j=1; j<iMaxPlayers; j++) {
            // check for alive and skip myself
            if(!is_user_alive(j) || (i == j)) { continue; }
            
            iTargetTeam = get_ent_data(j, "CBasePlayer", "m_iTeam");
            if(iTargetTeam == iPlayerTeam)  { continue; }
            
            get_user_origin(j, viEndOrigin, 0);
            
            if(iEspMode == ESP_TRACEBOX || iEspMode == ESP_TRACE)
                @MakeBeamMessage(i, viEndOrigin, iTargetTeam);
            
            if(iEspMode == ESP_TRACEBOX || iEspMode == ESP_BOX) {
                new TraceResult:pTrace = 0;
                new hit_points[3]
                // (const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr);
                engfunc(EngFunc_TraceLine, viStartOrigin, viEndOrigin, DONT_IGNORE_MONSTERS, i, pTrace);
                get_tr2(pTrace, TR_vecEndPos, hit_points);
                new phit = get_tr2(pTrace, TR_pHit)
                server_print("=========================================");
                server_print("hit: %i", phit);
                server_print("start(%i, %i, %i)", viStartOrigin[0], viStartOrigin[1], viStartOrigin[2]);
                server_print("end(%i, %i, %i)", viEndOrigin[0], viEndOrigin[1], viEndOrigin[2]);
                server_print("hit(%i, %i, %i)", hit_points[0], hit_points[1], hit_points[2]);
                server_print("=========================================");
                
                @MakeBoxMessage(i, viStartOrigin, hit_points);
            }
            
        }
    }
        
    set_task(0.3, "@DrawEsp");
}
 

Garey

ninjaCow
Сообщения
441
Реакции
1,095
Помог
11 раз(а)
Asura, попробуйте в функцию EngFunc_TraceLine передавать float координаты а не целые числа
 
Сообщения
3
Реакции
0
Garey, Вот так? Трейс все также летит сквозь стены
new float:viStartOrigin[3], float:viEndOrigin[3], float:viHitPoints[3];
engfunc(EngFunc_TraceLine, float:viStartOrigin, float:viEndOrigin, DONT_IGNORE_MONSTERS, i, pTrace);
 

Garey

ninjaCow
Сообщения
441
Реакции
1,095
Помог
11 раз(а)
Asura
Нет,

new Float:viStartOrigin[3], Float:viEndOrigin[3], Float:viHitPoints[3];
и вместо get_user_origin - например
pev(i, pev_origin, viStartOrigin);
 

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

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