Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 17.35 KB | None | 0 0
  1. {.include SWSSL\[0.1-4a]\library\setup.scar}
  2.  
  3. const
  4.   stopFKey = 12;
  5.   continueFKey = 11;
  6.   pauseFKey = 10;
  7.  
  8.   FULL_BAG_WEIGHT = 150;
  9.  
  10.   SCRIPT_BMP_TREE0 = 0;
  11.   SCRIPT_BMP_TREE1 = 1;
  12.   SCRIPT_BMP_TREE2 = 2;
  13.   SCRIPT_BMP_TREE3 = 3;
  14.   SCRIPT_BMP_TREE4 = 4;
  15.   SCRIPT_BMP_TREE5 = 5;
  16.   SCRIPT_BMP_DWARF0 = 6;
  17.   SCRIPT_BMP_DWARF1 = 7;
  18.   SCRIPT_BMP_DWARF2 = 8;
  19.   SCRIPT_BMP_DWARF3 = 9;
  20.   SCRIPT_BMP_DWARF4 = 10;
  21.   SCRIPT_BMP_DWARF5 = 11;
  22.  
  23.   SCRIPT_BITMAPS_COUNT = 12;
  24.  
  25.   SCRIPT_DTM_AXE = 0;
  26.   SCRIPT_DTM_LOGS = 1;
  27.   SCRIPT_DTM_TREE = 2;
  28.   SCRIPT_DTM_DWARF = 3;
  29.  
  30.   SCRIPT_DTMS_COUNT = 4;
  31.  
  32. var
  33.   PDMark, SCRIPT_BITMAPS, SCRIPT_DTMS: Integer;
  34.   storedColors, bmpTree, bmpDwarf: TIntegerArray;
  35.  
  36. procedure walkTo(spot: string); forward;
  37.  
  38. function ScriptBitmapsSetup: Boolean;
  39. var
  40.   h, i: Integer;
  41.   S_BMP_STR_Arr: TStringArray;
  42.   S_BMP_H_Arr, S_BMP_W_Arr, S_BMP_Arr: TIntegerArray;
  43. begin
  44.   S_BMP_STR_Arr:= ['beNoz43czFa6JUc8IUqmOV1lapr2z2bgjVT3dQyTKVjjUWkhNlsPRWDjZUybbW7Y2VKYvSm5ppsrWfI2aEKlkdyk3Q15VWXYnY5FYV8lsL9neBOXl6RobcjT6YpRD7EScDQUstLh0lTk9zMRTXMTzPMQbg2SaAqX7oxWqo1TcrES0lThNNTksdXlcjMViHEUz3KVqwhV70zUbkzXyo1ViAmTcrYU8LPmcAKEgK4A=',
  45.                    'beNoNys0KgjAAAOBjGv0xf9Zc4tjK6VaQLVxlrfISKBgE9gJ2CqL3v9V3/shYEKfWsclYtWfdTXzvm8cpNtLN545iAAKLR06xxJfVrFa4zcPuzD4lrxUqBBLh0Ac9Hrm7dPoP7YG+DH9feaupWrhJOKGojz1bEnhMYSlhk+EmC546qnImmBt4NkEWxYM08jX3jEDVlrQmaQpeaqbXWDAg6Yj/AH2EHDc=',
  46.                    'beNoz4ncwFC4KVU/wUSkMV5meo72q0rg2Vj3eSSTYQtjPTEhZmsNGXzjaWSbJVbbYT6Y5WG56gsryNI0iP6loRykHXV4laXYbfZEwe0mggqYI5ZnxGouSNZpDlf0sRWx1BYzVuTQVOJ2MxGPsxFOdxMt9ZCq8pVtCFAqDVRxMRTQUOA3VOEw0eez0xUJtRBMcpYoCFJviNcujNdJCVEK9ZBzNhJxM+GwAmzQodg==',
  47.                    'beNpT5ddXEQ61V3e3UAl2VCkI0K6LNI51VXczFLHVFLbSEJIS4dBRFnY2lPE0lg21kkm0lStwV6n21gi1lHI2kNJX5JUUYddVFrHXlwQqSHBULnTTqPDUSLRXttQS0VUUUJPlkpfgNFQVd9ET9zYUj7CQiTSXTrRTCLZV0VcXkRXnVJHhUJfn0VMWs9cRdTeQCrFWTHDTjHDW8LZTsTeXMdAQMlTn0wUAjCcfXQ==',
  48.                    'beNrT5bfSEc70VQ93VUkPUOlK1p6TZ1wUqh5mI+JjLOxhKKQgyWGmLRxsKxNlL5vpIVPuI9cVoTIjViPTXSrYWspKk1dekt1cW8TPShKooDxQuSdMY0q0RrmvsruJiIWmgL4yl5ocp42ueIileIyNeK6rTJ6LdIWvQrqPipWhiIosp44yh4Eaj6W2mK+ZaLi1VIanYnmYZm6wRqyviq+zjLWhkI0BnzkAlPYlaQ==',
  49.                    'beNrT5DfVEI53U/e3V4n1UKmN1O5NMc7wVfczE3HVE3bUFZIV4zBUF/Y2lwm0lI13lMlxlasNUOkK0Yh3kPI2kzJV5ZURYzdSF3E3kQQqyPZUrvfTaAvSyHFTdtAXMVYV0FLgUpLmNNMU9zEWDzYTT7KXSbaTznVViHVVMdURUZTi1JDn0FbiMVYXczMU9TeTinNSzPbTTPLWCHFVcbOVMdMVMtPmMwIAkPsiYQ==',
  50.                    'beNrTdTYzDbWySjA2CXV0zElKXpqcskJHN8jKOtPMItndo7609ER1zTUzsyhbPTtjFf0Yx4Acn5gMryhOVlY9WVl1KblQK+cMj6BQExMeNkYeFgYpfn4HbX1zeWkpDgZRAWFuRgY+oCAPgzw3gww7g7KsBicDgwAbgzw/M1BElotBSVadjYGBj5VBgY9BmpVBRVREU81cSlhClIddgY9RSYDLBADqCRvi',
  51.                    'beNoBogBd/0tEWlhXYGBiVVZXbGxupKaopaerSUtUYWNrWl1ld3mCw8PMzc7aWlpcZUw/VD0wmW1StH5erXxcEAkFTDAeQiwfjmFErXhUjlc1FAoBFAYAKxkPa0gwWzQcLA0AIxoTEgEAFwcALBQAMxIALwwAOzEpEAAAGgsAMxgDNBIAMREAOTAoCwAAGAgANRcALQgAPSMURT84LCAZIxQHNhgBORoKV8DaJ9g=',
  52.                    'beNozcbGzDXdySrK2DvfyyissWlFYvNrIJMTZJdvOITUouKmt7Uxv3y07uxhXU3srLYNM76Ca8Ljy0BhuNlZTRTldOfkkZ5fyoJAkG1NedkZeFgY5IX5PQwN7FRk5TgYJIWEeRgYBVgY5XgZlHgYFDgYNJU1uBgYhdgZlQWYVHgYlbgZ1RQ12BpAaFQEGeVYGLQkRfW0LOTFJCV52VQFGdSEuGwAN8B6p',
  53.                    'beNoBogBd/0ZEVFJXWVliT1BXZGRumJqomZurQ0ZUWlxrVFZlbnCCtbXMvr/aVFRcXkc/TjgwjmVSp3VeoXNcDwgFRy0ePSkfhFpEoW9UhFE1EgkBEgUAKBgPY0IwVTAcKQwAIRkTEAEAFQYAKRIALxAALAsANy0pDwAAGQoALxcDMBAALQ8ANS0oCgAAFgcAMRUAKgcAOCEUQDo4KR4ZIRIHMhYBNRkKUeZmJbk=',
  54.                    'beNqzcnF1CffySnJ0Cg8OzqurX1HXsNrCKsTbJ9vVPTU6tmnatDNz591ydY3xs7Z31DcoDQnqSoxrjY/hYWe1VpUzUpLP9XZpjQnJdTbl52DkZ2VQFOEPMjdw05BR4mKQFhHmY2QQZGVQ4mdQ52NQ4WTQVdPkYWAQ4WBQF2bW4GNQ42XQUdXgYGAQYmPQFGRQZmPQlxYxNbBQkpSU5mfXFGLUEeFyBgABxSEK',
  55.                    'beNpzcPHxDg8MTPLwDI+OzuvuWdHTu9rOISQoJNvHPzU1rWnp0jPr1t/y8YkJc7R3NzFoigmamR03OTOGl53VUVPOQlW+MshlcmpIpZepIAejICuDqhh/tK2Br46MKjeDnJgwPyODMBuDqiCDNj+DBheDkZYmLwODGCeDtiizDj+DFh+DgaYGJwODCDuDrjCDGjuDiZyIlamFqrSknCC7ngijgRiXFwDx2iNd'];
  56.   S_BMP_W_Arr:= [11, 11, 11, 11, 11, 11, 6, 6, 6, 6, 6, 6];
  57.   S_BMP_H_Arr:= [5, 5, 5, 5, 5, 5, 9, 9, 9, 9, 9, 9];
  58.   h:= High(S_BMP_STR_Arr);
  59.   if((h = High(S_BMP_W_Arr))and(h = High(S_BMP_H_Arr))and(h > -1))then
  60.   begin
  61.     SCRIPT_BITMAPS:= CreateNewBitmapSet;
  62.     AddBitmapsToSet(SCRIPT_BITMAPS, S_BMP_STR_Arr, S_BMP_W_Arr, S_BMP_H_Arr);
  63.     S_BMP_Arr:= [SCRIPT_BMP_TREE0, SCRIPT_BMP_TREE1, SCRIPT_BMP_TREE2, SCRIPT_BMP_TREE3, SCRIPT_BMP_TREE4, SCRIPT_BMP_TREE5,
  64.                  SCRIPT_BMP_DWARF0, SCRIPT_BMP_DWARF1, SCRIPT_BMP_DWARF2, SCRIPT_BMP_DWARF3, SCRIPT_BMP_DWARF4, SCRIPT_BMP_DWARF5];
  65.     h:= High(S_BMP_Arr);
  66.     for i:= 0 to h do
  67.       LoadBitmapFromSetToMemory(SCRIPT_BITMAPS, i);
  68.     Result:= True;
  69.   end;
  70.   for i:= 0 to h do
  71.   begin
  72.     S_BMP_STR_Arr[i]:= '';
  73.     S_BMP_W_Arr[i]:= 0;
  74.     S_BMP_H_Arr[i]:= 0;
  75.   end;
  76.   SetArrayLength(S_BMP_STR_Arr, 0);
  77.   SetArrayLength(S_BMP_W_Arr, 0);
  78.   SetArrayLength(S_BMP_H_Arr, 0);
  79. end;
  80.  
  81. function ScriptDTMsSetup: Boolean;
  82. var
  83.   h, i: Integer;
  84.   S_DTM_STR_Arr: TStringArray;
  85.   S_DTM_Arr: TIntegerArray;
  86. begin
  87.   S_DTM_STR_Arr:= ['78DA63CC65606058CE8002227439C0342394CF58092436A3AAB194E04655930A2466A3AA79F6F82EE96A6280C43C5435DFBE7E4255930024E6A0AA993B6F3EC96A0038771407',
  88.                    '78DA63E46562606065644006FFFFEE04D33051C6FF401613AA9A9F8F97A0AA61069AC38BAAE6FDCDF9A86AF8816AB851D5EC5F5383AA4604A88603CD3D9FD6A3AA116442E241406E753EA65D7F509430F4B755A2A80100492A119F',
  89.                    '78DA63FCC6C8C07084010558DB89806946289F11A46615AA9ABDBBD6A2AAE16662605889AA664A5B31AA1A01A09A5DA86A9C1C2D51D58802D51C425573EFFA5654354C40356751D5242746A1A80100EB110F17',
  90.                    '78DA63B4606260E86740013D819A609A11CA67D400AA9980AA664A5731AA1A1DA09A05A86A9C1C2D51D59800D52C4355F3FCFE56143500603E0904'];
  91.   h:= High(S_DTM_STR_Arr);
  92.   if(h > -1)then
  93.   begin
  94.     SCRIPT_DTMS:= CreateNewDTMSet;
  95.     AddDTMsToSet(SCRIPT_DTMS, S_DTM_STR_Arr);
  96.     S_DTM_Arr:= [SCRIPT_DTM_AXE, SCRIPT_DTM_LOGS, SCRIPT_DTM_TREE, SCRIPT_DTM_DWARF];
  97.     h:= High(S_DTM_Arr);
  98.     for i:= 0 to h do
  99.       LoadDTMFromSetToMemory(SCRIPT_DTMS, i);
  100.     Result:= True;
  101.   end;
  102.   for i:= 0 to h do
  103.     S_DTM_STR_Arr[i]:= '';
  104.   SetArrayLength(S_DTM_STR_Arr, 0);
  105. end;
  106.  
  107. procedure handleFKeys;
  108. begin
  109.   if(IsFKeyDown(PauseFKey))then
  110.   begin
  111.     if(TimeFromTimeMark(PDMark) <= 12000)then
  112.       PlaySound(ScriptPath + 'empty.wav');
  113.     while (not(IsFKeyDown(continueFKey)))and(not(IsFKeyDown(stopFKey))) do
  114.       Wait(1);
  115.   end;
  116.   if(IsFKeyDown(StopFKey))then
  117.     TerminateScript;
  118. end;
  119.  
  120. function playerHasMoved(var storedColors: TIntegerArray): Boolean;
  121. var
  122.   i, h: Integer;
  123.   tempColors: TIntegerArray;
  124. begin
  125.   tempColors:= GetColors(BoxToPoints(MINIMAP_AREA_CENTER));
  126.   Result:= (not(IdenticalTIAs(tempColors, storedColors)));
  127.   if((not(Result))and(High(storedColors) = h))then
  128.     Exit;
  129.   SetArrayLength(storedColors, 0);
  130.   storedColors:= tempColors;
  131.   SetArrayLength(tempColors, 0);
  132. end;
  133.  
  134. function FindTree(var x, y: Integer; xs, ys, xe, ye: Integer): Boolean;
  135. var
  136.   i, h: Integer;
  137. begin
  138.   h:= High(bmpTree);
  139.   for i:= 0 to h do
  140.     if(not(Result))then
  141.       Result:= FindBitmapSpiralTolerance(BITMAP_SET[SCRIPT_BITMAPS].bitmap[bmpTree[i]].bmp, x, y, xs, ys, xe, ye, 20)
  142.     else
  143.       Exit;
  144. end;
  145.  
  146. function FindDwarf(var x, y: Integer; xs, ys, xe, ye: Integer): Boolean;
  147. var
  148.   i, h: Integer;
  149. begin
  150.   h:= High(bmpDwarf);
  151.   for i:= 0 to High(bmpDwarf) do
  152.     if(not(Result))then
  153.       Result:= FindBitmapToleranceIn(BITMAP_SET[SCRIPT_BITMAPS].bitmap[bmpDwarf[i]].bmp, x, y, xs, ys, xe, ye, 20)
  154.     else
  155.       Exit;
  156. end;
  157.  
  158. function getChopSpot: Integer;
  159. var
  160.   x, y: Integer;
  161. begin
  162.   Result:= -1;
  163.   if(FindDTM(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_TREE].dtm, x, y, MINIMAP_AREA.X1, MINIMAP_AREA.Y1, MINIMAP_AREA.X2, MINIMAP_AREA.Y2))then
  164.     if((x = 530)and(InRange(y, 171, 175)))then
  165.       Result:= (y - 171);
  166. end;
  167.  
  168. procedure WalkToTreeSpot;
  169. var
  170.   theSpot, x, y, tempTime, phmMark: Integer;
  171.   storedColors: TIntegerArray;
  172. begin
  173.   theSpot:= Random(5);
  174.   if(FindTree(x, y, 3, 24, 250, 444))then
  175.   begin
  176.     Click((x + 60), ((y - 32) + (theSpot * 20)), L);
  177.     MarkTime(phmMark);
  178.     repeat
  179.       if(TimeFromTimeMark(phmMark) >= 800)then
  180.         WalkToTreeSpot;
  181.       if((TimeFromTimeMark(phmMark) = 0)or(TimeFromTimeMark(phmMark) >= 50))then
  182.         if(PlayerHasMoved(storedColors))then
  183.           MarkTime(phmMark);
  184.       Wait(10);
  185.     until(InRange(getChopSpot, 0, 4));
  186.     MarkTime(tempTime);
  187.     while (not(FindItemInQuickBarSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_AXE].dtm, 2, dm_DTM))) do
  188.     begin
  189.       ScrollQuickItemBar(R);
  190.       if(TimeFromTimeMark(tempTime) >= 5000)then
  191.         Break;
  192.     end;
  193.   end else
  194.     walkTo('Tree');
  195. end;
  196.  
  197. procedure SellLogs;
  198. var
  199.   i, i2, x, y: Integer;
  200.   tempTM: Integer;
  201. begin
  202.   handleFKeys;
  203.   if(FindItemInQuickBarSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_LOGS].dtm, 1, dm_DTM))then
  204.   begin
  205.     if(FindDwarf(x, y, 180, 58, 379, 259))then
  206.     begin
  207.       MarkTime(tempTM);
  208.       while (GetColor(53, 367) <> 15987699) do
  209.       begin
  210.         if(FindDwarf(x, y, 180, 58, 379, 259))then
  211.           Click((x + 4), (y + 18), L);
  212.         if(TimeFromTimeMark(tempTM) >= 5000)then
  213.           SellLogs;
  214.       end;
  215.       Click(61, 370, L);
  216.       MarkTime(tempTM);
  217.       while (not(GetColor(238, 199) = 5535633)) do
  218.         if(TimeFromTimeMark(tempTM) >= 5000)then
  219.           SellLogs;
  220.       DoubleClick(526, 260, L);
  221.       Click(389, 381, L);
  222.       DoubleClick(489, 260, L);
  223.       Click(389, 381, L);
  224.       for i:= 1 to 9 do
  225.       begin
  226.         for i2:= 1 to 3 do
  227.           ScrollQuickItemBar(L);
  228.         for i2:= 1 to 3 do
  229.         begin
  230.           case i2 of
  231.             1: DoubleClick(573, 260, L);
  232.             2: DoubleClick(526, 260, L);
  233.             3: DoubleClick(489, 260, L);
  234.           end;
  235.           Click(389, 379, L);
  236.         end;
  237.       end;
  238.       CloseMenu;
  239.       WalkTo('Tree');
  240.     end else
  241.     begin
  242.       WalkTo('Dwarf');
  243.       SellLogs;
  244.     end;
  245.   end else
  246.     WalkTo('Tree');
  247. end;
  248.  
  249. procedure WalkTo(spot: string);
  250. var
  251.   x, y, i, ttl, dstnc, nwAngl, olAngl: Integer;
  252.   s, drctn: string;
  253.   cBx, sBox: TBox;
  254.   cPtMM, cPt, wPt: TPoint;
  255.   TPA: TPointArray;
  256.   walkBoxArr: TBoxArray;
  257.   b: Boolean;
  258. begin
  259.   sBox:= IntToBox(WALKING_TILES[140].x1, WALKING_TILES[140].y1, WALKING_TILES[220].x2, WALKING_TILES[220].y2);
  260.   cBx:= GetAreaBoxByID(180);
  261.   cPt:= IntToPoint((cBx.x1 + 9), (cBx.y1 + 9));
  262.   cPtMM:= IntToPoint (533, 174);
  263.   dstnc:= Round(Distance(WALKING_AREA.x1, WALKING_AREA.y1, WALKING_AREA.x2, WALKING_AREA.y2) / 2);
  264.   s:= Lowercase(spot);
  265.   repeat
  266.     case s of
  267.       'tree': b:= FindDTM(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_TREE].dtm, x, y, MINIMAP_AREA.x1, MINIMAP_AREA.y1, MINIMAP_AREA.x2, MINIMAP_AREA.y2);
  268.       'trader': b:= FindDTM(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_DWARF].dtm, x, y, MINIMAP_AREA.x1, MINIMAP_AREA.y1, MINIMAP_AREA.x2, MINIMAP_AREA.y2);
  269.     end;
  270.     if(b)then
  271.     begin
  272.       drctn:= Lowercase(mmCoordsToDirection(x, y));
  273.       if(drctn = 'center')then
  274.         if(Distance(cPtMM.x, cPtMM.y, x, y) < 10)then
  275.           Break;
  276.       nwAngl:= GetAngle(cPtMM, IntToPoint(x, y));
  277.       if(nwAngl <> olAngl)then
  278.       begin
  279.         wPt:= GetTPointByXYDA(cPt, dstnc, nwAngl);
  280.         TPA:= TPointLine(cPt, wPt);
  281.         PickEveryXTPointFromTPA(4, TPA);
  282.         walkBoxArr:= GetAreaBoxsByTPA(TPA);
  283.         SkipTBoxsByArea(walkBoxArr, sBox, False);
  284.         ttl:= GetArrayLength(walkBoxArr);
  285.         olAngl:= nwAngl;
  286.       end;
  287.       if(ttl > 0)then
  288.       begin
  289.         i:= Random(ttl);
  290.         Click((walkBoxArr[i].x1 + 9), (walkBoxArr[i].y1 + 9), L);
  291.       end;
  292.     end;
  293.   until(False);
  294.   Click((WALKING_AREA_CENTER.X1 + 5), (WALKING_AREA_CENTER.Y1 + 5), L);
  295.   SetArrayLength(walkBoxArr, 0);
  296.   SetArrayLength(TPA, 0);
  297.   case s of
  298.     'tree': WalkToTreeSpot;
  299.     'trader': SellLogs;
  300.   end;
  301. end;
  302.  
  303. procedure Cut;
  304. var
  305.   x, y, tempTM, tempSpot, tmpETM, ET: Integer;
  306.   storedColors: TIntegerArray;
  307. begin
  308.   while (not(FindItemInQuickBarSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_AXE].dtm, 2, dm_DTM))) do
  309.     ScrollQuickItemBar(R);
  310.   if(FindTree(x, y, 3, 24, 250, 444))then
  311.   begin
  312.     if(not(InRange(getChopSpot, 0, 4)))then
  313.       WalkToTreeSpot;
  314.   end else
  315.     walkTo('Tree');
  316.   Wait(500);
  317.   repeat
  318.     if(FindItemInQuickBarSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_LOGS].dtm, 1, dm_DTM))then
  319.       Break;
  320.     Click(564, 257, R)
  321.     FindTree(x, y, 148, 185, 167, 285);
  322.     Click((x + 5), (y + 3), L);
  323.     OpenMenu(MENU_INVENTORY);
  324.     MarkTime(tempTM);
  325.     while ((not(BagOpen))and(TimeFromTimeMark(tempTM) < 2000)) do
  326.       Wait(1);
  327.     if(TimeFromTimeMark(tempTM) >= 2000)then
  328.       Cut;
  329.     MarkTime(tempTM);
  330.     while ((BagOpen)and(TimeFromTimeMark(tempTM) < 5500)) do
  331.       Wait(1);
  332.     if(BagOpen)then
  333.     begin
  334.       CloseMenu;
  335.       MarkTime(tempTM);
  336.       while (BagOpen) do
  337.       begin
  338.         MarkTime(tmpETM);
  339.         Wait(1);
  340.         ET:= (TimeFromTimeMark(tmpETM) - 1);
  341.         if((TimeFromTimeMark(tempTM) - ET) >= 10000)then
  342.           TerminateScript;
  343.       end;
  344.       storedColors:= GetColors(BoxToPoints(MINIMAP_AREA_CENTER));
  345.       MarkTime(tempTM);
  346.       repeat
  347.         SendArrow(1);
  348.         Wait(100);
  349.         if(TimeFromTimeMark(tempTM) > 5000)then
  350.           TerminateScript;
  351.       until(playerHasMoved(storedColors));
  352.       WalkToTreeSpot;
  353.       Wait(250);
  354.       Cut;
  355.     end else
  356.       if(TimeFromTimeMark(tempTM) >= 5500)then
  357.       begin
  358.         if(not(FindTree(x, y, 151, 186, 164, 291)))then
  359.           if(FindTree(x, y, 3, 24, 250, 444))then
  360.             WalkToTreeSpot
  361.           else
  362.             TerminateScript;
  363.       end;
  364.     Wait(1);
  365.   until(FindItemInQuickBarSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_LOGS].dtm, 1, dm_DTM));
  366.   WalkTo('Trader');
  367. end;
  368.  
  369. function ReadyToStart: Boolean;
  370. var
  371.   h, tmr: Integer;
  372.   TIA: TIntegerArray;
  373. begin
  374.   if(SWClientActivated)then
  375.   begin
  376.     if(not(AtLoginScreen))then
  377.     begin
  378.       OpenMenu(MENU_INVENTORY);
  379.       MarkTime(tmr);
  380.       repeat
  381.         if(TimeFromTimeMark(tmr) > 1000)then
  382.         begin
  383.           WriteLn('ERROR: FAILED TO OPEN INVENTORY. ..LAG?');
  384.           Exit;
  385.         end;
  386.       until(MenuOpen(MENU_INVENTORY));
  387.       TIA:= GetUsedBagSlots;
  388.       h:= High(TIA);
  389.       if(h = 0)then
  390.       begin
  391.         if(FindItemInBagSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_AXE].dtm, TIA[0], dm_DTM))then
  392.         begin
  393.           if(TIA[0] <> 29)then
  394.           begin
  395.             DragItem(TIA[0], 29);
  396.             MoveMouse(600, 150);
  397.             MarkTime(tmr);
  398.             repeat
  399.               if(TimeFromTimeMark(tmr) > 1000)then
  400.               begin
  401.                 WriteLn('ERROR: FAILED TO MOVE AXE TO BAG SLOT NO.29.');
  402.                 Exit;
  403.               end;
  404.             until(FindItemInBagSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_AXE].dtm, 29, dm_DTM));
  405.           end;
  406.           MarkTime(tmr);
  407.           repeat
  408.             ScrollQuickItemBar(R);
  409.             if(TimeFromTimeMark(tmr) > 1000)then
  410.               WriteLn('ERROR: FAILED TO SCROLL QUICK ITEM BAR TO SLOT 29...');
  411.           until(FindItemInQuickBarSlot(DTM_SET[SCRIPT_DTMS].DTM[SCRIPT_DTM_AXE].dtm, 2, dm_DTM));
  412.           OpenMenu(MENU_INFORMATION);
  413.           MarkTime(tmr);
  414.           repeat
  415.             if(TimeFromTimeMark(tmr) > 1000)then
  416.             begin
  417.               WriteLn('ERROR: FAILED TO OPEN PLAYER INFORMATION...');
  418.               Exit;
  419.             end;
  420.           until(MenuOpen(MENU_INFORMATION));
  421.           if((GetMaximumStuffWeight - GetUsedStuffWeight) < 150)then
  422.           begin
  423.             WriteLn('ERROR: NOT ENOUGH WEIGHT TO CARRY FULL LOAD OF LOGS...');
  424.             Exit;
  425.           end;
  426.           CloseMenus;
  427.           MarkTime(tmr);
  428.           repeat
  429.             if(TimeFromTimeMark(tmr) > 1000)then
  430.             begin
  431.               WriteLn('ERROR: COULD NOT CLOSE PLAYER INFORMATION...');
  432.               Exit;
  433.             end;
  434.           until(not(MenuOpen(MENU_INFORMATION)));
  435.           if(GetActiveChatBoxTab <> 0)then
  436.           begin
  437.             MarkTime(tmr);
  438.             while ((not(SetActiveChatBoxTab(0)))and(TimeFromTimeMark(tmr) > 1000)) do
  439.               Wait(10);
  440.             if(GetActiveChatBoxTab <> 0)then
  441.             begin
  442.               WriteLn('ERROR: FAILED TO SET CHATBOX TAB TO 0.');
  443.               Exit;
  444.             end;
  445.           end;
  446.           Result:= True;
  447.         end else
  448.           WriteLn('ERROR: NO AXE IN BAG.');
  449.       end else
  450.       begin
  451.         WriteLn('ERROR: PLAYER CAN ONLY HAVE A WOODCUTTING AXE IN BAG.');
  452.         CloseMenus;
  453.         SetArrayLength(TIA, 0);
  454.         Exit;
  455.       end;
  456.       SetArrayLength(TIA, 0);
  457.     end else
  458.       WriteLn('ERROR: PLEASE LOGIN BEFORE RUNNING THE SCRIPT.');
  459.   end else
  460.     WriteLn('ERROR: SW CLIENT IS NOT ACTIVATED.');
  461. end;
  462.  
  463. procedure ScriptTerminate;
  464. begin
  465.   PlaySound(ScriptPath + 'empty.wav');
  466.   SetArrayLength(storedColors, 0);
  467.   SetArrayLength(bmpTree, 0);
  468.   SetArrayLength(bmpDwarf, 0);
  469.   SetClientPos(False);
  470.   UnsetupSWSSL;
  471. end;
  472.  
  473. begin
  474.   if(not(SetupSWSSL))then
  475.     Exit;
  476.   bmpTree:= [SCRIPT_BMP_TREE0, SCRIPT_BMP_TREE1, SCRIPT_BMP_TREE2,
  477.              SCRIPT_BMP_TREE3, SCRIPT_BMP_TREE4, SCRIPT_BMP_TREE5];
  478.   bmpDwarf:= [SCRIPT_BMP_DWARF0, SCRIPT_BMP_DWARF1, SCRIPT_BMP_DWARF2,
  479.               SCRIPT_BMP_DWARF3, SCRIPT_BMP_DWARF4, SCRIPT_BMP_DWARF5];
  480.   ScriptBitmapsSetup;
  481.   ScriptDTMsSetup;
  482.   ActivateClient;
  483.   Wait(1000);
  484.   if(not(ReadyToStart))then
  485.     TerminateScript;
  486.   repeat
  487.     handleFKeys;
  488.     Cut;
  489.     Wait(1);
  490.   until(IsFKeyDown(StopFKey));
  491.   UnsetupSWSSL;
  492. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement