PDA

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


Becher
08.01.2008, 18:09
Вообщем получается только с помощью пакеты открыть окно продажы, но не продавать сами итемы.
Можно сделать через скрипт или последовательность пакетов, чтобы можно было продавать шмотки НПЦ через l2phx?

dmitry501
09.01.2008, 03:36
можно. в игре все делается через пакеты.

Becher
10.01.2008, 22:47
Как?

Вот пакет на открытие окна продажи.
21 6E 00 70 00 63 00 5F 00 32 00 36 00 38 00 34 00 36 00 37 00 38 00 33 00 31 00 5F 00 53 00 65 00 6C 00 6C 00 00 00

Вот пакет ,вроде как, продажи дуалов.
1E 00 00 00 00 01 00 00 00 DC DE 11 10 FC 09 00 00 01 00 00 00

Если слать эти пакеты, то через л2пкх никак не продать дуалы.
Сервер интерлюд.

Go0fy
14.01.2008, 03:45
Как?

Вот пакет на открытие окна продажи.
[quote]21 6E 00 70 00 63 00 5F 00 32 00 36 00 38 00 34 00 36 00 37 00 38 00 33 00 31 00 5F 00 53 00 65 00 6C 00 6C 00 00 00

Вот пакет ,вроде как, продажи дуалов.
1E 00 00 00 00 01 00 00 00 DC DE 11 10 FC 09 00 00 01 00 00 00

Если слать эти пакеты, то через л2пкх никак не продать дуалы.
Сервер интерлюд.[/quote:aa91d]
Для продажи айтима тебе достаточно выделить нужного нпц и отправить пакет на продажу, в данном случае твой 2-й пакет.

10pa
10.04.2008, 09:18
А если таких итемов много, т.е. куча нестопковых вещей (пусть одинаковых), у них же разные ObjectID.
Вот пакет на открытие окна продажи.
Это разве не входящий пакет от сервера?

NLObP
10.04.2008, 11:50
Проверено на практике, в скрипте рыбалки.
продажа состоит из следующих шагов:
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)...
5. FindItem(ID) найдем OID, Count нужной вещи по ID
6. шлем c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectI D)i(ItemID)d(Count)

покупка состоит из следующих шагов:
1. таргет на продавце, пауза, снова таргет c04=Action, c04=Action
2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
4. приходит s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemTyp e1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d( ItemBodyPart)...
5. FindItem(ID) найдем OID, Count нужной вещи по ID
6. шлем c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectI D)i(ItemID)d(Count)

обмен состоит из следующих шагов:
1. таргет на продавце, пауза, снова таргет c04=Action, c04=Action
2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
4. приходит sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d (onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(i temcount<)w(pItemId)d(?)w(ptype2)...
5. FindItem(ID) найдем OID, Count нужной вещи по ID
6. шлем cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Am ount)

Johnson
10.05.2008, 18:52
если нужно продавать однотипные вещи - воспользуйся моим скриптом...
в данном случае он продаёт Тарбары (если я прально понял, зачем тебе такой скрипт)

/// Autoseller by Johnson
Var
I,j,k,l,ItemCount,ItemType1,ItemOID,ItemID,ItCount ,SelledItemID:integer;
N_Items:Array[0..500,0..1] of Integer;
procedure Init;
begin
SelledItemID:= 158; // Tarbar
l:=0;
end;
procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClient;
end;
begin
if FromClient and (pck=#$38#$53#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=#$0F;
SendToServer;
l:=1;
end;
if FromServer and (pck[1]=#$1B) and (l=1) then
begin
j:=6;
k:=0;
ItemCount:=ReadH(4);
For I:=0 to ItemCount - 1 do
begin
ItemType1:=ReadH(j);
ItemOID:=ReadD(j);
ItemID:=ReadD(j);
ItCount:=ReadD(j);
j:=j+22;
if ItemID = SelledItemID then
begin
N_Items[k,0]:=ItemID; ///ID
N_Items[k,1]:=ItemOID; ///OID
k:=k+1;
end;
end;
buf:=#$1E;
WriteD(0);
WriteD(k+1);
For I:=0 to k do
begin
WriteD(N_Items[i,1]); ///OID
WriteD(SelledItemID); ///ID
WriteD(1); ///Count
end;
l:=0;
SendToServer;
end;
end.


скрипт запускается латинской буквой S в ПАТИ-чат, сначала нужно выделить непися-продавца

NLObP
10.05.2008, 21:58
Неужели ListId=0 прокатывает?!

Grinch
11.05.2008, 21:07
Проверено на практике, в скрипте рыбалки.
продажа состоит из следующих шагов:
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)...
5. FindItem(ID) найдем OID, Count нужной вещи по ID
6. шлем c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectI D)i(ItemID)d(Count)

покупка состоит из следующих шагов:
1. таргет на продавце, пауза, снова таргет c04=Action, c04=Action
2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
4. приходит s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemTyp e1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d( ItemBodyPart)...
5. FindItem(ID) найдем OID, Count нужной вещи по ID
6. шлем c1E=RequestSellItem:h(ListID)d(SellCount)h(ObjectI D)i(ItemID)d(Count)

обмен состоит из следующих шагов:
1. таргет на продавце, пауза, снова таргет c04=Action, c04=Action
2. приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)
3. шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)
4. приходит sD0=MultiSellList:d(listId)d(page_beg)d(page_end)d (onpage)d(entrycount)d(EntryId)b(?)w(prodcount)w(i temcount<)w(pItemId)d(?)w(ptype2)...
5. FindItem(ID) найдем OID, Count нужной вещи по ID
6. шлем cA7=RequestMultiSellChoose:h(ListID)d(EntryID)d(Am ount)

есть предложение создать тему с жёстким модерированием вот с такими алгоритмами

NLObP
11.05.2008, 23:50
Очень хорошая идея насчет алгоритмов или описания последовательности действий, чтобы осталось только закодировать в скрипте.

Grinch
14.05.2008, 10:59
так первый пост есть переноси в тему тему закрепляй и модерируйте её :) что б флуда типа код к алгоритму не было, максимум ссылку на параллельную тему или пост в теме да будет бот. А то каша получиться как с темой да будет бот.
предлагаю формат
Алгоритм такой то:
сам алгоритм
и всё.
просто иногда допустим что бы не отлавливать самому и не рыть весь форум задавая тупые вопросы нужна такая тема

kondor
04.06.2009, 12:11
Модификация l2phx3.4.1.61 ругается на данный скрипт таким образом.

/// Autoseller by Johnson
Var
I,j,k,l,ItemCount,ItemType1,ItemOID,ItemID,ItCount ,SelledItemID:integer;
N_Items:Array[0..500,0..1] of Integer;
procedure Init;
begin
SelledItemID:= 158; // Tarbar
l:=0;
end;
procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClient;
end;
begin
if FromClient and (pck=#$38#$53#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=#$0F;
SendToServer;
l:=1;
end;
if FromServer and (pck[1]=#$1B) and (l=1) then
begin
j:=6;
k:=0;
ItemCount:=ReadH(4);
For I:=0 to ItemCount - 1 do
begin
ItemType1:=ReadH(j);
ItemOID:=ReadD(j);
ItemID:=ReadD(j);
ItCount:=ReadD(j);
j:=j+22;
if ItemID = SelledItemID then
begin
N_Items[k,0]:=ItemID; ///ID
N_Items[k,1]:=ItemOID; ///OID
k:=k+1;
end;
end;
buf:=#$1E;
WriteD(0);
WriteD(k+1);
For I:=0 to k do
begin
WriteD(N_Items[i,1]); ///OID
WriteD(SelledItemID); ///ID
WriteD(1); ///Count
end;
l:=0;
SendToServer;
end;
end.

Breadfan
04.06.2009, 12:27
Выкинь процедуру SendMsg ну или закаментируй ее - она в последних версиях не требуется

{
procedure SendMsg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClient;
end;
}