Цитата:
Сообщение от Shadow
Смотрел пакеты, ОбджектИД и координаты продавцов известны. Выше в куске скрипта в процедуре Roy. Что за переменные MyX, и тд? Я так понимаю это координаты моего чара. Что за переменная Attacker, откуда она берется?
|
MyX,MyY,MyZ - координаты чара. Сервер проверяет расстояние и если ты далеко, то отвергает запрос.
Attacker - ObjectId. Осталось так исторически из скриптов бота. Поменял в выше отписанном сообщении.
Добавлено через 13 минут
Цитата:
Сообщение от Shadow
В каком месте скрипта правильно всетаки поставить закупку заточек?
И еще, как лучше сделать вызов процедуры на закупку, чтобы из переменных подставлялись значения итема, чтобы оперативно изменять что покупать. Типа - Закупка(СкроллЫ);
а в СкроллЫ(СкроллА,Б,С) прописано listID, EntryId и Count этих свитков? А то я второй день в этих скриптах ковыряюсь, уже голова набекрень =)
|
delphi Код:
//***************************************************************
//s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemType1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d(ItemBodyPart)w(EnchantLevel)w(h)w(h)d(refPrice)
//c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectID)i(ItemID)d(Count)
//продаем по одному типу
procedure RequestSellItem(ItemOID,ItemID,Count:integer);
begin
if ReadyToSell then begin
msg.Lines.Add('Продадим предмет OID:'+inttostr(ItemOID)+' ID:'+inttostr(ItemID)+' в кол-ве:'+inttostr(count));
buf:=#$1E;
WriteD(ListID);
WriteD(1);
WriteD(ItemOID);
WriteD(ItemID);
WriteD(Count);
SendToServerEx(Name);
end;
end;
//......................................
//***************************************************************
//c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d(Count)
//купим по одному типу
procedure RequestBuyItem(ItemID,Count:integer);
begin
if ReadyToBuy then begin
msg.Lines.Add('Купим предмет ID:'+inttostr(ItemID)+' в кол-ве:'+inttostr(count));
buf:=#$1F;
WriteD(ListID);
WriteD(1);
WriteD(ItemID);
WriteD(Count);
SendToServerEx(Name);
end;
end;
//......................................
//***************************************************************
//cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Amount)
//продаем по одному типу
procedure RequestMultiSellItem(ListId,EntryID,Count:integer);
begin
msg.Lines.Add('Обменяем предмет ListID:'+inttostr(ListID)+' EntryID:'+inttostr(EntryID)+' в кол-ве:'+inttostr(count));
if ReadyToMultiSell then begin
buf:=#$A7;
WriteD(ListID);
WriteD(EntryId);
WriteD(Count);
SendToServerEx(Name);
end;
end;
//......................................
procedure OnTimer(Sender: TObject);
begin
EditItemVal.text:=inttostr(sumitem(ItemID));
EditScrollVal.text:=inttostr(sumitem(ScrollID));
if (CurEnchLvl>=strtoint(Edit1.Text)) then begin
msg.Lines.Add('Нечего точить! Прервано!');
timer.enabled:=false;
exit;
end;
if (sumitem(ItemID)<=1) then begin
// if (sumitem(ItemID)<=0) then begin //если надо точить одну вещь
msg.Lines.Add('Прервано!');
timer.enabled:=false;
exit;
end;
ScrollOID:=GetItem(ScrollID,0);
if ScrollOID=0 then begin
msg.Lines.Add('Нет заточки! Прервано!');
timer.enabled:=false;
exit;
end;
UseItem(ScrollOID);
msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));
ready:=true; //готовы затачивать
end;
//......................................
В процедуре OnTimer вместо прерывания работы вставь вызовы процедур закупки. Потом снова таймер запускай, для продолжения заточки.
PS: Вы свои скрипты сюда выкладывайте, когда отладите. Я их в первый пост выложу.