Новичок
Регистрация: 30.12.2011
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
|
Помогите модернизировать скрипт для фреи. Я пока плохо разбираюсь, вопщем вот что получилось подскажите где накосячил...
PHP код:
const ItemID = 890; // ItemID шмотки MyName='Ответ'; //<-- пишем ник своего чара InventorySize = 100; //<-- количество ячеек в рюкзаке //InventoryOffset = 22; //<-- смещение для листа инвентаря, если у вас не определяет инвентарь поменяйте на 26 или какое там на вашем ГФШ //---------------------------------------------------------------- var ItemBase: array of Int64; Crystal: boolean; BaseItems : array[1..InventorySize,1..22] of Int64; x:longint; //---------------------------------------------------------------- procedure Init; //Вызывается при включении скрипта var i,k: Int64; begin for i:=1 to InventorySize do for k:=1 to 22 do BaseItems[i,k]:=0; Crystal:=false; SendMsg1('Начало инициализации скрипта, откройте инвентарь'); end; //----------------------------------------------------------------- procedure Free; //Вызывается при выключении скрипта begin break; end; //------------------------------------------------------------------ procedure SendMsg1(msg:string); begin buf:=#$4A; WriteD(0); WriteD(10); WriteS(''); WriteS(msg); SendToClientEx('Ответ'); end;
procedure ItemList; var i, j, k: Int64; ListSize: Int64; begin j:=4; //пропускаем дo ListSize ListSize:=ReadH(j); //SendMsg1('--'+inttostr(ListSize)); for i:=1 to ListSize do if (i<=ListSize) then begin BaseItems[i,1]:=ReadD(j); //ObjectID BaseItems[i,2]:=ReadD(j); //ItemID BaseItems[i,3]:=ReadD(j); //LocationSlot BaseItems[i,4]:=ReadQ(j); //Amount: BaseItems[i,5]:=ReadH(j); //ItemType2 BaseItems[i,6]:=ReadH(j); //CustomType1 BaseItems[i,7]:=ReadH(j); //isEquipped: BaseItems[i,8]:=ReadD(j); //BodyPart BaseItems[i,9]:=ReadH(j); //EnchantLevel BaseItems[i,10]:=ReadH(j); //CustType2 BaseItems[i,11]:=ReadD(j); //AugmentationID BaseItems[i,12]:=ReadD(j); //mana BaseItems[i,13]:=ReadH(j); //attackelement BaseItems[i,14]:=ReadH(j); //attackelementpower BaseItems[i,15]:=ReadH(j); //FreyaUnknown1 BaseItems[i,16]:=ReadH(j); //firedefelementpower BaseItems[i,17]:=ReadH(j); //waterdefelementpower BaseItems[i,18]:=ReadH(j); //winddefelementpower BaseItems[i,19]:=ReadH(j); //earthdefelementpower BaseItems[i,20]:=ReadH(j); //holydefelementpower BaseItems[i,21]:=ReadH(j); //unholydefelementpower BaseItems[i,22]:=ReadD(j); //remindingtime BaseItems[i,23]:=ReadD(j); //FreyaUnknown2 BaseItems[i,24]:=ReadH(j); //FreyaUnknown3
end; end; 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,fu1,firedef,waterdef,winddef,earthdef,holydef,unholydef,remtime,fu2,fu3 :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 fu1:=ReadH(j); //FreyaUnknown1 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 fu2:=ReadD(j); //FreyaUnknown2 fu3:=ReadH(j); //FreyaUnknown3 case UpdType of // 1: 0; //добавлен новый предмет, игнорим 2: //изменен предмет в инвентаре for ii:=1 to InventorySize do begin if (BaseItems[ii,1]=ObjectID) then begin BaseItems[ii,1]:=ObjectID; BaseItems[ii,2]:=ItemID; BaseItems[ii,3]:=LocationSlot; BaseItems[ii,4]:=Count; BaseItems[ii,5]:=ItemType2; BaseItems[ii,6]:=CustomType1; BaseItems[ii,7]:=isEquipped; BaseItems[ii,8]:=BodyPart; BaseItems[ii,9]:=EnchantLevel; BaseItems[ii,10]:=CustType2; BaseItems[ii,11]:=AugmentationID; BaseItems[ii,12]:=mana; BaseItems[ii,13]:=attackelement; BaseItems[ii,14]:=attackelementpower; BaseItems[ii,15]:=fu1; 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; BaseItems[ii,23]:=fu2; BaseItems[ii,24]:=fu3; Break; end; end; 3: begin //удален for ii:=1 to InventorySize do if (BaseItems[ii,1]=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,2]=inItemID) then begin Result:=BaseItems[i,1]; exit; end else Result:=-1; end;
procedure RequestCrystallizeItem(ObjectID: integer; Count:Int64 = 1); begin buf:=#$2F; WriteD(ObjectID); WriteQ(1); SendToServerEx('Ответ'); 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.
Последний раз редактировалось Satoshi Hojo, 30.12.2011 в 06:38.
Причина: оформление
|