Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.04 KB | None | 0 0
  1. const
  2. name = 'ews';
  3. max = 80;
  4. target = 10;   //bewb //Beaa //beas  //bews
  5. bewsid = 6577;//6571;//6570;//6578;//6577;
  6. heaven = 10445;//7575;//6384;//6372;
  7.  
  8. var
  9. i,e,j,k,x,z,bews,emote,itemid: integer;
  10. ecount : integer;
  11. CurrentEnchant: integer;
  12. ItemBase: array[1..5,1..80] of integer;
  13. wait: boolean;
  14.  
  15.  
  16. procedure Init; //will be called on script initialization
  17. begin
  18.     RequestItemList(name);
  19.     wait:=true;
  20.     itemid:=0;
  21.     CurrentEnchant:=0;
  22.     e:=0;
  23. end;
  24.  
  25. procedure Msg(msg, name:string);
  26. begin
  27.      buf:=#$4A;
  28.      WriteD(0);
  29.      WriteD(2);
  30.      WriteS(name);
  31.      WriteS(msg);
  32.      SendToClient;
  33. end;
  34.  
  35. procedure RequestItemList(n:string);
  36. begin
  37.     buf := #$14;
  38.     SendToServerEx(n);      
  39. end;
  40.  
  41. procedure CreateItemBase();
  42. var
  43.     i, j, ListCount : integer;
  44. begin
  45.     for i:=1 to max do begin
  46.         ItemBase[1,i]:=0;
  47.         ItemBase[2,i]:=0;
  48.         ItemBase[3,i]:=0;
  49.         ItemBase[4,i]:=0;
  50.         ItemBase[5,i]:=0;
  51.     end;
  52.     j:=4;
  53.     ListCount:=ReadH(j);
  54.     j:=6;
  55.     for i:=1 to ListCount do begin
  56.         ReadH(j);   //ItemType1
  57.         ItemBase[1,i]:=ReadD(j);    //ObjectID
  58.         ItemBase[2,i]:=ReadD(j);    //ItemID
  59.         ItemBase[3,i]:=ReadD(j);    //LocationSlot
  60.         ItemBase[4,i]:=ReadD(j);    //Count
  61.         ReadH(j);   //ItemType2
  62.         ReadH(j);   //CustomType1
  63.         ReadH(j);   //isEquipped
  64.         ReadD(j);   //BodyPart
  65.         ItemBase[5,i]:=ReadH(j);    //EnchantLevel
  66.         inc(j,42);
  67.     end;
  68. end;
  69.  
  70. procedure InventoryUpdate();
  71. var
  72.     i, ii, j, OID, ID, SLOT, Count, ListCount, Enchant, UpdType: integer;
  73.     add : boolean;
  74. begin
  75.     add:=false;
  76.     ListCount:=ReadH(2);
  77.     j:=4;
  78.     for ii:=1 to ListCount do begin
  79.         add:=false;
  80.         UpdType:=ReadH(j);  //UpdateType
  81.         ReadH(j);       //ItemType1
  82.         OID:=ReadD(j);  //ObjectID
  83.         ID:=ReadD(j);   //ItemID
  84.         SLOT:=ReadD(j);     //LocationSlot
  85.         Count:=ReadD(j);    //Quantity
  86.         ReadH(j);   //ItemType2
  87.         ReadH(j);   //CustomType1
  88.         ReadH(j);   //Equipped
  89.         ReadD(j);   //BodyPart
  90.         Enchant:=ReadH(j);  //EnchantLevel
  91.         case UpdType of
  92.             1: begin  //ADD
  93.                 for i:=1 to max do begin
  94.                     if (ItemBase[1,i]=0) and (add=false) then begin
  95.                         ItemBase[1,i]:=OID;
  96.                         ItemBase[2,i]:=ID;
  97.                         ItemBase[3,i]:=SLOT;
  98.                         ItemBase[4,i]:=Count;
  99.                         ItemBase[5,i]:=Enchant;
  100.                         add:=true;
  101.                     end;
  102.                 end;
  103.             end;
  104.             2: begin  //EDIT
  105.                 for i:=1 to max do begin
  106.                     if ItemBase[1,i]=OID then begin
  107.                         ItemBase[3,i]:=SLOT;
  108.                         ItemBase[4,i]:=Count;
  109.                         ItemBase[5,i]:=Enchant;
  110.                     end;
  111.                 end;
  112.             end;
  113.             3: begin  //DEL
  114.                 for i:=1 to max do begin
  115.                     if ItemBase[1,i]=OID then begin
  116.                         ItemBase[1,i]:=0;
  117.                         ItemBase[2,i]:=0;
  118.                         ItemBase[3,i]:=0;
  119.                         ItemBase[4,i]:=0;
  120.                         ItemBase[5,i]:=0;
  121.                     end;
  122.                 end;
  123.             end;
  124.         end;
  125.     inc(j,42);
  126.     end;
  127. end;
  128.  
  129.  
  130. function FindItemOID(item: integer) : integer;
  131. var
  132.     i, r: integer;
  133.     itemoid: integer;
  134. begin
  135.     for i:=1 to max do begin
  136.         if (ItemBase[2,i] = item) then
  137.         begin                              
  138.             r := ItemBase[1,i];
  139.             if (r <> 0) then
  140.             begin
  141.                 result := r;
  142.             end else begin
  143.                 msg('ALARM', name);
  144.             end;
  145.         end;                        
  146.     end;
  147. end;
  148.  
  149.  
  150. function FindItemEnch(item: integer) : integer;
  151. var
  152.     i: integer;
  153.     itemoid: integer;
  154. begin
  155.     for i:=1 to max do begin
  156.         if (ItemBase[2,i] = item) then
  157.         begin                                
  158.             result := ItemBase[5,i];
  159.         end;                        
  160.     end;
  161. end;
  162.  
  163.  
  164. function FindItemCount(item: integer) : integer;
  165. var
  166.     i: integer;
  167.     itemcount: integer;
  168. begin
  169.     for i:=1 to max do begin
  170.         if (ItemBase[2, i] = item) then
  171.         begin
  172.             result := ItemBase[4,i];
  173.         end;
  174.     end;
  175. end;
  176.  
  177.  
  178. procedure EnchantStuff();
  179. var
  180.     currente : integer;
  181. begin
  182.     currente := FindItemEnch(heaven);
  183.     itemid := FindItemOID(heaven);
  184.     bews:=FindItemOID(bewsid);
  185. //    if (not wait) then
  186. //    begin  
  187. //      wait:=true;
  188. //      RequestItemList(name);
  189. //    end else begin
  190. //      wait:= false;
  191.     if (currente < target) and (FindItemCount(bewsid) > 0) and (CurrentEnchant < target) then
  192.     begin
  193.         delay(1000);
  194.         buf:=#$19;  //use bews
  195.         WriteD(bews);
  196.         WriteD(0);
  197.         SendToServerEx(name);
  198.         delay(1000);
  199.         buf:=#$5F;  //enchant weapon
  200.         WriteD(itemid);
  201.         SendToServerEx(name);  
  202.         //CurrentEnchant := CurrentEnchant+1;  
  203.     end else begin
  204.         msg('Not enough bews, or enchant target reached: +'+inttostr(currente)+', '+inttostr(FindItemCount(bewsid)), name);
  205.     end;
  206. //    end;
  207. end;
  208.  
  209. begin
  210. if (ConnectName=name) then
  211. begin
  212. case pck[1] of
  213.     #$11: if (FromServer) then CreateItemBase();
  214.     #$21: if (FromServer) then begin
  215.         InventoryUpdate();
  216.         //if (wait) then
  217.         EnchantStuff();    
  218.     end;
  219.     #$7C: if FromServer then    //ChooseInventoryItem        
  220.     begin
  221.         pck:=#$D9;
  222.     end;
  223.     #$87: if FromServer then    //EnchantResult    
  224.     begin
  225.         CurrentEnchant:=ReadD(2);
  226.     end;
  227.     #$62: if FromServer then    //SystemMessage    
  228.     begin
  229.        i:= readD(2);
  230.        if (i=63) or (i=62) then //"enchant success"
  231.        begin
  232.             pck:='';
  233.             msg('Enchant success => +'+inttostr(FindItemEnch(heaven)), name);
  234.             EnchantStuff();      
  235.        end;          
  236.        if (i=1517) then     //"failed"
  237.        begin;
  238.         msg('Oh noes.. :( lets try again!', name);
  239.         CurrentEnchant := 0;
  240.         EnchantStuff();
  241.        end;
  242.        if (i=303) then pck:=#$D9;   //"select item"
  243.     end;
  244.     #$34: if FromClient then
  245.     begin        
  246.         emote := ReadD(2);
  247.         //greetings
  248.         if (emote = 2) then
  249.         begin
  250.             pck:='';
  251.             //e := FindItemEnch(heaven);
  252.             //msg('selected oid:'+inttostr(itemid)+', enchant level: '+inttostr(e), name);
  253.             //msg('*** Starting enchanting up to '+inttostr(target)+' ***', name);
  254.             //wait:=true;
  255.             EnchantStuff();
  256.         end;
  257.         if (emote = 3) then
  258.         begin  
  259.             pck:='';
  260.             for i:=1 to 10 do begin
  261.                 msg(inttostr(ItemBase[1,i])+' '+inttostr(ItemBase[2,i])+' '+inttostr(ItemBase[3,i])+' '+inttostr(ItemBase[4,i])+' '+inttostr(ItemBase[5,i]),name);
  262.             end;
  263.         end;
  264.     end;          
  265. end;
  266. end;
  267. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement