Показать сообщение отдельно
Старый 13.10.2008, 13:09   #70
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Вопрос

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 штук, условие останавливает таймер, но таймер доходит до конца где еще раз затачивает эту последнюю штуку, которую с успехом может сломать. Вроде бы так должно работать нормально...
НО.
Заметил что он всеравно после того как сработало условие, и собственно перед тем как начинается закупка, он точит еще одну штуку. А если она ломается, то сводится на нет весь предыдущий цикл заточки.
От чего так происходит?
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
За это сообщение Shadow нажился спасибкой от: