Witam zrobilem ifa w TakeDamage ze :
if(!can_see_fm(idattacker, this) damage+=50;
bool:can_see_fm(entindex1, entindex2) {
if (!entindex1 || !entindex2)
return false;
if (pev_valid(entindex1) && pev_valid(entindex1)) {
new flags = pev(entindex1, pev_flags);
if (flags & EF_NODRAW || flags & FL_NOTARGET) {
return false;
}
new Float:lookerOrig[3];
new Float:targetBaseOrig[3];
new Float:targetOrig[3];
new Float:temp[3];
pev(entindex1, pev_origin, lookerOrig);
pev(entindex1, pev_view_ofs, temp);
lookerOrig[0] += temp[0];
lookerOrig[1] += temp[1];
lookerOrig[2] += temp[2];
pev(entindex2, pev_origin, targetBaseOrig);
pev(entindex2, pev_view_ofs, temp);
targetOrig[0] = targetBaseOrig [0] + temp[0];
targetOrig[1] = targetBaseOrig [1] + temp[1];
targetOrig[2] = targetBaseOrig [2] + temp[2];
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);
if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater)) {
return false;
}
else {
new Float:flFraction;
get_tr2(0, TraceResult:TR_flFraction, flFraction);
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
return true;
}
else {
targetOrig[0] = targetBaseOrig [0];
targetOrig[1] = targetBaseOrig [1];
targetOrig[2] = targetBaseOrig [2];
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);
get_tr2(0, TraceResult:TR_flFraction, flFraction);
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
return true;
}
else {
targetOrig[0] = targetBaseOrig [0];
targetOrig[1] = targetBaseOrig [1];
targetOrig[2] = targetBaseOrig [2] - 17.0;
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);
get_tr2(0, TraceResult:TR_flFraction, flFraction);
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
return true;
}
}
}
}
}
return false;
}
i z tego co mi sie wydaje ze jak skanuje te jednal damage nie wzrasta.. gdzie lezy blad ?


Dodatki SourceMod













