Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Ошибка в процедурах...

тут можно задать вопрос по скриптингу
nullum
Neophyte
Neophyte
Posts: 13
Joined: 24.10.2013 8:44

Ошибка в процедурах...

Post by nullum »

Не могу понять в чем дело, скрипт вроде правильный, но при запуске и компиле, выдает по началу одну ошибку-Compiler: [Error] (Mining.inc at 70:6): Unknown type 'Kopalka'.

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;
Имя чара стоит правильно, если допустим тупо удалить эту строку, то выдает ошибку в следующей процедуре-Compiler: [Error] (Mining.inc at 154:8): Unknown identifier 'manaCheck'

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.
Last edited by nullum on 24.10.2013 22:55, edited 1 time in total.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Ошибка в процедурах...

Post by shinma »

Ты смеешься?

Code: Select all

name:Kopalka;
а кто ее объявлять будет? тебе в учебник по паскалю. Я знаю integer, string, word итд из стандартных но копалку... не точно не знаю.

Code: Select all

manaCheck;
с маначеком ту да же. сначало надо создать, объявить или описать, а потом использовать. ты же делаешь наоборот.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Ошибка в процедурах...

Post by drabadan »

код инклюда чекфлов дай. А то не понятно зачем оно там все это вообще...
nullum
Neophyte
Neophyte
Posts: 13
Joined: 24.10.2013 8:44

Re: Ошибка в процедурах...

Post by nullum »

Code: Select all

var
  CheckSWSTimer : TDateTime;

procedure InitCheckFlow;
begin
  CheckSWSTimer := Now;
end;

procedure CheckSave;
var
  t : TDateTime;
begin
  if InJournalBetweenTimes('Saving World State in a minute', CheckSWSTimer, Now) = -1 then
  begin
    if InJournalBetweenTimes('Saving World State', CheckSWSTimer, Now) >= 0 then
    begin
      t := Now;
      UOSay('q');
      WaitJournalLine(t, 'q', 30000);
      SetGlobal('stealth', 'Saving World State', '0');
    end;
  end
  else SetGlobal('stealth', 'Saving World State', '1');
  CheckSWSTimer := Now;
end;

function SWSSoon : boolean;
begin
  result := (GetGlobal('stealth', 'Saving World State') = '1');
end;

procedure WaitConnection_;
begin
  if Connected then exit;
  while not Connected do wait(100);
  //wait(3000);
end;

function CheckFlow : integer;
var
  delay : integer;
begin
  delay := timer;
  CheckSave;
  WaitConnection_;
  result := timer - delay;
end;
чекфлоу
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Ошибка в процедурах...

Post by drabadan »

Зря спрашивал, у меня или от 3 поездов моск не отошел еще или там реально нахрен не нужна переменная name:Kopalka, а блок checkMana надо просто разместить раньше реколов...

З.Ы. Есть встроенная функция CheckLag(param : Integer); я юзаю его в паре с wait(). Может это и неправильно - но мне ок, работает.
nullum
Neophyte
Neophyte
Posts: 13
Joined: 24.10.2013 8:44

Re: Ошибка в процедурах...

Post by nullum »

shinma wrote:Ты смеешься?

Code: Select all

name:Kopalka;
а кто ее объявлять будет? тебе в учебник по паскалю. Я знаю integer, string, word итд из стандартных но копалку... не точно не знаю.

Code: Select all

manaCheck;
с маначеком ту да же. сначало надо создать, объявить или описать, а потом использовать. ты же делаешь наоборот.
Типо - переменная Var name строковая.... типо того ?
nullum
Neophyte
Neophyte
Posts: 13
Joined: 24.10.2013 8:44

Re: Ошибка в процедурах...

Post by nullum »

drabadan wrote:Зря спрашивал, у меня или от 3 поездов моск не отошел еще или там реально нахрен не нужна переменная name:Kopalka, а блок checkMana надо просто разместить раньше реколов...

З.Ы. Есть встроенная функция CheckLag(param : Integer); я юзаю его в паре с wait(). Может это и неправильно - но мне ок, работает.
name Kopalka-это имя чара, сейчас попробую разместить по другому.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Ошибка в процедурах...

Post by drabadan »

nullum wrote:
drabadan wrote:Зря спрашивал, у меня или от 3 поездов моск не отошел еще или там реально нахрен не нужна переменная name:Kopalka, а блок checkMana надо просто разместить раньше реколов...

З.Ы. Есть встроенная функция CheckLag(param : Integer); я юзаю его в паре с wait(). Может это и неправильно - но мне ок, работает.
name Kopalka-это имя чара, сейчас попробую разместить по другому.
Ну тогда объяви переменную как строковую -

Code: Select all

name : String;
А на старте скрипта после массива инициализируй ее:

Code: Select all

name := CharName;
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Ошибка в процедурах...

Post by shinma »

drabadan wrote:
nullum wrote:
drabadan wrote:Зря спрашивал, у меня или от 3 поездов моск не отошел еще или там реально нахрен не нужна переменная name:Kopalka, а блок checkMana надо просто разместить раньше реколов...

З.Ы. Есть встроенная функция CheckLag(param : Integer); я юзаю его в паре с wait(). Может это и неправильно - но мне ок, работает.
name Kopalka-это имя чара, сейчас попробую разместить по другому.
Ну тогда объяви переменную как строковую -

Code: Select all

name : String;
А на старте скрипта после массива инициализируй ее:

Code: Select all

name := CharName;
name := 'CharName';
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
nullum
Neophyte
Neophyte
Posts: 13
Joined: 24.10.2013 8:44

Re: Ошибка в процедурах...

Post by nullum »

name Kopalka-это имя чара, сейчас попробую разместить по другому.[/quote]
Ну тогда объяви переменную как строковую -

Code: Select all

name : String;
А на старте скрипта после массива инициализируй ее:

Code: Select all

name := CharName;
[/quote]

Это я уже понял и сделал, теперь куча других ошибок, в таком же формате, получается что тут кривой код изначально? Тоесть, мне надо все переменные в самом начале задать?
зы
Я просто в программирование вообще плохо разбираюсь, по этому, все это для меня тяжеловато дается...
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Ошибка в процедурах...

Post by drabadan »

Если ето скрипт не твой, а ты его нашел по поиску тупо копипастнул себе и ждешь нормальной работы - то да код кривой, все скрипты изначально есть смысл писать самому для себя. Не умеешь - начни с малого, пиши по 1 процедуре. Копируй из других скриптов и переписывай сам. Так получишь не кривой код, а то все дураки и пишут плохие скрипты. Каждый скрипт пишется под конкретный шард, тем более фарм скрипт. Потом его портировать на другого чара и другой шард - задача не самая простая.
Вообщем нафлудил как обычно всякого...

По теме: пиши какие ошибки выскакивают дальше.

З.Ы. Совет: заковывай длинный код в тег spoiler.
nullum
Neophyte
Neophyte
Posts: 13
Joined: 24.10.2013 8:44

Re: Ошибка в процедурах...

Post by nullum »

Ну я его не искал, мне его дали... Попробую по частям с ним разобраться!
nullum
Neophyte
Neophyte
Posts: 13
Joined: 24.10.2013 8:44

Re: Ошибка в процедурах...

Post by nullum »

Code: Select all

Program Mining;

{$Include 'checkflow.inc'}
  
{$Include 'all.inc'} 

Const
RuneChest=$400B5A9D;
Sunduk2=$400B3478;
TypeFood=$097E;
name='Unwar';


Var 
flag,flagPK: Boolean;
Rune: array[0..15] of Cardinal;
RuneNumber,i,x:Integer;
STime:TDateTime;
manaCheck:String

//############################################################################################################################
//###################################                   RECALL TO CAVE                    ####################################
//############################################################################################################################

procedure RecallToCave;
var 
x : integer;
manaCheck:String;
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;

//############################################################################################################
//#########################                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;



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;



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.   

Code: Select all

name := CharName;
вставил в константу, ошибка пропала, немного поменял местами процедуры, толку никакого, стал теперь ругаться на имя первой же процедуры

Code: Select all

Compiler: [Error] (Текстовый документ (22).txt at 25:1):  Semicolon (';') expected
вроде это означает ошибка в синтаксе, но там же все правильно...

Может быть проблема в версии стелса? Хотя мне дали кучу скриптов, именно под эту версию и под этот сервер.
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Ошибка в процедурах...

Post by nah nah »

Code: Select all

manaCheck:String
точка с запятой вроде как тут ожидалась
Post Reply