Скрипты для Stealth и Injection под ФЛ.

Тема в разделе "Вопросы новичков/Young player questions.", создана пользователем SnifeR iz da boo, 19 мар 2011.

  1. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    Привет. Как и обещал, выкладываю парочку простеньких скриптов. Тем, кто не знаком со стелсом будет сложно разобраться, подробных инструкций писать не буду, но если знакомы с перенастройкой чужих скриптов под себя, то проблем не составит.

    Stealth:

    Начну с парочки необходимых инклюдов (переделанный чужой чеклаг и мой гетнеймфромклилок).

    all.inc
    PHP:
    procedure CheckLag
    var 
    starttime TDateTime
    begin 
       starttime 
    := Now
       
    ClickOnObject(backpack); 
       
    repeat 
          wait
    (50); 
       
    until (InJournalBetweenTimes('backpack'starttimeNow)<>-1); 
    end;

    function 
    GetNameFromCliloc(ID Cardinal) : String;
    var
      
    TStringList;
    begin
        f 
    := TStringList.Create;
        
    StrBreakApart(GetCliloc(ID),' | ',f);
        
    result := f.strings[0];
    end;
    Teea Reagents Autosell v1:
    PHP:
    Program Autosell;

    ////////Пример скрипта авто-продажи на примере скроллов by Teea, v0.1////////
    /////////////////////////////////////////////////////////////////////////////
    ///////////////////////////Краткая инструкция////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////
    // Скрипт пытается продать скроллы методом тыка в каждого вендора,
    //которые указаны в базе, при этом облетая меджикшопы по рунбуке,
    //прописанной в ReagentRuneBook. Скрипт сырой, написан как пример
    //для тех, кому интересно понять принцип автоматической скупки и
    //продажи (скрипты Autobuy и Autosell соответственно).

    //Я не знаю сколько тут возможно продать за один раз, поэтому
    //для теста и примера константа Kolvo равна 1 (т.е. будет продаваться
    //по 1 скроллу за одно обращение к вендору).

    //Изначально скрипт проверяет наличие скроллов в сундуке (Sunduk),
    //при общем количестве всех скроллов больше 10 (StartLimit) - начинает продажу.
    //Летит по порядку по рунам в рунбуке (ReagentRuneBook), которые можно сверить с именами нпц, описанными ниже:

    //Vesper 1: Juliette
    //Vesper 2: Sheba, Taipa
    //Vesper 3: Taite, Zuleika
    //Britain 1: Chimlis, Asia
    //Britain 2: Stesha, Zola
    //Britain 3: Ruben, Ares
    //Skara Brae 1: Curran, Ivar
    //Skara Brae 2: Silas, Iain
    //Papua 1: Morton, Zorn
    //Papua 2: Golda, Damen
    //Trinsic: Filmore, Allyn
    //Moonglow 1: Deana, Kin
    //Moonglow 2: Brodny, Radinka
    //Moonglow 3: Elmer, Mackenzie
    //Delucia: Maryann, Arella
    //Magincia: Ohanna, Latonia

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

    //Добор скроллов на рекол осуществляется из сундука (Sunduk). Кому будет интересно - тот сам прикрутит
    //покупку регов на рекол прямо на месте у вендоров.


    const
    ////////Настройки:
        
    Kolvo 1;                // Сколько скроллов одного типа продаем за 1 раз?
        
    ReagentRuneBook = $40216CB8;        // ID Рунбуки в паке с рунами к вендорам.
        
    RecallkaRuneBook = $4026D5C8;        // ID Рунбуки или руны в паке, реколл по которой ведет в реколку.
        
    Sunduk = $400A3A32;            // ID Сундука в реколке, в котором лежат скроллы и куда скидывать гп.
        
    StartLimit 5;            // Сколько должно скопиться скроллов в сундуке, чтобы начать их продажу.
        
    HowMuchToSell 5;            // Сколько берем скроллов в пак для дальнейшей продажи.

    ////////Константы, которые изменять не нужно:
        
    RuneBookShift 5;        //6 * n + RuneBookShift

    var
        
    Scrolls : array [0..63of Cardinal;
        
    NPC1 : array [0..2of Cardinal;    // Vesper 1
        
    NPC2 : array [0..2of Cardinal;    // Vesper 2
        
    NPC3 : array [0..2of Cardinal;    // Vesper 3
        
    NPC4 : array [0..2of Cardinal;    // Britain 1
        
    NPC5 : array [0..2of Cardinal;    // Britain 2
        
    NPC6 : array [0..2of Cardinal;    // Britain 3
        
    NPC7 : array [0..2of Cardinal;    // Skara Brae 1
        
    NPC8 : array [0..2of Cardinal;    // Skara Brae 2
        
    NPC9 : array [0..2of Cardinal;    // Papua 1
        
    NPC10 : array [0..2of Cardinal;    // Papua 2
        
    NPC11 : array [0..2of Cardinal;    // Trinsic
        
    NPC12 : array [0..2of Cardinal;    // Moonglow 1
        
    NPC13 : array [0..2of Cardinal;    // Moonglow 2
        
    NPC14 : array [0..2of Cardinal;    // Moonglow 3
        
    NPC15 : array [0..2of Cardinal;    // Delucia
        
    NPC16 : array [0..2of Cardinal;    // Magincia

        
    iamyXmyYinteger;

        
    NPCToBuy Cardinal;
        
    ScrollsLeft Integer;
        
    Terminated Boolean;

    procedure CheckLag
    var 
    starttime TDateTime
    begin 
       starttime 
    := Now
       
    ClickOnObject(backpack); 
       
    repeat 
          wait
    (50); 
       
    until (InJournalBetweenTimes('backpack'starttimeNow)<>-1); 
    end;

    procedure put(itemtype Cardinalcont Cardinal);
    begin
        
    while count(itemtype) > do begin
            
    if Dead then Exit;
            
    MoveItem(FindType(itemtype,backpack),0,cont,0,0,0);
            
    wait(500);
        
    end;
    end;

    procedure init;
    begin
        SetEventProc
    (evItemInfo'');
        
    SetEventProc(evDrawObject'');
        
    SetEventProc(evDrawGamePlayer'');
        
    SetEventProc(evUpdateChar'');
        
    SetEventProc(evSpeech'');
        
    SetEventProc(evUnicodeSpeech'');
        
    SetEventProc(evICQDisconnect''); 
        
    SetEventProc(evICQError''); 
        
    SetEventProc(evICQIncomingText'');
        
    NPC1[1] := $0000A65A//Juliette
        
    NPC1[2] := $0000A272//

        
    NPC2[1] := $00000942//Sheba
        
    NPC2[2] := $00000B3C//Taipa

        
    NPC3[1] := $0000A273//Taite
        
    NPC3[2] := $0000A65C//Zuleika

        
    NPC4[1] := $0002026C//Chimlis
        
    NPC4[2] := $000204FC//Asia

        
    NPC5[1] := $0001FFBC//Stesha
        
    NPC5[2] := $0001FFBA//Zola

        
    NPC6[1] := $00020932//Ruben
        
    NPC6[2] := $0002074F//Ares

        
    NPC7[1] := $000004D7//Curran
        
    NPC7[2] := $00000433//Ivar

        
    NPC8[1] := $00000CBB//Silas
        
    NPC8[2] := $000004C9//Iain

        
    NPC9[1] := $000174F2//Morton
        
    NPC9[2] := $000174F4//Zorn

        
    NPC10[1] := $0000A91B//Golda
        
    NPC10[2] := $0000A10D//Damen

        
    NPC11[1] := $00000A66//Filmore
        
    NPC11[2] := $00000619//Allyn

        
    NPC12[1] := $000016C9//Deana
        
    NPC12[2] := $000008E7//Kin

        
    NPC13[1] := $000012B9//Brodny
        
    NPC13[2] := $000018EA//Radinka

        
    NPC14[1] := $00000A34//Elmer
        
    NPC14[2] := $000018EC//Mackenzie

        
    NPC15[1] := $0000A32E//Maryann
        
    NPC15[2] := $0000A8A7//Arella

        
    NPC16[1] := $00001524//Ohanna
        
    NPC16[2] := $00000E58//Latonia
        
        
    Scrolls[0] := $1F2E;    //Clumsy
        
    Scrolls[1] := $1F2F;    //Create Food
        
    Scrolls[2] := $1F30;    //Feeblemind
        
    Scrolls[3] := $1F31;    //Heal
        
    Scrolls[4] := $1F32;    //Magic Arrow
        
    Scrolls[5] := $1F33;    //Night Sight
        
    Scrolls[6] := $1F2D;    //Reactive Armor
        
    Scrolls[7] := $1F34;    //Weaken
        
    Scrolls[8] := $1F35;    //Agility
        
    Scrolls[9] := $1F36;    //Cunning
        
    Scrolls[10] := $1F37;    //Cure
        
    Scrolls[11] := $1F38;    //Harm
        
    Scrolls[12] := $1F39;    //Magic Trap
        
    Scrolls[13] := $1F3A;    //Magic Untrap
        
    Scrolls[14] := $1F3B;    //Protection
        
    Scrolls[15] := $1F3C;    //Strength
        
    Scrolls[16] := $1F3D;    //Bless
        
    Scrolls[17] := $1F3E;    //Fireball
        
    Scrolls[18] := $1F3F;    //Magic Lock
        
    Scrolls[19] := $1F40;    //Poison
        
    Scrolls[20] := $1F41;    //Telekinesis
        
    Scrolls[21] := $1F42;    //Teleport
        
    Scrolls[22] := $1F43;    //Unlock
        
    Scrolls[23] := $1F44;    //Wall of Stone
        
    Scrolls[24] := $1F45;    //Arch Cure
        
    Scrolls[25] := $1F46;    //Arch Protection
        
    Scrolls[26] := $1F47;    //Curse
        
    Scrolls[27] := $1F48;    //Fire Field
        
    Scrolls[28] := $1F49;    //Greater Heal
        
    Scrolls[29] := $1F4A;    //Lighting
        
    Scrolls[30] := $1F4B;    //Mana Drain
        
    Scrolls[31] := $1F4C;    //Recall
        
    Scrolls[32] := $1F4D;    //Blade Spirits
        
    Scrolls[33] := $1F4E;    //Dispel Field
        
    Scrolls[34] := $1F4F;    //Incognito
        
    Scrolls[35] := $1F50;    //Magic Reflection
        
    Scrolls[36] := $1F51;    //Mind Blast
        
    Scrolls[37] := $1F52;    //Paralyze
        
    Scrolls[38] := $1F53;    //Poison Field
        
    Scrolls[39] := $1F54;    //Summ. Creature
        
    Scrolls[40] := $1F55;    //Dispel
        
    Scrolls[41] := $1F56;    //Energy Bolt
        
    Scrolls[42] := $1F57;    //Explosion
        
    Scrolls[43] := $1F58;    //Invisibility
        
    Scrolls[44] := $1F59;    //Mark
        
    Scrolls[45] := $1F5A;    //Mass Curse
        
    Scrolls[46] := $1F5B;    //Paralyze Field
        
    Scrolls[47] := $1F5C;    //Reveal
        
    Scrolls[48] := $1F5D;    //Chain Lighting
        
    Scrolls[49] := $1F5E;    //Energy Field
        
    Scrolls[50] := $1F5F;    //Flame Strike
        
    Scrolls[51] := $1F60;    //Gate Travel
        
    Scrolls[52] := $1F61;    //Mana Vampire
        
    Scrolls[53] := $1F62;    //Mass Dispel
        
    Scrolls[54] := $1F63;    //Meteor Swarm
        
    Scrolls[55] := $1F64;    //Polymorph
        
    Scrolls[56] := $1F65;    //Earthquake
        
    Scrolls[57] := $1F66;    //Energy Vortex
        
    Scrolls[58] := $1F67;    //Resurrection
        
    Scrolls[59] := $1F68;    //Air Elemental
        
    Scrolls[60] := $1F69;    //Summon Daemon
        
    Scrolls[61] := $1F6A;    //Earth Elemental
        
    Scrolls[62] := $1F6B;    //Fire Elemental
        
    Scrolls[63] := $1F6C;    //Water Elemental

        
    SetAutoSellDelay(0);
    end;

    function 
    RecallRune(RuneBookCardinalRuneByte):Boolean;
    var 
        
    CounterByte
        
    XYWord
    begin 
        Result 
    := False
        
    := GetX(Self); 
        
    := GetY(Self); 
        while 
    Isgump do CloseSimpleGump(0); 
        if 
    Dead or not Connected then Exit; 
        
    UseObject(RuneBook); 
        
    CheckLag
        
    Counter := 5;
        while 
    Counter do begin 
            
    if IsGump then Break; 
            
    CheckLag
            
    Counter := Counter 1
        
    end
        if 
    IsGump then begin 
            
    if NumGumpButton(0Rune RuneBookShiftthen begin 
                CheckLag

                
    Wait(3000); 
                
    CheckLag
                
    Result := (<> GetX(Self)) or (<> GetY(Self)); 
            
    end else Result := False
        
    end else Result := False
    end;


    procedure CheckHP;
    begin
        
    if HP < (MaxHP-10then begin
            UOSay
    ('guards');
            
    wait(1500);
        
    end;
    end;


    procedure Discharge;
    begin
        put
    ($0EED,Sunduk);
    end;

    procedure GetReagents;
    var
      
    ReagentDiff Integer;
    begin
        
    if Dead then Exit;
        
    UseObject(Sunduk);
        
    checklag;
        
    wait(500);
        
    FindDistance:=2;
        
    UseObject(FindType($0E42,Ground)); // $0E42 - тип сундука. Просто дополнительная открывалка другим способом на всякий случай.
        
    while gettype(Sunduk) = do begin
            UseObject
    (Sunduk);
            
    wait(500);
        
    end;
        
    checklag;
        
    wait(800);
        if (
    count(BP) < 20then begin
            ReagentDiff 
    := 20 count(BP);
            
    MoveItem(FindType(BP,Sunduk),ReagentDiff,BackPack,0,0,0);
        
    end;
        
    checklag;
        
    wait(500);
        if (
    count(BM) < 20then begin
            ReagentDiff 
    := 20 count(BM);
            
    MoveItem(FindType(BM,Sunduk),ReagentDiff,BackPack,0,0,0);
        
    end;
        
    checklag;
        
    wait(500);
        if (
    count(MR) < 20then begin
            ReagentDiff 
    := 20 count(MR);
            
    MoveItem(FindType(MR,Sunduk),ReagentDiff,BackPack,0,0,0);
        
    end;
        
    checklag;
        
    wait(500);
    end;

    procedure GetScrolls;
    var
      
    HowMuchWeGotSunduk,HowMuchWeGotBackPack Integer;
    begin
        
    if Dead then Exit;
        
    ScrollsLeft := 0;
        
    HowMuchWeGotSunduk := 0;
        
    HowMuchWeGotBackPack := 0;
        for 
    := 0 to 63 do begin
            FindType
    (Scrolls[j], Sunduk);
            
    HowMuchWeGotSunduk := HowMuchWeGotSunduk FindFullQuantity;
        
    end;
        if 
    HowMuchWeGotSunduk StartLimit then begin
            
    while HowMuchWeGotBackPack HowMuchToSell do begin
                
    for := 0 to 63 do begin
                    FindType
    (Scrolls[j],Sunduk);
                    if 
    FindFullQuantity 0 then begin
                        MoveItem
    (Finditem,HowMuchToSell,BackPack,0,0,0);
                        
    checklag;
                        
    wait(500);
                    
    end;
                    
    FindType(Scrolls[j],backpack);
                    
    HowMuchWeGotBackPack := HowMuchWeGotBackPack FindFullQuantity;
                    if 
    HowMuchWeGotBackPack HowMuchToSell then break;
                
    end;
            
    end;
        
    end;
    end;


    ////////Основа:

    begin
        init
    ;

          while 
    not Terminated do begin
        GetReagents
    ;
        
    Discharge;
        
    // Ждем пока хп не отрегенится. Кому надо - встройте сюда любой авто-хил.
        
    while HP < (MaxHP -10) do wait(500);

        
    GetScrolls;    

        
    ScrollsLeft := 0;
        for 
    := 0 to 63 do begin
            FindType
    (Scrolls[j], backpack);
            
    ScrollsLeft := ScrollsLeft FindFullQuantity;
        
    end;
        
        if 
    ScrollsLeft 0 then begin
            
    for := 1 to 16 do begin
                myX 
    := GetX(self);
                
    myY := GetY(self);
                while 
    GetX(self) = myX do begin
                    
    while Mana 11 do begin
                        CheckHP
    ;
                        
    UseSkill('Meditation');
                        
    wait(1000);
                    
    end;
                    
    CheckHP;
                    
    RecallRune(ReagentRuneBook,i-1);
                
    end;
                for 
    := 1 to 2 do begin
                    
    case i of
                    1 
    :
                        
    begin
                        NPCToBuy 
    := NPC1[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC2[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC3[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC4[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC5[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC6[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC7[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC8[a];
                        
    end;
                    
    :
                        
    begin
                        NPCToBuy 
    := NPC9[a];
                        
    end;
                    
    10 :
                        
    begin
                        NPCToBuy 
    := NPC10[a];
                        
    end;
                    
    11 :
                        
    begin
                        NPCToBuy 
    := NPC11[a];
                        
    end;
                    
    12 :
                        
    begin
                        NPCToBuy 
    := NPC12[a];
                        
    end;
                    
    13 :
                        
    begin
                        NPCToBuy 
    := NPC13[a];
                        
    end;
                    
    14 :
                        
    begin
                        NPCToBuy 
    := NPC14[a];
                        
    end;
                    
    15 :
                        
    begin
                        NPCToBuy 
    := NPC15[a];
                        
    end;
                    
    16 :
                        
    begin
                        NPCToBuy 
    := NPC16[a];
                        
    end;
                    
    end;
                    
    SetContextMenuHook(NPCToBuy,2);
                    
    ScrollsLeft := 0;
                    
    // Продажа:
                    
    for := 0 to 63 do begin
                        FindType
    (Scrolls[j], backpack);
                        if 
    FindFullQuantity 0 then begin
                            AutoSell
    (Scrolls[j],$0000,Kolvo);
                            
    RequestContextMenu(NPCToBuy);
                            
    CheckLag;
                            
    wait(300);
                            
    AutoSell(Scrolls[j],$0000,0);
                            
    CheckHP;
                        
    end;
                    
    end;
                    
    CheckLag;
                    
    // Подсчет оставшихся:
                    
    for := 0 to 63 do begin
                        FindType
    (Scrolls[j], backpack);
                        
    ScrollsLeft := ScrollsLeft FindFullQuantity;
                    
    end;
                    
    CheckHP;
                    if 
    ScrollsLeft 0 then Break;
                
    end;
                if 
    ScrollsLeft 0 then Break;
            
    end;
            
    myX := GetX(self);
            
    myY := GetY(self);
            while 
    GetX(self) = myX do begin
                
    while Mana 11 do begin
                    CheckHP
    ;
                    
    UseSkill('Meditation');
                    
    wait(1000);
                
    end;
                
    CheckHP;
                
    WaitTargetObject(RecallkaRuneBook);
                
    Cast('Recall');
                
    CheckLag
                
    Wait(3000); 
            
    end;
        
    end else begin
            AddToSystemJournal
    ('## Ждем минуту, т.к. не взяли ниодного скролла.');
            
    wait(60000);
        
    end;
          
    end;
    end.
     
  2. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    Teea Reagents Autobuy v1:
    PHP:
    Program Autobuy;

    {
    $Include 'all.inc'}

    const
        
    BP = $0F7A;
        
    MR = $0F86;
        
    BM = $0F7B;
        
    Blanks = $0E34;
        
    Kolvo 300;
        
    ReagentRuneBook = $40216CB8
        
    RuneBookShift 5//6 * n + RuneBookShift

    var
        
    NPC1 : array [0..2of Cardinal;
        
    NPC2 : array [0..2of Cardinal;
        
    NPC3 : array [0..2of Cardinal;
        
    NPC4 : array [0..2of Cardinal;
        
    NPC5 : array [0..2of Cardinal;
        
    NPC6 : array [0..2of Cardinal;
        
    NPC7 : array [0..2of Cardinal;
        
    NPC8 : array [0..2of Cardinal;
        
    NPC9 : array [0..2of Cardinal;
        
    NPC10 : array [0..2of Cardinal;
        
    NPC11 : array [0..2of Cardinal;
        
    NPC12 : array [0..2of Cardinal;
        
    NPC13 : array [0..2of Cardinal;
        
    NPC14 : array [0..2of Cardinal;
        
    NPC15 : array [0..2of Cardinal;
        
    NPC16 : array [0..2of Cardinal;
        
    NPC17 : array [0..2of Cardinal;
        
        
    iamyXmyY integer;

        
    NPCToBuy Cardinal;

    procedure init;
    begin
        SetEventProc
    (evItemInfo'');
        
    SetEventProc(evDrawObject'');
        
    SetEventProc(evDrawGamePlayer'');
        
    SetEventProc(evUpdateChar'');
        
    SetEventProc(evSpeech'');
        
    SetEventProc(evUnicodeSpeech'');
        
    SetEventProc(evICQDisconnect''); 
        
    SetEventProc(evICQError''); 
        
    SetEventProc(evICQIncomingText'');
        
    NPC1[1] := $0000A65A//Juliette
        
    NPC1[2] := $0000A272//

        
    NPC2[1] := $00000942//Sheba
        
    NPC2[2] := $00000B3C//Taipa

        
    NPC3[1] := $0000A273//Taite
        
    NPC3[2] := $0000A65C//Zuleika

        
    NPC4[1] := $0002026C//Chimlis
        
    NPC4[2] := $000204FC//Asia

        
    NPC5[1] := $0001FFBC//Stesha
        
    NPC5[2] := $0001FFBA//Zola

        
    NPC6[1] := $00020932//Ruben
        
    NPC6[2] := $0002074F//Ares

        
    NPC7[1] := $000004D7//Curran
        
    NPC7[2] := $00000433//Ivar

        
    NPC8[1] := $00000CBB//Silas
        
    NPC8[2] := $000004C9//Iain

        
    NPC9[1] := $000174F2//Morton
        
    NPC9[2] := $000174F4//Zorn

        
    NPC10[1] := $0000A91B//Golda
        
    NPC10[2] := $0000A10D//Damen

        
    NPC11[1] := $00000A66//Filmore
        
    NPC11[2] := $00000619//Allyn

        
    NPC12[1] := $000016C9//Deana
        
    NPC12[2] := $000008E7//Kin

        
    NPC13[1] := $000012B9//Brodny
        
    NPC13[2] := $000018EA//Radinka

        
    NPC14[1] := $00000A34//Elmer
        
    NPC14[2] := $000018EC//Mackenzie

        
    NPC15[1] := $0000A32E//Maryann
        
    NPC15[2] := $0000A8A7//Arella

        
    NPC16[1] := $00001524//Ohanna
        
    NPC16[2] := $00000E58//Latonia

        
    SetAutoBuyDelay(0);
    end;

    function 
    RecallRune(RuneBookCardinalRuneByte):Boolean//New 
    var 
    CounterByte
    XYWord
    begin 
    Result 
    := False
    := GetX(Self); 
    := GetY(Self); 
    while 
    Isgump do CloseSimpleGump(0); 
    if 
    Dead or not Connected then Exit; 
    UseObject(RuneBook); 
    CheckLag
    Counter := 5;
    while 
    Counter do begin 
        
    if IsGump then Break; 
        
    CheckLag
        
    Counter := Counter 1
    end
    if 
    IsGump then begin 
        
    if NumGumpButton(0Rune RuneBookShiftthen begin 
            CheckLag

            
    Wait(3000); 
            
    CheckLag
            
    Result := (<> GetX(Self)) or (<> GetY(Self)); 
        
    end else Result := False
    end else Result := False
    end;

    begin
        init
    ;
        
        for 
    := 1 to 16 do
        
    begin
            myX 
    := GetX(self);
            
    myY := GetY(self);
            while 
    GetX(self) = myX do
            
    begin
                
    while Mana 11 do begin
                    UseSkill
    ('Meditation');
                    
    wait(1000);
                
    end;
                
    //WaitTargetObject(RuneToShop[i]);
                //cast('Recall');
                //wait(3000);
                
    RecallRune(ReagentRuneBook,i-1);
            
    end;
            for 
    := 1 to 2 do
            
    begin
                
    case i of
                1 
    :
                    
    begin
                    NPCToBuy 
    := NPC1[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC2[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC3[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC4[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC5[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC6[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC7[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC8[a];
                    
    end;
                
    :
                    
    begin
                    NPCToBuy 
    := NPC9[a];
                    
    end;
                
    10 :
                    
    begin
                    NPCToBuy 
    := NPC10[a];
                    
    end;
                
    11 :
                    
    begin
                    NPCToBuy 
    := NPC11[a];
                    
    end;
                
    12 :
                    
    begin
                    NPCToBuy 
    := NPC12[a];
                    
    end;
                
    13 :
                    
    begin
                    NPCToBuy 
    := NPC13[a];
                    
    end;
                
    14 :
                    
    begin
                    NPCToBuy 
    := NPC14[a];
                    
    end;
                
    15 :
                    
    begin
                    NPCToBuy 
    := NPC15[a];
                    
    end;
                
    16 :
                    
    begin
                    NPCToBuy 
    := NPC16[a];
                    
    end;
                
    end;
                
    SetContextMenuHook(NPCToBuy,1);
                
    AutoBuy(BP,$0000,Kolvo);
                
    RequestContextMenu(NPCToBuy);
                
    CheckLag;
                
    AutoBuy(BM,$0000,Kolvo);
                
    RequestContextMenu(NPCToBuy);
                
    CheckLag;
                
    AutoBuy(MR,$0000,Kolvo);
                
    RequestContextMenu(NPCToBuy);
                
    CheckLag;
                
    AutoBuy(Blanks,$0000,Kolvo);
                
    RequestContextMenu(NPCToBuy);
                
    CheckLag;
                
    wait(300);
                
    AutoBuy(BM,$0000,0);
                
    AutoBuy(BP,$0000,0);
                
    AutoBuy(MR,$0000,0);
                
    AutoBuy(Blanks,$0000,0);
            
    end;
        
    end;
    end.
     
  3. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    Injection:

    Самодельный рейлрайтер (для записи координат для ламбера и мининга в файл). Работать так:
    1) биндим exec Mark1
    2) летим в шахту.
    3) жмем бинд, создается файл C:\Mining1.dat и туда записываются первые координаты.
    4) потом просто ходим и жмем бинд, чтоб записать в файл новые координаты.

    Почему выложил рейлрайтер? На днях выложу простенький скрипт для обкопки нубомайна, как найду время почистить его от ненужных довесов от полноценного скрипта. Может тогда уже администрация сделает телепорт оттуда персонажей с минингом выше 85 (как это сделано в нубоданже).

    Teea Mining RailWriter v1
    PHP:
    sub Mark1()
        
    RailWrite(1)
    end sub

    sub Mark2
    ()
        
    RailWrite(2)
    end sub

    sub Mark3
    ()
        
    RailWrite(3)
    end sub

    sub Mark4
    ()
        
    RailWrite(4)
    end sub

    sub Mark5
    ()
        
    RailWrite(5)
    end sub

    sub Mark6
    ()
        
    RailWrite(6)
    end sub

    sub Mark7
    ()
        
    RailWrite(7)
    end sub

    sub Mark8
    ()
        
    RailWrite(8)
    end sub

    sub RailWrite
    (ZoneNum
        var 
    TreeCount=0
        
    var f=file("C:\Mining"+str(ZoneNum)+".dat"
        var 
    s=0
        
    if not f.open() then
            f
    .create()
        endif
        while 
    not f.eof() and not fatal error
            s
    =safe call f.ReadLn()
            
    TreeCount=TreeCount+1
        wend
        s
    =safe call f.writeln(str(UO.GetX('self'))+' '+str(UO.GetY('self')))
        
    f.close() 
        
    uo.print('Amount of saved coords: '+str(TreeCount))
    end sub 
     
  4. Rene

    Rene Banned

  5. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    Это не копи-паст и не плагиат.

    Я говорил, что выложу то, что писал с нуля или переделывал под особенности нашего сервера сам. То, что чужое - я об этом написал.

    Кстати автоселл написан по твоему заказу, Рене. Делает то, что ты просил. Настройки ты не уточнял, поэтому как бы это не мои проблемы.


    Игрокам:
    Когда допишу скрипт-вендора и набалуюсь с ним выложу и его тоже. Кстати, вендор не спамящий, поэтому вас другие игроки не будут за глаза матом крыть, как это делают, например, с "вендором" Violetta.
     
  6. Rene

    Rene Banned

    Отсюда: Stealth Client Forum :: View topic - Mining SA

    PHP:
    function RecallRune(RuneBookCardinalRuneByte):Boolean//New 
    var 
    CounterByte
    XYWord
    begin 
    Result 
    := False
    := GetX(Self); 
    := GetY(Self); 
    CheckLag(LagWait); 
    Wait(WaitTime); 
    while 
    Isgump do CloseSimpleGump(0); 
    if 
    Dead or not Connected then Exit; 
    UseObject(RuneBook); 
    CheckLag(LagWait); 
    Counter := WaitCycles
    while 
    Counter do begin 
    if IsGump then Break; 
    Wait(WaitTime); 
    CheckLag(LagWait); 
    Inc(Counter); 
    end
    if 
    IsGump then begin 
    if NumGumpButton(0RuneBookShift Runethen begin 
    CheckLag
    (LagWait); 
    Wait(RecalTime); 
    CheckLag(LagWait); 
    Result := (<> GetX(Self)) or (<> GetY(Self)); 
    end else Result := False
    end else Result := False
    end
    Вариант"с нуля" от Sniffer'а:

    PHP:
    function RecallRune(RuneBookCardinalRuneByte):Boolean//New 
    var 
    CounterByte
    XYWord
    begin 
    Result 
    := False
    := GetX(Self); 
    := GetY(Self); 
    while 
    Isgump do CloseSimpleGump(0); 
    if 
    Dead or not Connected then Exit; 
    UseObject(RuneBook); 
    CheckLag
    Counter := 5
    while 
    Counter do begin 
    if IsGump then Break; 
    CheckLag
    Counter := Counter 1
    end
    if 
    IsGump then begin 
    if NumGumpButton(0Rune RuneBookShiftthen begin 
    CheckLag

    Wait(3000); 
    CheckLag
    Result := (<> GetX(Self)) or (<> GetY(Self)); 
    end else Result := False
    end else Result := False
    end
    Без комментариев. Мой макрос на скупку - 24 строки. А этот - просто монстр.
     
  7. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    Ну забыл я эту функцию в инклюды всунуть ну и что? Что меняет то? Основа скрипта то мной написана. Опять ты всё каверкаешь так, как тебе удобно. Постом выше написано так:
    Так что давай прежде, чем ты будешь тут пытаться меня в чем-то уличить - ты хотя бы глаза откроешь.

    Я рад, что твой макрос то 24 строки, то 27. Вперед, выкладывай в паблик. А то языком все горазды. Толку от твоих слов, если это никому, кроме тебя, пользы не приносит?

    Короче, кому будут нужны рабочие скрипты под ваши задачи и кто будет готов расплатиться игровой валютой - пожалуйста в асю, мою тему не составит труда найти в торговом разделе. Также проконсультирую по вопросам использования инжи и стелса на нашем шарде и помогу, чем смогу любому, кто напишет мне в асю. На след. неделе выложу пару пвп-скриптов для инжи, чтобы опробовать могли те, кто бегает.
     
  8. Grek (Adonis)

    Grek (Adonis) Wizard of Words

    парни извините что вмешиваюсь но много скриптов есть в инете похожих подобныи и тд...

    в вот авто лут.. авто ресс тимейта... и многое интересное... трудно найти и подогнать.. вот этим мериться надо и скидывать.. а не то что можно найти в инете...

    я не скриптер и бегаю на разоре... ПРОТИВ ИНЖЫ ВООБЩЕ... кто бы не говорил что разор не уступает ей...это лишь слова... не видел я не разоре авто-реса. и авто-лута...

    так что я бы ее вообще прикрыл так как данноя прога имеет большое приемущество от стандарта разора!!!
     
  9. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    Тынц. Просто я их у нас пока еще не тестил.
     
  10. Grek (Adonis)

    Grek (Adonis) Wizard of Words

    АВТОЛУТ ОН ВЫЛОЖИТ ИЛИ АВТОРЕСС???

    СОМНИВАЮСЬ Я.....

    А ОСТАЛЬНОЕ НАЙТИ МОЖНО ТАКИМ СПОСОБОМ....

    ПИШЕМ ВСТРОКЕ ГУГЛА ИЛИ ИНОГО ПОДОБНОГО РЕСУРСА..."ПВП СКРИПТЫ ДЛЯ ИНЖЫ" И ВОТ ОНИ ТЕБЕ ... ПОТОМ МЕНЯЕШЬ ФРАЗУ КАК ТЕБЕ НАДО И ОПА ЕЩЕ ЧТО ТО НАШЕЛ И ТАК ТЫ ВЫЙДЕШЬ НА ОЧЕНЬ ПОХОЖЕЕ...
     
  11. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words


    Я себя процитировал. Да, могу выложить и авто-таргет, и авто-рес, и авто-резалку. Авто-лута готового нет, т.к. он везде запрещен и очень быстро палится, поэтому я его не писал, но и это не проблема. Выложу на первое время 1-2 скрипта на выбор.
     
  12. Grek (Adonis)

    Grek (Adonis) Wizard of Words

    мне не надо.. я разор. и лутаю быстрее многих скриптов...
     
  13. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    На нашем сервере есть небольшая защита от фаст-лута: задержка на перемещение предметов. Но как бы все равно авто-лут получается быстрей, т.к. можно лутать самое нужное по типам предметов.
     
  14. macT

    macT Hero Player

    Автолутер+сортировщик. Актуально для ПВМ. Под Injection.
    Кто бы что не говорил, а автолутер даже с задержками получается быстрее, чем руками.
    Как работает:
    Выгребает итемы из списка из последнего открытого контейнера (lastcontainer) в контейнер lootpack (в моём случае мешочек, чтоб в паке не было срача) . Это делает функция LootMeNow() :)

    Функция LootToChest() выгребает всё из контейнера lootpack в Destcontainer ( в моём случае сундук в доме).

    Функция LootForSale () сортирует потроха, лежащие в DestContainer, когда накопилось много, а продать надо и ковыряться лень. :) Всё, что на продажу идёт в lootpack, a то, что продавать не надо сортируется по сумкам, например в банке, либо оставляется лежать в DestContainer.

    PHP:
    sub LootMeNow()
        var 
    forsale 0
        
    var from 'lastcontainer'
        
    var where 'lootpack'
        
    lootSorter(fromwhereforsale)
    end sub

    sub LootForSale
    ()
        var 
    forsale 1
        
    var from 'DestContainer'
        
    var where ''
        
    lootSorter(from,where,forsale)
    end sub

    sub LootToChest
    ()
        var 
    forsale 0
        
    var from 'lootpack'
        
    var where 'DestContainer'
        
    lootSorter(from,where,forsale)
    end sub


    sub lootSorter
    (from,where,forsale)
    var 
    i,j
        Dim cont
    [4]
        
    cont[0] = 'lootpack'
        
    cont[1] = 'DestContainer'
        
    cont[2] = '0x400390C4' #банк для камушков
        
    cont[3] = '0x400FF7F0' #реги банк



        
    Dim loot[200]
        
        
    loot[0] = '0x1F36 0' #cunning
        
    loot[1] = '0x1F44 1' #wall of stone
        
    loot[2] = '0x1F3C 0' #strenght
        
    loot[3] = '0x1F2D 0' #reactive
        
    loot[4] = '0x1F46 0' #arch
        
    loot[5] = '0x1F3F 0' #lock
        
    loot[6] = '0x1F3D 0' #bless
        
    loot[7] = '0x1F3B 0' #protect
        
    loot[8] = '0x1F38 0' #harm
        
    loot[9] = '0x1F48 0' #firefield
        
    loot[10] = '0x1F40 0' #poison
        
    loot[11] = '0x1F31 0' #heal
        
    loot[12] = '0x1F35 0' #agility
        
    loot[13] = '0x1F2F 0' #create food
        
    loot[14] = '0x1F43 0' #unlock
        
    loot[15] = '0x1F2D 0' #reactive armor
        
    loot[16] = '0x1F42 0' #teleport
        
    loot[17] = '0x1F30 0' #feeblimind
        
    loot[18] = '0x1F2E 0' #clumsy
        
    loot[19] = '0x1F4D 1' #blade spirits
        
    loot[20] = '0x1F4E 0' #dispel field
        
    loot[21] = '0x1F4F 0' #incognito
        
    loot[22] = '0x1F50 1' #magic reflection
        
    loot[23] = '0x1F51 0' #mind blast
        
    loot[24] = '0x1F52 1' #paralyze
        
    loot[25] = '0x1F53 0' #poison field
        
    loot[26] = '0x1F54 0' #summon creature  
        
    loot[27] = '0x1F55 0' #dispel
        
    loot[28] = '0x1F4A 1' #light
        
    loot[29] = '0x1F3A 0' #untrap
        
    loot[30] = '0x1F45 0' #arch cure
        
    loot[31] = '0x1F32 0' #magic arrow
        
    loot[32] = '0x1F33 0' #night sight
        
    loot[33] = '0x1F4C 1' #recall
        
    loot[34] = '0x1F37 0' #cure
        
    loot[35] = '0x1F3E 0' #fireball
        
    loot[36] = '0x1F4B 0' #mana drain
        
    loot[37] = '0x1F34 0' #weaken
        
    loot[38] = '0x1F49 1' #GH
        
    loot[39] = '0x1F47 0' #curse
        
    loot[40] = '0x1F41 0' #telekinesis
        
    loot[41] = '0x1F39 0' #magic trap
        
    loot[42] = '0x1079 1' #кожа обычная
        
    loot[43] = '0x0F8D 3' #ss
        
    loot[44] = '0x1BD1 1' #перья
        
    loot[45] = '0x0F16 2' #аметист
        
    loot[46] = '0x0F25 2' #пис оф амбер
        
    loot[47] = '0x0F15 2' #цитрин
        
    loot[48] = '0x0F26 2' #даймонд
        
    loot[49] = '0x0F21 2' #стар сапфир
        
    loot[50] = '0x0F19 2' #sapphire
        
    loot[51] = '0x0F10 2' #emerland
        
    loot[52] = '0x0F13 2' #ruby
        
    loot[53] = '0x0F2D 2' #tourmaline
        
    loot[54] = '0x0F7A 3' #bp
        
    loot[55] = '0x0F7B 3' #bm
        
    loot[56] = '0x0F84 3' #ga
        
    loot[57] = '0x0F85 3' #gs
        
    loot[58] = '0x0F86 3' #mr
        
    loot[59] = '0x0F88 3' #ns
        
    loot[60] = '0x0F8C 3' #sa
        
    loot[61] = '0x0EED 1' #gp
        
    loot[62] = '0x14EC 1' #map
        
    loot[63] = '0x0F8E 1' #nox crystall
        
    loot[64] = '0x1F5C 0' #reveal
        
    loot[65] = '0x1F56 0' #energy bolt
        
    loot[66] = '0x1F69 0' #summon daemon
        
    loot[67] = '0x1F5E 0' #energy field
        
    loot[68] = '0x1F58 0' #invisibility
        
    loot[69] = '0x1F5C 0' #reveal
        
    loot[70] = '0x0F8F 1' #grave dust
        
    loot[71] = '0x1F5F 1' #FS
        
    loot[72] = '0x1F5B 0' #paralyze sield
        
    loot[73] = '0x1F59 0' #mark
        
    loot[74] = '0x1F6B 0' #fire elem
        
    loot[75] = '0x108A 1' #ring
        
    loot[76] = '0x3193 1' #tourquose
        
    loot[77] = '0x3192 1' #dark sapphire
        
    loot[78] = '0x1F5D 0' #chain light
        
    loot[79] = '0x1F62 0' #mass dispel
        
    loot[80] = '0x1F64 0' #polymorph
        
    loot[81] = '0x0F78 1' #batwings
        
    loot[82] = '0x1F60 0' #gatetravel
        
    loot[83] = '0x1F66 0' #vortex
        
    loot[84] = '0x1F63 0' #meteor
        
    loot[85] = '0x1F67 0' #ress
        
    loot[86] = '0x1F6A 0' #earth elem
        
    loot[87] = '0x1F61 0' #mana vampire
        
    loot[88] = '0x1F5A 0' #mass curse
        
    loot[89] = '0x1F65 0' #earthquake
        
    loot[90] = '0x1F6C 0' #water elem
        
    loot[91] = '0x1F68 0' #air elem
        
    loot[92] = '0x1F57 0' #explosion
        
    loot[93] = '0x0F7E 1' #bones
        
    for 0 to 93
            
    if forsale == 1 then
                where 
    cont[val(right(loot[i],1))]    
            endIf
            
    uo.FindType(Left(loot[i],6),'-1',from)
                if 
    not where == from then
                    
    while uo.FindCount('finditem') > 
                        uo
    .MoveItem('finditem','-1'where)
                        
    wait(800)
                        
    uo.FindType(Left(loot[i],6),'-1',from)
                    
    wend
                
    endIf
        
    next
    end sub
     
  15. macT

    macT Hero Player

    Локпикинг под инжу. Для запуска нужно:
    Добавить тип lockpicks - отмычки. (в игре ,addtype lockpicks)
    Добавить объект lpchest - сундук, который будет ломать (в игре ,addobject lpchest)
    Добавить объект keyforchest -ключ, которым ломаемый сундук будем открывать. (,addobject keyforchest)
    PHP:
    uo.FindType('lockpicks','-1','0x402A376B')
    Цифробуквенный ID это ID сундука откуда добирать отмычки.


    PHP:
    sub lockpicking()
     var 
    startlp
         
    while uo.Count('lockpicks') > 0
         startlp 
    uo.Count('lockpicks')
        
    uo.waitTargetObject('lpchest')
        
    uo.UseType('lockpicks')
        
    wait(4000)
            if 
    uo.Count('lockpicks') < startlp then
                wait
    (100)
            else
                
    uo.waitTargetObject('lpchest')
                
    uo.UseObject('keyforchest')
                
    wait(1000)
            endIf
        if 
    uo.Count('lockpicks') < 10 then
            uo
    .FindType('lockpicks','-1','0x402A376B')
            
    uo.MoveItem('finditem','100','backpack')
            
    wait(800)
        
    end if
        
    wend
    end sub
     
  16. SnifeR iz da boo

    SnifeR iz da boo Wizard of Words

    о, а тут экшн пошел я смотрю)
     
  17. Rene

    Rene Banned

    Те кто понимают скрипты инжи, им достаточно кинуть скрипт, те кто не понимают - им нужно описание на лист А4, что, где, куда.
     
  18. macT

    macT Hero Player

    Ну, а тем, кто хоть немного знаком с програмированием достаточно глянуть в мануал.

    Поэтому вот вам мойскрипт для резиста + магери + медитация


    PHP:
    sub resist()
        var 
    i
        dim regs
    [2]
            
    regs[0] = '0x0F8D' #ss
            
    regs[1] = '0x0F8C' #sa

    while not UO.Dead()
    if 
    uo.Mana 40 then
            
    for 0 to 1 
            
    if uo.Count(regs[i]) < 5 then
                uo
    .FindType(regs[i],'-1','DestContainer')
                    if 
    uo.FindCount('finditem') > 0 then
                        uo
    .MoveItem('finditem','500'#количество настроить по вкусу
                        
    wait(700)
                    endIf
            
    next
        
    endIf
        
    uo.waitTargetSelf()
        
    uo.Cast("Flame Strike"#что кастим
        
    wait(4500)
            while 
    uo.Life 90
            repeat
             
    if uo.Count('bandage') < 10 then
                 uo
    .FindType('bandage','-1''DestContainer')
                     if 
    uo.FindCount('finditem') > 0 then
                         uo
    .MoveItem('finditem','500')
                         
    wait(700)
                     else
                         
    uo.Print("Bandag netu vihodim")
                         
    uo.Exec('terminate resist')
                     endIf
             endIf
                
    uo.BandageSelf()
                
    wait(3500)
            
    until uo.Life == 150
            wend
    else
        
    uo.UseSkill("Meditation")
         
    repeat    
             wait
    (100)
         
    until uo.Mana 99
    uo
    .UseObject('shield'#сбиваем медитацию
    endIf
    wend
    end sub
     
  19. Rene

    Rene Banned

    Интересно, а почему ты не используешь переменные чара, как например UO.STR, еще не совсем понял, зачем ждать медитацию до 99, если нужно манны на фсы, то достаточно восстановить до 40, ну или до 80, для двух кастов. Конечно хорошо, когда макрос много сценариев охватывает, но людям, которым нужно прокачать скил достаточно основных действий, без лишних настроек. Скрипты должны быть универсальными, а если и требуется ввести переменную, то желательно объявлять её в начале скрипта.

    Еще один момент, вот такими циклами, как у тебя, инжа загрузает процессор,а это тормозит УО. И если включены сообщения инжекта, то при bandageself в углу пишется, что бинтов нет, не нужно проверять этот итем и искать его у персонажа, инжа это делает сама.

    К примеру вот твой скрипт, но не в виде крокодила: простой, понятный, доступный, работает.

    PHP:
    sub resist()
      
        
    uo.set('quiet','0'#Включаем отображение сообщений инжекта

         
    var count #Системная переменная
         
    var ss '0x0F8D' #Тип итема реагента SS
         
    var sa '0x0F8C' #Тип итема реагента SA
         
      
    while (uo.skillval('Magic Resistance',1)<1000) and (count<>0
      
    #Качаем пока резист не гм и есть реагенты
      
       
    while UO.Life UO.Str #Автохил
         
    uo.bandageself()
         
    sleep(3500)
       
    wend

       
    while uo.Mana 40 #Медитация
        
    uo.useskill('Meditation')
        
    sleep(1000
       
    wend 

       uo
    .findtype(ss)  #Проверяем, есть ли в рюкзаке персонажа реагент ss
       
    if uo.findcount() > 0 then
         count 
    0
       end 
    if
      
       
    uo.findtype(sa#Проверяем, есть ли в рюкзаке персонажа реагент sa 
       
    if uo.findcount() > 0 then
        count 
    0
       end 
    if
       
       
    uo.waittargetself() #Ловушка прицела не себя
       
    uo.cast('Flame Strike'#Каст магии FS
       
    sleep(3000)   

      
    wend 
      
      
    if count == 0 then
       uo
    .msg('Закончились реагенты'#Скажем всем, что закончились реагенты
      
    end if
     
    end sub
     
    Последнее редактирование: 21 мар 2011
  20. macT

    macT Hero Player

    Ну тут на вкус и цвет все фломастеры разные. Тут как бы скрипт был заточен чисто на мои нужды он работал и не претендует на звание скрипт года. Честно сказать не заметил особой потери производительности при использовании скрипта. Что касается переменных, то тут опять же про фломастеры. С медиацией в варианте с фсами можно и не ждать до 99, всё равно часть маны остаётся.

    Если сможешь внести разъяснения почему так, то думаю это будет полезно и мне и остальным, кто пытается освоить инжект.
     

Поделиться этой страницей