Advertisement
Guest User

Untitled

a guest
Aug 6th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 20.88 KB | None | 0 0
  1. unit EOBot;
  2.  
  3. interface
  4.  
  5. uses  Windows, Graphics, SysUtils, ThreadUnit;
  6.  
  7. type
  8.   TRGB32 = packed record
  9.     B, G, R, A: Byte;
  10.   end;
  11.   TRGB32Array = packed array[0..MaxInt div SizeOf(TRGB32) - 1] of TRGB32;
  12.   PRGB32Array = ^TRGB32Array;
  13.  
  14.   EOBotClass = Class
  15.  
  16.   private
  17.     function ColorRGB(SColor, i: Integer): Extended;
  18.     function SimilarColors(Color1, Color2, Tolerance: Integer): Boolean;
  19.     function StrGet(S: String; I: Integer) :Char;
  20.  
  21.   public
  22.     Procedure KeyPress(keycode: char);
  23.     Procedure ReadString(str: String);
  24.     Procedure SendLetter(Letter: Char);
  25.     Procedure Send(Msg: String);
  26.     function FindColor(var x, y: Integer; Color, xs, ys, xe, ye, Tolerance: Integer; Window: Hwnd): Boolean;
  27.     Procedure ClickMouse(x, y: Integer; bool: Boolean);
  28.     Procedure ActivateClient;
  29.     Procedure Login(Username, Password:String; Character:Integer);
  30.     Procedure Initialize;
  31.   end;
  32.  
  33. var
  34.   EO_Client:HWND;
  35.   eo_rect:TRECT;
  36.   x, y, null:integer;
  37.  
  38.   //COLORS BEGIN//
  39.   Monsters, Health_Bar, Direction_Square:Integer;
  40.   Relog_Lock, Ok_Button, Cancel_Button:Integer;
  41.   SHealth_Potions, Health_Potions, Herbs:Integer;
  42.   SpellTextYellow:Integer;
  43.   //COLORS END//
  44.  
  45. implementation
  46.  
  47. function EOBotClass.ColorRGB(SColor, i: Integer): Extended;
  48. var
  49.   Color: TColor;
  50. begin
  51.   Color := ColorToRGB(SColor);
  52.   Result := 0;
  53.   case i of
  54.     1: result := GetRValue(Color);
  55.     2: result := GetGValue(Color);
  56.     3: result := GetBValue(Color);
  57.   end;
  58. end;
  59.  
  60. function EOBotClass.SimilarColors(Color1, Color2, Tolerance: Integer): Boolean;
  61. begin
  62.   Result := False;
  63.   if (Abs(Round(ColorRGB(Color1, 1)) - Round(ColorRGB(Color2, 1))) <= Tolerance) then
  64.     if (Abs(Round(ColorRGB(Color1, 2)) - Round(ColorRGB(Color2, 2))) <= Tolerance) then
  65.       if (Abs(Round(ColorRGB(Color1, 3)) - Round(ColorRGB(Color2, 3))) <= Tolerance) then
  66.         Result := True;
  67. end;
  68.  
  69. function EOBotClass.StrGet(S : String; I : Integer): Char;//Cazax
  70. begin
  71.   Result := S[I];
  72. end;
  73.  
  74. Procedure EOBotClass.KeyPress(keycode: char);
  75. Begin
  76.   keybd_event(Ord(UpCase(KeyCode)), 0, 0, 0);
  77.   sleep(50);
  78.   keybd_event(Ord(UpCase(KeyCode)), 0, KEYEVENTF_KEYUP, 0);
  79. End;
  80.  
  81. Procedure EOBotClass.ReadString(str:String);//Converted To Delphi
  82. var
  83. i,strLength :Integer;
  84. begin
  85.   i:=1;
  86.   strLength:=Length(str);
  87.   while(i<strLength+1)do
  88.   begin
  89.     KeyPress(StrGet(str, i));
  90.     i:=i+1;
  91.   end;
  92.   sleep(300);
  93. end;
  94.  
  95.   Procedure EOBotClass.SendLetter(Letter: Char);
  96.   Begin
  97.     if (Letter in ['0'..'9']) then
  98.     Begin
  99.       if (Letter = '0') then
  100.       Begin
  101.         keybd_event($30, 0, 0, 0);
  102.         sleep(20);
  103.         keybd_event($30, 0, KEYEVENTF_KEYUP, 0);
  104.       End
  105.       Else if (Letter = '1') then
  106.       Begin
  107.         keybd_event($31, 0, 0, 0);
  108.         sleep(20);
  109.         keybd_event($31, 0, KEYEVENTF_KEYUP, 0);
  110.       End
  111.       Else if (Letter = '2') then
  112.       Begin
  113.         keybd_event($32, 0, 0, 0);
  114.         sleep(20);
  115.         keybd_event($32, 0, KEYEVENTF_KEYUP, 0);
  116.       End
  117.       Else if (Letter = '3') then
  118.       Begin
  119.         keybd_event($33, 0, 0, 0);
  120.         sleep(20);
  121.         keybd_event($33, 0, KEYEVENTF_KEYUP, 0);
  122.       End
  123.       Else if (Letter = '4') then
  124.       Begin
  125.         keybd_event($34, 0, 0, 0);
  126.         sleep(20);
  127.         keybd_event($34, 0, KEYEVENTF_KEYUP, 0);
  128.       End
  129.       Else if (Letter = '5') then
  130.       Begin
  131.         keybd_event($35, 0, 0, 0);
  132.         sleep(20);
  133.         keybd_event($35, 0, KEYEVENTF_KEYUP, 0);
  134.       End
  135.       Else if (Letter = '6') then
  136.       Begin
  137.         keybd_event($36, 0, 0, 0);
  138.         sleep(20);
  139.         keybd_event($36, 0, KEYEVENTF_KEYUP, 0);
  140.       End
  141.       Else if (Letter = '7') then
  142.       Begin
  143.         keybd_event($37, 0, 0, 0);
  144.         sleep(20);
  145.         keybd_event($37, 0, KEYEVENTF_KEYUP, 0);
  146.       End
  147.       Else if (Letter = '8') then
  148.       Begin
  149.         keybd_event($38, 0, 0, 0);
  150.         sleep(20);
  151.         keybd_event($38, 0, KEYEVENTF_KEYUP, 0);
  152.       End
  153.       Else if (Letter = '9') then
  154.       Begin
  155.         keybd_event($39, 0, 0, 0);
  156.         sleep(20);
  157.         keybd_event($39, 0, KEYEVENTF_KEYUP, 0);
  158.       End;
  159.     End
  160.     Else
  161.     Begin
  162.       if (Letter = UpCase(Letter)) then
  163.       Begin
  164.         keybd_event($A0, 0, 0, 0);
  165.         if (Letter = 'A') then
  166.         Begin
  167.           keybd_event($41, 0, 0, 0);
  168.           sleep(20);
  169.           keybd_event($41, 0, KEYEVENTF_KEYUP, 0);
  170.         End
  171.         Else if (Letter = 'B') then
  172.         Begin
  173.           keybd_event($42, 0, 0, 0);
  174.           sleep(20);
  175.           keybd_event($42, 0, KEYEVENTF_KEYUP, 0);
  176.         End
  177.         Else if (Letter = 'C') then
  178.         Begin
  179.           keybd_event($43, 0, 0, 0);
  180.           sleep(20);
  181.           keybd_event($43, 0, KEYEVENTF_KEYUP, 0);
  182.         End
  183.         Else if (Letter = 'D') then
  184.         Begin
  185.           keybd_event($44, 0, 0, 0);
  186.           sleep(20);
  187.           keybd_event($44, 0, KEYEVENTF_KEYUP, 0);
  188.         End
  189.         Else if (Letter = 'E') then
  190.         Begin
  191.           keybd_event($45, 0, 0, 0);
  192.           sleep(20);
  193.           keybd_event($45, 0, KEYEVENTF_KEYUP, 0);
  194.         End
  195.         Else if (Letter = 'F') then
  196.         Begin
  197.           keybd_event($46, 0, 0, 0);
  198.           sleep(20);
  199.           keybd_event($46, 0, KEYEVENTF_KEYUP, 0);
  200.         End
  201.         Else if (Letter = 'G') then
  202.         Begin
  203.           keybd_event($47, 0, 0, 0);
  204.           sleep(20);
  205.           keybd_event($47, 0, KEYEVENTF_KEYUP, 0);
  206.         End
  207.         Else if (Letter = 'H') then
  208.         Begin
  209.           keybd_event($48, 0, 0, 0);
  210.           sleep(20);
  211.           keybd_event($48, 0, KEYEVENTF_KEYUP, 0);
  212.         End
  213.         Else if (Letter = 'I') then
  214.         Begin
  215.           keybd_event($49, 0, 0, 0);
  216.           sleep(20);
  217.           keybd_event($49, 0, KEYEVENTF_KEYUP, 0);
  218.         End
  219.         Else if (Letter = 'J') then
  220.         Begin
  221.           keybd_event($4A, 0, 0, 0);
  222.           sleep(20);
  223.           keybd_event($4A, 0, KEYEVENTF_KEYUP, 0);
  224.         End
  225.         Else if (Letter = 'K') then
  226.         Begin
  227.           keybd_event($4B, 0, 0, 0);
  228.           sleep(20);
  229.           keybd_event($4B, 0, KEYEVENTF_KEYUP, 0);
  230.         End
  231.         Else if (Letter = 'L') then
  232.         Begin
  233.           keybd_event($4C, 0, 0, 0);
  234.           sleep(20);
  235.           keybd_event($4C, 0, KEYEVENTF_KEYUP, 0);
  236.         End
  237.         Else if (Letter = 'M') then
  238.         Begin
  239.           keybd_event($4D, 0, 0, 0);
  240.           sleep(20);
  241.           keybd_event($4D, 0, KEYEVENTF_KEYUP, 0);
  242.         End
  243.         Else if (Letter = 'N') then
  244.         Begin
  245.           keybd_event($4E, 0, 0, 0);
  246.           sleep(20);
  247.           keybd_event($4E, 0, KEYEVENTF_KEYUP, 0);
  248.         End
  249.         Else if (Letter = 'O') then
  250.         Begin
  251.           keybd_event($4F, 0, 0, 0);
  252.           sleep(20);
  253.           keybd_event($4F, 0, KEYEVENTF_KEYUP, 0);
  254.         End
  255.         Else if (Letter = 'P') then
  256.         Begin
  257.           keybd_event($50, 0, 0, 0);
  258.           sleep(20);
  259.           keybd_event($50, 0, KEYEVENTF_KEYUP, 0);
  260.         End
  261.         Else if (Letter = 'Q') then
  262.         Begin
  263.           keybd_event($51, 0, 0, 0);
  264.           sleep(20);
  265.           keybd_event($51, 0, KEYEVENTF_KEYUP, 0);
  266.         End
  267.         Else if (Letter = 'R') then
  268.         Begin
  269.           keybd_event($52, 0, 0, 0);
  270.           sleep(20);
  271.           keybd_event($52, 0, KEYEVENTF_KEYUP, 0);
  272.         End
  273.         Else if (Letter = 'S') then
  274.         Begin
  275.           keybd_event($53, 0, 0, 0);
  276.           sleep(20);
  277.           keybd_event($53, 0, KEYEVENTF_KEYUP, 0);
  278.         End
  279.         Else if (Letter = 'T') then
  280.         Begin
  281.           keybd_event($54, 0, 0, 0);
  282.           sleep(20);
  283.           keybd_event($54, 0, KEYEVENTF_KEYUP, 0);
  284.         End
  285.         Else if (Letter = 'U') then
  286.         Begin
  287.           keybd_event($55, 0, 0, 0);
  288.           sleep(20);
  289.           keybd_event($55, 0, KEYEVENTF_KEYUP, 0);
  290.         End
  291.         Else if (Letter = 'V') then
  292.         Begin
  293.           keybd_event($56, 0, 0, 0);
  294.           sleep(20);
  295.           keybd_event($56, 0, KEYEVENTF_KEYUP, 0);
  296.         End
  297.         Else if (Letter = 'W') then
  298.         Begin
  299.           keybd_event($57, 0, 0, 0);
  300.           sleep(20);
  301.           keybd_event($57, 0, KEYEVENTF_KEYUP, 0);
  302.         End
  303.         Else if (Letter = 'X') then
  304.         Begin
  305.           keybd_event($58, 0, 0, 0);
  306.           sleep(20);
  307.           keybd_event($58, 0, KEYEVENTF_KEYUP, 0);
  308.         End
  309.         Else if (Letter = 'Y') then
  310.         Begin
  311.           keybd_event($59, 0, 0, 0);
  312.           sleep(20);
  313.           keybd_event($59, 0, KEYEVENTF_KEYUP, 0);
  314.         End
  315.         Else if (Letter = 'Z') then
  316.         Begin
  317.           keybd_event($5A, 0, 0, 0);
  318.           sleep(20);
  319.           keybd_event($5A, 0, KEYEVENTF_KEYUP, 0);
  320.         End;
  321.         keybd_event($A0, 0, KEYEVENTF_KEYUP, 0);
  322.       End
  323.       Else
  324.       Begin
  325.         if (Letter = 'a') then
  326.         Begin
  327.           keybd_event($41, 0, 0, 0);
  328.           sleep(20);
  329.           keybd_event($41, 0, KEYEVENTF_KEYUP, 0);
  330.         End
  331.         Else if (Letter = 'b') then
  332.         Begin
  333.           keybd_event($42, 0, 0, 0);
  334.           sleep(20);
  335.           keybd_event($42, 0, KEYEVENTF_KEYUP, 0);
  336.         End
  337.         Else if (Letter = 'c') then
  338.         Begin
  339.           keybd_event($43, 0, 0, 0);
  340.           sleep(20);
  341.           keybd_event($43, 0, KEYEVENTF_KEYUP, 0);
  342.         End
  343.         Else if (Letter = 'd') then
  344.         Begin
  345.           keybd_event($44, 0, 0, 0);
  346.           sleep(20);
  347.           keybd_event($44, 0, KEYEVENTF_KEYUP, 0);
  348.         End
  349.         Else if (Letter = 'e') then
  350.         Begin
  351.           keybd_event($45, 0, 0, 0);
  352.           sleep(20);
  353.           keybd_event($45, 0, KEYEVENTF_KEYUP, 0);
  354.         End
  355.         Else if (Letter = 'f') then
  356.         Begin
  357.           keybd_event($46, 0, 0, 0);
  358.           sleep(20);
  359.           keybd_event($46, 0, KEYEVENTF_KEYUP, 0);
  360.         End
  361.         Else if (Letter = 'g') then
  362.         Begin
  363.           keybd_event($47, 0, 0, 0);
  364.           sleep(20);
  365.           keybd_event($47, 0, KEYEVENTF_KEYUP, 0);
  366.         End
  367.         Else if (Letter = 'h') then
  368.         Begin
  369.           keybd_event($48, 0, 0, 0);
  370.           sleep(20);
  371.           keybd_event($48, 0, KEYEVENTF_KEYUP, 0);
  372.         End
  373.         Else if (Letter = 'i') then
  374.         Begin
  375.           keybd_event($49, 0, 0, 0);
  376.           sleep(20);
  377.           keybd_event($49, 0, KEYEVENTF_KEYUP, 0);
  378.         End
  379.         Else if (Letter = 'j') then
  380.         Begin
  381.           keybd_event($4A, 0, 0, 0);
  382.           sleep(20);
  383.           keybd_event($4A, 0, KEYEVENTF_KEYUP, 0);
  384.         End
  385.         Else if (Letter = 'k') then
  386.         Begin
  387.           keybd_event($4B, 0, 0, 0);
  388.           sleep(20);
  389.           keybd_event($4B, 0, KEYEVENTF_KEYUP, 0);
  390.         End
  391.         Else if (Letter = 'l') then
  392.         Begin
  393.           keybd_event($4C, 0, 0, 0);
  394.           sleep(20);
  395.           keybd_event($4C, 0, KEYEVENTF_KEYUP, 0);
  396.         End
  397.         Else if (Letter = 'm') then
  398.         Begin
  399.           keybd_event($4D, 0, 0, 0);
  400.           sleep(20);
  401.           keybd_event($4D, 0, KEYEVENTF_KEYUP, 0);
  402.         End
  403.         Else if (Letter = 'n') then
  404.         Begin
  405.           keybd_event($4E, 0, 0, 0);
  406.           sleep(20);
  407.           keybd_event($4E, 0, KEYEVENTF_KEYUP, 0);
  408.         End
  409.         Else if (Letter = 'o') then
  410.         Begin
  411.           keybd_event($4F, 0, 0, 0);
  412.           sleep(20);
  413.           keybd_event($4F, 0, KEYEVENTF_KEYUP, 0);
  414.         End
  415.         Else if (Letter = 'p') then
  416.         Begin
  417.           keybd_event($50, 0, 0, 0);
  418.           sleep(20);
  419.           keybd_event($50, 0, KEYEVENTF_KEYUP, 0);
  420.         End
  421.         Else if (Letter = 'q') then
  422.         Begin
  423.           keybd_event($51, 0, 0, 0);
  424.           sleep(20);
  425.           keybd_event($51, 0, KEYEVENTF_KEYUP, 0);
  426.         End
  427.         Else if (Letter = 'r') then
  428.         Begin
  429.           keybd_event($52, 0, 0, 0);
  430.           sleep(20);
  431.           keybd_event($52, 0, KEYEVENTF_KEYUP, 0);
  432.         End
  433.         Else if (Letter = 's') then
  434.         Begin
  435.           keybd_event($53, 0, 0, 0);
  436.           sleep(20);
  437.           keybd_event($53, 0, KEYEVENTF_KEYUP, 0);
  438.         End
  439.         Else if (Letter = 't') then
  440.         Begin
  441.           keybd_event($54, 0, 0, 0);
  442.           sleep(20);
  443.           keybd_event($54, 0, KEYEVENTF_KEYUP, 0);
  444.         End
  445.         Else if (Letter = 'u') then
  446.         Begin
  447.           keybd_event($55, 0, 0, 0);
  448.           sleep(20);
  449.           keybd_event($55, 0, KEYEVENTF_KEYUP, 0);
  450.         End
  451.         Else if (Letter = 'v') then
  452.         Begin
  453.           keybd_event($56, 0, 0, 0);
  454.           sleep(20);
  455.           keybd_event($56, 0, KEYEVENTF_KEYUP, 0);
  456.         End
  457.         Else if (Letter = 'w') then
  458.         Begin
  459.           keybd_event($57, 0, 0, 0);
  460.           sleep(20);
  461.           keybd_event($57, 0, KEYEVENTF_KEYUP, 0);
  462.         End
  463.         Else if (Letter = 'x') then
  464.         Begin
  465.           keybd_event($58, 0, 0, 0);
  466.           sleep(20);
  467.           keybd_event($58, 0, KEYEVENTF_KEYUP, 0);
  468.         End
  469.         Else if (Letter = 'y') then
  470.         Begin
  471.           keybd_event($59, 0, 0, 0);
  472.           sleep(20);
  473.           keybd_event($59, 0, KEYEVENTF_KEYUP, 0);
  474.         End
  475.         Else if (Letter = 'z') then
  476.         Begin
  477.           keybd_event($5A, 0, 0, 0);
  478.           sleep(20);
  479.           keybd_event($5A, 0, KEYEVENTF_KEYUP, 0);
  480.         End;
  481.       End;
  482.     End;
  483.   End;
  484.   Procedure EOBotClass.Send(Msg: String);
  485.   var
  486.     i: Integer;
  487.   Begin
  488.     if (AnsiCompareStr(Msg, 'F1') = 0) then
  489.     begin
  490.       keybd_event(VK_F1, 0, 0, 0);
  491.       sleep(20);
  492.       keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0);
  493.       sleep(10);
  494.       Msg := '';
  495.     end
  496.     else if (AnsiCompareStr(Msg, 'F2') = 0) then
  497.     begin
  498.       keybd_event(VK_F2, 0, 0, 0);
  499.       sleep(20);
  500.       keybd_event(VK_F2, 0, KEYEVENTF_KEYUP, 0);
  501.       sleep(10);
  502.       Msg := '';
  503.     end
  504.     else if (AnsiCompareStr(Msg, 'F3') = 0) then
  505.     begin
  506.       keybd_event(VK_F3, 0, 0, 0);
  507.       sleep(20);
  508.       keybd_event(VK_F3, 0, KEYEVENTF_KEYUP, 0);
  509.       sleep(10);
  510.       Msg := '';
  511.     end
  512.     else if (AnsiCompareStr(Msg, 'F4') = 0) then
  513.     begin
  514.       keybd_event(VK_F4, 0, 0, 0);
  515.       sleep(20);
  516.       keybd_event(VK_F4, 0, KEYEVENTF_KEYUP, 0);
  517.       sleep(10);
  518.       Msg := '';
  519.     end
  520.     else if (AnsiCompareStr(Msg, 'F5') = 0) then
  521.     begin
  522.       keybd_event(VK_F5, 0, 0, 0);
  523.       sleep(20);
  524.       keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);
  525.       sleep(10);
  526.       Msg := '';
  527.     end
  528.     else if (AnsiCompareStr(Msg, 'F6') = 0) then
  529.     begin
  530.       keybd_event(VK_F6, 0, 0, 0);
  531.       sleep(20);
  532.       keybd_event(VK_F6, 0, KEYEVENTF_KEYUP, 0);
  533.       sleep(10);
  534.       Msg := '';
  535.     end
  536.     else if (AnsiCompareStr(Msg, 'F7') = 0) then
  537.     begin
  538.       keybd_event(VK_F7, 0, 0, 0);
  539.       sleep(20);
  540.       keybd_event(VK_F7, 0, KEYEVENTF_KEYUP, 0);
  541.       sleep(10);
  542.       Msg := '';
  543.     end
  544.     else if (AnsiCompareStr(Msg, 'F8') = 0) then
  545.     begin
  546.       keybd_event(VK_F8, 0, 0, 0);
  547.       sleep(20);
  548.       keybd_event(VK_F8, 0, KEYEVENTF_KEYUP, 0);
  549.       sleep(10);
  550.       Msg := '';
  551.     end
  552.     else if (AnsiCompareStr(Msg, 'F9') = 0) then
  553.     begin
  554.       keybd_event(VK_F9, 0, 0, 0);
  555.       sleep(20);
  556.       keybd_event(VK_F9, 0, KEYEVENTF_KEYUP, 0);
  557.       sleep(10);
  558.       Msg := '';
  559.     end
  560.     else if (AnsiCompareStr(Msg, 'F10') = 0) then
  561.     begin
  562.       keybd_event(VK_F10, 0, 0, 0);
  563.       sleep(20);
  564.       keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0);
  565.       sleep(10);
  566.       Msg := '';
  567.     end
  568.     else if (AnsiCompareStr(Msg, 'F11') = 0) then
  569.     begin
  570.       keybd_event(VK_F11, 0, 0, 0);
  571.       sleep(20);
  572.       keybd_event(VK_F11, 0, KEYEVENTF_KEYUP, 0);
  573.       sleep(10);
  574.       Msg := '';
  575.     end
  576.     else if (AnsiCompareStr(Msg, 'F12') = 0) then
  577.     begin
  578.       keybd_event(VK_F12, 0, 0, 0);
  579.       sleep(20);
  580.       keybd_event(VK_F12, 0, KEYEVENTF_KEYUP, 0);
  581.       sleep(10);
  582.       Msg := '';
  583.     end
  584.     else if (AnsiCompareStr(Msg, 'Ctrl') = 0) or (AnsiCompareStr(Msg, 'Control') = 0) then
  585.     begin
  586.       keybd_event(VK_CONTROL, 0, 0, 0);
  587.       sleep(20);
  588.       keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
  589.       sleep(10);
  590.       Msg := '';
  591.     end
  592.     else if (AnsiCompareStr(Msg, 'Tab') = 0) then
  593.     begin
  594.       keybd_event(VK_TAB, 0, 0, 0);
  595.       sleep(20);
  596.       keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);
  597.       sleep(10);
  598.       Msg := '';
  599.     end
  600.     else if (AnsiCompareStr(Msg, 'Enter') = 0) or (AnsiCompareStr(Msg, 'Return') = 0) then
  601.     begin
  602.       keybd_event(VK_RETURN, 0, 0, 0);
  603.       sleep(20);
  604.       keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
  605.       sleep(10);
  606.       Msg := '';
  607.     end
  608.     else if (AnsiCompareStr(Msg, 'Windows') = 0) or (AnsiCompareStr(Msg, 'Windows Key') = 0) then
  609.     begin
  610.       keybd_event(VK_LWIN, 0, 0, 0);
  611.       sleep(20);
  612.       keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
  613.       sleep(10);
  614.       Msg := '';
  615.     end
  616.     else if (AnsiCompareStr(Msg, 'Up') = 0) or (AnsiCompareStr(Msg, 'up') = 0) then
  617.     begin
  618.       keybd_event(VK_NUMPAD8, 0, 0, 0);
  619.       sleep(20);
  620.       keybd_event(VK_NUMPAD8, 0, KEYEVENTF_KEYUP, 0);
  621.       sleep(10);
  622.       Msg := '';
  623.     end
  624.     else if (AnsiCompareStr(Msg, 'Right') = 0) or (AnsiCompareStr(Msg, 'right') = 0) then
  625.     begin
  626.       keybd_event(VK_NUMPAD6, 0, 0, 0);
  627.       sleep(20);
  628.       keybd_event(VK_NUMPAD6, 0, KEYEVENTF_KEYUP, 0);
  629.       sleep(10);
  630.       Msg := '';
  631.     end
  632.     else if (AnsiCompareStr(Msg, 'Down') = 0) or (AnsiCompareStr(Msg, 'down') = 0) then
  633.     begin
  634.       keybd_event(VK_NUMPAD2, 0, 0, 0);
  635.       sleep(20);
  636.       keybd_event(VK_NUMPAD2, 0, KEYEVENTF_KEYUP, 0);
  637.       sleep(10);
  638.       Msg := '';
  639.     end
  640.     else if (AnsiCompareStr(Msg, 'Left') = 0) or (AnsiCompareStr(Msg, 'left') = 0) then
  641.     begin
  642.       keybd_event(VK_NUMPAD4, 0, 0, 0);
  643.       sleep(20);
  644.       keybd_event(VK_NUMPAD4, 0, KEYEVENTF_KEYUP, 0);
  645.       sleep(10);
  646.       Msg := '';
  647.     end;
  648.  
  649.  
  650.  
  651.     for i := 1 to Length(Msg) do
  652.     Begin
  653.        SendLetter(Msg[i]);
  654.        sleep(10);
  655.     End;
  656.   End;
  657.  
  658. function EOBotClass.FindColor(var x, y: Integer; Color, xs, ys, xe, ye, Tolerance: Integer; Window: Hwnd): Boolean;
  659. var
  660.   Bmp: TBitmap; // Bitmap of the client
  661.   tmpDC: HDC; // Device context of the client's window handle
  662.   Size: TRect; // Rect(angle) of the client's window
  663.   cx, cy: Integer; // For-loop vars
  664.   Line: PRGB32Array; // The scanline
  665. begin
  666.   Result := False; // In case the color isn't found => Result = False
  667.   x := -1; // In case the color isn't found => x = -1
  668.   y := -1; // In case the color isn't found => y = -1
  669.   Bmp := TBitmap.Create; // We create our bitmap instance
  670.   tmpDC := GetWindowDC(Window); // We get the device context of the client's window handle
  671.   GetWindowRect(Window, Size); // We get the rect(angle) of the client's window
  672.   Bmp.Width := Size.Right - Size.Left; // We set the width of our bitmap
  673.   Bmp.Height := Size.Bottom - Size.Top; // We set the height of our bitmap
  674.   BitBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, tmpDC, 0, 0, SRCCOPY);
  675.   // ^^^ We copy the client's canvas onto the bitmap
  676.   Bmp.PixelFormat := pf32bit; // We set the bitmap to 32bits
  677.   DeleteDC(tmpDC); // We delete the device context to avoid memory leakage
  678.   for cy := ys to ye do // Loop for the rows of pixels (y)
  679.   begin
  680.     if cy >= Bmp.Height then Break; // Break the loop if you reach the end of the bitmap
  681.     Line := Bmp.ScanLine[cy]; // We retrieve the scanline (line of pixels) from the bitmap for the current y
  682.     for cx := xs to xe do // Loop for the colums of pixels (x)
  683.     begin
  684.       if cx >= Bmp.Width then Break; // Break the loop if you reach the end of the bitmap
  685.       if (SimilarColors(RGB(Line[cx].R, Line[cx].G, Line[cx].B), Color, Tolerance)) then
  686.       // ^^^ We convert the RGB values of the current pixel to a color and compare it with the tolerance to the entered color
  687.       begin // If the color is similar (or for tol 0 the same) then...
  688.         Result := True; // Result of the function
  689.         x := cx; // Returned x-value
  690.         y := cy;  // Returned y-value
  691.         Line := nil; // Free the scanline to avoid memory leaks
  692.         Bmp.Free; // Free the bitmap to avoid memory leaks
  693.         Exit; // Exit the function
  694.       end;
  695.     end;
  696.   end;
  697.   Line := nil; // Free the scanline to avoid memory leaks
  698.   Bmp.Free; // Free the bitmap to avoid memory leaks
  699. end;
  700.  
  701. Procedure EOBotClass.ClickMouse(x, y: Integer; bool: Boolean);
  702. Begin
  703.   SetCursorPos(eo_rect.left + x, eo_rect.top + y);
  704.   Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  705.   Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  706. End;
  707.  
  708. Procedure EOBotClass.ActivateClient;
  709. begin
  710.   EO_Client:=FindWindowA('TMainForm','Endless Online');
  711.   SetActiveWindow(EO_Client);
  712.   SetForegroundWindow(EO_Client);
  713.   BringWindowToTop(EO_Client);
  714.   GetWindowRect(EO_Client, &eo_rect);
  715. end;
  716.  
  717. Procedure EOBotClass.Login(Username: string; Password: string; Character: Integer);
  718. begin
  719.  
  720. end;
  721.  
  722. Procedure EOBotClass.Initialize;
  723. begin
  724.  
  725. end;
  726.  
  727. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement