Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Pizbuyer;
- {$DEFINE SMART8}
- {$I SRL-OSR/SRL.Simba}
- {$I SRL-OSR/SRL/misc/al_functions.simba}
- {$I SRL-OSR/SRL/core/antirandoms/C_AntiRandoms.simba}
- {$I SRL-OSR/SRL/Reflection/Reflection.simba}
- var
- myloc: tpoint;
- HPxp, AttExp, DefExp, StrExp, cx, cy: integer;
- {made by samerdl}
- procedure playerSetup;
- begin
- HowManyPlayers := 1;
- NumberOfPlayers(HowManyPlayers);
- CurrentPlayer := 0;
- Players[0].Name := '~@~!.com';
- Players[0].Pass := '~';
- Players[0].Nick := '~';
- Players[0].Active := True;
- end;
- procedure graboriginalexp;
- begin
- HPxp := R_GetSkillExp(SKILL_HP);
- AttExp := R_GetSkillExp(SKILL_ATTACK);
- DefExp := R_GetSkillExp(SKILL_DEFENCE);
- StrExp := R_GetSkillExp(SKILL_STRENGTH);
- end;
- procedure ProgressReport;
- var
- DefGain, StrGain, AttGain, HpGain, FHP, FAtt, FDef, FSTr: integer;
- begin
- ClearDebug;
- Fhp := R_GetSkillExp(SKILL_HP);
- FAtt := R_GetSkillExp(SKILL_ATTACK);
- Fdef := R_GetSkillExp(SKILL_DEFENCE);
- FStr := R_GetSkillExp(SKILL_STRENGTH);
- HpGain := ((Fhp) - (hpxp));
- AttGain := ((FAtt) - (Attexp));
- DefGain := ((FDef) - (Defexp));
- StrGain := ((Fstr) - (strexp));
- WriteLn('* FHobs');
- WriteLn('* Runtime: ' + TimeRunning);
- Writeln('*');
- writeln('* Hp Exp Gained: ' + IntToStr(Hpgain));
- Writeln('* Att Exp Gained: ' + IntToStr(AttGain));
- Writeln('* Def Exp Gained: ' + IntToStr(DefGain));
- Writeln('* STr Exp Gained: ' + IntToStr(StrGain));
- end;
- procedure findAllRandoms;
- begin
- R_FindNormalRandoms findNormalRandoms;
- FindNonInventoryRandoms;
- end;
- procedure WaitShortClick;
- begin
- case random(600) of
- 1..450: Wait(RandomRange(100, 150));
- 451..570: Wait(RandomRange(150, 200));
- 571..590: Wait(RandomRange(200, 250));
- 591..600: Wait(RandomRange(250, 400));
- end;
- end;
- procedure Keyboards;
- begin
- case random(5) of
- 0..2:
- begin
- KeyDown(37);
- WaitShortClick KeyUp(37);
- WaitShortClick KeyDown(40);
- WaitShortClick KeyUp(40);
- end;
- 3..4:
- begin
- KeyDown(39);
- WaitShortClick KeyUp(39);
- WaitShortClick KeyDown(38);
- WaitShortClick KeyUp(38);
- end;
- 5:
- begin
- KeyDown(38);
- WaitShortClick KeyUp(38);
- WaitShortClick KeyDown(39);
- WaitShortClick KeyUp(39);
- end;
- end;
- end;
- function HoverNearbyNpc: boolean;
- var
- I: Tpointarray;
- P: Integer;
- begin
- I := GetMiniMapDots('npc');
- if (length(I) > 6) then
- begin
- SortTPAFrom(i, Point(MMCX, MMCY));
- P := random(length(I)) Mmouse(I[0].x, I[0].y, 3, 3);
- result := true;
- end;
- end;
- procedure Antiban;
- begin
- case random(140) of
- 0..2: hoverskill(skill_hitpoints, false);
- 3..7.: HoverSkill(skill_strength, False);
- 12..15: hoverskill(skill_attack, false);
- 16..19: HoverOnlineFriend;
- 20: BoredHuman;
- 30: MMouseOffClient('top');
- 40: MMouseOffClient('left');
- 50: MMouseOffClient('right');
- 60: MMouseOffClient('bottom');
- 70: SmallRandomMouse;
- 80: RandomAngle(1);
- 90: RandomAngle(2);
- 100: PickUpMouse;
- 110: CompassMovement(10, 70, true);
- 120: HoverNearbyNpc;
- 130: Keyboards;
- 140: writeln('hi');
- end;
- end;
- procedure SecondAntiban2;
- begin
- case random(20) of
- 1: PickUpMouse;
- 2: BoredHuman;
- 3: MMouseOffClient('left');
- 4: MMouseOffClient('right');
- 5: MMouseOffClient('bottom');
- 6: SmallRandomMouse;
- 7: boredhuman;
- 8: SmallRandomMouse;
- 10: keyboards;
- end;
- end;
- function OnCanoeScreen: boolean;
- var
- Monster: TpointArray;
- TmpCts: Integer;
- begin
- tmpcts := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(1.86, 0.72);
- result := FindColorsTolerance(Monster, 5263430, 275, 106, 400, 205, 3);
- ColorToleranceSpeed(tmpcts);
- SetColorSpeed2Modifiers(0.2, 0.2);
- end;
- procedure MMouseRandom(x, y: integer);
- var
- Cx, Cy: Integer;
- begin
- GetMousePos(Cx, Cy);
- AL_SetMouseSpeed(20);
- case Random(5) of
- 0: AL_BrakeWindMouse(Cx, Cy, x, y, 15 + Random(10), 5 + Random(15), 5, 10, 5, True);
- 1: AL_HumanWindMouse(Cx, Cy, x, y, 15 + Random(10), 5 + Random(15), 5, 10, 5);
- 2: AL_AccurateMMouse(IntToPoint(x, y), 2, 2);
- 3: AL_HumanMMouse(IntToPoint(x, y), 2, 2);
- 4: AL_ShiftWindMouse(Cx, Cy, x, y, 15 + Random(10), 5 + Random(15), 5, 10, 20, 5);
- 5: AL_MissMouse(IntToPoint(x, y), 2, 2);
- end;
- end;
- procedure WaitHumanClick3;
- begin
- case random(600) of
- 1..450: Wait(RandomRange(3000, 5000));
- 451..570: Wait(RandomRange(5000, 5500));
- 571..590: Wait(RandomRange(6000, 6500));
- 591..600: Wait(RandomRange(7000, 7500));
- end;
- end;
- procedure DebugPosition;
- begin
- repeat
- wait(400);
- Myloc := R_GetTileGlobal;
- writeln(Myloc);
- until (false);
- end;
- function GetGreenUptext: string;
- var
- WhiteT, BlueT, YellowT, OrangeT, GreenT, FoundText: string;
- begin
- WhiteT := GetTextAtExWrap(8, 8, 300, 21, 0, 5, 1, 14541281, 55, 'UpChars07');
- BlueT := GetTextAtExWrap(35, 8, 300, 21, 0, 5, 1, 13423640, 65, 'UpChars07');
- YellowT := GetTextAtExWrap(35, 8, 300, 21, 0, 5, 1, 1235160, 40, 'UpChars07');
- OrangeT := GetTextAtExWrap(35, 8, 300, 21, 0, 5, 1, 4687583, 53, 'UpChars07');
- GreenT := GetTextAtExWrap(8, 8, 300, 21, 0, 5, 1, 120577, 65, 'UpChars07');
- FoundText := WhiteT + ' ' + BlueT + YellowT + OrangeT + GreenT;
- FoundText := ReplaceWrap(FoundText, '.', '', [rfReplaceAll]);
- FoundText := ReplaceWrap(FoundText, '/', '', [rfReplaceAll]);
- FoundText := ReplaceWrap(FoundText, '\', '', [rfReplaceAll]);
- FoundText := ReplaceWrap(FoundText, ',', '', [rfReplaceAll]);
- FoundText := ReplaceWrap(FoundText, '*', '', [rfReplaceAll]);
- FoundText := ReplaceWrap(FoundText, '^', '', [rfReplaceAll]);
- FoundText := ReplaceWrap(FoundText, '"', '', [rfReplaceAll]);
- Result := FoundText;
- end;
- function IsUpTextMultiCustom2(Text: TStringArray): Boolean;
- var
- TheText: string;
- i, n: Integer;
- begin
- TheText := GetGreenUptext;
- n := High(Text);
- for i := 0 to n do
- if (Pos(Text[i], TheText) > 0) then
- begin
- Result := True;
- Exit;
- end;
- end;
- function WaitUpTextMulti2(S: TStringArray; Time: Integer): Boolean;
- var
- T: Integer;
- begin
- Result := false;
- T := GetSystemTime + Time;
- while (GetSystemTime < T) do
- begin
- if (IsUpTextMultiCustom2(S)) then
- begin
- Result := True;
- Exit;
- end;
- Wait(20 + Random(20));
- end;
- end;
- function FindObjExX(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray; Tol, CTS: integer; Hue, Sat: Extended; Step, xs, ys, xe, ye: Integer): Boolean;
- var
- MidX, MidY, i, j, k, x, y, width, height, HalfWidth, HalfHeight: Integer;
- ColorFound: Boolean;
- SearchBoxes: array of array of TBox;
- p: TPointArray;
- begin
- if (not (loggedin)) then
- exit;
- if R_IsAnimating then
- exit;
- Result := False;
- for i := 0 to (GetArrayLength(Color) - 1) do
- begin
- ColorToleranceSpeed(CTS);
- SetColorSpeed2Modifiers(Hue, sat);
- if (FindColorSpiralTolerance(cx, cy, Color[i], xs, ys, xe, ye, Tol)) then
- begin
- ColorToleranceSpeed(1);
- SetColorSpeed2Modifiers(0.2, 0.2);
- ColorFound := True;
- Break;
- end;
- end;
- ColorToleranceSpeed(1);
- SetColorSpeed2Modifiers(0.2, 0.2);
- if R_IsAnimating then
- exit;
- if not (ColorFound) then
- Exit;
- MidX := Round((xe - xs) / 2);
- MidY := Round((ye - ys) / 2);
- Width := Ceil(abs(xe - xs) / 2 / Step - 0.5) * 2 + 1;
- Height := Ceil(abs(ye - ys) / 2 / Step - 0.5) * 2 + 1;
- SetLength(SearchBoxes, Width);
- HalfWidth := Floor(Width / 2);
- HalfHeight := Floor(Height / 2) for x := - 1 * HalfWidth to HalfWidth do
- begin
- SetLength(SearchBoxes[x + HalfWidth], Height);
- for y := - 1 * HalfHeight to HalfHeight do
- SearchBoxes[x + HalfWidth][y + HalfHeight] := IntToBox(Max(xs, xs + Round(MidX + ((x - 0.5) * Step))), Max(ys, ys + Round(MidY + ((y - 0.5) * Step))), Min(xe, xs + Round(MidX + ((x + 0.5) * Step))), Min(ye, ys + Round(MidY + ((y + 0.5) * Step))));
- end;
- p := TPAFromBox(IntToBox(0, 0, Width - 1, Height - 1));
- SortTPAFrom(p, Point(floor(Width / 2), floor(Height / 2)));
- for k := 0 to High(Color) do
- for j := 0 to High(p) do
- begin
- ColorToleranceSpeed(CTS);
- SetColorSpeed2Modifiers(Hue, sat);
- if (FindColorTolerance(cx, cy, Color[k], SearchBoxes[p[j].x][p[j].y].x1, SearchBoxes[p[j].x][p[j].y].y1, SearchBoxes[p[j].x][p[j].y].x2, SearchBoxes[p[j].x][p[j].y].y2, Tol)) then
- begin
- ColorToleranceSpeed(1);
- SetColorSpeed2Modifiers(0.2, 0.2);
- if R_IsAnimating then
- exit;
- MMouse(cx, cy, 3, 3);
- wait(randomrange(200, 300));
- if (WaitUptextMulti2(Text, 300)) then
- begin
- ColorToleranceSpeed(1);
- SetColorSpeed2Modifiers(0.2, 0.2);
- GetMousePos(cx, cy);
- Result := True;
- Exit;
- end;
- end;
- ColorToleranceSpeed(1);
- SetColorSpeed2Modifiers(0.2, 0.2);
- end;
- ColorToleranceSpeed(1);
- SetColorSpeed2Modifiers(0.2, 0.2);
- end;
- procedure WaitHumanClick;
- begin
- case random(600) of
- 1..450: Wait(RandomRange(400, 600));
- 451..570: Wait(RandomRange(400, 600));
- 571..590: Wait(RandomRange(600, 800));
- 591..600: Wait(RandomRange(800, 1000));
- end;
- end;
- procedure WaitHumanClick2;
- begin
- case random(600) of
- 1..450: Wait(RandomRange(1000, 1500));
- 451..570: Wait(RandomRange(1500, 2000));
- 571..590: Wait(RandomRange(2000, 2500));
- 591..600: Wait(RandomRange(2500, 3000));
- end;
- end;
- function FindObjectFar(Color: TintegerArray; Tol, CTS: integer; hMoD, sMoD: extended; Split, Sort: integer; Uptext: array of string; WaitUptextWait, WaitUptextRandom: Integer; x, y, xs, ys: integer): boolean;
- var
- III, i, tmpcts: integer;
- TPA: tpointarray;
- TPAA: T2DPointArray;
- begin
- if (not (loggedin)) then
- exit;
- tmpcts := GetColorToleranceSpeed;
- ColorToleranceSpeed(CTS);
- SetColorSpeed2Modifiers(hMoD, SMoD);
- FindColorsSpiralTolerance(MSCX, MSCY, TPA, color[III], x, y, xs, ys, Tol) ColorToleranceSpeed(tmpCTS);
- SetColorSpeed2Modifiers(0.2, 0.2);
- SplitTPAWrap(TPA, Split, TPAA);
- SortATPAFromSize(TPAA, Sort, false);
- for I := 0 to High(TPAA) do
- begin
- MiddleTPAEx(TPAA[i], X, Y);
- MMouse(x, y, RandomRange( - 3, 3), RandomRange( - 3, 3));
- if WaitUpTextMulti2(uptext, WaitUptextWait + random(WaitUptextRandom)) then
- begin
- Result := True;
- GetMousePos(X, Y);
- break;
- end;
- break;
- end;
- end;
- function OpenWScreen: Boolean;
- begin
- Result := False;
- if WorldScreen then
- exit;
- if Loggedin then
- Exit;
- if not WorldScreen then
- begin
- Mmouse(54, 475, 1, 1);
- WaitHumanClick;
- ClickMouse2(Mouse_Left);
- waithumanclick;
- Result := True;
- end;
- end;
- function whitecolor: boolean;
- var
- Monster: TpointArray;
- TmpCts: Integer;
- begin
- tmpcts := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(0.22, 1.69);
- result := FindColorsTolerance(Monster, 9163999, 192, 67, 583, 469, 4);
- ColorToleranceSpeed(tmpcts);
- SetColorSpeed2Modifiers(0.2, 0.2);
- end;
- procedure loginloop;
- begin
- case random(10) of
- 0..6: wait(randomrange(5000, 60000));
- 7..10: writeln('not waiting in lobby');
- end;
- case random(10) of
- 0..3:
- begin
- OpenWorldScreen;
- repeat
- if whitecolor then
- break;
- if whitecolor then
- writeln('yeaya');
- if not whitecolor then
- writeln('yea22ya');
- case random(10) of
- 0..2: mouse(randomrange(397, 554), randomrange(78, 394), 1, 1, mouse_move);
- 3..4: mouse(randomrange(298, 462), randomrange(200, 392), 1, 1, mouse_move);
- 5..6: mouse(randomrange(205, 555), randomrange(80, 154), 1, 1, mouse_move);
- 7..10: mouse(randomrange(211, 555), randomrange(246, 367), 1, 1, mouse_move);
- end;
- until (whitecolor) if whitecolor then
- begin
- clickmouse2(mouse_left);
- waithumanclick;
- currentworld;
- waithumanclick;
- if (CurrentWorldLS = 365) then
- exit;
- waithumanclick;
- loginplayer;
- exit;
- end;
- end;
- 4..10: loginplayer;
- end;
- end;
- function InLumbridge: boolean;
- var
- tpa: tpointarray;
- begin
- result := R_inPolygon([Point(3216, 3228), Point(3226, 3228), Point(3226, 3212), Point(3217, 3209)]);
- end;
- function AtDruids: boolean;
- var
- tpa: tpointarray;
- begin
- result := R_inPolygon([Point(3218, 3610), Point(3260, 3610), Point(3260, 3637), Point(3218, 3637)]);
- end;
- function lost: boolean;
- begin
- if not loggedin then
- exit;
- result := (not InLumbridge) and (not atdruids);
- end;
- procedure hometele;
- var
- tp: integer;
- begin
- waithumanclick;
- tp := R_DistanceFromTile(point(3087, 3763));
- writeln('Our distance from Midpoint hobs is: ' + IntToStr(tp));
- if (tp > 50) then
- begin
- gametab(tab_magic);
- waithumanclick;
- mouse(randomrange(565, 575), randomrange(235, 245), randomrange( - 2, 2), randomrange( - 2, 2), mouse_left);
- wait(randomrange(15000, 25000));
- if lost then
- begin
- writeln('we got lost!');
- terminatescript;
- end;
- end
- else
- begin
- r_blindwalk(Point(3087, 3763));
- end;
- end;
- function Ispraying: Boolean;
- var
- overhead: tpointarray;
- begin
- if (not (loggedin)) then
- exit;
- result := (FindColorsTolerance(Overhead, 63226, MSX1, MSY1, MSX2, MSY2, 10) or FindColorsTolerance(Overhead, 621348, MSX1, MSY1, MSX2, MSY2, 10))
- end;
- procedure RunToTheNPC;
- var
- TPA, TPA2, TPA3, TPA2B: TpointArray;
- I, x, y, CTS: Integer;
- P1, P2: tpoint;
- tempatpa, ATPA: T2DPointArray;
- begin
- if (not (loggedin)) then
- exit;
- if atdruids then
- begin
- FindColorsTolerance(TPA, 16777215, MMX1, MMY1, MMX2, MMY2, 7) cts := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(0.00, 0.12);
- FindColorsTolerance(TPA2, 126702, MMX1, MMY1, MMX2, MMY2, 7) ColorToleranceSpeed(CTS);
- SetColorSpeed2Modifiers(0.02, 0.2);
- if (Length(TPA) < 0) and (Length(TPA2) < 0) then
- exit;
- FilterPointsPie(TPA2, 0, 360, 45, 72, MMCX, MMCY) ceil((Length(TPA2) * 100) / ((Pi * (25 * 25)) * ((360 - 5) / 360.0) - ((Pi * (5 * 5)) * ((360 - 5) / 360.0))));
- TPA2B := TPA2;
- TPAtoATPAExWrap(tpa2, 5, 5, tempatpa);
- if (Length(TempATPA) > 1) then
- begin
- P1 := MiddleTPA(TPA);
- P2 := MiddleTPA(TPA2B);
- TPA3 := TPABetweenPoints(P2, P1, 1, 0);
- ATPA := FindGapsTPA(TPA3, 20);
- MiddleTPAEx(ATPA[i], X, Y);
- SortATPAFromSize(ATPA, 1, true);
- if (length(ATPA[i]) > 0) then
- begin
- mouse(x, y, randomrange( - 5, 5), randomrange( - 5, 5), mouse_left);
- fflag(1);
- end;
- end;
- end;
- end;
- procedure antibans;
- begin
- case random(1000) of
- 0..490:
- begin
- end;
- 491..1000:
- begin
- case random(1000) of
- 00..990:
- begin
- end;
- 890..950: keyboards;
- 951..1000: antiban;
- end;
- end;
- end;
- end;
- function lowprayer: boolean;
- begin
- if (R_GetSkillLevel(skill_prayer) <= (randomrange(7, 15))) then
- begin
- result := true;
- end;
- end;
- procedure recharge;
- var
- tp: integer;
- begin
- waithumanclick;
- tp := R_DistanceFromTile(point(3087, 3763));
- writeln('Our distance from Midpoint hobs is: ' + IntToStr(tp));
- if (tp > 5) then
- begin
- R_BlindWalk(Point(3239, 3609));
- end
- else
- begin
- if FindObjectFar([558228], 19, 2, 0.04, 0.59, 20, 20, ['Pray', 'ray'], 150, 300, msx1, msy1, msx2, msy2) then
- clickmouse2(mouse_left);
- waithumanclick2;
- if (R_GetSkillLevel(skill_prayer) >= (randomrange(45, 50))) then
- begin
- r_blindwalk(point(3237, 3618));
- end;
- end;
- end;
- procedure idle;
- var
- breaktimer, breaktimer2: integer;
- mt, tt, t: integer;
- begin
- if not loggedin then
- exit;
- if not atdruids then
- exit;
- findAllRandoms;
- BreakTimer := Randomrange(5000, 10000);
- BreakTimer2 := Randomrange(10000, 20000);
- if lowprayer then
- exit;
- if not ispraying then
- exit;
- if not loggedin then
- exit;
- if InLumbridge then
- exit;
- if not atdruids then
- exit;
- marktime(t);
- antibans;
- if not R_IsAnimating then
- begin
- progressReport;
- repeat
- waithumanclick;
- if lowprayer then
- exit;
- if not ispraying then
- exit;
- if InLumbridge then
- exit;
- if not loggedin then
- exit;
- if not atdruids then
- exit;
- if R_IsAnimating then
- exit;
- if srl_infight then
- exit;
- findAllRandoms;
- until (TimeFromMark(t) >= BreakTimer);
- if (TimeFromMark(t) >= BreakTimer) then
- begin
- marktime(tt);
- writeln('entered time mark mode1');
- r_blindwalk(Point(3238, 3618));
- case random(10) of
- 0..4:
- begin
- waithumanclick2;
- end;
- 5..10: writeln('nothingx3');
- end;
- case random(20) of
- 0..8: Antiban;
- 9..20: writeln('not doing antiban');
- end;
- if not loggedin then
- exit;
- case random(10) of
- 1..8: writeln('doing nothing');
- 9: setangle(0);
- 10: setangle(1);
- end;
- if not loggedin then
- exit;
- case random(10) of
- 1..6: writeln('doing nothingx2');
- 7: MakeCompass('n');
- 8: MakeCompass('s');
- 9: MakeCompass('w');
- 10: MakeCompass('e');
- end;
- if lowprayer then
- exit;
- if not ispraying then
- exit;
- if InLumbridge then
- exit;
- if not loggedin then
- exit;
- case random(10) of
- 0..3: writeln('not running to npc');
- 4..10: RunToTheNPC;
- end;
- repeat
- waithumanclick;
- if lowprayer then
- exit;
- if not ispraying then
- exit;
- if InLumbridge then
- exit;
- if not loggedin then
- exit;
- if not atdruids then
- exit;
- if R_IsAnimating then
- exit;
- if srl_infight then
- exit;
- findAllRandoms;
- until (TimeFromMark(tt) >= BreakTimer2);
- if (TimeFromMark(tt) >= BreakTimer2) then
- begin
- writeln('entered fixing mode');
- case random(10) of
- 1..4: R_blindwalk(Point(3230, 3649));
- 5..6: R_blindwalk(Point(3234, 3651));
- 7..8: R_blindwalk(Point(3229, 3647));
- 9..10: R_blindwalk(Point(3231, 3653));
- end;
- if not ispraying then
- exit;
- if InLumbridge then
- exit;
- if not loggedin then
- exit;
- r_blindwalk(Point(3238, 3618));
- end;
- end;
- end;
- end;
- procedure praymage;
- begin
- gametab(tab_prayer);
- waithumanclick;
- mouse(randomrange(590, 620), randomrange(330, 350), 3, 3, mouse_left);
- end;
- procedure fightloop;
- begin
- if (not R_IsAnimating) and (not lowprayer) and (ispraying) then
- idle;
- if Lowprayer and ispraying then
- recharge;
- if (not ispraying) then
- praymage;
- end;
- procedure mainloop;
- begin
- findAllRandoms;
- if atdruids then
- fightloop;
- if not atdruids then
- hometele;
- end;
- begin
- playerSetup;
- setupsrl;
- SetupReflection;
- SRL_CombatRandoms := False;
- Reincarnate := true;
- R_Reincarnate := true;
- AddOnTerminate('progressReport');
- if loggedin then
- graboriginalexp;
- repeat
- waithumanclick;
- if not loggedin then
- loginloop;
- wait(400);
- if loggedin then
- mainloop;
- until (false);
- end.
Advertisement
Add Comment
Please, Sign In to add comment