Jump to content

nhaka

Members
  • Posts

    11
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by nhaka

  1. 2 hours ago, gorntana said:

                         var item:tl2item;
                begin
    while true do begin
    delay(1000);
    if not inventory.user.byid(49684, item) or (item.count<10000) then begin
    Engine.SetTarget(35453);
    Engine.DlgOpen;
    Engine.DlgSel (3);
    Delay(1000);
    Engine.DlgSel(4);
    Delay(1000);
    Engine.NPCExchange(49684,1);
    Print('OK');
    Delay(36000000);
    end;
    end;
     end.

     

     

    not work  ...... NPCExchange    Why? What wrong? Help mp please

     

    Hi,

     

    1) Added some delay between actions so it will be sure to open and select each option. If they are too much, you can lower them later on to make it faster. Code below;

     

    
    var
    item:tl2item;
    
    begin
    while true do begin
    delay(1000);
    if not inventory.user.byid(49684, item) or (item.count<10000) then begin
    Engine.SetTarget(35453);
    delay(1000);
    Engine.DlgOpen;
    delay(1000);
    Engine.DlgSel (3);
    Delay(1000);
    Engine.DlgSel(4);
    Delay(1000);
    Engine.NPCExchange(49684,1);
    Print('OK');
    Delay(36000000);
    end;
    end;
    end.

     

    2) As I see, this command (Engine.NPCExchange) is for exchange windows like the ones for newbie guide for adventurer weapons (does not work for grocer sell/buy windows). If you are buying from buy windows like grocer NPC, change the command line for this: Engine.NPCTrade(false,[49684, 1]);

     

    3) Double check if this ID (49684) is correct;

     

    4) Last but not least, this script wont work for interlude chronicles (buy/sell from NPC does not work). I've played on GF servers that those commands dont work too.

  2. Hello,

     

    Does anyone know how to detect if char have any skill to learn (by checking the skill list from NPC and comparing to a list of skills ID to be learnt or something like that) and then proceed to learn skills if SP>required for new skill?

     

    I know its possible, but I cant figure out how to identify the new skills from the learn skill list, also not if the SP ammount needed is available (so it doesnt keep on loop if not enough SP).

     

    Atm I'm using something like this:

     

    if user.inrange(143966, 24193, -2120, 150) and (user.classID = 34) and (user.level>=52) then                                
                  begin                                
                  if (SkillList.ByID(144, skill)) and (skill.level<15) then //Weapon                                
                    begin                                
                      Print('Getting skills from 52');                                                          
                      Engine.LearnSkill (223); //Sting        

     

    It works, but I need to write every single skill from every single level for every single class. Plus it does not "confirm" if all skills learned (for instance: SP lower than required or some lag that jumped one skill).

     

    Thanks in advance.

  3. 3 hours ago, adr.bot said:

    1. u should use items by oid

    2. as example u can use engine.waitaction([ladlg], p1,p2) and then check engine.dlgtext example with command "pos"

    3. no idea

    4.  i think this should work

    
    procedure doSoe();
    begin
    // stuff for soe
    end;
    
    var
    	qwe:boolean;
    begin
    	qwe := false;
    	if user.inrange(x,y,z,r) then
    	begin
    		engine.moveto(x,y,z);
    	end;
    	if user.inrange(x,y,z,r) then // at end point
    		qwe := true;
    	if not qwe then
    		dosoe;
    end.

    5. no idea also

     

    TY Adr,

     

    1. I managed how to find OID and I'm posting here if someone need what I made (its to unequip both rings with same ID, just change the ID in the script, you can change it to any kind of item, just need to adapt it):

     

    function UseRingOID(showInfo: boolean = true): integer;
    var
        item: TL2Item;
        i : integer;
        a: integer;
        b: integer;
        ringA: integer;
        ringB: integer;
        
    begin
        for i:=0 to Inventory.User.Count-1 do
        begin
            if (Inventory.User.Items(i).Equipped) then
          begin
             Result := Inventory.User.Items(i).OID;
             if ((Inventory.User.Items(i).ID) = 12337) and not (a=1) then  //here put normal ID you are looking for
             begin
             Delay(555);
             ringA:= (Inventory.User.Items(i).OID);
             a:=1;
             Inventory.user.ByOId(ringA, item);            
             Engine.UseItem(item);          
             end
             else if ((Inventory.User.Items(i).ID) = 12337) and not (b=1) then //here  put normal ID you are looking for
             begin
             Delay(555);
             ringB:= (Inventory.User.Items(i).OID);
             b:=1;
             Inventory.user.ByOId(ringB, item);            
             Engine.UseItem(item);          
             end;
            end;
        end;
     Result := -1;
    end;

     

    2. I dunno if I understand your suggestion  but I managed to identify the window and the text, but I cant make it select the answer with engine.dlgsel nor engine.bypass. Do you know what I need to put in bypass to make this work. Here's the full chat of one of them (but all follow the same structure just changing the numbers). I think it might need some work to use it, because it does not follow the normal bypass dialog:

     

    <html><body>
    Question:<br>Pets are very useful to their owners. Which  of the following is <font color="LEVEL">not</font> an appropriate use of a pet?<br><fstring p1="" p2="" p3="" p4="" p5="">1110004</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110002</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110001</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110003</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110005</fstring></body></html

     

    Or if you have an example with pos to select the answer?

     

    Thanks for the other answers.

  4. Hello adr.bot and everyone,

     

    I have been using adrenalin quite long already, and have been making my own scripts with simple language. Atm I have a few questions from scripting that im facing atm on my own:

     

    1- How to equip different jewels for each slot? For instance, if I use the command below it will equip and unequip the same jewel:

     

            Inventory.user.ById(12325, item); 
            Engine.UseItem(item);
            Inventory.user.ById(12325, item); 
            Engine.UseItem(item); 

     

    I wanna equip one earring on each slot or substitute the earring that is being used in each slot.

     

    2- How to identify the dialog from the NPC and select the correct answer (for instance, get a pet wolf quest, quite similar to anti captcha)? I think its using this code, right?

     

    Engine.dlgtext.contains

    I managed to identify the text, but engine.dlgsel does not work in this specific chat (it works for other NPC). I tried doing bypass like this:

    if engine.dlgtext.contains('useful') then
    begin
    Engine.BypassToServer('1110003');

     

    But it didnt work, here's the full dialog:

     <html><body>
    Question:<br>What is the normal lifespan of a wolf in captivity?<br><fstring p1="" p2="" p3="" p4="" p5="">1110052</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110053</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110054</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110051</fstring><fstring p1="" p2="" p3="" p4="" p5="">1110055</fstring></body></html>

     

     

    3- How is possible to identify if the user has any dyes and which are them with the script?

     

    4- Currently my auto level script sometimes could get stuck (invisible wall in town, a rock, tree or even some lag that might screw it). How can I "check" if the char is doing nothing and use scape or something?

     

    5- My auto level scripts is currently for single char, how can I comunicate with another char in pt and make them follow the same script at the same time (for instance, my script goes to town, rebuff, restock and go back to farming location, but I want the other char in pt do the same at the same time and go back and wait for the rest before farming again). I thought I could manage doing that with party message.

     

    Thanks very much if anyone can help with some of those questions!

  5. Hello,

     

    My question is very simple, I made myself a script to auto buy things from NPC and it works 100% on HIGH FIVE, but now I tried using on GF and it does everything ok, but when it tries to finish buying, it does nothing.

     

    It seems this command isnt working on GF:

     

     



    Engine.NPCTrade(false,[1060, 50]);


     

     

    Can someone help me? I tried with other items and NPC's and it doesnt work.

     

    Do anyone knows a similar command or help me how to make it work on GF?
  6. I'm still getting this error after 3~5 seconds I start botting, it closes game client and appear this box:

     

    error.png

     

    I tryied using compatibility mode, running as administrator, tested with full screen, window mode. I even tested with different kinds of windows display (Classical 98, Windows XP and Windows Vista Standart)

     

    The only difference using the compatibility mode is that I do not get the message, but the client still closes. I think its some kind of client protection.

     

    I read the whole thread and notice that 3~4 guys are getting the same error as me.

     

    Any news about fixing this problem or at least knowing what is causing it?

     

     

    Plus, I manage to make it work in another server, but Im having troubles with the /target stuff, its sending ";" instead of "/" and I already changed my keyboard settings in control panel to english. Where can I change the keyboard setting in Lineage 2?

     

    P.S.: I'm using English US (international) in my control panel settings. Thx.

×
×
  • Create New...