Здесь у мя возник вопрос. Как продать какие либо интемы с инвентаря до магаза. Смотрел скрипт на рыбалку:
delphi Код:
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(ItemType1)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(ObjectID)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(FishermanOID)+prodai2);
msg.Lines.Add('C>Пакет RequestBypassToServer #$21');
end;
end;
//после выбора пункта - продажа, приходит этот пакет
//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)
#$10: begin
msg.Lines.Add('S>Пакет SellList #$11');
ListID:=ReadD(6); //запоминаем, он все время разный
msg.Lines.Add('ListID='+inttostr(ListID));
//шлем запрос на продажу
//c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectID)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.
И мне хочится на данный момент максимум упростить скрипт. Насколько это возможно, чесно сказать я еше плохо по пакетам и скрипто писании (но есть успехи).
Хотелосьбы попросить вашей помоши в разборе и написании максимально простого скрипта продажи. Конешно если есть время (пожалуста не шлите в тему ДА БУДЕТ БОТ)
то там все так сказать в куче. А мне хочиться разобраться во всем отдельно и потом ваять многострочного тяжелавеса