Jump to content

adr.bot

Members
  • Posts

    657
  • Credits

  • Joined

  • Last visited

  • Feedback

    100%

Posts posted by adr.bot

  1. 2 hours ago, rodrigo36999 said:

    I restart the machine and now i can see the error. This is Undeclared identifier "LoadItems" and the script not work if i remove this line the script run correctly. I have the item 57 (adena) and only move 1 but this script not work. I see the guide from offial page and copy the example and not work. could you help my please

     

    image.png.2eda88d46a1cba5c63e2bb2969f10a18.png

    many commands not exist in cracked bot

  2. 2 hours ago, rodrigo36999 said:

    hi i'm new to adrenaline. I'm making a pretty simple script, the adrenaline marks the error line but not the error it has. Please can you help me to know where I can see the error it generates. 

     

    The error is in the line adCtl.LoadItems(TodwhVal,[57]); but the adrenaline not get any error message or I cannot see this error in the application. where can I see the error in the application. Help my please.

     

    image.png.381dc7bf13f339854afdba832ac16dcd.png

    if bot not show error in messages means script have no problems, most likely before there error, u fixed it and red line remains there, if you can start script, then you are good to go

     

    edit: LoadItems array of items should contain "item id, items count", how u write there shouldnt be a red line, but it probably wont work

  3. 10 minutes ago, Demonho said:

    see a quite more easy to implement.

    Tested the unitpacket, this operations os pointers is strange a lot for me, i cant see any logic here kkkkk
     

    
    uses
      SysUtils, PacketUnit;
    
    var
      p1, p2: Pointer;
      Match, Win, Loss, Points: Cardinal;
      i: integer;
      ret: string;
      p : TNetworkPacket;
    begin
      while true do
      begin
       
        if Engine.WaitAction([laSysMsg], p1, p2) = laSysMsg then
        begin
          if Cardinal(p1) = 1987 then
          begin
            p:=TNetworkPacket.Create(p2,46);
            Print(p.ReadS);
            p:=nil;        
          end;
    
          if Cardinal(p1) = 1673 then
          begin
            p:=TNetworkPacket.Create(p2,24);
            Match := p.ReadD;
            Win := p.ReadD;
            Loss := p.ReadD;
            Points := p.ReadD;
            p:=nil;
            print(format('Match: %d; Win: %d; Loss: %d; Points: %d', [Match, Win, Loss, Points]));
          end;      
        end;
      end;
    end.

     

    well i mean to read to see idea how it getting read, and not actually use it.
    anyways to read string (probably, should actually test), i cant tell "Position" number because ur server positions seems odd to me.

    String(PChar(Cardinal(p2) + Position))

     

  4. 28 minutes ago, Demonho said:

    ^^ yeah!!!

    In another case, for relogin purposes i need check if char is online, my idea is send a invalid command to server. If receive the Command not found, char is online.

    i made a test with:
     

    
    
    uses
      SysUtils;
    
    var
      p1, p2: Pointer;
      Match, Win, Loss, Points: Cardinal;
      i: integer;
      ret: string;
    begin
      while true do
      begin
        if Engine.WaitAction([laSysMsg], p1, p2) = laSysMsg then
        begin
          if Cardinal(p1) = 1987 then
          begin
            for i:= 0 to 44 do
            begin
              if i mod 2 <> 0 then Continue;
              ret:=ret+PChar(Cardinal(p2)+i)^;
            end;
          end;
          Print(ret);
        end;
      end;
    end.

    its correct? give me result i am expecting: SYS: Command not found.

    There is a better way to read p2 on this case?

    i would recommend read this https://adrenalinebot.com/en/api/example/packetunit-ready-unit-working-packets-adrenaline-bot because how u read seems not right.
    p2  should contain (in my case MessageID), Size, Type, and values by Type.

    thats why i dont have answer for ur question in this case, because ur system message data seems odd to me xd

    ps. u always can use move and check if u moved.

  5. 25 minutes ago, Demonho said:

    Thanks adr.bot

     

    changed to find the correct values:
     

    
    
    
    
            Match := PCardinal(Cardinal(p2))^;
            Win := PCardinal(Cardinal(p2) + 8)^;
            Loss := PCardinal(Cardinal(p2) + 16)^;
            Points := PCardinal(Cardinal(p2) + 24)^;

    np, but it is really correct values? for example when tested (interlude)
     

    PCardinal(Cardinal(p2))^

    gave me system message ID.

    https://prnt.sc/11c67l2

    • Like 1
  6. uses
      SysUtils;
    
    var
      p1, p2: Pointer;
      Match, Win, Loss, Points: Cardinal;
    begin
      while true do
      begin
        if Engine.WaitAction([laSysMsg], p1, p2) = laSysMsg then
        begin
          if Cardinal(p1) = 1673 then
          begin
            Match := PCardinal(Cardinal(p2) + 12)^;
            Win := PCardinal(Cardinal(p2) + 20)^;
            Loss := PCardinal(Cardinal(p2) + 28)^;
            Points := PCardinal(Cardinal(p2) + 36)^;
            print(format('Match: %d; Win: %d; Loss: %d; Points: %d', [Match, Win, Loss, Points]));
          end;
        end;
      end;
    end.

     

  7. 2 hours ago, chundrik said:

    Thanks for reply.
    This is actually what I was trying to do, but many times my char is just getting stuck in strange corners.
    On another note, another question none related.

    I found a script you posted back in the day wit auto re-login (below).

    For the most part it works, but the server I'm playing in has auto daily restarted but like 60 sec or so.
    when it happen the l2 window get disconnected popup and the script is just not doing any thing.

    I was trying to find a way for it to click enter when its detected, but nothing I did work.
    Could you help with that , or perhaps there is a different approach ?

    Also if im adding a back to spot and rebuff to this below, how do i make sure it works, the original one you posted didnt work like half of the time and i have no clue why.

    
    uses SysUtils;
    
    function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar;  nShowCmd: integer): integer; stdcall;
      external 'Shell32.dll';
     
    function keybd_event(bVk, bScan: byte; dwFlags, dwExtraInfo: integer): integer; stdcall;
      external 'user32.dll';
    
    function ShowWindow(hwnd:cardinal; action:integer):boolean; stdcall;
    external 'user32.dll';
     
    procedure disconnectMonitor;
    const
      login = 'qq';
      password = 'aa';
      gamePath = 'C:\Users\Pc\Desktop\server\Lineage II\system\l2.exe';
    begin
      while engine.Delay(3000) do begin  
        if (Engine.Status = lsOffline) or (Engine.Status = lsOff) then begin
          print('dc');
          Engine.FaceControl(0, false);
          Delay(1000);
          Engine.GameClose;
          Delay(1000);
          ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0);
          Delay(15000);
          enterText(login);
          Engine.UseKey('Tab');
          Delay(300);
          enterText(password);
          Delay(300);
          Engine.UseKey('Enter');
          Delay(2000);
          Engine.UseKey('Enter');
          Delay(2000);
          Engine.UseKey('Enter');
          Delay(2000);
          Engine.UseKey('Enter');
          Delay(10000);
          ShowWindow(engine.gamewindow, 6);
        end;
      end;
    end;
     
    procedure enterText(const text: string);
    var
      i: cardinal;
      upperCase: boolean;
    begin
      for i:= 1 to length(text) do begin
        if isDigit(text[i]) then
          Engine.UseKey(text[i])
        else begin
          upperCase:= text[i] = UpCase(text[i]);
          if upperCase then begin
              keybd_event(20, 0, 1, 0);
              keybd_event(20, 0, 2, 0);
              Engine.UseKey(text[i]);
              delay(10);
              keybd_event(20, 0, 1, 0);
              keybd_event(20, 0, 2, 0);
          end else
            Engine.UseKey(text[i]);
        end;
        Delay(50);
      end;
    end;
     
    function isDigit(ch: char): boolean;
    const
      digits = '013456789';
    var
      i: cardinal;
    begin
      result:= false;
      for i:= 0 to length(digits) do
        if digits[i] = ch then begin
          result:= true;
          exit;
        end;
    end;
    
    
                            
    begin
    
      Script.NewThread(@disconnectMonitor);
    
    end. 

    https://adrenalinebot.com/en/api/adrenaline/Classes/TL2Control#AuthLogin for enter login/passw

    if server have protection most likely winapi keyclicks doesnt work,  then you can try use "Engine.UseKey" https://adrenalinebot.com/en/api/adrenaline/Classes/TL2Control#UseKey

    for disconnect, well if u get disconnect while u trying log in, then at very end of login , u can do check for if u are online, if not close client, and login again.

    if u get disconnect while playing, and bot not shows that u are diconnected, u can try do thread procedure, which would check if u moved/get some specific items in last 60sec or so, if not do any of those, most likely u diconnected and u can close client for login again.

     

    however i dont have any examples of that, but u can try adapt this code https://adrenalinebot.com/en/api/example/checking-if-our-character-is-stuck-in-the-thread for client close if u not moved.

  8. 45 minutes ago, bartun said:

     

    Yeah thanks, but already read it 2 days ago, I am using cracked Adrenaline and I am trying to learn to edit/modify easy scripts just that haha (I don't have the script recorder and i don't have any tool to discover the ByPassToServer)

     

    But no problem, the server for what I need this script is nearly to die so.. no problem..

     

    By the way, lot of thanks!

     

  9. 12 hours ago, bartun said:

     

     

    At this moment, I am using Events tab, i put: Adena>999.999.999 alarm. I can make when adena>999.999.999 write in chat .bank, but then I have to click in "Deposit", and no option in Events tab.

     

     

    Thank you so much!! Btw, not working. I mean, If i use only the script yes, char moves, slowly but he moves himself, but I am looking (and I don't know if its possible) moving between skills, something like "kiting"

     

     

     

    https://prnt.sc/s6plu5

  10. 2 hours ago, bartun said:

    Another thing I would love, is to change 1kkk adena for a goldbar, I have to write .bank and appears a windows that I have to click in "Deposit" button, that's hard to do or this script exists?

    u need check events tab, there is "item", select it and u see everything else there

  11. 2 hours ago, elrey2 said:

    I used the PacketID= 15 (for trade) but this doesnt seems to work too. I tried with other packets id but  cant find the right one.

    Have u an idea which packet id could this be?

    ED=ConfirmDlg:d(requestID)d(d)d(d)s(name)d(d)d(d)

    probably this one

    • Like 1
  12. 22 minutes ago, mr zero said:

     

    Of course that's not the only con. That being said, by highlighting more pros than cons in my argument I'm obviously endorsing the server as someone who has consumed a product and has formed an opinion on it. Someone displeased with the server would do the exact opposite. In fact, there is another lenghty post that does exactly that within this topic. I was pleased with the product, I posted more pros in my argument. He/she was displeased by it, he/she presented more cons. 

     

    Trust me, if I had highlighted more pros and more cons, the only thing that would possibly change is your evaluation of what is considered an "essay" and whatnot. The pros would still outweigh the cons, as evaluating a product is often opinionated. My opinion is - without a doubt - in favor of this server. 

     

    Furthermore, you consider the idea of an in-game auto farm to be nonsense based on the premises that 3rd party programs are hunted. Fine, that's your opinion, okay. However, I could point out that you haven't actually tried it in practice as you clarified that you aren't playing here. Well, maybe you tried it, I cant know for sure, but that is besides the point. As for my point on why I consider it to be effective, I already explained in my previous post.

     

    But make no mistake, a limited feature such as "hit mobs", shouldn't be considered by any means to be comparad to a 3rd party program, which via its scripts can affect the PvP element of the game, or engage in complex actions that render the person behind the monitor as useful as a flowerpot would be. 

     

    Anyhow, it's all opinionated in the end. I'm sure the people who upvoted your post also have an opinion on this place. But I cant help but note the irony. One is a notorious interface developer (amongst other things), the other was banned from this server, and my personal favorite has the username "Adre.Bot". Maybe this concept is a bit bad for business? Thought it was worth mentioning. : D

     

     

     

     

     

     

     

    wait what, last time i checked, i wasnt banned xd about bad businness, i not even selling scripts, but if i want i could bypass that joke captcha which he use xd i not even talk about him antibot, aka "zeus guard, best server protection", which was bypassed by guy who have 0 knowledge in c#, and other debug bullshit xd

  13. 12 minutes ago, iselladena said:

    @adr.bot thank u very much. Should i add that part to the end keeping the "relog" part intact? or add a new function for relog affter aggrocheck?

    My knowledge is pretty limited, but i'm trying lol.

    ur alarm makes no sense, u need chose if u doing one script for all windows, or only for single window, now is half with get control, half with engine (current control)

  14. 13 hours ago, iselladena said:

    HI @adr.bot gn. I've managed to set a script for alarm captcha in the server i'm playing:

     

    uses
      SysUtils, Classes;
      
    function SetForegroundWindow(hwnd: integer):boolean; stdcall; external 'user32.dll';


    const
      // words / phrase to detect
      CaptchaTexts: array of string = ['=', 'Question:', '=', '?'];
      // play sound when detected (true - yes / false - no)
      CaptchaSound = true;
      // sound file name (in the Sounds folder)
      CaptchaSoundName = 'hp.wav';
      // highlight the desired window on the taskbar (true - yes / false - no)
      CaptchaFlashWindow = true;
      // move the window to the foreground (true - yes / false - no)
      CaptchaSetForegroundWindow = true;

    procedure CaptchaThread(CaptchaTexts: array of string);
    var
      a1, a2: integer;
      s1, s2: integer;
      EngineCustom: TL2Control;
      i, j: integer;
      Have: boolean;
      L: TStringList; 
      SoundPath: string;
    begin
      SoundPath:= ExePath + 'Sounds\' + CaptchaSoundName;
      if (CaptchaSound) and (not FileExists(SoundPath)) then
      begin
        print('No sound file found. Path: ' + SoundPath);
        Script.Stop;
      end;

      while (true) do
      begin
        delay(1000);
        for i:= 0 to 100 do
        begin
          EngineCustom:= GetControlByIndex(i);    

          if (EngineCustom = nil) then
            break;
          if (EngineCustom.Status <> lsOnline) then
            continue;
            
          Have:= false;
          //print(EngineCustom.hlpText);
          //print(EngineCustom.CBTime);
          print(GetTickCount());
          print(EngineCustom.HlpTime);
          s1:=GetTickCount();
          s2:=EngineCustom.HlpTime;
          print(s1-s2);
           //engine.dlgtext.contains
           
          L:= TStringList.Create; // Create an object (list for strings) 
          L.Add(EngineCustom.hlpText);//(EngineCustom.hlpText); // Add the line to the
          L.Sort;
          //L.SaveToFile('C:/1.html'); // Save the list to the file 
          //L.Free;
          
          if (Pos('Question:', L.Text) > 0) and ((s1-s2) < 19000)then//L.Find('Question:', i) then//EngineCustom.hlpText.contains('Question:') then
            begin
              Have:= true;
              if (Have) then      
              begin
                L.Free;
                PlaySound(exepath+'\sounds\'+'PlayerAlarm'+'.wav');
                delay(5000);
              end;
              //PlaySound(exepath+'\sounds\'+'PlayerAlarm'+'.wav');
               if (user.target.dead) then begin
        while user.incombat do
        delay(1000);
        engine.autosoulshot(5789, true);
        engine.autotarget(2500);
        engine.attack;
        engine.pickup;
      end;
    engine.restart; //restart to char select screen;
                  engine.gamestart(0); //0 is char id
    end
                
                  
                end;
              end;
            end;


      
    begin
      Script.NewThread(@CaptchaThread(CaptchaTexts));
    end.

     

     

     

     

     

     

     

    ---------

     

     

    Alarm works fine. And i added the last 2 lines (engine.restart) since once captcha window appears (tutorial window), if i relog the char, the captcha wont kick me and i can continue playing normally.

    But what i dont know how to do, is once alarm sounds (something like...   if (Pos('Question:', L.Text) > 0) and ((s1-s2) < 19000)then//L.Find('Question:', i) ????

    Make the char finish aggro mobs and once out of combat relog.

    function AggroCheck():boolean;
    var
    	i : integer;
    begin
    	result := false;
    	if npclist.count = 0 then exit;
    	for i := 0 to npclist.count -1 do
    	begin
    		if (npclist(i).target = user) or (npclist(i).atkoid = user.oid) then
    		begin
    			result := true;
    			exit;
    		end;
    	end;
    end;

     

  15. 1 hour ago, Horse said:

    Correct me if I'm wrong but what he wants is to be able to see correct drop info of mobs on a server where this feature isn't originally included in the system files.

     

    Thus, even if he has these files, they'll show incorrect info on any server that has different rates or edited drops.

    yes drop rates for sure not correct, although its same not correct as old drop spoil

  16. 4 hours ago, Horse said:

    You won't be able to see the droplist of monsters by simply editing your client inferface and dat files only. This needs server side editing as well.

    no it is full client sided

     

    5 hours ago, Blitzkrieg said:

    Drop.ini

    Interface.xdat window: DropWnd

    Interface.u class: TargetstatusWnd

    Spoil.ini too

×
×
  • Create New...