Jump to content

Lineage 2


blacksmithy + armslore


  • You cannot reply to this topic
5 replies to this topic

#1
80aX

80aX

    Охотник на Драконов

  • Пользователи
  • PipPipPipPipPip
  • 172 posts
  • Location:Hawaii

Переписал скрипт который выложен на вики, чтоб не тупил по долгу, а нонстопом с минимальными задержками ковал/переплавлял пока есть металл в паке и параллельно качал лор.

 

х3 насколько он корректный, но работает уже пол дня без проблем. Было бы интересно послушать мнение опытного скриптера.

program bs_smelt_armslore;
{$Include 'all.inc'}

const
Ingots = $1BF2;       // тип руды
IngotsColor = $054E;  // цвет руды
Hammer = $13E3;       // тип молототка
TongsType = $0FBB;    // тип тонг
ForgeObj = $439729E3; // id плавильни

var
t, i: integer;
Ctime: TDateTime;

Procedure CheckQuantity;
begin
FindTypeEx(Ingots,IngotsColor,backpack,false);
AddToSystemJournal('Ingots left: '+IntToStr(FindFullQuantity));
if (FindFullQuantity < 50) then
    begin
    repeat
        if TargetPresent then CancelTarget;
        WaitTargetObject(FindType($0F51,backpack));
        UseSkill('Arms Lore');
        Wait(10000);
    until (GetQuantity(FindType(Ingots,backpack)) > 50);
    end;
end;

procedure ArmsLore;
begin
    if TargetPresent then CancelTarget;
    WaitTargetObject(FindType($0F51,backpack));
    Wait(100);
    UseSkill('Arms Lore');
    Wait(100);
end;

Procedure gorget;
begin
    CancelMenu;
    Waitmenu('to make', 'Armor');
    Waitmenu('kind', 'Platemail');
    Waitmenu('to make', 'Gorget');
    UseType(hammer,$FFFF);
    FindTypeEX(Ingots,IngotsColor,backpack,false);
    WaitTargetObject(FindItem);
end;

Procedure gloves;
begin
    CancelMenu;
    Waitmenu('to make', 'Armor');
    Waitmenu('kind', 'Platemail');
    Waitmenu('to make', 'Gloves');
    UseType(hammer,$FFFF);
    FindTypeEX(Ingots,IngotsColor,backpack,false);
    WaitTargetObject(FindItem);
end;

Procedure helm;
begin
    CancelMenu;
    Waitmenu('to make', 'Armor');
    Waitmenu('kind', 'Helm');
    Waitmenu('to make', 'Plate');
    UseType(hammer,$FFFF);
    FindTypeEX(Ingots,IngotsColor,backpack,false);
    WaitTargetObject(FindItem);
end;

Procedure arms;
begin
    CancelMenu;
    Waitmenu('to make', 'Armor');
    Waitmenu('kind', 'Platemail');
    Waitmenu('to make', 'Arms');
    UseType(hammer,$FFFF);
    FindTypeEX(Ingots,IngotsColor,backpack,false);
    WaitTargetObject(FindItem);
end;

Procedure legs;
begin
    CancelMenu;
    Waitmenu('to make', 'Armor');
    Waitmenu('kind', 'Platemail');
    Waitmenu('to make', 'Legs');
    UseType(hammer,$FFFF);
    FindTypeEX(Ingots,IngotsColor,backpack,false);
    WaitTargetObject(FindItem);
end;

Procedure breastplate;
begin
    CancelMenu;
    Waitmenu('to make', 'Armor');
    Waitmenu('kind', 'Platemail');
    Waitmenu('to make', 'Brea');
    UseType(hammer,$FFFF);
    FindTypeEX(Ingots,IngotsColor,backpack,false);
    WaitTargetObject(FindItem);
end;

procedure CheckHungry;
begin
i := i + 1;
if i > 100 then
    begin
        Hungry(1, backpack);
        Wait(1000);
        i := 0;
    end;
end;

procedure Resmelt(ItemType: Word);

var
k: integer;
ItemsToSmelt: Cardinal;

begin
FindType(ItemType,Backpack);
while (FindCount > 0) do
    begin
        k := 0;
        CheckSave;
        ClearJournal;
        CheckTargetError(2,2);
        if TargetPresent then CancelTarget;
        Ctime := Now;
        ItemsToSmelt := FindType(ItemType,Backpack);
        WaitTargetObject(ItemsToSmelt);
        repeat
            k := k + 1;
            UseObject(FindType(TongsType,Backpack));
            Wait(1000);
        until (InJournalBetweenTimes('wish to smelt|has to be',Ctime,Now)<>-1) or (k > 10);
        WaitTargetObject(ForgeObj);
        repeat
            k := k + 1;
            Wait(1000);
        until (InJournalBetweenTimes('You turned|item has to|melted down!',Ctime,Now)<>-1) or (k > 100);
        FindType(ItemType,Backpack);
    end;
end;

procedure AddItemToContainer(Obj, Cont: Cardinal);
begin
if (Cont = backpack) and (GetQuantity(Obj) = 1) then
    begin
        Resmelt(GetType(Obj));
    end;
end;


Begin
i := 0;
SetEventProc(evAddItemToContainer,'AddItemToContainer');
while not Dead and Connected do
    begin
        ArmsLore;
        CheckSave;
        CheckHungry;
        CheckQuantity;
        for t := 0 to 2 do
        begin
            breastplate; // breastplate, legs, arms, helm, gloves, gorget
            Wait(5000);
        end;
    end;
End.

Edited by 80aX, 26 December 2016 - 01:48 PM.


#2
Whelp

Whelp

    Путешественник

  • Пользователи
  • PipPip
  • 16 posts
  • Location:Череповец

Эхх... А у меня он висит на выборе вещи изготовления ((



#3
80aX

80aX

    Охотник на Драконов

  • Пользователи
  • PipPipPipPipPip
  • 172 posts
  • Location:Hawaii

Эхх... А у меня он висит на выборе вещи изготовления ((

 

хм. я уже дня 3 на нём стою, всё ок. Ты выбрал что будет ковать? 

Вот тут внизу скрипта:

arms; // breastplate, legs, arms, helm, gloves, gorget

Edited by 80aX, 18 November 2016 - 11:50 AM.


#4
долби

долби

    Вождь Зулу

  • Пользователи
  • PipPipPipPipPipPipPip
  • 596 posts

Лучше допиши 7 строчек и сделай чтобы он по количеству скила сам делал. Т.е. 50 скила- хелм, 60-перчатки, 70-ноги, 80-плеиты. :)



#5
bachukaster

bachukaster

    Вождь Зулу

  • Пользователи
  • PipPipPipPipPipPipPip
  • 700 posts
  • Location:Moscow
Да, дельный совет)

#6
80aX

80aX

    Охотник на Драконов

  • Пользователи
  • PipPipPipPipPip
  • 172 posts
  • Location:Hawaii

Лучше допиши 7 строчек и сделай чтобы он по количеству скила сам делал. Т.е. 50 скила- хелм, 60-перчатки, 70-ноги, 80-плеиты. :)

 

Так то это легко сделать. Но непонятно как для цветной руды указывать эти пороги и не особенно хочется в этом разбираться)







0 user(s) are reading this topic

members, guests, anonymous users