Показать сообщение отдельно
Старый 02.09.2012, 17:43   #43
Местный
 
Аватар для kpa9pt
 
Регистрация: 13.01.2010
Сообщений: 159
Сказал Спасибо: 18
Имеет 30 спасибок в 23 сообщенях
kpa9pt имеет немного плохого в прошлом
По умолчанию

Итак как обещал скрипт пошагово на авто заточку Щитов Б грейда из люксора.

З.Ы.: Писал довольно давно и не выйдет очень красиво в (духе здесь и сейчас) написать описание.
З.Ы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)=ItemforEnchIDthen
            begin
                Items
[1,j]:=Readd(list1);//OID
                
Items[2,j]:=Readh(list1+26);//Enchlvl    
                
inc(j);
                
reading:=true;                           
            
end;                             
        if (
Readd(list1+4)=Scrollthen
            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-6of
                    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)=ScrollIDthen
            begin
                
case Readh(list2-6of
                    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

Последний раз редактировалось kpa9pt, 02.09.2012 в 17:46.
kpa9pt вне форума   Ответить с цитированием
За это сообщение kpa9pt нажился 2 спасибками от: