Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const
- name = 'ews';
- max = 80;
- target = 10; //bewb //Beaa //beas //bews
- bewsid = 6577;//6571;//6570;//6578;//6577;
- heaven = 10445;//7575;//6384;//6372;
- var
- i,e,j,k,x,z,bews,emote,itemid: integer;
- ecount : integer;
- CurrentEnchant: integer;
- ItemBase: array[1..5,1..80] of integer;
- wait: boolean;
- procedure Init; //will be called on script initialization
- begin
- RequestItemList(name);
- wait:=true;
- itemid:=0;
- CurrentEnchant:=0;
- e:=0;
- end;
- procedure Msg(msg, name:string);
- begin
- buf:=#$4A;
- WriteD(0);
- WriteD(2);
- WriteS(name);
- WriteS(msg);
- SendToClient;
- end;
- procedure RequestItemList(n:string);
- begin
- buf := #$14;
- SendToServerEx(n);
- end;
- procedure CreateItemBase();
- var
- i, j, ListCount : integer;
- begin
- for i:=1 to max do begin
- ItemBase[1,i]:=0;
- ItemBase[2,i]:=0;
- ItemBase[3,i]:=0;
- ItemBase[4,i]:=0;
- ItemBase[5,i]:=0;
- end;
- j:=4;
- ListCount:=ReadH(j);
- j:=6;
- for i:=1 to ListCount do begin
- ReadH(j); //ItemType1
- ItemBase[1,i]:=ReadD(j); //ObjectID
- ItemBase[2,i]:=ReadD(j); //ItemID
- ItemBase[3,i]:=ReadD(j); //LocationSlot
- ItemBase[4,i]:=ReadD(j); //Count
- ReadH(j); //ItemType2
- ReadH(j); //CustomType1
- ReadH(j); //isEquipped
- ReadD(j); //BodyPart
- ItemBase[5,i]:=ReadH(j); //EnchantLevel
- inc(j,42);
- end;
- end;
- procedure InventoryUpdate();
- var
- i, ii, j, OID, ID, SLOT, Count, ListCount, Enchant, UpdType: integer;
- add : boolean;
- begin
- add:=false;
- ListCount:=ReadH(2);
- j:=4;
- for ii:=1 to ListCount do begin
- add:=false;
- UpdType:=ReadH(j); //UpdateType
- ReadH(j); //ItemType1
- OID:=ReadD(j); //ObjectID
- ID:=ReadD(j); //ItemID
- SLOT:=ReadD(j); //LocationSlot
- Count:=ReadD(j); //Quantity
- ReadH(j); //ItemType2
- ReadH(j); //CustomType1
- ReadH(j); //Equipped
- ReadD(j); //BodyPart
- Enchant:=ReadH(j); //EnchantLevel
- case UpdType of
- 1: begin //ADD
- for i:=1 to max do begin
- if (ItemBase[1,i]=0) and (add=false) then begin
- ItemBase[1,i]:=OID;
- ItemBase[2,i]:=ID;
- ItemBase[3,i]:=SLOT;
- ItemBase[4,i]:=Count;
- ItemBase[5,i]:=Enchant;
- add:=true;
- end;
- end;
- end;
- 2: begin //EDIT
- for i:=1 to max do begin
- if ItemBase[1,i]=OID then begin
- ItemBase[3,i]:=SLOT;
- ItemBase[4,i]:=Count;
- ItemBase[5,i]:=Enchant;
- end;
- end;
- end;
- 3: begin //DEL
- for i:=1 to max do begin
- if ItemBase[1,i]=OID then begin
- ItemBase[1,i]:=0;
- ItemBase[2,i]:=0;
- ItemBase[3,i]:=0;
- ItemBase[4,i]:=0;
- ItemBase[5,i]:=0;
- end;
- end;
- end;
- end;
- inc(j,42);
- end;
- end;
- function FindItemOID(item: integer) : integer;
- var
- i, r: integer;
- itemoid: integer;
- begin
- for i:=1 to max do begin
- if (ItemBase[2,i] = item) then
- begin
- r := ItemBase[1,i];
- if (r <> 0) then
- begin
- result := r;
- end else begin
- msg('ALARM', name);
- end;
- end;
- end;
- end;
- function FindItemEnch(item: integer) : integer;
- var
- i: integer;
- itemoid: integer;
- begin
- for i:=1 to max do begin
- if (ItemBase[2,i] = item) then
- begin
- result := ItemBase[5,i];
- end;
- end;
- end;
- function FindItemCount(item: integer) : integer;
- var
- i: integer;
- itemcount: integer;
- begin
- for i:=1 to max do begin
- if (ItemBase[2, i] = item) then
- begin
- result := ItemBase[4,i];
- end;
- end;
- end;
- procedure EnchantStuff();
- var
- currente : integer;
- begin
- currente := FindItemEnch(heaven);
- itemid := FindItemOID(heaven);
- bews:=FindItemOID(bewsid);
- // if (not wait) then
- // begin
- // wait:=true;
- // RequestItemList(name);
- // end else begin
- // wait:= false;
- if (currente < target) and (FindItemCount(bewsid) > 0) and (CurrentEnchant < target) then
- begin
- delay(1000);
- buf:=#$19; //use bews
- WriteD(bews);
- WriteD(0);
- SendToServerEx(name);
- delay(1000);
- buf:=#$5F; //enchant weapon
- WriteD(itemid);
- SendToServerEx(name);
- //CurrentEnchant := CurrentEnchant+1;
- end else begin
- msg('Not enough bews, or enchant target reached: +'+inttostr(currente)+', '+inttostr(FindItemCount(bewsid)), name);
- end;
- // end;
- end;
- begin
- if (ConnectName=name) then
- begin
- case pck[1] of
- #$11: if (FromServer) then CreateItemBase();
- #$21: if (FromServer) then begin
- InventoryUpdate();
- //if (wait) then
- EnchantStuff();
- end;
- #$7C: if FromServer then //ChooseInventoryItem
- begin
- pck:=#$D9;
- end;
- #$87: if FromServer then //EnchantResult
- begin
- CurrentEnchant:=ReadD(2);
- end;
- #$62: if FromServer then //SystemMessage
- begin
- i:= readD(2);
- if (i=63) or (i=62) then //"enchant success"
- begin
- pck:='';
- msg('Enchant success => +'+inttostr(FindItemEnch(heaven)), name);
- EnchantStuff();
- end;
- if (i=1517) then //"failed"
- begin;
- msg('Oh noes.. :( lets try again!', name);
- CurrentEnchant := 0;
- EnchantStuff();
- end;
- if (i=303) then pck:=#$D9; //"select item"
- end;
- #$34: if FromClient then
- begin
- emote := ReadD(2);
- //greetings
- if (emote = 2) then
- begin
- pck:='';
- //e := FindItemEnch(heaven);
- //msg('selected oid:'+inttostr(itemid)+', enchant level: '+inttostr(e), name);
- //msg('*** Starting enchanting up to '+inttostr(target)+' ***', name);
- //wait:=true;
- EnchantStuff();
- end;
- if (emote = 3) then
- begin
- pck:='';
- for i:=1 to 10 do begin
- msg(inttostr(ItemBase[1,i])+' '+inttostr(ItemBase[2,i])+' '+inttostr(ItemBase[3,i])+' '+inttostr(ItemBase[4,i])+' '+inttostr(ItemBase[5,i]),name);
- end;
- end;
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement