Page 1 of 1

Подробный макрос....

Posted: 30.10.2006 19:35
by Vlad$
А не могбы ктони-будь написать допустим макрос на тинк, но с подробностями о каждой строке? что куда и как делается... плиз

Posted: 30.10.2006 23:30
by Edred
Нет смысла. Надо просто написать небольшой учебник. Но это после доработки хелпа на сайте.

Posted: 31.10.2006 16:22
by Vlad$
ну вот смотрите, что я тут наколякал поправте плиз:

Code: Select all

Program HS;
procedure GotoXY(x,y,prec : integer; runflag : boolean); 
// v. 1.04 (с) Edred, скрипт портирован с инжекта 
// оригинальная версия Yoko с доработкой AGRS и Edred.
   var ld, ldc, dx, dy, mx, my : Integer; 
   begin 
      ld := 0; ldc := 0; 
      while true do 
      begin 
         dx := GetX(self) - x; if dx < 0 then dx := 0 - dx; 
         dy := GetY(self) - y; if dy < 0 then dy := 0 - dy; 
         if dy > dx then dx := dy; 
         if dx <= prec then exit; 
         mx := GetX(self); my := GetY(self); 
         dx := mx - x; if dx < 0 then dx := 0 - dx; 
         dy := my - y; if dy < 0 then dy := 0 - dy; 
         if dy > dx then dx := dy; 
         if dx <= prec then exit; 
         if ld = dx then begin 
            ldc := ldc + 1; 
            if ldc > 100 then begin addtosystemjournal( 'GotoXY: Cannot reach location!' ); exit; end; 
         end 
         else ld := dx; 
         //waitconnection(5000); 
         if mx = x then begin 
            if my = y then exit; 
            // North 
            if my > y then begin Raw_Move(0,runflag); continue; end; 
            // South 
            Raw_Move(4,runflag); continue; 
         end; 
         if mx < x then begin 
            // Northeast 
            if my > y then begin Raw_Move(1,runflag); continue; end; 
            // East 
            if my = y then begin Raw_Move(2,runflag); continue; end; 
            // Southeast 
            Raw_Move(3,runflag); continue; 
         end; 
         // Southwest 
         if my < y then begin Raw_Move(5,runflag); continue; end; 
         // West 
         if my = y then begin Raw_Move(6,runflag); continue; end; 
         // Nortwest 
         Raw_Move(7,runflag); continue; 
      end; 
   end;
Begin 
while true do 
begin 
if Hidden then 
useskill('Stealth')
GotoXY(1786,637,6,false)
wait(300)
GotoXY(1786,630,6,false)
else useskill('Hiding'); 
wait(10000); 
end; 
end.

Posted: 31.10.2006 16:26
by Edred

Code: Select all

GotoXY(1786,637,6,false)
А зачем здесь "6"? третий параметр - это точность подхода, нужна для ламбера, например. То есть целью указываем дерево, а точность подхода (фактически - диапазон насколько можно отклониться от цели, то есть точность 2 означает координаты цели плюс-минус 2), например, 1...

Posted: 31.10.2006 17:36
by Vlad$
а это я забыл переправить... у меня там 0
вот что журнал пишет:

Code: Select all

18:39:32 [****]: Compiling
18:39:32 [****]: Compiler: [Error] (xz.sc at 53:1):  Identifier expected
18:39:32 [****]: Compiling failed
18:39:32 [****]: Script xz.sc stoped successfuly

Posted: 31.10.2006 20:38
by Drunk Iguana
Во первых невезде точки с запятой стоят. Во вторых

Code: Select all

If a>b then
begin
...
...
end
else
begin
...
...
end;
вот так выглядеь должно

Posted: 31.10.2006 21:32
by Vlad$
Да, я уже допер:) спасибки
вот что вышло:

Code: Select all

Program HS;
{$Include 'all.inc'}
procedure GotoXY(x,y,prec : integer; runflag : boolean); 
// v. 1.04 (с) Edred, скрипт портирован с инжекта 
// оригинальная версия Yoko с доработкой AGRS и Edred.
   var ld, ldc, dx, dy, mx, my : Integer; 
   begin 
      ld := 0; ldc := 0; 
      while true do 
      begin 
         dx := GetX(self) - x; if dx < 0 then dx := 0 - dx; 
         dy := GetY(self) - y; if dy < 0 then dy := 0 - dy; 
         if dy > dx then dx := dy; 
         if dx <= prec then exit; 
         mx := GetX(self); my := GetY(self); 
         dx := mx - x; if dx < 0 then dx := 0 - dx; 
         dy := my - y; if dy < 0 then dy := 0 - dy; 
         if dy > dx then dx := dy; 
         if dx <= prec then exit; 
         if ld = dx then begin 
            ldc := ldc + 1; 
            if ldc > 100 then begin addtosystemjournal( 'GotoXY: Cannot reach location!' ); exit; end; 
         end 
         else ld := dx; 
         //waitconnection(5000); 
         if mx = x then begin 
            if my = y then exit; 
            // North 
            if my > y then begin Raw_Move(0,runflag); continue; end; 
            // South 
            Raw_Move(4,runflag); continue; 
         end; 
         if mx < x then begin 
            // Northeast 
            if my > y then begin Raw_Move(1,runflag); continue; end; 
            // East 
            if my = y then begin Raw_Move(2,runflag); continue; end; 
            // Southeast 
            Raw_Move(3,runflag); continue; 
         end; 
         // Southwest 
         if my < y then begin Raw_Move(5,runflag); continue; end; 
         // West 
         if my = y then begin Raw_Move(6,runflag); continue; end; 
         // Nortwest 
         Raw_Move(7,runflag); continue; 
      end; 
   end;
Begin 
while true do begin
if Hidden then
begin
useskill('Stealth')
GotoXY(1786,637,0,false);
wait(100);
GotoXY(1786,630,0,false);
end
else
begin
UseSkill('Hiding')
wait(10000)
end;
end;
end.

Posted: 31.10.2006 23:25
by Edred
Интересно, а почему в процедуре GotoXY пропали копирайты? :roll:

Posted: 01.11.2006 11:43
by Vlad$
Ну если тебя это так волнует...

Posted: 22.11.2006 23:35
by Cyn
Edred wrote:Интересно, а почему в процедуре GotoXY пропали копирайты? :roll:
:)

Posted: 23.11.2006 1:55
by Edred
Cyn wrote: :)
В этом нет ничего смешного, я достаточно серьезно отношусь к таким вещам.