Показать сообщение отдельно
Старый 20.09.2010, 17:23   #1
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию Рисунок пути

Скрипт должен расчитывать и рисовать путь, который он узнает из пакета MoveToLocation, выбрасывая вещи.

x21 - х начала пути.
x11 - х конца пути.

по аналогии устроены другие переменные.

GetTimeFromPath - получение длинны пути.

dropitem - выброс вещи, который шлется на клиент.

delphi Код:
procedure PaintMyWay(x11,y11,z11,x21,y21,z21:integer); // объявление процедуры begin // начало 1 if ((Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10)=0) then // не равняется ли длинна пути 0? begin //начало 2 exit; // если да - выходим дабы избежать вылета end; // конец 2 // если же длинна нашего пути не равна 0 то //Описание 1: вычесляем разницу между координатами, вычитаем из нее длинну пути dx1:=(x21 - x11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10)// Описание 1 для x dy1:=(y21 - y11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10); // Описание 1 для y dz1:=(z21 - z11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10)// Описание 1 для z while (dx1>0) or (dx1<0) or (dy1>0) or (dy1<0) or (dz1>0) or (dz1<0) do // начинаем цикл, который выполняется при // условии что разница между разностью начальной и конечной координат x y z не равна 0. begin // начало 3 x11:=x11+dx1;  // прибавляем к начальному x разницу y11:=y11+dy1; // прибавляем к начальному y разницу z11:=z11+dz1;  // прибавляем к начальному z разницу dropItem(x11,y11,z11); // выкидываем вещь в эти координаты if ((Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10)=0) then //проверяем новые координаты, не равен ли путь с них 0? begin //начало 4 exit; //если это так то выходим дабы избежать ошибки end; //конец 4 dx1:=(x21 - x11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10); // Описание 1 для x dy1:=(y21 - y11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10);// Описание 1 для y dz1:=(z21 - z11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10); // Описание 1 для z end; // конец 3 end; // конец 1  

В чем заключается ПРОБЛЕМА - при непонятно каких обстоятельствах, рисованый путь искривляется.
__________________
Начало.

Последний раз редактировалось supernewbie, 20.09.2010 в 20:36. Причина: Добавлено сообщение
supernewbie вне форума   Ответить с цитированием