trace запускается с положения игрока одной команды в игрока другой команды. Очевидно, что хотя бы в начале карты trace проходит через стену.
Тест на карте de_dust2, вместо игроков боты
Тест на карте de_dust2, вместо игроков боты
Код:
@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");
}