PDA

Просмотр полной версии : Продажа интемов...


Sergey
21.05.2008, 01:34
Здесь у мя возник вопрос. Как продать какие либо интемы с инвентаря до магаза. Смотрел скрипт на рыбалку:


procedure OnMoveTo1(Sender: TObject);
begin
case mov of
//-------------------------------------------------
//продаем фишерману все что можно
//-------------------------------------------------
500: begin
//мы у фишермана, продаем все ненужное
if SellingItemID=6917 then begin
MoveTo1.enabled:=false;
info.Lines.Add('Всё продали!');
//mov:=16;
//info.Lines.Add('Бежим на берег...');
end;
if ReadyToSell then exit; //если еще не продали предыдущую вещь, то выходим сразу
if FishermanOID<>0 then begin
if FindItem(SellingItemID)<>0 then begin //продаем 6920=Recipe: Greater Fish Oil (100%)
TargetAttacker(FishermanOID); //фишермана в таргет
info.Lines.Add('Готовы продть:'+inttostr(SellingItemID));
ReadyToSell:=true; //готовы продавать
inc(SellingItemID);
end else begin
msg.Lines.Add('Нет такого предмета:'+inttostr(SellingItemID));
inc(SellingItemID);
end;
end;
end;
end;
end;

begin
//************************************************** **************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//************************************************** **************************
//продажа состоит из следующих шагов:
//1. таргет на продавце, пауза, снова таргет
//2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
//3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
//4. приходит s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemTy pe1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d( ItemBodyPart)w(EnchantLevel)w(h)w(h)d(refPrice)
//5. FindItem(ID) найдем OID, Count нужной вещи по ID
//6. шлем c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectI D)i(ItemID)d(Count)
//************************************************** **************************
if ReadyToSell and (FishermanOID<>0) then begin
if (ConnectName=Name) and FromServer then begin
case pck[1] of
//после того как мы взяли в таргет продавца приходит этот пакет
//s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
#$0F: begin
msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');
if ReadD(2)=FishermanOID then begin
//шлем запрос выбора пункта - продажа
//c21=RequestBypassToServer:s(Cmd)
RequestByPassToServer(prodai1+inttostr(FishermanOI D)+prodai2);
msg.Lines.Add('C>Пакет RequestBypassToServer #$21');
end;
end;
//после выбора пункта - продажа, приходит этот пакет
//s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemTy pe1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d( ItemBodyPart)w(EnchantLevel)w(h)w(h)d(refPrice)
#$10: begin
msg.Lines.Add('S>Пакет SellList #$11');
ListID:=ReadD(6); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
//шлем запрос на продажу
//c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectI D)i(ItemID)d(Count)
msg.Lines.Add('C>Пакет RequestSellItem #$1E');
//продадим первый из списка
msg.Lines.Add('FindItem: OID:'+IntToStr(ItemBase2[1,1])+' ID:'+IntToStr(ItemBase2[2,1])+' Count:'+IntToStr(ItemBase2[3,1]));
RequestSellItem(ItemBase2[1,1],ItemBase2[2,1],ItemBase2[3,1]);
ReadyToSell:=false;
end;
end;
end;
end;
end;
//************************************************** **************************
if (ConnectName=Name) and FromClient then begin
case pck[1] of
#$1B: begin
msg.Lines.Add('C>Пакет RequestSicialAction #$1B');
case ReadD(2) of
9: begin //waiting
SellingItemId:=6904;
mov:=500;
moveto1.enabled:=true;
info.Lines.Add('Продадим все наловленное!!!');
//не передаем серверу
pck:='';
end;
end;
end;
end;
end;
end.


И мне хочится на данный момент максимум упростить скрипт. Насколько это возможно, чесно сказать я еше плохо по пакетам и скрипто писании (но есть успехи).
Хотелосьбы попросить вашей помоши в разборе и написании максимально простого скрипта продажи. Конешно если есть время (пожалуста не шлите в тему ДА БУДЕТ БОТ) ;) то там все так сказать в куче. А мне хочиться разобраться во всем отдельно и потом ваять многострочного тяжелавеса ;)

NLObP
21.05.2008, 14:37
вот в кратце что надо сделать
продажа состоит из следующих шагов:
1. таргет на продавце, пауза, снова таргет (c04=Action, c04=Action)
2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
3. шлём выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
4. приходит s10=SellList:d(Money)h(ListID)w(ListCount)w(ItemTy pe1)h(ObjectID)i(ItemID)d(Count)w(ItemType2)w(h)d( ItemBodyPart)..., из него сохраняем для работы ListID
5. У себя в инвентаре ищем OID и Count нужной вещи по её ID
6. шлем c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectI D)i(ItemID)d(Count)