GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Makarow - 2017. Január 13. - 18:45:07

Cím: adott koordinátán x1-x2 közti távolság kiszámítása
Írta: Makarow - 2017. Január 13. - 18:45:07
hali
 
hogy lehetséges kiszámítani x1 és x2 közti koordinátát úgy, hogy a távolságot pozitív floatba adja vissza akkor is, ha az egyik (vagy mindkettő) koordináta minuszba van? 
 
pl if(GetDistanceBetweenX(x1, x2) > 1.25) {}
Cím: adott koordinátán x1-x2 közti távolság kiszámítása
Írta: id100 - 2017. Január 13. - 19:57:22
Vedd az abszolút értékét szerintem az megoldja.
Cím: adott koordinátán x1-x2 közti távolság kiszámítása
Írta: wRt - 2017. Január 13. - 20:48:06
Becsléseim szerint működik, leszámítva ha valamelyik szám értéke pontosan nulla - arra viszont elég kevés esély van, hogy gyakorlatban bármelyik koordináta is pontosan nulla legyen.
 

stock GetPositiveValue(Float:x1, Float:x2)
{
new Float:value = 0;

if(x1 > 0 && x2 > 0)
{
    if(x1 > x2)
   {
       value = x1-x2;
   }
   else
   {
       value = x2-x1;
   }
}
if(x1 < 0 && x2 > 0)
{
   value =  x2+(-x1);
}
if(x1 > 0 && x2 < 0)
{
   value = x1+(-x2);
}
if(x1 < 0 && x2 < 0)
{
    if(x1 < x2)
    {
        value = x2-(x1);
    }
    else
    {
        value = x1-(x2);
    }
}
return float:value;
}

 
Én az alábbi paranccsal teszteltem le az összes lehetőséget, és tízből tíz alkalommal megfelelő értéket adott vissza.
 

COMMAND:getdistance(playerid, params[])
{
new Float:X1, X2;
if(sscanf(params, \"ff\", X1, X2)) return SendClientMessage(playerid, -1, \"[{3884FF}INFO{FFFFFF}] Usage: /getdistance [x1] [x2]\");
format(Str, sizeof(Str), \"[{3884FF}INFO{FFFFFF}] The distance between the coordinates is: %f\", GetPositiveValue(X1, X2));
SendClientMessage(playerid, -1, Str);
return 1;
}