Ошибка в процедурах...
Posted: 24.10.2013 9:01
				by nullum
				Не могу понять в чем дело, скрипт вроде правильный, но при запуске и компиле, выдает по началу одну ошибку-Compiler: [Error] (Mining.inc at 70:6):  Unknown type 'Kopalka'.
 Имя чара стоит правильно, если допустим тупо удалить эту строку, то выдает ошибку в следующей процедуре-Compiler: [Error] (Mining.inc at 154:8):  Unknown identifier 'manaCheck' 
     
И так по всему скрипту, вот скрипт, посмотрите пожалуйста в чем ошибки?
 
			Code: Select all
 function CheckPK : Boolean;
VAR
man:array[0..1] of word;
i,noto:integer;
name:Kopalka;
Begin
man[0]:=$0190;
man[1]:=$0191;
FindDistance:=15;
Ignore(self);
AddToSystemJournal('проверяем наличие ПК...');
  for i:=0 to 1 do
      begin
      FindType(man[i],ground);
      If FindCount>0 then
          begin
          AddToSystemJournal('нашли какого то человечика');
          noto:=GetNotoriety(FindItem);
          AddToSystemJournal('Его злобность равна '+IntToStr(noto));
          If (noto>1) then
              begin
	      AddToSystemJournal('Он,сука, ПКшник!!!');
	      FlagPK:=true;
	      result:=true;
	      Exit;
	      end
           Else
              begin
	      AddToSystemJournal('он голубой...тьфу!');
              Ignore(FindItem); 
	      end; 
          end;
    
      wait(100);
      end;
End;
Code: Select all
procedure RecallToCave;
var 
x:integer;
Begin
     AddToSystemJournal('Реколимся в пещеру...');
     x:=getx(self);
     repeat	 
       manaCheck;
       If TargetPresent then CancelTarget;
       STime:=Now;
       Cast('Recall');
       Waittargetobject(RuneToCave);
       AddToSystemJournal('Ждём каста');
       while x=Getx(self) AND NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1) do wait(250);
     until NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1); 
End;Code: Select all
Program Mining;
{$Include 'checkflow.inc'}
  
  {$Include 'all.inc'} 
Const
RuneChest=$400B5A9D;
Sunduk2=$400B3478;
TypeFood=$097E;
Var 
flag,flagPK: Boolean;
Rune: array[0..15] of cardinal;
RuneNumber,i: integer;
STime:TDateTime;
//############################################################################################################
//#########################                DRINK INVISIBLE POTION                  ###########################
//############################################################################################################
Procedure HealSh;
Begin
if Count($0E21)>0 then
   begin
   SetWarMode(false);
   while (life<str) AND (Count($0E21)>0) do
      begin
      if FlagPK=true then Exit;
      UseType($0E21,$FFFF);
      WaitTargetSelf;
      checklag;
      wait(6000);
      end;   
   end;
End;
Procedure invis;
Begin
  AddToSystemJournal(' Inviska ...');
  SetWarMode(false);
  wait(100);
  UseType($0F08,$FFFF);
End;
procedure CheckHealth;
Begin
while NOT dead do
   begin
   if life<100 then
      begin
      invis;
      Exit;
      end;
   wait(300);
   end;
End;
//############################################################################################################
//#########################                   PK  DETECTING                        ###########################
//############################################################################################################
function CheckPK : Boolean;
VAR
man:array[0..1] of word;
i,noto:integer;
name:Kopalka;
Begin
man[0]:=$0190;
man[1]:=$0191;
FindDistance:=15;
Ignore(self);
AddToSystemJournal('проверяем наличие ПК...');
  for i:=0 to 1 do
      begin
      FindType(man[i],ground);
      If FindCount>0 then
          begin
          AddToSystemJournal('нашли какого то человечика');
          noto:=GetNotoriety(FindItem);
          AddToSystemJournal('Его злобность равна '+IntToStr(noto));
          If (noto>1) then
              begin
	      AddToSystemJournal('Он,сука, ПКшник!!!');
	      FlagPK:=true;
	      result:=true;
	      Exit;
	      end
           Else
              begin
	      AddToSystemJournal('он голубой...тьфу!');
              Ignore(FindItem); 
	      end; 
          end;
    
      wait(100);
      end;
