Новичок
Регистрация: 31.05.2010
Сообщений: 11
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
|
PHP код:
procedure InventoryUpdate; //пакет 21, Создает базу ObjectID по ItemID var i, ii, j, k, ListCount, UpdType : Int64; ItemType1, ObjectID, ItemID, LocationSlot, Count, ItemType2, CustomType1, isEquipped, BodyPart, EnchantLevel, CustType2, AugmentationID,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]=ObjectID) then 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; 3: begin //удален for ii:=1 to InventorySize do if (BaseItems[ii,2]=ObjectID) then begin for k:=1 to 22 do BaseItems[ii,k]:=0; Break; end; end; end; end; {ReadItems;} end;
function GetObjectId(inItemID :Int64) : Int64; var i : Int64; begin for i:=1 to 100 do if (BaseItems[i,3]=inItemID) then begin Result:=BaseItems[i,2]; exit; end else Result:=-1; end;
procedure RequestCrystallizeItem(ObjectID: integer; Count: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)>0) then 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)>0) then begin Crystal:=true; RequestCrystallizeItem(GetObjectId(ItemID)); end else SendMsg1('Нужная шмотка не найдена'); end; end.
вопрос в 6 посте
Последний раз редактировалось tenary, 31.05.2010 в 22:55.
|