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

Убивание коров и лут +резка кожи

Only working scripts
Sorme.it
Neophyte
Neophyte
Posts: 46
Joined: 24.05.2013 9:02

Re: Убивание коров и лут +резка кожи

Post by Sorme.it »

Code: Select all

If FindType($2006,Ground)>0 Then
              Begin
                CorpseID:=FindItem;
                WaitTargetObject(CorpseID);
                UseType(Cleaver,$FFFF);
                UseObject(CorpseID);
                MoveItem(FindType($1BD1,corpseID),0,BackPack,0,0,0);
              End;   
на этом месте кода персонаж делает следующее - многократно режет открытый труп. Как его заигнорить и перейти к следующему ?

Code: Select all

Ignore(FindItem);
?
Sorme.it
Neophyte
Neophyte
Posts: 46
Joined: 24.05.2013 9:02

Re: Убивание коров и лут +резка кожи

Post by Sorme.it »

Sorme.it wrote:

Code: Select all

If FindType($2006,Ground)>0 Then
              Begin
                CorpseID:=FindItem;
                WaitTargetObject(CorpseID);
                UseType(Cleaver,$FFFF);
                UseObject(CorpseID);
                MoveItem(FindType($1BD1,corpseID),0,BackPack,0,0,0);
              End;   
на этом месте кода персонаж делает следующее - многократно режет открытый труп. Как его заигнорить и перейти к следующему ?

Code: Select all

Ignore(FindItem);
?
игнорировать ранее найденный ?
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Убивание коров и лут +резка кожи

Post by drabadan »

Мой вариант подобного скрипта. Не помню насколько он рабочий...

Code: Select all

Program SborKogi_Minoc;
{$Include 'all.inc'}

const
Bank = $40094466;
knife = $13F6;
Koga = $1078;
Feather = $1BD1;
BankX = 2494;
BankY = 544;
Corpse = $2006;
Bint = $0E21;
Heard_Stuff = $0E81; 
M_Success = 'bloody bandagess in your pack';
M_Fizzle = 'but they barely help';
M_NoNeed = 'wanna make a mummy';
M_Where = 'you want them';
M_Success_Heard = 'goes where it is';
M_Fizzle_Heard = 'seem to be able to';

type                                       
  Tochki = Record
    x,y : Integer;
  end;

type
  Givotinki = Record
    tip : Cardinal;
    rezat : Boolean;
  end;
  
var
Tochka : array [0..8] of Tochki;
Givotinka : array [0..14] of Givotinki;
i, tmpRes : Integer;
TempGivotinka : Cardinal;


procedure Init;
  begin
    Tochka[0].x := 2496;
    Tochka[0].y := 533;
    
    Tochka[1].x := 2528;
    Tochka[1].y := 539;
    
    Tochka[2].x := 2543;
    Tochka[2].y := 572;    
    
    Tochka[3].x := 2535;
    Tochka[3].y := 603;
    
    Tochka[4].x := 2498;
    Tochka[4].y := 614;
    
    Tochka[5].x := 2503;
    Tochka[5].y := 576;
    
    Tochka[6].x := 2473;
    Tochka[6].y := 602;
    
    Tochka[7].x := 2478;
    Tochka[7].y := 550;
    
    Tochka[8].x := 2444;
    Tochka[8].y := 548;       
//////////////////////////////////////////////////////////////////////////////////
    Givotinka[0].tip := $0122; //Boar
    Givotinka[0].rezat := true; //Boar    
    Givotinka[1].tip := $00E9; //Bull
    Givotinka[1].rezat := true;    
    Givotinka[2].tip := $00D1; //Goat
    Givotinka[2].rezat := true;   
    Givotinka[3].tip := $00D0; //Chicken
    Givotinka[3].rezat := true;   
    Givotinka[4].tip := $00DF; //Lamb
    Givotinka[4].rezat := true;   
    Givotinka[5].tip := $0006; //Lapwing
    Givotinka[5].rezat := true;    
    Givotinka[6].tip := $00D8; //Cow
    Givotinka[6].rezat := true;
    Givotinka[7].tip := $00CB; //Pig
    Givotinka[7].rezat := true;
    Givotinka[8].tip := $00E8; //Bull
    Givotinka[8].rezat := true;
    Givotinka[9].tip := $0005; //Eagle
    Givotinka[9].rezat := true; 
    Givotinka[10].tip := $00E7; //Cow
    Givotinka[10].rezat := true;
    Givotinka[11].tip := $00EE; //Rat
    Givotinka[11].rezat := false;
    Givotinka[12].tip := $00C8; //Horse
    Givotinka[12].rezat := false; 
    Givotinka[13].tip := $00D9; //Dog
    Givotinka[13].rezat := false; 
    Givotinka[14].tip := $00C9; //Cat
    Givotinka[14].rezat := false;              
  end;
  
