Показать сообщение отдельно
Старый 02.05.2009, 23:15   #535
Пользователь
 
Аватар для StekloReZ
 
Регистрация: 07.03.2009
Сообщений: 35
Сказал Спасибо: 28
Имеет 13 спасибок в 6 сообщенях
StekloReZ пока неопределено
По умолчанию Сдача манора по таймеру

Манор по системному таймеру, с простой формой. Для грации.
Можно прикрутить автоотключение, где-то видел в начале темы.
Код:
//на основе скрипта:
{
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.

Оффтоп

Последний раз редактировалось StekloReZ, 02.05.2009 в 23:18. Причина: оформление поста
StekloReZ вне форума   Ответить с цитированием
За это сообщение StekloReZ нажился 2 спасибками от: