NLObP, не могу понять почему происходит так:
В таймере есть проверка на поломки,
delphi Код:
procedure OnTimer(Sender: TObject);
begin
if (Adena<=99000000) then begin
timer.Enabled:=False;
stats.Lines.Add('Деньги закончились! Меняем...');
if CheckAutoChange.Checked then Change.Enabled:=True else exit;
end;
ScrollOID:=GetItem(ScrollID,0);
if (ScrollOID<3) then begin
stats.Lines.Add('Свитки закончились! Покупаем...');
timer.enabled:=False;
//***** Закупка заточек *
TargetAttacker(RoyOID);
BuyScroll;
BuyScroll;
BuyScroll;
//***********************
delay(50);
timer.enabled:=True;
end;
UseItem(ScrollOID);
msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));
ready:=true; //готовы затачивать
if (CurEnchLvl>=StrToInt(Edit1.Text)) then begin
stats.Lines.Add('Sum '+IntToStr(SumItem(ItemID))+' lvl'+IntToStr(CurEnchLvl)+' Ed'+(Edit1.Text));
timer.enabled:=false;
//Пакет RequestItemList
buf:=hstr('0F');
SendToServerEx(Name);
delay(50);
stats.Lines.Add('Достигнут требуемый уровень! Закупаем...');
stats.Lines.Add('Свободно слотов: '+IntToStr(EmptySlots));
if (EmptySlots>0) then begin
ButtonBuyItems.Enabled:=True;
ButtonBuyItems.Caption:=((ComboBoxItem.Text)+': '+IntToStr(EmptySlots)+'шт.');
end;
if CheckAutoBuy.Checked then Shops.Enabled:=True else exit;
end;
if (SumItem(ItemID)<=StrToInt(EditKeepItems.Text)) then begin
timer.enabled:=false;
stats.Lines.Add('Ограничение по поломкам - '+(EditKeepItems.Text)+'! Закупаем...');
if CheckAutoBuy.Checked then Shops.Enabled:=True else exit;
end;
EditItemVal.Text:=IntToStr(SumItem(ItemID));
EditScrollVal.Text:=IntToStr(SumItem(ScrollID));
end;
и как я понимаю даже при команде timer.Enabled:=False; цикл таймера всеравно доходит до конца. Поэтому я переставил функцию заточки ДО проверки условий, чтобы проверялось уже после заточки. Иначе получается что по условию нужно оставить к примеру 9 штук, условие останавливает таймер, но таймер доходит до конца где еще раз затачивает эту последнюю штуку, которую с успехом может сломать. Вроде бы так должно работать нормально...
НО.
Заметил что он всеравно после того как сработало условие, и собственно перед тем как начинается закупка, он точит
еще одну штуку. А если она ломается, то сводится на нет весь предыдущий цикл заточки.
От чего так происходит?