ошибка в getdistance
Posted: 20.12.2014 22:41
когда чар находиться по диагонали от объекта, то на расстоянии в 2 тайла, дистанция высвечивается 3 а не 2. ну и дальше отходя по диагонали, функция не правильно считает дистанцию.
Альтернативный клиент Ultima Online
https://stealth.od.ua/forum/
Code: Select all
function GetDistance(ObjID: Cardinal): Integer;
гипотенуза от двух катетов. 0 - обьект под вами. -1 - Обьект не существует. (При определении игнорирует координату Z)
Code: Select all
function Dist(X1, Y1, X2, Y2: Word): Word
Возвращает расстояние между точками (X1, Y1) и (X2, Y2).
Code: Select all
function get_distance(objectid : cardinal) : integer;
var
distx,disty : integer;
begin
distx := (getx(objectid) - getx(self));
if distx < 0 then distx := (distx * -1);
disty := (gety(objectid) - gety(self));
if disty < 0 then disty := (disty * -1);
if distx > disty then
result := distx
else
result := disty;
if result > 30 then result := -1;
end;
Code: Select all
function get_distance(objectid : cardinal) : integer;
begin
result := Dist(GetX(self), GetY(self), GetX(objectid), GetY(objectid));
end;