Показать сообщение отдельно
Старый 31.05.2010, 14:24   #2
Новичок
 
Регистрация: 31.05.2010
Сообщений: 11
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
tenary пока неопределено
По умолчанию

PHP код:
procedure InventoryUpdate//пакет 21, Создает базу ObjectID по ItemID
var
  
iiijkListCountUpdType Int64;
  
ItemType1ObjectIDItemIDLocationSlotCountItemType2CustomType1,
  
isEquippedBodyPartEnchantLevelCustType2AugmentationID,mana,attackelement,
  
attackelementpower,firedef,waterdef,winddef,earthdef,holydef,unholydef,remtime :Int64;
begin
  ListCount
:=ReadH(2); //количество итемов
  
j:=4//смещение для действия с предметом 1-добавлен 2-изменен 3-удален
  
for i:=1 to ListCount do
  
begin
    UpdType       
:=ReadH(j);
    
ItemType1     :=ReadH(j);
    
ObjectID      :=ReadD(j);
    
ItemID        :=ReadD(j);
    
LocationSlot  :=ReadD(j);
    
Count         :=ReadQ(j);
    
ItemType2     :=ReadH(j);
    
CustomType1   :=ReadH(j);
    
isEquipped    :=ReadH(j);
    
BodyPart      :=ReadD(j);
    
EnchantLevel  :=ReadH(j);
    
CustType2     :=ReadH(j);
    
AugmentationID:=ReadD(j);
      
mana:=ReadD(j); //mana    
      
attackelement:=ReadH(j); //attackelement  
      
attackelementpower:=ReadH(j); //attackelementpower 
      
firedef:=ReadH(j); //firedefelementpower   
      
waterdef:=ReadH(j); //waterdefelementpower   
      
winddef:=ReadH(j); //winddefelementpower   
      
earthdef:=ReadH(j); //earthdefelementpower   
      
holydef:=ReadH(j); //holydefelementpower   
      
unholydef:=ReadH(j); //unholydefelementpower   
      
remtime:=ReadD(j); //remindingtime     
    
case UpdType of
//      1: 0;         //добавлен новый предмет, игнорим
      
2//изменен предмет в инвентаре
         
for ii:=1 to InventorySize do
         
begin
          
if (BaseItems[ii,2]=ObjectIDthen
           begin
            BaseItems
[ii,1]:=ItemType1;
            
BaseItems[ii,2]:=ObjectID;
            
BaseItems[ii,3]:=ItemID;
            
BaseItems[ii,4]:=LocationSlot;
            
BaseItems[ii,5]:=Count;
            
BaseItems[ii,6]:=ItemType2;
            
BaseItems[ii,7]:=CustomType1;
            
BaseItems[ii,8]:=isEquipped;
            
BaseItems[ii,9]:=BodyPart;
            
BaseItems[ii,10]:=EnchantLevel;
            
BaseItems[ii,11]:=CustType2;
            
BaseItems[ii,12]:=AugmentationID;
            
BaseItems[ii,13]:=mana;
            
BaseItems[ii,14]:=attackelement;
            
BaseItems[ii,15]:=attackelementpower;
            
BaseItems[ii,16]:=firedef;
            
BaseItems[ii,17]:=waterdef;
            
BaseItems[ii,18]:=winddef;
            
BaseItems[ii,19]:=earthdef;
            
BaseItems[ii,20]:=holydef;
            
BaseItems[ii,21]:=unholydef;
            
BaseItems[ii,22]:=remtime;                 
            Break;
           
end;
         
end;
            
      
3begin         //удален
         
for ii:=1 to InventorySize do
          if (
BaseItems[ii,2]=ObjectIDthen
          begin
            
for k:=1 to 22 do BaseItems[ii,k]:=0;
            Break;
          
end;
         
end;
    
end;     
  
end;
  {
ReadItems;}
end;

function 
GetObjectId(inItemID :Int64) : Int64;
var
  
Int64;
begin  
 
for i:=1 to 100 do
 if (
BaseItems[i,3]=inItemIDthen begin 
   Result
:=BaseItems[i,2]; 
   exit;
  
end else
 
Result:=-1;  
end;

procedure RequestCrystallizeItem(ObjectIDintegerCount:Int64 1);  
begin     
  buf
:=#$AF;            
  
WriteD(ObjectID);     
  
WriteQ(1);
  
SendToServerEx('Gaubica');  
end;
//------------------------------------------------------------
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin

  
if FromServer and (pck[1]=#$11) then ItemList; //создание базы предметов
  
if FromServer and (pck[1]=#$21) and (pck[4]=#$62) then begin
    
InventoryUpdate//Обновление базы, если принят пакет на удаление предмета
   
 
if Crystal and (GetObjectId(ItemID)>0then 
     begin
       RequestCrystallizeItem
(GetObjectId(ItemID));
       
Delay(100);
       
InventoryUpdate;
       
Delay(100);
       
end
    
else begin
      Crystal
:=false;
      
SendMsg1('Весь шмот кристаллизован');
      
free;
    
end;
  
end;
  if 
FromServer and (pck[1]=#$27) then 
  
begin
    SendMsg1
('Панеслася!!!');
    if (
GetObjectId(ItemID)>0then begin
      Crystal
:=true;
      
RequestCrystallizeItem(GetObjectId(ItemID));
    
end else SendMsg1('Нужная шмотка не найдена');
   
end;
end
вопрос в 6 посте

Последний раз редактировалось tenary, 31.05.2010 в 22:55.
tenary вне форума   Ответить с цитированием