Итак как обещал скрипт пошагово на авто заточку Щитов Б грейда из люксора.
З.Ы.: Писал довольно давно и не выйдет очень красиво в (духе здесь и сейчас) написать описание.
З.Ы2.: Тогда я относился скептически к объявлению переменных в процедуре и поэтому там с ними просто дикий "анал карнавал".
З.Ы3.: Сейчас я понимаю что скрипт можно было бы написать намного проще красивее и лучше но переписывать уже поздно поэтому то что есть:
Писать буду в стиле с чего начать и как продолжить.
Шаг 1.
Нужно записать процедуру для отправки пакета заточки щита, чтобы дальше в циклах обработки её вызывать. Вот она:
PHP код:
procedure UseItem(ItemID:integer);
begin
buf:=#$19;
Writed(ItemID);
Writed(0);
SendToServerEx(name);
end;
procedure Enchant(Id:integer);
begin
buf:=#$D0;
Writeh(76);
Writed(Id);
SendToServerEx(name);
end;
procedure Ench(ID:integer);
begin
buf:=#$5F;
Writed(ID);
Writed(0);
SendToServerEx(name);
end;
Три шага заточки: юзнуть точку, выбрать щит и заточить.
Шаг 2.
Итак, вещь точится и теперь дальше нужно как-то отслеживать уровень её заточки чтобы знать когда остановиться.
А также кол-во заточек в инвентаре т.к. мой несчастный гном сразу 5к не мог взять , был дикий перевес и я периодически доставал их из WareHouse.
Это видно в пакете Itemlist или в пакете InventaryUpdate - пишем их процедуры которые будут вызываться всякий раз как приходит их пакет.
PHP код:
procedure Itemlist;
begin
j:=0;
Itemlist:=readh(4);
list1:=6;
for i:=1 to Itemlist do
begin
reading:=false;
if (Readd(list1+4)=ItemforEnchID) then
begin
Items[1,j]:=Readd(list1);//OID
Items[2,j]:=Readh(list1+26);//Enchlvl
inc(j);
reading:=true;
end;
if (Readd(list1+4)=Scroll) then
begin
ScrollID:=Readd(list1);
ScrollCount:=Readd(list1+8);
reading:=true;
end;
if reading then
begin
inc(list1,64);
end
else
begin
inc(list1,68);
end;
end;
end;
PHP код:
procedure InventaryUpdate;
begin
j:=0;
Itemlist2:=Readh(2);
list2:=6;
for v:=1 to Itemlist2 do
begin
recording2:=false;
for j:=0 to 96 do
begin
list2:=6+(v-1)*70;
if (Items[1,j]=Readd(list2)) then
begin
case Readh(list2-6) of
1://Add
begin
end;
2://Mode
begin
Items[2,j]:=Readh(list2+26);
end;
3://Dell
begin
Items[1,j]:=0;
Items[2,j]:=0;
end;
end;
recording2:=true;
end
else
begin
end;
end;
if (Readd(list2-4)=ScrollID) then
begin
case Readh(list2-6) of
1://Add
begin
end;
2://Mode
begin
ScrollCount:=readd(list2+8);
end;
3://Dell
begin
ScrollID:=0;
ScrollCount:=0;
end;
end;
recording2:=true;
end;
list2:=6+(v-1)*70;
end;
end;