Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ShilosVagCameLite;
- {$DEFINE SMART}
- {$i srl/srl.simba}
- {$IFDEF SMART}
- {$i srl/srl/misc/paintsmart.simba}
- {$ENDIF}
- const
- GEM_OPAL = 0;
- GEM_JADE = 1;
- GEM_TOPAZ = 2;
- GEM_SAPPHIRE = 3;
- GEM_EMERALD = 4;
- GEM_RUBY = 5;
- GEM_DIAMOND = 6;
- GEM_BL_UNCUT = 70;
- GEM_BL_CUT = 62;
- GEM_BL_CRUSHED = 75;
- GEM_ROCK_COLOR = 9319051;
- GEM_ROCK_HUE = 0.08;
- GEM_ROCK_SAT = 0.92;
- GEM_ROCK_TOL = 23;
- SRLStatsUserName = '';
- SRLStatsPassword = '';
- type
- TPlayer = record
- Craft_Lvl, Mining_Lvl, Highest_Can_Cut : Integer;
- end;
- TGem = record
- Name, UpText : string;
- Gem, Color, Tol : Integer;
- Hue, Sat, CraftXP : Extended;
- end;
- TReport = record
- TimesBanked, LoadsDone, ItemsDropped : Integer;
- OpalsMined, JadesMined, TopazMined, SapphiresMined, EmeraldsMined, RubiesMined, DiamondsMined : Integer;
- OpalsCut, JadesCut, TopazCut, SapphiresCut, EmeraldsCut, RubiesCut, DiamondsCut : Integer;
- GemsMined, GemsCut, GemsCrushed : Integer;
- CraftingXP, MiningXP : Integer;
- end;
- var
- Player : TPlayer;
- Gems : array of TGem;
- ReportVars : TReport;
- procedure DeclarePlayers();
- begin
- HowManyPlayers := 1;
- NumberOfPlayers(HowManyPlayers);
- CurrentPlayer := 0;
- with Players[0] do
- begin
- Name := ''; // Your RuneScape Account Name
- Pass := ''; // Your RuneScape Account Password
- Active := True; // Use in the Script. True / False.
- Integers[0] := 1; // How many Loads to do
- Booleans[0] := False; // Pickaxe in Inventory
- end;
- end;
- procedure SetupScript;
- begin
- {$IFDEF SMART}
- Smart_Server := 10;
- Smart_Members := True;
- Smart_Signed := True;
- {$ENDIF}
- SetupSRL();
- SetupSRLStats(841, SRLStatsUserName, SRLStatsPassword);
- ClearDebug();
- ActivateClient();
- DeclarePlayers();
- LoginPlayer();
- while(not(RSReady()))do
- Wait(9000);
- ClickNorth(SRL_ANGLE_HIGH);
- GameTab(tab_Inv);
- end;
- procedure SetupPlayer;
- {$IFDEF SMART}var i : Integer;{$ENDIF}
- begin
- WriteLn('-[DEBUG]||[STARTING]- ***SetupPlayer***');
- Player.Craft_Lvl := GetSkillLevel(SKILL_CRAFTING);
- Player.Mining_Lvl := GetSkillLevel(SKILL_MINING);
- WriteLn('-[DEBUG]- Crafting level is ' + IntToStr(Player.Craft_Lvl) + '.');
- WriteLn('-[DEBUG]- Mining level is ' + IntToStr(Player.Mining_Lvl) + '.');
- GameTab(tab_Inv);
- case(Player.Craft_Lvl)of
- 1..12 : Player.Highest_Can_Cut := GEM_OPAL;
- 13..15: Player.Highest_Can_Cut := GEM_JADE;
- 16..19: Player.Highest_Can_Cut := GEM_TOPAZ;
- 20..26: Player.Highest_Can_Cut := GEM_SAPPHIRE;
- 27..33: Player.Highest_Can_Cut := GEM_EMERALD;
- 34..42: Player.Highest_Can_Cut := GEM_RUBY;
- 43..99: Player.Highest_Can_Cut := GEM_DIAMOND;
- end;
- {$IFDEF SMART}
- for i := (Integer(Players[CurrentPlayer].Booleans[0]) + 1) to 28 do
- SMART_DrawBoxEx(False, InvBox(i), clYellow);
- {$ENDIF}
- WriteLn('-[DEBUG]||[ENDING]- ***SetupPlayer***');
- end;
- procedure SetupGems;
- begin
- WriteLn('-[DEBUG]||[STARTING]- ***SetupGems***');
- WriteLn('-[DEBUG]- Loading Gems.');
- SetLength(Gems, 7);
- with Gems[0] do
- begin
- Gem := GEM_OPAL;
- Name := 'Uncut Opal';
- UpText := 'opal';
- Color := 7242628;
- Hue := 0.06;
- Sat := 0.19;
- Tol := 14;
- CraftXP := 15;
- end;
- WriteLn('-[DEBUG]- Gem Opal is loaded.');
- with Gems[1] do
- begin
- Gem := GEM_JADE;
- Name := 'Uncut Jade';
- UpText := 'jade';
- Color := 6979442;
- Hue := 0.06;
- Sat := 0.15;
- Tol := 15;
- CraftXP := 20;
- end;
- WriteLn('-[DEBUG]- Gem Jade is loaded.');
- with Gems[2] do
- begin
- Gem := GEM_TOPAZ;
- Name := 'Uncut Red Topaz';
- UpText := 'topaz';
- Color := 5247883;
- Hue := 0.02;
- Sat := 0.17;
- Tol := 9;
- CraftXP := 25;
- end;
- WriteLn('-[DEBUG]- Gem Red Topaz is loaded.');
- with Gems[3] do
- begin
- Gem := GEM_SAPPHIRE;
- Name := 'Uncut Sapphire';
- UpText := 'sapphire';
- Color := 7410191;
- Hue := 0.02;
- Sat := 0.16;
- Tol := 8;
- CraftXP := 50;
- end;
- WriteLn('-[DEBUG]- Gem Sapphire is loaded.');
- with Gems[4] do
- begin
- Gem := GEM_EMERALD;
- Name := 'Uncut Emerald';
- UpText := 'emerald';
- Color := 1074957;
- Hue := 0.04;
- Sat := 0.26;
- Tol := 8;
- CraftXP := 67.5;
- end;
- WriteLn('-[DEBUG]- Gem Emerald is loaded.');
- with Gems[5] do
- begin
- Gem := GEM_RUBY;
- Name := 'Uncut Ruby';
- UpText := 'ruby';
- Color := 725076;
- Hue := 0.04;
- Sat := 0.25;
- Tol := 6;
- CraftXP := 85;
- end;
- WriteLn('-[DEBUG]- Gem Ruby is loaded.');
- with Gems[6] do
- begin
- Gem := GEM_DIAMOND;
- Name := 'Uncut Diamond';
- UpText := 'diamond';
- Color := 8882064;
- Hue := 0.16;
- Sat := 0.12;
- Tol := 18;
- CraftXP := 107.5;
- end;
- WriteLn('-[DEBUG]- Gem Diamond is loaded.');
- WriteLn('-[DEBUG]- All gems are loaded.');
- WriteLn('-[DEBUG]||[ENDING]- ***SetupGems***');
- end;
- (*
- Credit to RISK (Stole from his Range Guild script)
- BenLand's function, modified by Flight(?) to have a paint trail, re-modified
- by RISK to disable the paint option completely if the user is not using SMART
- *)
- procedure WindMouse2(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
- var
- veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
- lastX, lastY: integer;
- sqrt2, sqrt3, sqrt5: extended;
- begin
- sqrt2:= sqrt(2);
- sqrt3:= sqrt(3);
- sqrt5:= sqrt(5);
- while hypot(xs - xe, ys - ye) > 1 do
- begin
- dist:= hypot(xs - xe, ys - ye);
- wind:= minE(wind, dist);
- if dist >= targetArea then
- begin
- windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
- windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
- end else
- begin
- windX:= windX / sqrt2;
- windY:= windY / sqrt2;
- if (maxStep < 3) then
- begin
- maxStep:= random(3) + 3.0;
- end else
- begin
- maxStep:= maxStep / sqrt5;
- end;
- end;
- veloX:= veloX + windX;
- veloY:= veloY + windY;
- veloX:= veloX + gravity * (xe - xs) / dist;
- veloY:= veloY + gravity * (ye - ys) / dist;
- if hypot(veloX, veloY) > maxStep then
- begin
- randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
- veloMag:= sqrt(veloX * veloX + veloY * veloY);
- veloX:= (veloX / veloMag) * randomDist;
- veloY:= (veloY / veloMag) * randomDist;
- end;
- lastX:= Round(xs);
- lastY:= Round(ys);
- xs:= xs + veloX;
- ys:= ys + veloY;
- if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
- MoveMouse(Round(xs), Round(ys));
- step:= hypot(xs - lastX, ys - lastY);
- wait(round((maxWait - minWait) * (step / maxStep) + minWait));
- lastdist:= dist;
- {$IFDEF SMART}
- if(PointInBox(Point(lastX, lastY), IntToBox(MSX1, MSY1, MSX2, MSY2)))then
- SMART_DrawDotsEx(False, [Point(lastX, lastY)], clWhite);
- {$ENDIF}
- end;
- if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
- MoveMouse(Round(xe), Round(ye));
- end;
- (*
- Credits to Flight
- *)
- procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
- var
- randSpeed: extended;
- X,Y,X2,Y2,A,Dist,MP: integer;
- begin
- A := MouseSpeed;
- GetMousePos(X, Y);
- Dist := Distance(X, Y, eX, eY);
- MP := Round(Dist/150);
- if MP < 0 then
- MP := 1;
- randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
- X2 := RandomRange(eX-(A*MP), eX+(A*MP));
- Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
- WindMouse2(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
- GetMousePos(X, Y);
- MMouse(eX, eY, ranX, ranY);
- MouseSpeed := A;
- end;
- procedure AntiBan();
- begin
- if(not(LoggedIn))then Exit;
- WriteLn('-[DEBUG]||[STARTING]- ***Antiban***');
- WriteLn('-[DEBUG]- Performing Antiban.');
- FindNormalRandoms;
- case (Random(350)) of
- 0 : RandomRClick;
- 1 : HoverSkill('random', False);
- 2 : ExamineInv;
- 3 : MouseSpeed := (RandomRange(10, 12));
- 4 : begin HoverSkill('Mining', False); Wait(RandomRange(2000, 4000)); end;
- 5 : begin PickUpMouse; SleepAndMoveMouse(1500 + Random(500)); end;
- 6 : begin GameTab(tab_Stats); Wait(1500 + Random(500)); GameTab(tab_Inv); end;
- 7 .. 14 : HoverSkill('Crafting', False);
- 15 .. 40 : Wait(RandomRange(750, 2000));
- 41: BoredHuman;
- end;
- WriteLn('-[DEBUG]||[ENDING]- ***Antiban***');
- end;
- procedure IdentifyGem(invIndex : Integer);
- var
- invB : TBox;
- i, x, y : Integer;
- TPA : TPointArray;
- tmpCTS : Integer;
- begin
- if(not(LoggedIn))then Exit;
- WriteLn('-[DEBUG]||[STARTING]- ***IdentifyGem***');
- invB := InvBox(invIndex);
- WriteLn('-[DEBUG]- Attempting to identify gem.');
- tmpCTS := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- for i := Low(Gems) to High(Gems) do
- begin
- SetColorSpeed2Modifiers(Gems[i].Hue, Gems[i].Sat);
- if(FindColorsSpiralTolerance(x, y, TPA, Gems[i].Color, invB.X1, invB.Y1, invB.X2, invB.Y2, Gems[i].Tol))then
- begin
- {$IFDEF SMART}SMART_DrawBoxEx(False, invB, Gems[i].Color);{$ENDIF}
- WriteLn('-[DEBUG]- Found "' + Gems[i].Name + '" in inventory slot #' + IntToStr(invIndex) + '.');
- Inc(ReportVars.GemsMined);
- IncEx(ReportVars.MiningXP, 65);
- case(Gems[i].Gem)of
- GEM_OPAL : Inc(ReportVars.OpalsMined);
- GEM_JADE : Inc(ReportVars.JadesMined);
- GEM_TOPAZ : Inc(ReportVars.TopazMined);
- GEM_SAPPHIRE : Inc(ReportVars.SapphiresMined);
- GEM_EMERALD : Inc(ReportVars.EmeraldsMined);
- GEM_RUBY : Inc(ReportVars.RubiesMined);
- GEM_DIAMOND : Inc(ReportVars.DiamondsMined);
- end;
- WriteLn('-[DEBUG]- Checking to see if this gem can be cut.');
- if(Player.Highest_Can_Cut < Gems[i].Gem)then
- begin
- WriteLn('-[DEBUG]- Can not cut this gem, dropping it now.');
- DropItem(invIndex);
- Inc(ReportVars.ItemsDropped);
- {$IFDEF SMART}SMART_DrawBoxEx(False, invB, clYellow);{$ENDIF}
- end;
- Break;
- end;
- end;
- ColorToleranceSpeed(tmpCTS);
- SetColorSpeed2Modifiers(0.2, 0.2);
- WriteLn('-[DEBUG]||[ENDING]- ***IdentifyGem***');
- end;
- function FindGemRock(var x, y : Integer; All : Boolean) : Boolean;
- var
- a, b, c : Integer;
- TPA : TPointArray;
- ATPA : T2DPointArray;
- MP : TPoint;
- tmpCTS : Integer;
- Box : TBox;
- begin
- if(not(LoggedIn))then Exit;
- WriteLn('-[DEBUG]||[STARTING]- ***FindGemRock(' + BoolToStr(All) + ')***');
- WriteLn('-[DEBUG]- Searching for Gem rocks.');
- tmpCTS := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(GEM_ROCK_HUE, GEM_ROCK_SAT);
- FindColorsSpiralTolerance(b, c, TPA, GEM_ROCK_COLOR, MSX1, MSY1, MSX2, MSY2, GEM_ROCK_TOL);
- SortTPAFrom(TPA, Point(MSCX, MSCY));
- ATPA := TPAtoATPAEx(TPA, 20, 20);
- for a := 0 to High(ATPA) do
- begin
- MP := MiddleTPA(ATPA[a]);
- if(not(PointInBox(Point(MP.X, MP.Y) , IntToBox(MSCX - 10, MSCY - 25, MSCX + 15, MSCY + 15))))then
- begin
- Box := IntToBox((MP.X - 20), (MP.Y - 20), (MP.X + 20), (MP.Y + 20));
- {$IFDEF SMART}SMART_DrawBoxEx(False, Box, GEM_ROCK_COLOR);{$ENDIF}
- if(not(All))then
- begin
- HumanMMouse(MP.X, MP.Y, 2, 2);
- if(WaitUptext('ine Gem', 750))then
- begin
- WriteLn('-[DEBUG]- Gem rock is found at point(' + IntToStr(MP.X) + ', ' + IntToStr(MP.Y) + ').');
- x := MP.X; y := MP.Y;
- Result := True;
- {$IFDEF SMART}
- SMART_ClearCanvasArea(Box);
- SMART_DrawBoxEx(False, Box, clRed);
- {$ENDIF}
- Break;
- end else
- WriteLn('-[DEBUG]||[ERROR]- Color point(' + IntToStr(MP.X) + ', ' + IntToStr(MP.Y) + ') is not a Gem rock.');
- end;
- end;
- end;
- ColorToleranceSpeed(tmpCTS);
- SetColorSpeed2Modifiers(0.2, 0.2);
- WriteLn('-[DEBUG]||[ENDING]- ***FindGemRock(' + BoolToStr(All) + ')***');
- end;
- function isMining: Boolean;
- var
- B: TBox;
- APS : Integer;
- begin
- WriteLn('-[DEBUG]||[STARTING]- ***isMining***');
- B := IntToBox(MSCX - 10, MSCY - 25, MSCX + 15, MSCY + 15);
- APS := AveragePixelShift(B, 250, 250);
- WriteLn('-[DEBUG]- Average Pixel Shift is ' + IntToStr(APS) + '.');
- Result := (APS > 400);
- WriteLn('-[DEBUG]- isMining equals ' + BoolToStr(Result) + '.');
- WriteLn('-[DEBUG]||[ENDING]- ***isMining***');
- end;
- procedure MineRock();
- var
- x, y, t, i, mTime : Integer;
- {$IFDEF SMART}Box : TBox;{$ENDIF}
- begin
- if(not(LoggedIn))then Exit;
- WriteLn('-[DEBUG]||[STARTING]- ***MineRock***');
- WriteLn('-[DEBUG]- Mining Gem rock.');
- repeat
- i := InvCount + 1;
- mTime := 4000 + RandomRange(500, 1500);
- WriteLn('-[DEBUG]- mTime is ' + IntToStr(mTime) + 'ms.');
- if(FindGemRock(x, y, False))then
- begin
- Mouse(x, y, 2, 2, mouse_Left);
- WriteLn('-[DEBUG]- Marking start time.');
- MarkTime(t);
- repeat
- {$IFDEF SMART}
- Box := IntToBox((x - 20), (y - 20), (x + 20), (y + 20));
- SMART_ClearMS();
- FindGemRock(x, y, True);
- {$ENDIF}
- WriteLn('-[DEBUG]- Checking for Randoms.');
- FindNormalRandoms();
- ClickToContinue();
- WriteLn('-[DEBUG]- Checking time passed (' + IntToStr(TimeFromMark(t)) + 'ms have passed).');
- if(TimeFromMark(t) > mTime)then
- Break;
- WriteLn('-[DEBUG]- Checking if we are still mining.');
- if(isMining)then
- begin
- WriteLn('-[DEBUG]- We are still mining.');
- AntiBan();
- WriteLn('-[DEBUG]- Resetting mTime.');
- MarkTime(t);
- Wait(500);
- end;
- until(InvCount = i) or (TimeFromMark(t) > mTime);
- if(InvCount = i)then
- IdentifyGem(InvCount)
- else
- WriteLn('-[DEBUG]||[ERROR]- Failed to mine Gem rock, request timed out. Exceeded ' + IntToStr(mTime) + 'ms.');
- end else
- begin
- WriteLn('-[DEBUG]- All gem rocks have been mined, waiting until respawn.');
- while(not(FindGemRock(x, y, False)))do
- AntiBan();
- end;
- until(InvFull);
- WriteLn('-[DEBUG]||[ENDING]- ***MineRock***');
- end;
- function FindSelection(): Boolean;
- begin
- Result := (CountColor(srl_outline_black, MCX1, MCY1, MCX2, MCY2) > (GEM_BL_CUT - 3));
- end;
- procedure CutGems();
- var
- invB : TBox;
- i, ii, j, x, y, a, b : Integer;
- TPA : TPointArray;
- tmpCTS : Integer;
- slots, g : T2DIntegerArray;
- begin
- if(not(LoggedIn))then Exit;
- WriteLn('-[DEBUG]||[STARTING]- ***CutGems***');
- WriteLn('-[DEBUG]- Scanning inventory.');
- tmpCTS := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetLength(slots, 7);
- SetLength(g, 7);
- for i := Low(Gems) to High(Gems) do
- begin
- SetLength(slots[i], 2);
- SetLength(g[i], 29);
- end;
- for i := (Integer(Players[CurrentPlayer].Booleans[0]) + 1) to 28 do
- begin
- WriteLn('-[DEBUG]- Looking in inventory slot #' + IntToStr(i) + '.');
- invB := InvBox(i);
- if(InRange(CountColor(srl_outline_black, invB.X1, invB.Y1, invB.X2, invB.Y2), (GEM_BL_UNCUT - 3), (GEM_BL_UNCUT + 3)))then
- begin
- WriteLn('-[DEBUG]- Uncut gem black list found.');
- for ii := Low(Gems) to High(Gems) do
- begin
- SetColorSpeed2Modifiers(Gems[ii].Hue, Gems[ii].Sat);
- if(FindColorsSpiralTolerance(x, y, TPA, Gems[ii].Color, invB.X1, invB.Y1, invB.X2, invB.Y2, Gems[ii].Tol))then
- begin
- if(slots[ii][0] = 0)then
- begin
- slots[ii][0] := Gems[ii].Gem;
- slots[ii][1] := i;
- end;
- {$IFDEF SMART}SMART_DrawBoxEx(False, invB, Gems[ii].Color);{$ENDIF}
- Inc(j);
- g[ii][i] := i;
- case(Gems[ii].Gem)of
- GEM_OPAL : begin Inc(ReportVars.OpalsCut); IncEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_JADE : begin Inc(ReportVars.JadesCut); IncEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_TOPAZ : begin Inc(ReportVars.TopazCut); IncEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_SAPPHIRE : begin Inc(ReportVars.SapphiresCut); IncEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_EMERALD : begin Inc(ReportVars.EmeraldsCut); IncEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_RUBY : begin Inc(ReportVars.RubiesCut); IncEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_DIAMOND : begin Inc(ReportVars.DiamondsCut); IncEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- end;
- Break;
- end;
- end;
- end;
- end;
- WriteLn('-[DEBUG]- Found ' + IntToStr(j) + ' gems in the inventory.');
- for i := Low(Gems) to High(Gems) do
- begin
- if(Gems[i].Gem = slots[i][0])then
- begin
- WriteLn('-[DEBUG]- Cutting "' + Gems[i].Name + '" in inventory slot #' + IntToStr(slots[i][1]) + '.');
- invB := InvBox(slots[i][1]);
- Mouse((invB.X1 + invB.X2) / 2, (invB.Y1 + invB.Y2) / 2, 5, 5, mouse_Left);
- while(not(FindSelection()))do
- Wait(RandomRange(250, 500));
- Mouse(256, 432, 10, 10, mouse_Left);
- repeat
- SetColorSpeed2Modifiers(Gems[i].Hue, Gems[i].Sat);
- for ii := (Integer(Players[CurrentPlayer].Booleans[0]) + 1) to 28 do
- begin
- invB := InvBox(ii);
- if(FindColorsSpiralTolerance(x, y, TPA, Gems[i].Color, invB.X1, invB.Y1, invB.X2, invB.Y2, Gems[i].Tol))then
- begin
- Inc(a);
- if(CountColor(srl_outline_black, invB.X1, invB.Y1, invB.X2, invB.Y2) > (GEM_BL_CUT - 3))then
- Inc(b);
- Wait(RandomRange(500, 750));
- end;
- end;
- until(a = b);
- end;
- end;
- WriteLn('-[DEBUG]- Searching for crushed gems.');
- j := 0;
- for i := (Integer(Players[CurrentPlayer].Booleans[0]) + 1) to 28 do
- begin
- WriteLn('-[DEBUG]- Looking for crushed gems in inventory slot #' + IntToStr(i) + '.');
- invB := InvBox(i);
- if(InRange(CountColor(srl_outline_black, invB.X1, invB.Y1, invB.X2, invB.Y2), (GEM_BL_CRUSHED - 3), (GEM_BL_CRUSHED + 3)))then
- begin
- WriteLn('-[DEBUG]- Crushed gem black list found.');
- for ii := Low(Gems) to High(Gems) do
- begin
- a := 0;
- for a := Low(g[ii]) to High(g[ii]) do
- begin
- if(g[ii][a] = i)then
- begin
- case(Gems[ii].Gem)of
- GEM_OPAL : begin Dec(ReportVars.OpalsCut); DecEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_JADE : begin Dec(ReportVars.JadesCut); DecEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- GEM_TOPAZ : begin Dec(ReportVars.TopazCut); DecEx(ReportVars.CraftingXP, Round(Gems[ii].CraftXP)); end;
- end;
- end;
- end;
- end;
- {$IFDEF SMART}SMART_DrawBoxEx(False, invB, clWhite);{$ENDIF}
- WriteLn('-[DEBUG]- Found crushed gem in inventory slot #' + IntToStr(i) + '.');
- Inc(j);
- end;
- end;
- WriteLn('-[DEBUG]- Found ' + IntToStr(j) + ' crushed gems.');
- IncEx(ReportVars.GemsCut, (28 - j));
- IncEx(ReportVars.GemsCrushed, j);
- ColorToleranceSpeed(tmpCTS);
- SetColorSpeed2Modifiers(0.2, 0.2);
- WriteLn('-[DEBUG]||[ENDING]- ***CutGems***');
- end;
- procedure DropGems();
- {$IFDEF SMART}
- var
- i : Integer;
- {$ENDIF}
- begin
- WriteLn('-[DEBUG]||[STARTING]- ***DropGems***');
- WriteLn('-[DEBUG]- Dropping inventory.');
- if(Players[CurrentPlayer].Booleans[0])then
- DropAllExcept([1])
- else
- DropAll();
- IncEx(ReportVars.ItemsDropped, 28 - (Integer(Players[CurrentPlayer].Booleans[0])));
- {$IFDEF SMART}
- for i := (Integer(Players[CurrentPlayer].Booleans[0]) + 1) to 28 do
- SMART_DrawBoxEx(False, InvBox(i), clYellow);
- {$ENDIF}
- WriteLn('-[DEBUG]||[ENDING]- ***DropGems***');
- end;
- procedure SendStats();
- begin
- stats_IncVariable('Loads Done', ReportVars.LoadsDone);
- stats_IncVariable('Mining EXP (Gained)', ReportVars.MiningXP);
- stats_IncVariable('Crafting EXP (Gained)', ReportVars.CraftingXP);
- stats_IncVariable('Items Dropped ', ReportVars.ItemsDropped);
- stats_IncVariable('Opals (Mined)', ReportVars.OpalsMined);
- stats_IncVariable('Jades (Mined)', ReportVars.JadesMined);
- stats_IncVariable('Topaz (Mined)', ReportVars.TopazMined);
- stats_IncVariable('Sapphires (Mined)', ReportVars.SapphiresMined);
- stats_IncVariable('Emeralds (Mined)', ReportVars.EmeraldsMined);
- stats_IncVariable('Rubies (Mined)', ReportVars.RubiesMined);
- stats_IncVariable('Diamonds (Mined)', ReportVars.DiamondsMined);
- stats_IncVariable('Gems (Mined)', ReportVars.GemsMined);
- stats_IncVariable('Opals (Cut)', ReportVars.OpalsCut);
- stats_IncVariable('Jades (Cut)', ReportVars.JadesCut);
- stats_IncVariable('Topaz (Cut)', ReportVars.TopazCut);
- stats_IncVariable('Sapphire Cut', ReportVars.SapphiresCut);
- stats_IncVariable('Emerald Cut', ReportVars.EmeraldsCut);
- stats_IncVariable('Ruby Cut', ReportVars.RubiesCut);
- stats_IncVariable('Diamond Cut', ReportVars.DiamondsCut);
- stats_IncVariable('Gems (Cut)', ReportVars.GemsCut);
- stats_IncVariable('Gems (Crushed)', ReportVars.GemsCrushed);
- Stats_Commit;
- end;
- procedure Report();
- begin
- WriteLn('-[DEBUG]||[STARTING]- ***Report***');
- WriteLn('');
- WriteLn('');
- WriteLn('');
- SendStats();
- WriteLn('[REPORT]');
- WriteLn('[-------------------------------------------]');
- WriteLn('[ Shilo''s Vag Came Lite ]');
- WriteLn('[ Shilo''s [V]illage [A]mazing [G]em ]');
- WriteLn('[ [C]rafter [A]nd [M]iner [E]xtreme ]');
- WriteLn('[ by Kyle Undefined ]');
- WriteLn('[-------------------------------------------]');
- WriteLn('[ ]');
- WriteLn(PadR('[ Time Ran : ' + MsToTime(GetTimeRunning, TIME_ABBREV), 44) + ']');
- WriteLn(PadR('[ Loads Done : ' + IntToStr(ReportVars.LoadsDone), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Mining XP Gained : ' + IntToStr(ReportVars.MiningXP), 44) + ']');
- WriteLn(PadR('[ Crafting XP Gained : ' + IntToStr(ReportVars.CraftingXP), 44) + ']');
- WriteLn(PadR('[ Gems Mined : ' + IntToStr(ReportVars.GemsMined), 44) + ']');
- WriteLn(PadR('[ Gems Cut : ' + IntToStr(ReportVars.GemsCut), 44) + ']');
- WriteLn(PadR('[ Gems Crushed : ' + IntToStr(ReportVars.GemsCrushed), 44) + ']');
- WriteLn(PadR('[ Items Dropped : ' + IntToStr(ReportVars.ItemsDropped), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Opals Mined : ' + IntToStr(ReportVars.OpalsMined), 44) + ']');
- WriteLn(PadR('[ Opals Cut : ' + IntToStr(ReportVars.OpalsCut), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Jades Mined : ' + IntToStr(ReportVars.JadesMined), 44) + ']');
- WriteLn(PadR('[ Jades Cut : ' + IntToStr(ReportVars.JadesCut), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Topaz Mined : ' + IntToStr(ReportVars.TopazMined), 44) + ']');
- WriteLn(PadR('[ Topaz Cut : ' + IntToStr(ReportVars.TopazCut), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Sapphires Mined : ' + IntToStr(ReportVars.SapphiresMined), 44) + ']');
- WriteLn(PadR('[ Sapphires Cut : ' + IntToStr(ReportVars.SapphiresCut), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Emeralds Mined : ' + IntToStr(ReportVars.EmeraldsMined), 44) + ']');
- WriteLn(PadR('[ Emeralds Cut : ' + IntToStr(ReportVars.EmeraldsCut), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Rubies Mined : ' + IntToStr(ReportVars.RubiesMined), 44) + ']');
- WriteLn(PadR('[ Rubies Cut : ' + IntToStr(ReportVars.RubiesCut), 44) + ']');
- WriteLn('[-------------------------------------------]');
- WriteLn(PadR('[ Diamonds Mined : ' + IntToStr(ReportVars.DiamondsMined), 44) + ']');
- WriteLn(PadR('[ Diamonds Cut : ' + IntToStr(ReportVars.DiamondsCut), 44) + ']');
- WriteLn('[ ]');
- WriteLn('[-------------------------------------------]');
- WriteLn('[/REPORT]');
- WriteLn('');
- WriteLn('');
- WriteLn('');
- WriteLn('-[DEBUG]||[ENDING]- ***Report***');
- end;
- procedure MainLoop();
- var
- i {$IFDEF SMART}, a {$ENDIF} : Integer;
- begin
- SetupScript();
- SetupPlayer();
- SetupGems();
- AddOnTerminate('Report');
- for i := 1 to Players[CurrentPlayer].Integers[0] do
- begin
- WriteLn('-[DEBUG]||[STARTING]- Load ' + IntToStr(i) + ' out of ' + IntToStr(Players[CurrentPlayer].Integers[0]));
- MineRock();
- CutGems();
- DropGems();
- WriteLn('-[DEBUG]||[ENDING]- Load ' + IntToStr(i));
- Inc(ReportVars.LoadsDone);
- Report();
- {$IFDEF SMART}
- SMART_ClearCanvas();
- for a := (Integer(Players[CurrentPlayer].Booleans[0]) + 1) to 28 do
- SMART_DrawBoxEx(False, InvBox(a), clYellow);
- {$ENDIF}
- end;
- end;
- begin
- MainLoop();
- end.
Add Comment
Please, Sign In to add comment