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

Цитата:
Сообщение от NLObP Посмотреть сообщение
Готовь пакет на все 80 предметов
Код:
c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d( Count)
d(BuyCount) - сколько будет повторов -> i(ItemID)d( Count)

к примеру
Код:
id          -    #$1F
h(ListID) -      #$1234567
d(BuyCount)    - 80
i(ItemID)      - #$123
d( Count)      - 1
... ( повторяем в цикле)
i(ItemID)      - #$800
d( Count)      - 1
Так у меня ведь не RequestBuyItem, а RequestMultiSell, тоесть обмен. А там такого нет.

Добавлено через 13 часов 42 минуты
Переделал обменную часть от рыбалки. Но периодически он останавливается. И постоянно слетает коннект. Посмотрите, что я не так сделал:
delphi Код:
//****************************************************************************** //.............................................................................. // Закупка procedure Shoping(Sender: TObject); begin  timer.Enabled:=False;  Change.Enabled:=False; // if ShopMode=1 then begin   if NeedToBuy then exit; //если еще не обменяли предыдущую вещь, то выходим сразу   if (RoyOID=0) then begin     //(RoyOID=0) or     Shops.Enabled:=False; //останавливаем торговлю     stats.Lines.Add('Не определены OID! Требуется отбежать подальше и вернуться.');     exit; //выходим   end;   AdenaCounter(CoLChangeCount, CanChange, CanBuy);   if (Adena<ItemPrice) then begin    Shops.Enabled:=False; //останавливаем    stats.Lines.Add('Не хватает денег.');    NeedToChange:=True; //   Shops.Enabled:=True;    exit;   end;   if (EmptySlots<=2) then begin //проверка на выход    Shops.Enabled:=False; //останавливаем торговлю    TargetAttacker('Roy', RoyOID); //таргет    msg.Lines.Add('Всё закупили!');    CurEnchLvl:=0;    Edit2.text:=IntToStr(CurEnchLvl);    EditBuyDelay.Enabled:=False;    timer.Enabled:=True;   end    else   begin    msg.Lines.Add('Цель Roy >');    TargetAttacker('Roy', RoyOID); //таргет    msg.Lines.Add('Готовы обменять: '+IntToStr(EmptySlots-2));    NeedToBuy:=True; //готовы обменивать   end; end; //.............................................................................. //.............................................................................. // Обмен procedure OnChange(Sender: TObject); begin  timer.Enabled:=False;  Shops.Enabled:=False;   if NeedToChange then exit; //если еще не обменяли предыдущую вещь, то выходим сразу   if (WinnieOID=0) then begin     //(RoyOID=0) or     Change.Enabled:=False; //останавливаем торговлю     stats.Lines.Add('Не определены OID! Требуется отбежать подальше и вернуться.');     exit; //выходим   end;   AdenaCounter(CoLChangeCount, CanChange, CanBuy);   if (Adena>=1900000000) then begin //проверка на выход    Change.Enabled:=False; //останавливаем    TargetAttacker('Roy', RoyOID); //таргет    msg.Lines.Add('Всё обменяли!');    timer.Enabled:=True;   end    else   begin    msg.Lines.Add('Цель Winnie >');    TargetAttacker('Winnie', WinnieOID); //таргет    msg.Lines.Add('Готовы обменять: '+IntToStr(ColChangeCount));    NeedToChange:=True; //готовы обменивать   end; end; //.............................................................................. //****************************************************************************** //****************************************************************************** procedure OnTimer(Sender: TObject); begin  EditItemVal.Text:=IntToStr(SumItem(ItemID));  EditScrollVal.Text:=IntToStr(SumItem(ScrollID));  if (Adena<=99000000) then begin   stats.Lines.Add('Деньги закончились! Меняем...');   timer.Enabled:=False;   NeedToChange:=True;// else exit;   Change.Enabled:=True;  end;  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 (SumItem(ItemID)>=10) and (CurEnchLvl>=StrToInt(Edit1.Text)) then begin    stats.Lines.Add('Max '+IntToStr(MaxEnchLvl));    stats.Lines.Add('Заточено 10шт '+IntToStr(MaxEnchLvl)+' уровня!');    inc(MaxEnchLvl);    stats.Lines.Add('Увеличиваем уровень: '+IntToStr(MaxEnchLvl));    Edit1.Text:=(IntToStr(MaxEnchLvl));   end; }   NeedToBuy:=True;   Shops.Enabled:=True;   //exit;  end;  if (SumItem(ItemID)<=StrToInt(EditKeepItems.Text)) then begin   timer.enabled:=false;   buf:=hstr('0F');   SendToServerEx(Name);   stats.Lines.Add('Ограничение по поломкам - '+IntToStr(EditKeepItems.Text)+'! Закупаем...');   delay(50);   NeedToBuy:=True;   Shops.Enabled:=True;  end;  ScrollOID:=GetItem(ScrollID,0);  if (ScrollOID<=3) then begin   stats.Lines.Add('Свитки закончились! Покупаем...');   timer.enabled:=False;   //***** Закупка заточек *   BuyScroll;   //***********************   delay(50);   timer.enabled:=True;   //exit;  end;  UseItem(ScrollOID);  msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));  ready:=true; //готовы затачивать end; //============================================================================== // вызывается при приходе каждого пакета, если скрипт включен //****************************************************************************** Begin //****************************************************************************  if pck='' then exit; //****************************************************************************  if NeedToChange and (WinnieOID<>0) then begin   if (ConnectName=Name) and FromServer then begin    case pck[1] of     #$0F: begin            msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');            msg.Lines.Add(IntToStr(ReadD(4)));            if (ReadD(2)=WinnieOID) then begin             delay(350);             RequestByPassToServer('menu_select?ask=-303&reply=576');             msg.Lines.Add('C>Пакет RequestBypassToServer');            end;           end;     #$D0: begin            msg.Lines.Add('S>Пакет MultiSellList #$D0');            delay(350);            RequestMultiSellItem(576, 3, 100);            NeedToChange:=False;           end;    end;   end;  end;  if NeedToBuy and (RoyOID<>0) then begin   if (ConnectName=Name) and FromServer then begin    case pck[1] of     #$0F: begin            msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');            msg.Lines.Add(IntToStr(ReadD(4)));            if (ReadD(2)=RoyOID) then begin             delay(350);             RequestByPassToServer('menu_select?ask=-303&reply='+IntToStr(ItemListID));             msg.Lines.Add('C>Пакет RequestBypassToServer '+IntToStr(ItemListID));            end;           end;         #$D0: begin            msg.Lines.Add('S>Пакет MultiSellList #$D0');            delay(350);            RequestMultiSellItem(ItemListID, ItemEntryID, ItemCount);            NeedToBuy:=False;           end;    end;   end;  end; //****************************************************************************  
Может зря я два таймера использовал, и можно на одном это сделать?
__________________
Shadows anywhere...

Последний раз редактировалось Shadow, 16.08.2008 в 23:47. Причина: Добавлено сообщение
Shadow вне форума   Ответить с цитированием