| 
			
            
			
			 Местный 
			
			
		
			
				
			
			
			
				 
				Регистрация: 23.09.2009 
				
				
				
					Сообщений: 1,232
				 
				 
	Сказал Спасибо: 119 
	
		
			
				Имеет 172 спасибок в 134 сообщенях
			
		
	 
				
				
				
				     
			 					
		
	 | 
	
	
	
		
		
			
			
				 
				
			 
			 
			
		
		
		
		фобос, ты че-то не то написал) 
во-первых просто делить на сто это получится если линия маленькая - промежутки мелкие, если длинная - промежутки большие
 
А у меня промежутки зависят от длинны пути.
 
и вообще это нихрена не то что я просил, линия получается КРИВОЙ. Надо понять почему...
 Добавлено через 19 минут
	delphi Код: 
	const
Name='1';
var
Path,ID,itemid:integer;
Speed,MoveMul: double;
dx,dy,dz:integer;
dx1,dy1,dz1:integer;
timer:TTimer;
i:integer;
procedure Init; //Вызывается при включении скрипта
begin
timer:=TTimer.Create(nil);
timer.OnTimer:=@Prishel;
timer.enabled:=false;
end;
procedure Free; //Вызывается при выключении скрипта
begin
timer.free;
end;
procedure Say(msg:string);
begin 
  buf:=#$4A;  
  WriteD(0); 
  WriteD(3);
  WriteS('Инфо');
  WriteS(msg);
  SendToClientEx(Name);
end;
procedure Prishel(Sender: TObject);
begin
ClearPath;
timer.enabled:=false;
end;
procedure ClearPath;
begin
for i:=0 to itemid do DeleteObject(i);
itemid:=0;
end;
procedure DeleteObject(l:integer);
begin
buf:=#$08;
WriteD(l);
SendToClientEx(Name);
end;
function MyRound(r:double) : double;
begin
result:=Round(r*10)/10;
end;
procedure dropItem(x1,y1,z1:integer);
begin
buf:=#$16;
WriteD(id);
WriteD(itemid);
WriteD(57);
WriteD(x1);
WriteD(y1);
WriteD(z1);
WriteD(0);
WriteQ(0);
WriteD(0);
SendToClientEx(Name);
Inc(itemid);
end;
procedure PaintMyWay(x11,y11,z11,x21,y21,z21:integer);
begin
if ((Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10)=0) then
begin
exit;
end;
dx1:=(x21 - x11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10);
dy1:=(y21 - y11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10);
dz1:=(z21 - z11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10); 
while (dx1>0) or (dx1<0) or (dy1>0) or (dy1<0) or (dz1>0) or (dz1<0) do
begin
x11:=x11+dx1;
y11:=y11+dy1;
z11:=z11+dz1;
dropItem(x11,y11,z11);
if ((Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10)=0) then
begin
exit;
end;
dx1:=(x21 - x11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10);
dy1:=(y21 - y11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10);
dz1:=(z21 - z11) div Round(Round(GetTimeFromPath(x21,y21,z21,x11,y11,z11,'path')) div 10);
end;
end;
function GetTimeFromPath(x1,y1,z1,x2,y2,z2:integer;keyword:string) : double;
begin
if (keyword='time') then result:=Round((sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))+((z2-z1)*(z2-z1)))) / Speed);
if (keyword='path') then result:=Round((sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))+((z2-z1)*(z2-z1)))));
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer and (ConnectName=Name) and (pck[1]=#$2F) and (ReadD(2)=ID) then
begin
timer.enabled:=false;
ClearPath;
//Say('Твой путь равен '+vartostr(GetTimeFromPath(ReadD(14),ReadD(18),ReadD(22),ReadD(2),ReadD(6),ReadD(10)))+'.');
Say('Вы пройдете этот путь за '+vartostr(GetTimeFromPath(ReadD(18),ReadD(22),ReadD(26),ReadD(6),ReadD(10),ReadD(14),'time'))+' секунд.');
PaintMyWay(ReadD(18),ReadD(22),ReadD(26),ReadD(6),ReadD(10),ReadD(14));
timer.interval:=(Round(GetTimeFromPath(ReadD(18),ReadD(22),ReadD(26),ReadD(6),ReadD(10),ReadD(14),'time')))*1000;
timer.enabled:=true;
end;
if FromServer and (ConnectName=Name) and (pck[1]=#$32) then
begin
ID:=ReadD(18);
Speed:=(ReadD(470+(length(ReadS(22))*2+2)))*(ReadF(502+(length(ReadS(22))*2+2)));
end;
end.  
 
Добавлено через 47 секунд
вот фул код смотри  
		
	
		
		
		
		
		
		
			
				__________________ 
				Начало.
			 
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось supernewbie, 20.09.2010 в 23:00.
				Причина: Добавлено сообщение
				
			
		
		
	
	 |