Показать сообщение отдельно
Старый 12.03.2011, 06:26   #16
Местный
 
Регистрация: 04.11.2009
Адрес: Где-то в жопе европы
Сообщений: 316
Сказал Спасибо: 32
Имеет 42 спасибок в 39 сообщенях
wimax пока неопределено
По умолчанию

Код:
Const
  NickName = 'твой нИК!';
  MaxEnchantLevel = Доскольки точить ЧИСЛО;

  interval = 0;   //Интервал между точкой
  MainDebug = false; // ПИСАТТЬ СОБОЩЕНИЯ В ЧАТ ИЛИ НЕТ ДА-true НЕТ-false
  
var
  CurLevel: integer;
  tick: integer;
  SKillID: integer;

procedure Init; //Вызывается при включении скрипта
begin
  CurLevel := -1;
end;


function Wait(var tick: integer; Timewait: Integer): Boolean; // сквозная проверка без остановки скрипта
var
  t: integer;
begin
  result:=false;
  t:=Round(Time*86400);
  if t>(tick+Timewait) then begin
    if tick>0 then result:=true;
    tick:=t;
  end;
end;

procedure SendMsg_to_Chat(ChatType: integer; msg:string);                                 
begin
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS(NickName);
  WriteS(msg);
  SendToClientEx(NickName);
end;
// послать отладочное сообщение себе
procedure DebugMsg(msg:string);
begin
  if MainDebug then
    SendMsg_to_Private(msg);
end;
// послать сообщение себе в приват
procedure SendMsg_to_Private(msg:string);
begin
  SendMsg_to_Chat(2,msg);
end;

begin
  if pck = '' then exit;
  // Т.к. использоваться будет только для одного чара, остальных сразу отсеиваем
  if ConnectName<>NickName then Exit;

  // пакет - сообщение со статусом заточки
  if FromServer and (pck[1]=#$62) and (pck[3]+pck[4]+pck[5] = HStr('05 00 00')) then begin
    if (pck[2] = #$A0)or(pck[2] = #$A1)then begin
      SKillID := ReadD(14);
      CurLevel := ReadD(18);
      // заточка была не удачной, обнуляем текущий уровень заточки
      if pck[2] = #$A1 then
        CurLevel := (CurLevel div 100)*100;  // округляем
      DebugMsg('SKillID='+inttostr(SKillID)+'; CurLevel='+inttostr(CurLevel));
      if (CurLevel mod 100) >= MaxEnchantLevel then
        CurLevel := -1;
      tick := 0;
      Wait(tick, interval);
    end;
  end;

  //  Можно закомментировать "and Wait(tick, interval)", точиться будет намного быстрее,
  // только ощущение такое, что шанс точки меньше, хотя может и показалось
  if (CurLevel >= 0) and Wait(tick, interval) then begin
    DebugMsg('точим');
    buf := HStr('D0 0F 00');
    WriteD(SKillID);
    WriteD(CurLevel+1);
    SendToServerEx(NickName);
    CurLevel := -1;
  end;
end.
настрой тока константы и все и будет тебе точить все отлично
wimax вне форума   Ответить с цитированием
За это сообщение wimax нажился 2 спасибками от: