начну с начало наткнулся на бота http://zhyk.ru/forum/showthread.php?p=4079091 попробовал все работает супер (чуть раньше перепробовал много всяких кликиров но нечего так и не вышло) но автор его писал для себе (за код отдельное спасибо) для меня не очень удобно думаю для многих. перенастраивать игру под бота... лучше бота под игру (думаю так правильней) и так залез в код, общею картину понял.. и на этом встал
сразу вопрос к автору немог бы ты прокомментировать код. всем кому интересно присоединяйтесь !
сам код [Ссылки могут видеть только зарегистрированные пользователи. ]
бот [Ссылки могут видеть только зарегистрированные пользователи. ]
вирус тотал [Ссылки могут видеть только зарегистрированные пользователи. ]
Код:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,XPMan, StdCtrls, ExtCtrls, Spin, ComCtrls, Menus,ShellAPI;
type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
btn3: TButton;
rb1: TRadioButton;
lbl1: TLabel;
tmr1: TTimer;
lbl2: TLabel;
lbl3: TLabel;
chk1: TCheckBox;
chk2: TCheckBox;
chk3: TCheckBox;
chk4: TCheckBox;
edt1: TEdit;
ud1: TUpDown;
lbl4: TLabel;
edt2: TEdit;
ud2: TUpDown;
lbl6: TLabel;
lbl7: TLabel;
xpmnfst1: TXPManifest;
pmTreyMenu: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
grp1: TGroupBox;
rb2: TRadioButton;
rb3: TRadioButton;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure chk4KeyPress(Sender: TObject; var Key: Char);
procedure chk4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
///trey
Procedure ControlWindow(Var Msg:TMessage); message WM_SYSCOMMAND;
Procedure IconMouse(var Msg:TMessage); message WM_USER+1;
Procedure Ic(n:Integer;Icon:TIcon);
Procedure OnMinimizeProc(Sender:TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure grp1Click(Sender: TObject);
procedure rb2Click(Sender: TObject);
procedure rb3Click(Sender: TObject);
procedure rb3KeyPress(Sender: TObject; var Key: Char);
procedure rb2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
z,z1,z2,z3,z4:Integer;
z6,z5:real;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
btn1.Click;
tmr1.Enabled:=False;
chk1.Checked:=True;chk1.Enabled:=False;
Application.onMinimize:=OnMinimizeProc;
end;
procedure TForm1.btn1Click(Sender: TObject);
var h:HWND;
i:Integer;
begin
btn1.Enabled:=True;
z:=1;z1:=0;z2:=0;z3:=0;z4:=0;z5:=StrToInt(edt1.Text);z6:=0;
h:=FindWindow('WOD Online',nil);
grp1.Enabled:=True;
if h=0 then begin
lbl4.Enabled:=False;
btn2.Enabled:=False;
btn3.Enabled:=False;
tmr1.Enabled:=False;
rb1.Checked:=False;
edt1.Enabled:=False;
ud1.Enabled:=False;
edt2.Enabled:=False;
ud2.Enabled:=False;
grp1.Enabled:=False;
rb2.Enabled:=False;
rb3.Enabled:=False;
rb1.Enabled:=False;
lbl1.Caption:='Off';
lbl3.Caption:='Done: '+IntToStr(z); lbl3.Enabled:=False;
chk1.Caption:='Slot 1: '+ IntToStr(z1); chk1.Enabled:=False;
chk2.Caption:='Slot 2: '+ IntToStr(z2); chk2.Enabled:=False;
chk3.Caption:='Slot 3: '+ IntToStr(z3); chk3.Enabled:=False;
chk4.Caption:='Slot 4: '+ IntToStr(z4); chk4.Enabled:=False;
i:=MessageDlg('No Game!!!',mtWarning,[mbYes],0);
PostMessage(Handle,WM_SYSCOMMAND,SC_RESTORE,0);
end
else begin
btn1.Enabled:=False;
if rb2.Checked=True then begin
lbl4.Enabled:=True;
btn2.Enabled:=True;
btn3.Enabled:=True;
rb1.Checked:=True;
rb1.Enabled:=True;
ud1.Enabled:=True;
edt1.Enabled:=True;
grp1.Enabled:=True;
rb2.Enabled:=True;
rb3.Enabled:=True;
lbl3.Caption:='Done: '+IntToStr(z); lbl3.Enabled:=True;
chk1.Caption:='Slot 1: '+ IntToStr(z1);// chk1.Enabled:=True;
chk2.Caption:='Slot 2: '+ IntToStr(z2); chk2.Enabled:=True;
chk3.Caption:='Slot 3: '+ IntToStr(z3); chk3.Enabled:=True;
chk4.Caption:='Slot 4: '+ IntToStr(z4); chk4.Enabled:=True;
if chk4.Checked=True then begin
ud2.Enabled:=True;
edt2.Enabled:=True;
end
else begin
ud2.Enabled:=False;
edt2.Enabled:=False;
end;
lbl1.Caption:='On';
end
else
begin
lbl4.Enabled:=False;
btn2.Enabled:=True;
btn3.Enabled:=True;
rb1.Checked:=True;
rb1.Enabled:=True;
grp1.Enabled:=True;
rb2.Enabled:=True;
rb3.Enabled:=True;
lbl3.Caption:='Done: '+IntToStr(z); lbl3.Enabled:=False;
chk1.Caption:='Slot 1: '+ IntToStr(z1); chk1.Enabled:=False;
chk2.Caption:='Slot 2: '+ IntToStr(z2); chk2.Enabled:=False;
chk3.Caption:='Slot 3: '+ IntToStr(z3); chk3.Enabled:=False;
chk4.Caption:='Slot 4: '+ IntToStr(z4); chk4.Enabled:=False;
edt1.Enabled:=False;
ud1.Enabled:=False;
end;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
tmr1.Enabled:=True;
btn2.Enabled:=False;
btn1.Enabled:=False;
edt1.Enabled:=False;
ud1.Enabled:=False;
edt2.Enabled:=False;
ud2.Enabled:=False;
z5:=StrToInt(edt1.Text);
grp1.Enabled:=False;
chk1.Enabled:=False;
chk2.Enabled:=False;
chk3.Enabled:=False;
chk4.Enabled:=False;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
tmr1.Enabled:=False;
btn1.Click;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
var h:HWND;
s:Integer;
begin
s:=StrToInt(edt1.Text);
h:=FindWindow('WOD Online',nil);
if h=0 then btn1.Click;
z:=z+1;
lbl3.Caption:='Done: '+IntToStr(z);
if rb2.Checked= True then begin
if chk1.Checked=True then begin
SetForegroundWindow(h);
sleep(s-50);
PostMessage(h, WM_IME_KEYDOWN, ord('1'),MapVirtualKey(ord('1'), 0));
Sleep(50);
PostMessage(h, WM_IME_KEYUP, ord('1'),MapVirtualKey(ord('1'), 0));
z1:=z1+1;
z5:=z5+s;
z6:=z6+1;
end;
chk1.Caption:='Slot 1: '+ IntToStr(z1);
if chk2.Checked=True then begin
SetForegroundWindow(h);
sleep(s-50);
PostMessage(h, WM_IME_KEYDOWN, ord('2'),MapVirtualKey(ord('2'), 0));
Sleep(50);
PostMessage(h, WM_IME_KEYUP, ord('2'),MapVirtualKey(ord('2'), 0));
z2:=z2+1;
z5:=z5+s;
z6:=z6+1;
end;
chk2.Caption:='Slot 2: '+ IntToStr(z2);
if chk3.Checked=True then begin
SetForegroundWindow(h);
sleep(s-50);
PostMessage(h, WM_IME_KEYDOWN, ord('3'),MapVirtualKey(ord('3'), 0));
Sleep(50);
PostMessage(h, WM_IME_KEYUP, ord('3'),MapVirtualKey(ord('3'), 0));
z3:=z3+1;
z5:=z5+s;
z6:=z6+1;
end;
chk3.Caption:='Slot 3: '+ IntToStr(z3);
if (chk4.Checked=True) and (z5>(StrToInt(edt2.Text))) then begin
SetForegroundWindow(h);
sleep(s-50);
PostMessage(h, WM_IME_KEYDOWN, ord('4'),MapVirtualKey(ord('4'), 0));
Sleep(50);
PostMessage(h, WM_IME_KEYUP, ord('4'),MapVirtualKey(ord('4'), 0));
z4:=z4+1;
z5:=(StrToInt(edt1.Text)*2);
z6:=z6+1;
end ;
chk4.Caption:='Slot 4: '+ IntToStr(z4);edt2.Enabled:=False;
end
else begin
SetForegroundWindow(h);
sleep(500);
PostMessage(h, WM_IME_KEYDOWN, ord('V'),MapVirtualKey(ord('V'), 0));
Sleep(50);
PostMessage(h, WM_IME_KEYUP, ord('V'),MapVirtualKey(ord('V'), 0));
end;
end;
procedure TForm1.chk4KeyPress(Sender: TObject; var Key: Char);
begin
if chk4.Checked=True then begin
ud2.Enabled:=True;
edt2.Enabled:=True;
end
else begin
ud2.Enabled:=False;
edt2.Enabled:=False;
end;
end;
procedure TForm1.chk4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if chk4.Checked=True then begin
ud2.Enabled:=True;
edt2.Enabled:=True;
end
else begin
ud2.Enabled:=False;
edt2.Enabled:=False;
end;
end;
/// trey-------------------------------------------------------------
procedure TForm1.IconMouse(var Msg:TMessage);
Var p:tpoint;
begin
GetCursorPos(p);
Case Msg.LParam OF
WM_LBUTTONUP,WM_LBUTTONDBLCLK: begin ;
Ic(2,Application.Icon);
ShowWindow(Application.Handle,SW_SHOW);
ShowWindow(Handle,SW_SHOW);
Update;
End;
WM_RBUTTONUP:
Begin
SetForegroundWindow(Handle);
pmTreyMenu.Popup(p.X,p.Y); // Заставляем всплыть наше PopMenu
PostMessage(Handle,WM_NULL,0,0);
end;
End;
end;
Procedure TForm1.OnMinimizeProc(Sender:TObject);
Begin
PostMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
End;
Procedure TForm1.ControlWindow(Var Msg:TMessage);
Begin
IF Msg.WParam=SC_MINIMIZE then
Begin
Ic(1,Application.Icon);
ShowWindow(Handle,SW_HIDE);
ShowWindow(Application.Handle,SW_HIDE);
End
else inherited;
End;
Procedure TForm1.Ic(n:Integer;Icon:TIcon);
Var Nim:TNotifyIconData;
begin
With Nim do
Begin
cbSize:=SizeOf(Nim);
Wnd:=Self.Handle;
uID:=1;
uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
hicon:=Icon.Handle;
uCallbackMessage:=wm_user+1;
szTip :='WoD Bot 1.0';
End;
Case n OF
1: Shell_NotifyIcon(Nim_Add,@Nim);
2: Shell_NotifyIcon(Nim_Delete,@Nim);
3: Shell_NotifyIcon(Nim_Modify,@Nim);
End;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
btn3.Click;
PostMessage(Handle,WM_SYSCOMMAND,SC_RESTORE,0);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Ic(2,Application.Icon);
Close;
end;
procedure TForm1.grp1Click(Sender: TObject);
begin
btn1.Click;
end;
procedure TForm1.rb2Click(Sender: TObject);
begin
btn1.Click;
end;
procedure TForm1.rb3Click(Sender: TObject);
begin
btn1.Click;
end;
procedure TForm1.rb3KeyPress(Sender: TObject; var Key: Char);
begin
btn1.Click;
end;
procedure TForm1.rb2KeyPress(Sender: TObject; var Key: Char);
begin
btn1.Click;
end;
end.
Последний раз редактировалось foxzyly; 21.01.2013 в 16:07.
коментирую хдд
грубо говоря, работа ведется с винапи, в окно игры отправляется нажатие клавиш если убрать из кода оформление(сворачивание в трей переключение режимов и т.д.) то вся суть сводиттся:
1. проверка запущености игры
Код:
var h:HWND;
i:Integer;
......
h:=FindWindow('WOD Online',nil); - в ячейку h помеаеться хендл окна
if h=0 then begin
.....
i:=MessageDlg('No Game!!!',mtWarning,[mbYes],0);
end
else begin
.....
end;
спасибо все что нужно узнал и думаю каждый сможет пусть даже не бота а код настроить для себя, дальше методом тыка ))
зы: но все равно незабываем заглядывать и выкладывать что нить новенькое или свои варианты этого чуда
Последний раз редактировалось foxzyly; 22.01.2013 в 13:28.
с проблемой выше разобрался.
постоянно выдает ошибку (все работает но все же интересно почему)
сколько не мучился но не получается назначить кнопку через Shift или CONTROL (были варианты: LCONTROL, LEFTCONTROL, и даже LEFT CONTROL и тд.)
вариантов тоже много было и за и после и даже в кавычках
выдает ошибку: incompatible types word and string скрин неделал но если нужно будет (с ошибкой разобрался) но все равно неробит
так же не получается назначить клавишу W пробовал заменять на V и включать сбор лута казалось бы нечего сложного но опять не работает (((
в чем секрет??
Последний раз редактировалось foxzyly; 25.01.2013 в 01:15.
Написанно же - перемнная i, меседж диалог,вызывается сам по себе -_-
я похоже забыл упомянуть что делфи 1 раз открыл(
и я не заметил чтоб он вызывался сам по себе
ну люди блин 202 просмотра и ток 1 ответ
или тут община супер или из людей ток 2е (сори за грубость)
ну не кликает он!! где тут грустный смайлик? SOS!!!!
ну и сюда тоже добавлял во общем пробегись по коду.
вроде так ) и дальше методом тыка, сам первый раз такое делал, редактировать готовый код несложно, а самому написать фантазии не хватит да и опыта
а от гуру ответа так и нет((