Манор по системному таймеру, с простой формой. Для грации.
Можно прикрутить автоотключение, где-то видел в начале темы.
Код:
//на основе скрипта:
{
by VORON
//СКРИПТ АВТОМАТИЧЕСКОЙ СДАЧИ МАНОРА
}
// за что ему огромное спасибо.
//Решил сделать Форму для скрипта, так как на сервере перенесли Олимпиады на x часов раньше.
//Необходимо уставить время сдачи и интервал меду пакетами.
//Останавливать после сдачи вручную.
const
name='xxxx'; // вписать Ник
var
//Список переменных формы
//Создаваемая форма
FormMain : TForm;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
ClearButom1: TButton;
Buttom1: TButton;
memo1 : TMemo;
CheckBox1: TCheckBox;
GroupBox1: TGroupBox;
Label2: TLabel;
GroupBox2: TGroupBox;
Label5: TLabel;
//******************************************
Timer1, Timer2: TTimer;
priv,r,h,m,s,t,PaketManora:String;
EndTime: TDateTime;
msg:string;
//*******************************************
procedure Init; //Вызывается при включении скрипта
begin
FormMain:=Create_FormMain; //создаю форму
//таймер в заголовке формы
Timer1:=TTimer.Create(nil); // таймер заголовка формы
Timer1.Enabled:=true;
Timer1.Interval:=1000; //время задержки
Timer1.OnTimer:=@Onaction;
//таймер отправки пакетов
Timer2:=TTimer.Create(nil);
Timer2.Enabled:=false;
Timer2.Interval:=1000; //время задержки
Timer2.OnTimer:=@fromEdit;
EditPaste; // вставка условных значений во все Edit
Memo1.Lines.Add('Автоманор в режиме ожиданя.');
Memo1.Lines.Add('Для активации автоматической сдачи');
Memo1.Lines.Add('нужно 1раз продать урожай');
end;
function Create_FormMain : TForm;
//Создаем форму и соотв. компоненты на ней ...
Var
Yes : boolean;
begin
Result := TForm.Create(nil);
//............................................
//Свойства формы
Result.Caption := 'Поехали';
Result.Left := 318;
Result.Top := 107;
Result.Width := 223;
Result.Height := 368;
Result.FormStyle := fsStayOnTop;
Result.Position := poDesigned;
Result.BorderStyle := bsSizeable;
Result.BorderWidth := 0;
Result.WindowState := wsNormal;
Result.Color := clBtnFace;
Result.Font.Name := 'MS Sans Serif';
Result.Font.Size := 11;
Result.Font.Color := clWindowText;
Result.Font.CharSet:= 1;
Result.BorderIcons := biSystemMenu;
//......................................
//memo1
memo1 := TMemo.Create(Result);
memo1.Parent := Result;
memo1.Left :=0;
memo1.Top := 56;
memo1.Width := 209;
memo1.Height := 211;
memo1.Visible := TRUE;
memo1.Tag := 0;
memo1.Enabled := TRUE;
memo1.Hint := '';
memo1.ShowHint := FALSE;
memo1.Font.Name := 'Tahoma';
memo1.Font.Size := 8;
memo1.Font.Color := clWindowText;
memo1.Color := clWindow;
memo1.TabOrder := 4;
memo1.TabStop := TRUE;
memo1.Align := alNone;
memo1.WordWrap := false;
memo1.Alignment := taLeftJustify;
memo1.WantTabs := FALSE;
memo1.WantReturns := TRUE;
memo1.HideSelection := TRUE;
memo1.MaxLength := 0;
memo1.OEMConvert := FALSE;
memo1.ReadOnly := FALSE;
memo1.ScrollBars := ssNone;
//......................................
//ClearButom1
ClearButom1 := TButton.Create(Result);
ClearButom1.Parent := Result;
ClearButom1.Left := 128;
ClearButom1.Top := 336;
ClearButom1.Width := 81;
ClearButom1.Height := 25;
ClearButom1.Visible := TRUE;
ClearButom1.Tag := 0;
ClearButom1.Enabled := TRUE;
ClearButom1.Hint := '';
ClearButom1.ShowHint := FALSE;
ClearButom1.Caption := 'Очистить';
ClearButom1.Font.Name := 'Tahoma';
ClearButom1.Font.Size := 8;
ClearButom1.Font.Color := clWindowText;
ClearButom1.Font.CharSet := 1;
ClearButom1.TabOrder := 0;
ClearButom1.TabStop := TRUE;
ClearButom1.Cancel := FALSE;
ClearButom1.ModalResult := 0;
ClearButom1.Anchors := akLeft;
ClearButom1.OnClick := @ClearButom1Click;
//......................................
//Button1
Buttom1 := TButton.Create(Result);
Buttom1.Parent := Result;
Buttom1.Left := 2;
Buttom1.Top := 336;
Buttom1.Width := 126;
Buttom1.Height := 25;
Buttom1.Visible := TRUE;
Buttom1.Tag := 0;
Buttom1.Enabled := FALSE;
Buttom1.Hint := '';
Buttom1.ShowHint := FALSE;
Buttom1.Caption := 'Тест (послать 1 пакет)';
Buttom1.Font.Name := 'Tahoma';
Buttom1.Font.Size := 8;
Buttom1.Font.Color := clWindowText;
Buttom1.Font.CharSet := 1;
Buttom1.TabOrder := 0;
Buttom1.TabStop := TRUE;
Buttom1.Cancel := FALSE;
Buttom1.ModalResult := 0;
Buttom1.Anchors := akLeft;
Buttom1.OnClick := @Buttom1Click;
//......................................
//CheckBox1
CheckBox1 := TCheckBox.Create(Result);
CheckBox1.Parent := Result;
CheckBox1.Left := 3;
CheckBox1.Top := 290;
CheckBox1.Width := 208;
CheckBox1.Height := 35;
CheckBox1.Visible := TRUE;
CheckBox1.Tag := 0;
CheckBox1.Enabled := FALSE;
CheckBox1.Hint := 'Включить автоматическую отправку по таймеру';
CheckBox1.ShowHint := TRUE;
CheckBox1.Caption := 'Автоматом сдавать по таймеру?';
CheckBox1.Font.Name := 'Tahoma';
CheckBox1.Font.Size := 8;
CheckBox1.Font.Color := clWindowText;
CheckBox1.Color := clRed;
CheckBox1.TabOrder := 0;
CheckBox1.TabStop := TRUE;
CheckBox1.Checked := FALSE;
CheckBox1.AllowGrayed := FALSE;
CheckBox1.State := cbUnchecked;
CheckBox1.Anchors := akLeft;
CheckBox1.OnClick := @CheckBox1_Click;
//......................................
//GroupBox1
GroupBox1 := TGroupBox.Create(Result);
GroupBox1.Parent := Result;
GroupBox1.Left := 0;
GroupBox1.Top := 0;
GroupBox1.Width := 105;
GroupBox1.Height := 49;
GroupBox1.Visible := TRUE;
GroupBox1.Tag := 0;
GroupBox1.Enabled := TRUE;
GroupBox1.Hint := '';
GroupBox1.ShowHint := FALSE;
GroupBox1.Caption := 'Время отправки';
GroupBox1.Align := alNone;
GroupBox1.Color := clBtnFace;
GroupBox1.Font.Name := 'Tahoma';
GroupBox1.Font.Size := 8;
GroupBox1.Font.Color := clWindowText;
GroupBox1.Font.CharSet := 1;
GroupBox1.TabOrder := 3;
GroupBox1.TabStop := FALSE;
//......................................
//Label2
Label2 := TLabel.Create(Result);
Label2.Parent := GroupBox1;
Label2.Left := 16;
Label2.Top := 16;
Label2.Width := 54;
Label2.Height := 24;
Label2.Visible := TRUE;
Label2.Tag := 0;
Label2.Enabled := TRUE;
Label2.Hint := '';
Label2.ShowHint := FALSE;
Label2.Caption := '_ : !. :';
Label2.Transparent := TRUE;
Label2.WordWrap := FALSE;
Label2.Alignment := taLeftJustify;
Label2.Layout := tlTop;
Label2.AutoSize := TRUE;
Label2.Align := alNone;
Label2.Font.Name := 'MS Sans Serif';
Label2.Font.Size := 19;
Label2.Font.Color := clWindowText;
Label2.Color := clBtnFace;
//......................................
//Edit4
Edit4 := TEdit.Create(Result);
Edit4.Parent := GroupBox1;
Edit4.Left := 72;
Edit4.Top := 16;
Edit4.Width := 25;
Edit4.Height := 24;
Edit4.Visible := TRUE;
Edit4.Tag := 0;
Edit4.Enabled := TRUE;
Edit4.Hint := '';
Edit4.ShowHint := TRUE;
Edit4.Text := '00';
Edit4.Font.Name := 'Tahoma';
Edit4.Font.Size := 13;
Edit4.Font.Color := clWindowText;
Edit4.Color := clWindow;
Edit4.TabOrder := 1;
Edit4.TabStop := TRUE;
Edit4.ReadOnly := FALSE;
Edit4.MaxLength := 0;
Edit4.AutoSize := TRUE;
//......................................
//Edit2
Edit2 := TEdit.Create(Result);
Edit2.Parent := GroupBox1;
Edit2.Left := 8;
Edit2.Top := 16;
Edit2.Width := 25;
Edit2.Height := 24;
Edit2.Visible := TRUE;
Edit2.Tag := 0;
Edit2.Enabled := TRUE;
Edit2.Hint := '';
Edit2.ShowHint := TRUE;
Edit2.Text := '00';
Edit2.Font.Name := 'Tahoma';
Edit2.Font.Size := 13;
Edit2.Font.Color := clWindowText;
Edit2.Color := clWindow;
Edit2.TabOrder := 1;
Edit2.TabStop := TRUE;
Edit2.ReadOnly := FALSE;
Edit2.MaxLength := 0;
Edit2.AutoSize := TRUE;
//......................................
//Edit3
Edit3 := TEdit.Create(Result);
Edit3.Parent := GroupBox1;
Edit3.Left := 40;
Edit3.Top := 16;
Edit3.Width := 25;
Edit3.Height := 24;
Edit3.Visible := TRUE;
Edit3.Tag := 0;
Edit3.Enabled := TRUE;
Edit3.Hint := '';
Edit3.ShowHint := TRUE;
Edit3.Text := '00';
Edit3.Font.Name := 'Tahoma';
Edit3.Font.Size := 13;
Edit3.Font.Color := clWindowText;
Edit3.Color := clWindow;
Edit3.TabOrder := 1;
Edit3.TabStop := TRUE;
Edit3.ReadOnly := FALSE;
Edit3.MaxLength := 0;
Edit3.AutoSize := TRUE;
//......................................
//GroupBox2
GroupBox2 := TGroupBox.Create(Result);
GroupBox2.Parent := Result;
GroupBox2.Left := 112;
GroupBox2.Top := 0;
GroupBox2.Width := 97;
GroupBox2.Height := 49;
GroupBox2.Visible := TRUE;
GroupBox2.Tag := 0;
GroupBox2.Enabled := TRUE;
GroupBox2.Hint := '';
GroupBox2.ShowHint := FALSE;
GroupBox2.Caption := 'Интервал';
GroupBox2.Align := alNone;
GroupBox2.Color := clBtnFace;
GroupBox2.Font.Name := 'Tahoma';
GroupBox2.Font.Size := 8;
GroupBox2.Font.Color := clWindowText;
GroupBox2.Font.CharSet := 1;
GroupBox2.TabOrder := 4;
GroupBox2.TabStop := FALSE;
//......................................
//Label5
Label5 := TLabel.Create(Result);
Label5.Parent := GroupBox2;
Label5.Left := 64;
Label5.Top := 24;
Label5.Width := 26;
Label5.Height := 16;
Label5.Visible := TRUE;
Label5.Tag := 0;
Label5.Enabled := TRUE;
Label5.Hint := '';
Label5.ShowHint := FALSE;
Label5.Caption := '(мс)';
Label5.Transparent := TRUE;
Label5.WordWrap := FALSE;
Label5.Alignment := taLeftJustify;
Label5.Layout := tlTop;
Label5.AutoSize := TRUE;
Label5.Align := alNone;
Label5.Font.Name := 'MS Sans Serif';
Label5.Font.Size := 13;
Label5.Font.Color := clWindowText;
Label5.Color := clBtnFace;
//......................................
//Edit1
Edit1 := TEdit.Create(Result);
Edit1.Parent := GroupBox2;
Edit1.Left := 8;
Edit1.Top := 16;
Edit1.Width := 49;
Edit1.Height := 24;
Edit1.Visible := TRUE;
Edit1.Tag := 0;
Edit1.Enabled := TRUE;
Edit1.Hint := '';
Edit1.ShowHint := TRUE;
Edit1.Text := '300';
Edit1.Font.Name := 'Tahoma';
Edit1.Font.Size := 13;
Edit1.Font.Color := clWindowText;
Edit1.Color := clWindow;
Edit1.TabOrder := 0;
Edit1.TabStop := TRUE;
Edit1.ReadOnly := FALSE;
Edit1.MaxLength := 0;
Edit1.AutoSize := TRUE;
//......................................
Result.Show;
SendMsg('Авто манор запущен.');
end;
//**************************************************************
//по активации 1-го таймера присваиваю дату заголовку, обновляя её
procedure Onaction;
begin
FormMain.Caption := TimeToStr(Time);
end;
//Устанавливаем условное время во всех Edit
procedure EditPaste;
begin
//t:=TimeToStr(time); // дата в строку
t:=FormatDateTime('hh:nn:ss', Time());
edit2.Text:=copy(t,1,2); //считываю часы
edit3.Text:=copy(t,4,2); //минуты
edit4.Text:=copy(t,7,2); //секунды
end;
//отправка пакетов по введённому времени
procedure fromEdit;
begin
//priv:='Привет';//условная константа для проверки работы
h:=Edit2.Text; //Часы
m:=Edit3.Text; //минуты
s:=Edit4.Text; //секунды
Timer2.Interval:=StrToInt(Edit1.Text);
r:=h+':'+m+':'+s; // результат ввода времени отправки
if TimeToStr(time)>=r then
begin // отправка манора
Memo1.Lines.Add('Отправляю пакет.');
buf := PaketManora;
SendToServer;
end;
end;
procedure ClearButom1Click;
begin
Memo1.lines.Clear;
end;
//тесовая отправка 1го пакета
procedure Buttom1Click;
begin
buf := PaketManora;
SendToServer;
Memo1.Lines.Add('Тестовый пакет отправлен.')
end;
// активность таймера устанавливаем проверкой значения чекбокса
procedure CheckBox1_Click;
begin
if CheckBox1.Checked then
begin
Timer2.Enabled:=True;
GroupBox1.Enabled:=False;
edit2.Enabled:=False;
edit2.Enabled:=False;
edit3.Enabled:=False;
edit4.Enabled:=False;
end
else
begin
Timer2.Enabled:=True;
edit2.Enabled:=True;
edit2.Enabled:=True;
edit3.Enabled:=True;
edit4.Enabled:=True;
edit1.Enabled:=True;
Timer2.Enabled:=False;
end;
end;
//***************************************************************************
//освобождаем память
procedure Free;
begin
Free_FormMain;
Timer1.OnTimer:=nil;
Timer2.OnTimer:=nil;
SendMsg('Авто манор выключен.');
end;
procedure Free_FormMain;
//Освобождаем ресурсы ...
begin
TRY
if FormMain<>NIL then
begin
FormMain.Free;
FormMain:=NIL;
end;
FINALLY
END;
END;
//***********************************************************************************
// Работа с пакетами
begin
//если перехвачен пакет на сдачу манора то D0=MultiSellList_:-(Script) 09=AttackinCoolTime 00=KeyInit:c(01)q(Key)d(d)
if FromClient and (pck[1]=#$D0) and (pck[2]=#$02) and (pck[3]=#$00) then
begin
//запоминаем его полностью
PaketManora:=pck;
SendMsg('Пакет манора перехвачен.');
Memo1.Lines.Add('Пакет манора перехвачен');
CheckBox1.Enabled:=True;
Buttom1.Enabled:=True;
CheckBox1.Color := clGreen;
end;
end.
Оффтоп