End;
//############################################################################################################
//#########################                        HIDING                          ###########################
//############################################################################################################
procedure hidd;
Var
StartHid: TDateTime;
Begin 
   while not Hidden do
       begin 
          StartHid:=Now;
	  SetWarMode(false);
	  Wait(100);
          AddToSystemJournal(' Прячемся...');
          UseSkill('Hiding');
	  WaitJournalLine(StartHid,'hidden yourself well|не удалось скрыться',4000);
          If CheckPK then Exit;
	  If (InJournalBetweenTimes('не удалось скрыться',StartHid,Now)<>-1) then
	      begin
	      If Life<100 then 
	          begin
		  AddToSystemJournal('Кто то нас покоцал! Надо пить инвизку и хилиться.');
		  Invis;
		  HealSh;
		  end; 
	      end;
       end;
    Wait(100);
 End;
//############################################################################################################################
//###################################                   RECALL TO CAVE                    ####################################
//############################################################################################################################
procedure RecallToCave;
var 
x:integer;
Begin
     AddToSystemJournal('Реколимся в пещеру...');
     x:=getx(self);
     repeat	 
       manaCheck;
       If TargetPresent then CancelTarget;
       STime:=Now;
       Cast('Recall');
       Waittargetobject(RuneToCave);
       AddToSystemJournal('Ждём каста');
       while x=Getx(self) AND NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1) do wait(250);
     until NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1); 
End;
//############################################################################################################################
//###################################                   RECALL TO HOME                    ####################################
//############################################################################################################################
Procedure RecallToHome; 
var 
  x : integer;
Begin     
     wait(100);
     AddToSystemJournal('Реколимся домой...');
     x:=Getx(Self);
     repeat	 
         If (flagPK=1 or life<100) then Invis;
         if TargetPresent then CancelTarget;
         Cast('Recall');
         Waittargetobject(RuneToHome);
         AddToSystemJOurnal('Ждём каста');
         while x=Getx(self) AND NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1) do wait(250);
     until NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1); 
    
     wait(200); 
     CheckDead2; 
     wait(300);
     open;
     Move(1157,1698,0);
     close;  
     Move(1158,1695,0);
End; 
//############################################################################################################
//#########################                   CHECK THE MANA                       ###########################
//############################################################################################################
Procedure meditation;
Begin
SetWarMode(false);
repeat
  //AddToSystemJournal('Медитируем...') ;
  STime:=Now;
  UseSkill('Meditation')
  wait(1500);
  WaitJournalLine(STime,'at peace.|прервана',60000); 
until (InJournalBetweenTimes('at peace',STime,Now)<>-1);   
end;
procedure manaCheck;
Begin
  If Mana<Int then 
     begin
     AddToSystemJournal('медитируем до упора!');
     meditation;
     end; 
End; 
//############################################################################################################
//#########################                    UNLOAD THE ORE                      ###########################
//############################################################################################################
Procedure Unload;
VAR 
n, x:integer;
Unload:array [0..3] of word;
Begin
UnLoad[1]:=$19B7;
UnLoad[2]:=$19BA;
UnLoad[3]:=$19B8;
UnLoad[4]:=$19B9;
    
    if life <str then heal;
    useobject('Sunduk2');
    wait(250);
    CheckLag;
AddToSystemJournal('Разгружаюсь ...');
 For n=0 to 3 do
    begin
    FindType(UnLoad[n],backpack);
    while FindCount>0 do
       begin
       moveitem(finditem,0,Sunduk2,0,0,0);
       CheckLag;
       wait(300);
       FindType(UnLoad[n],backpack);
       end;
   end;
AddToSystemJournal(' Ну вродь всё, разгрузились ...');
End;
//############################################################################################################
//#########################                         HEAL                           ###########################
//############################################################################################################
procedure heal;
VAR
bandages : array[0..1] of word;
Begin
  bandages[0]:=$0E21;  //clear bandages
  bandages[1]:=$0E20;  //bloody bandages
UseObject(Sunduk);
wait(300);
FindType(bandages[0],Sunduk);
if FindCount>0 then
    begin
    AddToSystemJournal('Фух, есть чистые бинты!');
    Grab(FindItem,50);
    Wait(100);
    SetWarMode(false);
    while life < str do
        begin
        UseType(bandages[0],backpack);
        WaitTargetSelf;
        wait(6000);
        end;  
    end
else
    AddToSystemJournal(' Бинтов больше нету! ');
for i:=0 to 1 do
Begin
wait(500);
FindtType(bandages[i],backpack);
if FindCount>0 then
    begin
    moveitem(finditem,0,Sunduk,0,0,0);
    AddToSystemJournal(' Остатки бинтов обратно в сундук... ') ;
    end;
End;
//############################################################################################################
//#########################                    REAGENTS LOAD                       ###########################
//############################################################################################################
procedure regi;
VAR r, q, n, amount = 10
reg : array [0..2] of word;
q,n,amount : integer;
Begin
reg[0]:=$0F7A;
reg[1]:=$0F7B;
reg[2]:=$0F86;
UseObject(Sunduk); 
Wait(500);
 For i:=0 to 2 do
 if Count(reg[i])<>amount then
     begin
     q:=amount-count(reg[i]);
     if q <> 0 then
         if q > 0 then
         Begin
	 CheckLag;
         Findtype(reg[i],Sunduk);
         If Findcount=0 then
            begin
	    AddToSystemJournal('Какой то из регов закончился!!!');
	    Exit
            end;
         AddToSystemJournal('Берем рег номер '+IntToStr(i));
         Grab(finditem,q);
         wait(300);
	 end
     else
         begin     
         q:=q*(-1);
         findtype(reg[i],backpack);
         Moveitem(finditem,q,Sunduk,0,0,0);
         wait(300);
         end;
     end;
  
 FindType($0F08,Sunduk2);
 If FindCount>2 then
     While Count($0F08,$0060)<3 do 
         begin
         FindType($0F08,Sunduk2);
         Grab(finditem,1);
         AddToSystemJournal('Берем инвизки');
         wait(250);
         end
 Else
     begin
     AddToSystemJournal('Ивизки кончились');
     Exit;
     end;
 
FindType($0E21,Sunduk);
 If FindQuantity>50 then
   If Count($0E21)<50 then
       begin
       uo.findtype('0x0E21','0x0000','Sunduk')
       Grab(FindItem,50-Count($0E21));
       AddToSystenJournal('Берём бинты');
       wait(250);
       end;
  
AddToSystemJournal(' Взяли реги ,бинты и инвизки...');
End;
//############################################################################################################
//#########################                    OPEN THE DOOR                       ###########################
//############################################################################################################
procedure open;
Begin
AddToSystemJournal(' Otkryvaem kalitku ...');
FindDistance:=4;
FindType($06A5,ground);
If FindCount>0 then
    begin
    UseObject(finditem);
    repeat
        findtype($06A6,ground);
        wait(100);
    until FindCount>0;
    end;
End;
//############################################################################################################
//#########################                    CHECK THE RUNE                      ###########################
//############################################################################################################
procedure check;
Begin
STime:=Now;
AddToSystemJournal(' Proveryaem runu ... ');
ClickOnObject(RuneToHome);
WaitJournalLine(Stime,'jumps left',1000);
if  (injournalBetweenTimes('0 jumps left|1 jumps left',STime,Now)<>-1) then
    begin
    AddToSystemJournal(' Markaem runu ... ');
    i:=mana;
    Cast('Mark');
    waittargetobject(RuneToHome);
    repeat
       wait(250);
    until mana<m;
    end;
End;
//############################################################################################################
//#########################                    CLOSE THE DOOR                      ###########################
//############################################################################################################
procedure close;
Begin
AddToSystemJournal(' Закрываем калитку ...');
FindDistance:=4;
CheckLag;
FindType($06A6, ground);
If FindCount>0 then
    begin
    UseObject(FindItem);
    repeat
        FindType($06A5,ground);
        wait(100);
    until FindCount>0;
    end;
End;
procedure CheakDead2;
Begin
If Dead then
   AddToSystemJournal('Ты помер,чувак!');
   
End;
//############################################################################################################
//#########################                        MINING                          ###########################
//############################################################################################################
Procedure Mining;
VAR 
mx, my, mz, i, j:integer;
Ore:array [0..3] of word;
SOut1,SOut2:String;
Begin	
  	Ore[0]:=$19B7;
	Ore[1]:=$19BA;
	Ore[2]:=$19B8;
	Ore[3]:=$19B9;
SOut1:='не дотянуться|Вы нашли| dig here|Это слишком далеко|You have been revealed|Тут не осталось руды|в шахте!|You put|Wow!|Раздолбив 
несколько камней|is attacking you|You have found';
SOut2:='не дотянуться| dig here|Это слишком далеко|Тут не осталось руды|в шахте!';
mx:=GetX(self);
my:=GetY(self);
mz:=GetZ(self);
Hidd;
for i:=mx-4 to mx+4 do
for j:=my-4 to my+4 do
   begin
   StartM:=Now;
   Repeat
      if CheckPK then Exit;
      
      Usetype($0E85);      
      Waittargettile('1341',i,j,mz);
      WaitJournalLine(Startm,SOut1,30000);
      If (InJournalBetweenTimes(SOut2,StartM,Now)<>-1) then break;
      
      If (InJournalBetweenTimes('You have been revealed',StartM,Now)<>-1) then 
          begin
	  If CheckPK then Exit;
	  Hidd;
	  end;
      If (InJournalBetweenTimes('is attacking you',StartM,Now)<>-1) then 
          begin
	  If LineType=$0E21 or LineType=$0E20 then
	      begin
	      AddToSystemJournal('Нас атакует какой то синий пидор!');
	      flagPK:=true;
	      Invis;
	      Exit;
	      end;
	  end;
      
      CheckDead2;
      
      If Life<100 then HealSh;
            
      if NOT hidden then Hidd;
                   
      if weight > (str*4) then
         begin
         AddToSystemJournal('Перегруз.Пора домой!');
         Exit;
         end;
   Until false;
  
   finddistance:=0;
   for n:=0 to 3 do
      begin
      findtype(Ore[n],ground);
      If FindCount>0 then
         begin
         Grab(finditem,0);
         AddToSystemJournal('подобрали подарок небес');
         wait(300);
         findtype(Ore[n],ground);
         end;
      end;
   end;
wait(100);
End;
BEGIN
rune[0]:=15;
rune[1]:=$400B5AD5;
rune[2]:=$400B6015;
rune[3]:=$400B5AD4;
rune[4]:=$400B59CA;
rune[5]:=$400B5A1C;
rune[6]:=$400B5D39;
rune[7]:=$400B5A67;
rune[8]:=$400B6016;
rune[9]:=$400B5A66;
rune[10]:=$400B5D00;
rune[11]:=$400B5D01;
rune[12]:=$400B5A9E;
rune[13]:=$400B5E5B;
rune[14]:=$400B59C9;
rune[15]:=$400B5E06;
InitCheckFlow;
CheckLag;
UseObject(RuneChest);
CheckLag;
UseObject(Sunduk2);
Wait(200);
While True do
    begin
    for RuneNumber:=1 to rune[0] do
            begin
	    regi;
            flag:=false; 
            RecallToCave(rune[i]);
            Mining;
            RecallToHome;
	    Unload;
       //   Eda; 
	    end;
    end;
END.