procedure WaitN(n : Integer);
begin
  CheckSave;
  wait(n);
end;

procedure GdeYA;
  begin
  if not ((GetX(self) = Tochka[0].x) and (GetY(self) = Tochka[0].y)) then
    begin
      NewMoveXY(Tochka[0].x, Tochka[0].y, true, 0, true);
      WaitN(1000);
      CheckSave;
    end;
  end;

function FindGivotinky : Integer;
var k : Integer;
  begin
    Result := 0;
    FindDistance := 25;
    for k := 0 to 14 do
      begin
        if (FindType(Givotinka[k].tip, Ground) > 0) then
          begin
            if (Givotinka[k].rezat = true) then
              begin
                WaitN(300); 
                Result := 1;
                TempGivotinka := FindItem;
              end;
            if (Givotinka[k].rezat = false) then
              begin
                WaitN(300);
                Result := 2;
                TempGivotinka := FindItem;
              end;            
          end;        
      end;
  end;
  
procedure Lore_Hearding;
var 
ctime : TDateTime;
mGde, mPos, mFiz, k, n : Integer;
begin
  for n:= 0 to 3 do
  begin
    NewMoveXY(GetX(TempGivotinka), GetY(TempGivotinka), true, 1, true);
    if not (GetType(ObjAtLayerEx(LhandLayer,self)) = Heard_Stuff) then Equip(LhandLayer, FindType(Heard_Stuff, backpack));
    WaitN(1000);
    ctime := Now;
    FindDistance := 4;          
    UseObject(ObjAtLayerEx(LhandLayer,self));
    WaitForTarget(5000);                                       
    WaitTargetGround(GetType(TempGivotinka));   
    k := 0;
    repeat
      wait(100);
      k := k + 1;
      CheckSave;
      mGde := InJournalBetweenTimes(M_Where, ctime, Now);
    until (mGde <> -1) or Dead or (k > 50);
    WaitForTarget(5000);
    TargetToXYZ(GetX(self) - 1, GetY(self) + 1, GetZ(self));
    k := 0;
    repeat
      wait(100);
      k := k + 1;
      CheckSave;
      mPos := InJournalBetweenTimes(M_Success_Heard, ctime, Now);
      mFiz := InJournalBetweenTimes(M_Fizzle_Heard, ctime, Now);
    until (mPos <> -1) or (mFiz <> -1) or Dead or (k > 50);
    UseSkill('Animal Lore');
    WaitForTarget(5000);
    WaitN(1000);
    WaitTargetGround(GetType(TempGivotinka));
    WaitN(2500);    
  end;
end;

procedure HealMe;                                               
var k, mPos, mFiz : Integer;
ctime : TDateTime;
begin
  while HP < (MaxHP - 30) do
    begin
      FindType(Bint, backpack);      
      UseObject(finditem);
      WaitForTarget(5000);
      CheckSave;
      TargetToObject(self);
      ctime := Now;
      k := 0;
      repeat
        wait(100);
        k := k + 1;
        CheckSave;
        mPos := InJournalBetweenTimes(M_Success, ctime, Now);
        mFiz := InJournalBetweenTimes(M_Fizzle, ctime, Now);
      until (mPos <> -1) or (mFiz <> -1) or Dead or (k = 50);
      wait(2000);
      CheckSave;
      Equip(RhandLayer, FindType(knife, backpack));
    end;
end;
  
procedure FinishHim;
  begin    
    while GetHP(TempGivotinka) > 0 do
      begin
        NewMoveXY(GetX(TempGivotinka), GetY(TempGivotinka), true, 1, true);        
        FindDistance := 2;
        Attack(TempGivotinka);
        WaitN(1000);
        HealMe;
      end;
      SetWarMode(False);
  end;

procedure CarveAndLoot;
  begin
    FindDistance := 2;     
     UseObject(ObjAtLayerEx(RhandLayer,self));
     wait(1000);     
     WaitTargetGround($2006);      
     WaitN(3000);
     UseObject(FindType(Corpse, Ground));
     WaitN(1000);     
     if GetQuantity(FindType(Koga, FindType(Corpse, Ground))) > 0 then MoveItem(FindType(Koga, FindType(Corpse, Ground)), 0, backpack, 0,0,0);
     AddToSystemJournal(IntToStr(GetQuantity(FindType(Koga, backpack))) + ' кожи в паке');
     WaitN(1000);     
     if GetQuantity(FindType(Feather, FindType(Corpse, Ground))) > 0 then MoveItem(FindType(Feather, FindType(Corpse, Ground)), 0, backpack, 0,0,0);
     AddToSystemJournal(IntToStr(GetQuantity(FindType(Feather, backpack))) + ' перьев в паке');
  end;
  
procedure Unload;
  begin
    NewMoveXY(BankX, BankY, true, 0, true);
    WaitN(1000);
    UOSay('Bank Guards');
    MoveItem(FindType(Koga, backpack), 0, Bank, 0,0,0);
    WaitN(1000);
    MoveItem(FindType(Feather, backpack), 0, Bank, 0,0,0);    
  end;
  
procedure GetBintAndKnife;
  begin
    NewMoveXY(BankX, BankY, true, 0, true);
    WaitN(1000);
    UOSay('Bank Guards');
    FindType(Bint, backpack);
    if (FindQuantity() < 10) then
      begin
        WaitN(1000);
        MoveItem(FindType(Bint, Bank), 30, backpack, 0,0,0);
      end;
    if not (GetType(ObjAtLayer(RhandLayer)) = knife) or not (GetType(FindType(knife, backpack)) = knife) then
      begin
        WaitN(1000);
        MoveItem(FindType(knife, Bank), 1, backpack, 0,0,0);
      end;
    end;                                          

begin
  Init;
  
  while not Dead do
    begin
      for i := 0 to 8 do
        begin
          if Weight > 200 then Unload;         
          NewMoveXY(Tochka[i].x, Tochka[i].y, true, 0, true);
          tmpRes := FindGivotinky;
          if (tmpRes = 1) then          
            begin
              Lore_Hearding;                            
              Equip(RhandLayer, FindType(knife, backpack));    
              FinishHim;
              WaitN(1000);
              CarveAndLoot;
              WaitN(1000);
            end;
          if(tmpRes = 2) then
            begin
              WaitN(1000);
              Lore_Hearding
              WaitN(1000);
            end;          
        end;
    end; 
end.
За этот скрипт было получено 20 сроков =) Аккуратней "в полевых условиях". Смысл такой, что он и анимал лор + херду качает пока собирает кожу. Херд секция сделана для уменьшения "холостого хода". Выгрузка в банк и т.д. присутствует.
vengeance
Posts: 5
Joined: 10.06.2013 10:39

Re: Убивание коров и лут +резка кожи

Post by vengeance »

Всем привет! Ребята а не добавите ли сюда реколы с добором регов выгрузку кожи мяса и шерсти? А ну и стрижку овец))))
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Убивание коров и лут +резка кожи

Post by drabadan »

vengeance wrote:Всем привет! Ребята а не добавите ли сюда реколы с добором регов выгрузку кожи мяса и шерсти? А ну и стрижку овец))))
так это совсем другой скрипт =). Реколы, а чо к банку не бегать? Проще и дешевле...
Sorme.it
Neophyte
Neophyte
Posts: 46
Joined: 24.05.2013 9:02

Re: Убивание коров и лут +резка кожи

Post by Sorme.it »

не видит труп на земле =)
Post Reply