- Делаю скрипт для крафта-раба, включил его и получил по итогу крафтера со скилами по 93
- Пока соединил только БС(переплавка Армслор) и Карпентер, что то скрипт уже получился большой, как бы его сделать покрасивее и удобнее может есть варианты?
- Допустим несколько файлов каждый на свое умение и их подгружать, но как это сделать? дайте ссылку поучится
Гляньте основную функцию, правильно написано, так будет работать?
 Program AllCraft  
 Code: Select all
Program AllCraft_Olimpik;
{$Include 'all.inc'}
var
TimeStart : TDateTime;
a,b,c,d,e,f,g,h,l,k :integer;
Item : Cardinal;
const
Tresh = $47858E0F;
IngotsType =  $1BF2; 
IngotsColor = $0000;  
HammerType = $13E3;
ForgeObj = $46A0A77A;
TongsType = $0FBB;
cutlas = $1440;
katana = $13FE;
short = $1402;
gorget = $1413;
gloves = $1414;
helm = $1412;
arms = $1410;
legs = $1411;
breastplate = $1415;
//настройки для Карпентри
LogsType =  $1BDD;    // инги которые будем плавить
LogsColor = $0000;   //$0505 birch  $0654 cherri $0415 aok  $048A swamp   $0203 hard
ToolsType =  $1032;    // тип инструмента
Deedtype = $14F0;
item_type1 = $13FD;   //лук
item_type2 = $13B2;   //хевик
item_type3 = $0F4F;   //арбаль
{переплавка кутласа}procedure Resmeltcutlas;
begin
findtype(cutlas,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     a:=0;
     TimeStart:=Now;
     Item:=FindType(cutlas,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       a := a + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (a > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               a := a + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (a > 300);
              findtype(cutlas,backpack);
    until findcount () = 0  ;
findtype(cutlas,backpack);
end;
{переплавка катаны}procedure Resmeltkatana;
begin
findtype(katana,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     b:=0;
     TimeStart:=Now;
     Item:=FindType(katana,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       b := b + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (b > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               b := b + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (b > 300);
              findtype(katana,backpack);
    until findcount () = 0  ;
findtype(katana,backpack);
end;
{переплавка шота}procedure Resmeltshort;
begin
findtype(short,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     c:=0;
     TimeStart:=Now;
     Item:=FindType(short,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       c := c + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (c > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               c := c + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (c > 300);
              findtype(short,backpack);
    until findcount () = 0  ;
findtype(short,backpack);
end;
{переплавка горжетки}procedure Resmeltgorget;
begin
findtype(gorget,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     d:=0;
     TimeStart:=Now;
     Item:=FindType(gorget,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       d := d + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (d > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               d := d + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (d > 300);
              findtype(gorget,backpack);
    until findcount () = 0  ;
findtype(gorget,backpack);
end;
{переплавка перчаток}procedure Resmeltgloves;
begin
findtype(gloves,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     e:=0;
     TimeStart:=Now;
     Item:=FindType(gloves,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       e := e + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (e > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               e := e + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (e > 300);
              findtype(gloves,backpack);
    until findcount () = 0  ;
findtype(gloves,backpack);
end;
{переплавка Шлема}procedure Resmelthelm;
begin
findtype(helm,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     f:=0;
     TimeStart:=Now;
     Item:=FindType(helm,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       f := f + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (f > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               f := f + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (f > 300);
              findtype(helm,backpack);
    until findcount () = 0  ;
findtype(helm,backpack);
end;
{переплавка наплечников}procedure Resmeltarms;
begin
findtype(arms,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     g:=0;
     TimeStart:=Now;
     Item:=FindType(arms,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       g := g + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (g > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               g := g + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (g > 300);
              findtype(arms,backpack);
    until findcount () = 0  ;
findtype(arms,backpack);
end;
{переплавка ног}procedure Resmeltlegs;
begin
findtype(legs,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     h:=0;
     TimeStart:=Now;
     Item:=FindType(legs,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       h := h + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (h > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               h := h + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (h > 300);
              findtype(legs,backpack);
    until findcount () = 0  ;
findtype(legs,backpack);
end;
{переплавка пуза}procedure Resmeltbreastplate;
begin
findtype(breastplate,backpack);
while FindCount() > 5 do
repeat
   checksave;
   CheckTargetError(2,2);
     if targetpresent then canceltarget;
     l:=0;
     TimeStart:=Now;
     Item:=FindType(breastplate,Backpack);
     WaitTargetObject(Item)
      repeat
       UseObject(FindType(TongsType,Backpack));
       l := l + 1;
        wait(2000);
       until (InJournalBetweenTimes('What do you wish to smelt into ingots?|has to be', TimeStart, Now)<>-1) or (l > 7);
         WaitTargetObject(ForgeObj);
              repeat
               wait(100);
               l := l + 1;
              until (InJournalBetweenTimes('You turned|ailed|That cannot be melted down!', TimeStart, Now)<>-1) or (l > 300);
              findtype(breastplate,backpack);
    until findcount () = 0  ;
findtype(breastplate,backpack);
end;
{деалем кутлес}procedure Cutlass;
 begin
  UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Weapons');
           WaitMenu('What','Swords');
            wait(500)
            WaitMenu('What','Cutlass'); 
            if TargetPresent then CancelTarget;
 end;
{деалем шот}procedure Shortt;
 begin
       FindType(cutlas,backpack);
       if (findcount > 0) then MoveItems(backpack, cutlas, $FFFF, Tresh, 0, 0, 0, 50);
       UseObject(FindType(HammerType,Backpack));
       wait(500); 
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What would you like to make?','Weapons');
           WaitMenu('What','Other');
            wait(500)
            WaitMenu('What','Short'); 
            if TargetPresent then CancelTarget;
 end;
{деалем катану}procedure Katanaa;
 begin
       FindType(short,backpack);
       if (findcount > 0) then MoveItems(backpack, short, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500); 
       UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Weapons');
           WaitMenu('What','Swords');
            wait(500)
            WaitMenu('What','Katana'); 
            if TargetPresent then CancelTarget;
 end;
{деалем горжетку}procedure gorgett;
 begin
       FindType(katana,backpack);
       if (findcount > 0) then MoveItems(backpack, katana, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500);
       UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Armor');
           WaitMenu('What','Platemail');
            wait(500)
            WaitMenu('What','Gorget'); 
            if TargetPresent then CancelTarget;
 end;  
{деалем перчи}procedure glovess;
 begin
       FindType(gorget,backpack);
       if (findcount > 0) then MoveItems(backpack, gorget, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500); 
       UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Armor');
           WaitMenu('What','Platemail');
            wait(500)
            WaitMenu('What','Gloves'); 
            if TargetPresent then CancelTarget;
 end;  
{деалем шлем}procedure helmm;
 begin
       FindType(gloves,backpack);
       if (findcount > 0) then MoveItems(backpack, gloves, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500);
       UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Armor');
           WaitMenu('What','Helm');
            wait(500)
            WaitMenu('What','Plate'); 
            if TargetPresent then CancelTarget;
 end;   
{деалем наплечники}procedure armss;
 begin
       FindType(helm,backpack);
       if (findcount > 0) then MoveItems(backpack, helm, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500);
       UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Armor');
           WaitMenu('What','Platemail');
            wait(500)
            WaitMenu('What','Arms'); 
            if TargetPresent then CancelTarget;
 end;   
{деалем ноги}procedure legss;
 begin
       FindType(arms,backpack);
       if (findcount > 0) then MoveItems(backpack, arms, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500);  
       UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Armor');
           WaitMenu('What','Platemail');
            wait(500)
            WaitMenu('What','Legs'); 
            if TargetPresent then CancelTarget;
 end;  
{деалем пузо}procedure breastplatee;
 begin
       FindType(legs,backpack);
       if (findcount > 0) then MoveItems(backpack, legs, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500); 
       UseObject(FindType(HammerType,Backpack));
       findtype(IngotsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Armor');
          WaitMenu('What','Platemail');
          wait(500)
          WaitMenu('What','Breastplate'); 
          if TargetPresent then CancelTarget;
 end;
 {деалем стул}procedure Chairr;
 begin
       FindType(IngotsType,backpack);
       if (count(IngotsType) > 0) then MoveItem(FindType(IngotsType,backpack),$FFFF,ground,0,0,0);
       FindType(breastplate,backpack);
       if (findcount > 0) then MoveItems(backpack, breastplate, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500); 
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Chairs'); 
          wait(500)
          WaitMenu('What','Chair');
            if TargetPresent then CancelTarget;
 end;         
{деалем ящик}procedure Cratee;
 begin
       FindType(IngotsType,backpack);
       if (count(IngotsType) > 0) then MoveItem(FindType(IngotsType,backpack),$FFFF,ground,0,0,0);
       FindType(breastplate,backpack);
       if (findcount > 0) then MoveItems(backpack, breastplate, $FFFF, Tresh, 0, 0, 0, 50);
       wait(500); 
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Container'); 
          wait(500)
          WaitMenu('What','Crate');
            if TargetPresent then CancelTarget;
 end; 
{деалем ящик}procedure Boxx;
 begin
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Container'); 
          wait(500)
          WaitMenu('What','Box');
            if TargetPresent then CancelTarget;
 end;  
{деалем щиты}procedure Kitee;
 begin
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Shields'); 
          wait(500)
          WaitMenu('What','Kite');
            if TargetPresent then CancelTarget; 
end;
{деалем ящики}procedure Strongss;
 begin
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Container'); 
          wait(500)
          WaitMenu('What','Strong');
            if TargetPresent then CancelTarget;
 end;       
{деалем палкку}procedure Quarterr;
 begin
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Staffs'); 
          wait(500)
          WaitMenu('What','Quarterstaff');
            if TargetPresent then CancelTarget;
 end;          
{деалем палку}procedure Shepardss;
 begin
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Staffs'); 
          wait(500)
          WaitMenu('What','Shepards');
            if TargetPresent then CancelTarget;
 end;  
{деалем палку}procedure Blackk;
 begin
       UseObject(FindType(ToolsType,Backpack));
       findtype(LogsType,backpack);
          WaitTargetObject(finditem);
          wait(500)
          WaitMenu('What','Staffs'); 
          wait(500)
          WaitMenu('What','Black');
          if TargetPresent then CancelTarget;
 end; 
 {БС}procedure BS;
   begin    
     AddToSystemJournal('Ingi:'+IntToStr(Count(IngotsType))+' '+'Ingi na polu:'+IntToStr(CountEx(IngotsType,$FFFF,ground))+' '+'logi:'+IntToStr(Count($1BDD)));
     {добираем инги}  
     if (CountEx(IngotsType,IngotsColor,backpack)) < 50 then MoveItem(FindTypeEx(IngotsType,IngotsColor,ground,true),10000,backpack,0,0,0);   
     wait(500);
   end;  
   {Carpentry}procedure Carp;
   begin  
        {добираем логи}
     if (CountEx(LogsType,LogsColor,backpack) < 50) then MoveItem(FindTypeEx(LogsType,LogsColor,ground,true),10000,backpack,0,0,0);
       wait(500);
     FindType(Deedtype,backpack);
     if (findcount > 0) then MoveItems(backpack, Deedtype, $FFFF, Tresh, 0, 0, 0, 100);
     FindType($1B79,backpack);
     if (findcount > 0) then MoveItems(backpack, $1B79, $FFFF, Tresh, 0, 0, 0, 100);      
     FindType($1B78,backpack);
     if (findcount > 0) then MoveItems(backpack, $1B78, $FFFF, Tresh, 0, 0, 0, 100);    
     FindType($0E81,backpack);
     if (findcount > 0) then MoveItems(backpack, $0E81, $FFFF, Tresh, 0, 0, 0, 100);       
     FindType($0DF0,backpack);
     if (findcount > 0) then MoveItems(backpack, $0DF0, $FFFF, Tresh, 0, 0, 0, 100);     
     FindType($0E8A,backpack);
     if (findcount > 0) then MoveItems(backpack, $0E8A, $FFFF, Tresh, 0, 0, 0, 100);
     wait(500);
     AddToSystemJournal('logs:'+IntToStr(Count(LogsType))+' '+'Logi na polu:'+IntToStr(CountEx(LogsType,$0000,ground)));  
   end;
    
 
BEGIN
SetARStatus(true);
while true do
   begin 
    {армс лор}  
     UseSkill('Arms Lore');  
     waittargetobject(findtype($0F51,backpack)); // тип ножа, если молоток то заменить на $13E3 
     wait(1000); 
     {выкидываем луки}
     FindType(item_type1,backpack);
       if (findcount > 0) then MoveItems(backpack, item_type1, $FFFF, Tresh, 0, 0, 0, 50);
         wait(500); 
     {выкидываем хевики}    
     FindType(item_type2,backpack);
         if (findcount > 0) then MoveItems(backpack, item_type2, $FFFF, Tresh, 0, 0, 0, 50);
         wait(500);
     {выкидываем арбали}    
     FindType(item_type3,backpack);
         if (findcount > 0) then MoveItems(backpack, item_type3, $FFFF, Tresh, 0, 0, 0, 50);
         wait(500);
     CancelMenu;
       k:=0;
       TimeStart:=Now; 
    if (GetSkillValue('Blacksmithy') <= 40.0) then begin Cutlass; BS;end;
    if (GetSkillValue('Blacksmithy') <= 50.0) and (GetSkillValue('Blacksmithy') > 40.1) then begin shortt; BS; end;
    if (GetSkillValue('Blacksmithy') <= 62.0) and (GetSkillValue('Blacksmithy') > 50.1) then begin Katanaa; BS; end;
    if (GetSkillValue('Blacksmithy') <= 69.0) and (GetSkillValue('Blacksmithy') > 62.1) then begin gorgett;; BS; end;
    if (GetSkillValue('Blacksmithy') <= 74.0) and (GetSkillValue('Blacksmithy') > 69.0) then begin glovess; BS;  end;
    if (GetSkillValue('Blacksmithy') <= 78.0) and (GetSkillValue('Blacksmithy') > 74.0) then begin helmm;  BS; end;
    if (GetSkillValue('Blacksmithy') <= 82.0) and (GetSkillValue('Blacksmithy') > 78.0) then begin armss; BS; end;
    if (GetSkillValue('Blacksmithy') <= 86.0) and (GetSkillValue('Blacksmithy') > 82.0) then begin legss; BS;end;
    if (GetSkillValue('Blacksmithy') <= 93.0) and (GetSkillValue('Blacksmithy') > 86.0) then begin breastplatee;  BS; end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 39.0) then begin Chairr;Carp;end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 42.0) and (GetSkillValue('Carpentry') > 39.0) then begin Cratee;Carp;end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 58.0) and (GetSkillValue('Carpentry') > 42.0) then begin Boxx;Carp; end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 62.0) and (GetSkillValue('Carpentry') > 58.0) then begin kitee;Carp;end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 80.0) and (GetSkillValue('Carpentry') > 62.0) then begin strongss;Carp;end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 85.0) and (GetSkillValue('Carpentry') > 80.0) then begin Quarterr;Carp;end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 90.0) and (GetSkillValue('Carpentry') > 85.0) then begin Shepardss;Carp;end;
    if (GetSkillValue('Blacksmithy') > 93.0) and (GetSkillValue('Carpentry') <= 92.9) and (GetSkillValue('Carpentry') > 90.0) then begin Blackk;Carp;end;
      repeat
      wait(100);
      k := k + 1;
      until (InJournalBetweenTimes('stop|already|Canceled|finish', TimeStart, Now)<>-1) or (k > 300);
      
     if InJournal('Success')<>-1 then Hungry(1,ground); 
     Resmeltcutlas;
     Resmeltkatana;
     Resmeltshort;
     Resmeltgorget; 
     Resmeltgloves;
     Resmelthelm;  
     Resmeltarms;
     Resmeltlegs; 
     Resmeltbreastplate; 
  
   end;
End.

