Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal


  • Content count

  • Joined

  • Last visited

Community Reputation

10 Good

About shadowrecon

  • Rank
    GMRL Developer
  • Birthday 01/19/1991

Personal Information

  • Location
    Killeen, Tx
  • Interests
    Electronics, Programing, Fishing
  • Occupation
    Deff not a English Professor =P
  • Studies
    EE Major

Contact Information

  • Skype
  1. Happy Birthday to Freddy

    Happy birthday bro! i turn 25 in January!
  2. Is it possible to calculate an angle and....

    TPoints cannot be anything other than integers because each pixel has a whole number and there are not half pixels.
  3. More than one way to end script.

    type "TerminateScript;" this will stop/end the script.
  4. Bitmap Help Needed...

    bitmaps are not good detection methods in runescare as the colors change everytime it is loaded better methods are to use colors and tolerances.
  5. <p><p><p>Happy Birthday bro, hope it is a good one!</p></p></p>

  6. New to Runescape Botting

    dont forget to install the includes from the include manager under the file tab as they make creating scripts easier and most scripts require a include to be installed if not all of them. So dig around the includes as you learn and this will help you!. welcome!
  7. [GMRL] Additions (Animation, DTM, DebugBMP, GMRL_Plugin)

    Thanks, Ive been out of school for a month with nothing to do. lol. My girl-friend is flying in sunday so im going to be away for a from any actual progress so i wanted to make sure i had everything in working condition, lately ive been so indecisive on the libraries structure but i believe i have got it to where i want and if any changes need to be made it should be relatively easy from here on out. =)
  8. [scar] {~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ GMRL - Game Macro Resource Lib. Core Animation Routines -------------------------------------------------------------------------------- * function GMRL_PixelShiftMulti(B: TBoxArray; Skip: TPointArray; T: Integer): TIntArray; By: ShadowRecon, marpis. * function GMRL_PixelShift(B: TBox; Time: Integer; Skip: TPointArray): Integer; By: ShadowRecon, marpis. ' * function GMRL_AveragePixelShift(B: TBox; waitPerLoop, maxTime: integer; Skip: TPointArray): integer; By: ShadowRecon, Coh3n. * function GMRL_AnimatingMulti(B: TBoxArray; Time, MinCount: Integer; Skip: TPointArray): TBooleanArray; By: ShadowRecon, marpis. * function GMRL_Animating(B: TBox; Time, MinCount: Integer): Boolean; By: ShadowRecon, marpis. ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~} [/scar] [scar] {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Official GMRL Include Core DTM Routines -------------------------------------------------------------------------------- * function ClickDTMRotatedInB(DTM: Integer; B: TBox; Sangle, Eangle, angleStep: Extended; btn: TMouseButton): Boolean; By ShadowRecon. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} [/scar] [scar] {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Official GMRL Include Core BMP Routines -------------------------------------------------------------------------------- * procedure GMRL_DebugTPA(BMP: TSCARBitmap; Color: Integer; TPA: TPointArray); By ShadowRecon. * procedure GMRL_DebugColorsEx(BMP: TSCARBitmap; Colors: TIntArray; Tol, Xs, Ys, Xe, Ye: Integer); By ShadowRecon. * procedure GMRL_DebugColors(BMP: TSCARBitmap; Colors: TIntArray; Tol: Integer); By ShadowRecon. * procedure GMRL_DebugBox(BMP: TSCARbitmap; Box: TBox); By ShadowRecon. * function GMRL_DebugColorBoxEx(BMP: TSCARBitmap; Colors: TIntArray; Tol, MinCount, MaxDist, Xs, Ys, Xe, Ye: Integer): T2DPointArray; By ShadowRecon. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} [/scar] [scar] {~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ GMRL - Game Macro Resource Lib. Core GMRL Plugin Routines -------------------------------------------------------------------------------- *+Credits: ShadowRecon ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~} {$L GMRL_Plugin.dll} { *~~~~~~~~~~~~~~~~~~~~~~ Bitmap Functions ~~~~~~~~~~~~~~~~~~~~~~* * function GMRL_GetBitmapRGB(Const BMP:Integer): T2DRGBArray; Def: Gets all of the RGB values of a bitmap * function GMRL_CalculatePixelShiftSkipTol(Const BMP1, BMP2, Tol: Integer; Skip: TPointArray): Integer; Def: Calculates pixelshift skipping the points in the skip TPA, with the feature of using tolerance of then pixels to determine if a pixel shift has happened. * function GMRL_CalculatePixelShiftSkip(Const BMP1, BMP2: Integer; Skip: TPointArray): Integer; Def: Calculates pixelshift skipping the points in the skip TPA. The Skip TPA origin is 0,0 so dont use client points use points from the bitmap. * function GMRL_CalculatePixelShift(Const BMP1,BMP2: Integer): Integer; Def: Calculates pixel shift from 2 bitmaps * function GMRL_CalculatePixelShiftTol(Const BMP1, BMP2, Tol: Integer): Integer; Def: Calculates pixel shift with tolerance * function GMRL_CalculatePixelShiftTPA(Const BMP1,BMP2: Integer; Points: TPointArray): Integer; Def: Calculates pixel shift only checking the points within TPA, points are relative to 0,0 so dont use client points. * procedure GMRL_SetBitmapBrightness(Const BMP, Bright: Integer); Def: Changes the bitmaps brightness * procedure GMRL_SetBitmapContrast(Const BMP: Integer; Contrast: Extended); Def: Changes bitmaps Contrast * function GMRL_OverlayBitmaps(Const Foreground, Background: Integer; percent: Extended): Integer; Def: Overlays foreground on-top of background with a percent of the background showing. * function GMRL_CreateBitmapOpacity(Const BMP, BGColor: Integer; percent: Extended): Integer; Def: Creates and bitmap with a percent of the BGcolor showing through. * function GMRL_CreateTPAFromBMP(Const BMP, SkipColor, SX, SY: Integer): TPointArray; Def: Creates a TPA of all the points on the bitmap that do not contain the skip color. SX,SY are so you can move the origin of the bitmap, so the points match up with the clients points, or just set them to 0,0 and all points will be relative to the origin 0,0. * function GMRL_BitmapFromJPEG(Path: AnsiString): Integer; Def: Returns a normal bitmap from a JPEG. * function GMRL_BitmapFromPNG(Path: AnsiString): Integer; Def: Returns a normal bitmap from a png file. * function GMRL_BitmapToPNG(BMP: Integer; Path: AnsiString); Def: Turns a bitmap into a PNG file and saves it to the path. *~~~~~~~~~~~~~~~~~~~~~~ TPA Functions ~~~~~~~~~~~~~~~~~~~~~~* * procedure GMRL_OffsetATPA(var ATPA : T2DPointArray; const Offset : TPoint); Def: Offsets an entire ATPA by the Offset point. * procedure GMRL_OffsetTPA(var TPA : TPointArray; const Offset : TPoint); Def: OffSets an entire TPA by the offset point. * procedure GMRL_SortTPAByX(var a: TPointArray; const LowToHi: Boolean); Def: Sorts a TPA by the X value, either low first of high first. * procedure GMRL_SortTPAByY(var a: TPointArray; const LowToHi: Boolean); Def: Sorts a TPA by the Y value, either low first of high first. * function GMRL_FindTPARows(a: TPointArray): T2DPointArray; Def: Finds rows of points and groups them into seprate TPA's in an ATPA. * function GMRL_FindTPAColumns(a: TPointArray): T2DPointArray; Def: Finds columns of points and groups them into seprate TPA's in an ATPA. * procedure GMRL_SortTPAFrom(var a: TPointArray; const From: TPoint); Def: Sorts TPA from the "From" point. * procedure GMRL_SortATPAFromFirstPoint(var a: T2DPointArray; const From: TPoint); Def: Sorts ATPA from the "From" Point. * procedure GMRL_SortATPAFromMidPoint(var a: T2DPointArray; const From: TPoint); Def: Sorts ATPA from the "From" Point. * function GMRL_MiddleTPAEx(const TPA: TPointArray; var x, y: Integer): Boolean; Def: Finds the middle of a TPA, returns the points in x,y. * procedure GMRL_FilterPointsPie(var Points: TPointArray; const SD, ED, MinR, MaxR: Extended; Mx, My: Integer); Def: Filters points not in the circle defined. * procedure GMRL_FilterPointsDist(var Points: TPointArray; const MinDist,MaxDist: Extended; Mx, My: Integer); Def: Filters points not in the circle defined using distance. * procedure GMRL_FilterPointsLine(var Points: TPointArray; Radial: Extended; Radius, MX, MY: Integer); Def: Filters points into lines. * procedure GMRL_FilterTPADist(var TPA: TPointArray; maxDist: integer); Def: Filters outpoints that are out side of the max distance. * function GMRL_RemoveDistTPointArray(x, y, dist: Integer;const ThePoints: TPointArray; RemoveHigher: Boolean): TPointArray; Def: Removes points that are either to close or to far away determined by dist. * function GMRL_GetATPABounds(const ATPA: T2DPointArray): TBox; Def: Gets the bounds of an ATPA. * function GMRL_GetTPABounds(const TPA: TPointArray): TBox; Def: Gets the bound of an TPA. * function GMRL_FindTPAinTPA(SearchTPA: TPointArray; const TotalTPA: TPointArray; var Matches: TPointArray): Boolean; Def: Finds TPA in a TPA. * function GMRL_TPAFromBox(const Box : TBox) : TPointArray; Def: Makes TPA from a Box. * function GMRL_TPAFromEllipse(const CX, CY, XRadius, YRadius : Integer): TPointArray; Def: Makes TPA from Ellipse. * function GMRL_TPAFromCircle(const CX, CY, Radius: Integer): TPointArray; Def: Makes TPA from Circle. * function GMRL_FindTPAEdges(const p: TPointArray): TPointArray; Def: Returns all the points in the edges of a TPA. * function GMRL_ReturnPointsNotInTPA(Const TotalTPA: TPointArray; const Box: TBox): TPointArray; Def: Returns point not contained in the TPA with a box as reference. ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~} [/scar] Defines now available to activate different sections of GMRL for use: [scar] {$DEFINE OSI} // Includes OSI and makes more functions available if they use OSI {$DEFINE SMART} // Activates SMART can be used with or without OSI (RS2 or RS07) {$DEFINE RS07} // Activates all RS07 routines including routines for SPS {$DEFINE Randoms} // Activates all RS07 random routines, no working random solving routines atm, inprogress though. {$DEFINE RS2} // Activates all RS2 routines including routines for SPS {$DEFINE SPS} // Activates all SPS routines including routines for RS2 or RS07 {$DEFINE DEBUG} // Activates all debug routines {$I GMRL\GMRL.scar}// Includes the cores GMRL routines and other functions depending on DEFINES [/scar]
  9. [scar]{~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ GMRL - Game Macro Resource Lib. RS07 - Core NPC Routines -------------------------------------------------------------------------------- * function RS07_FindAllNPCMM: TPointArray; * function RS07_FindAllNPCMS: TPointArray; * function RS07_GetNearestNPC: TPoint; * function RS07_InteractNPCEx(NPCs, Options: TStringArray; XOffset, YOffset: Integer): Boolean; * function RS07_InteractNPC(NPC, Option: String): Boolean; * function RS07_FindNPCChatText(Text: String; Actions: ClickActions): Boolean; * function RS07_FindNpcTalkingTextEx(var P: TPoint; Text: String; Xs, Ys, Xe, Ye: Integer): boolean; * function RS07_FindNpcTalkingMS(var P: TPoint; Text: String): boolean; *+ Credits: ShadowRecon ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~}[/scar] [scar] {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Official SCAR Include Runescape 07 Chat Routines -------------------------------------------------------------------------------- * function ClickContinueEx(Click, Wait: Boolean): Boolean; * function ClickContinue(DoWait: Boolean): Boolean; * function DoConversation(resultText: string; clickResult: boolean): boolean; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} [/scar] [scar] {~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ GMRL - Game Macro Resource Lib. RS07 Finding Routines -------------------------------------------------------------------------------- * function RS07_FindMSObjectEx(Var P: TPoint; MinDist, MaxDist: Integer; Color: TIntArray; UpText, Options: TStrArray; UseOption: Boolean): Boolean; By: ShadowRecon. * function RS07_FindMSObject(Color: Integer; UpText, Option: String;): boolean; By: ShadowRecon. ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~} [/scar] [scar] {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Official GMRL Include Runescape 07 OCR Routines -------------------------------------------------------------------------------- * function FindTextEx(var cx, cy: Integer; txt: TStringArray; fonts: TIntArray; xs, ys, xe, ye: Integer): Boolean; By: ShadowRecon. * function FindTextP(var P: TPoint; txt: String; fonts: TIntArray; SB: TBox): Boolean; By: ShadowRecon. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} [/scar] [scar] {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Official GMRL Include Runescape 07 Map Routines -------------------------------------------------------------------------------- * function PercentColorMMEx(Color, Tol, StartRadial, EndRadial, StartRadius, EndRadius: Integer): integer; By: Richard, Nava2. * function PercentColorMM(Color, Tol: Integer): Integer; By: Richard. * function GMRL_GetBlackBackground: Integer; By: ZephyrsFury. * function PercentBlackMM: Integer; By: NaumanAkhlaQ. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} [/scar]
  10. help with auto fletcher

    @Jani [scar]procedure CutLogs2; begin if FindColor(X, Y, Log, 0, 0, 700, 700) then begin WriteLn(IntToStr(X) + ', ' + IntToStr(Y)); WriteLn(GetColor(X, Y)); MoveMouse(X, Y); ClickMouse(X, Y, mbright); end; end;[/scar]
  11. help with auto fletcher

    If using OSI, use the function ChooseOption(Option: String); [scar]if OptionBoxExists then if ChooseOption('Make X') then Writeln('Selected the option');[/scar] Also dont use MoveMouse use MMouse(); and Mouse() to click items not ClickMouse. These functions i suggested have variances which create emulate human clicking and movements better.
  12. SCAR Logo

    That pretty sweet man! I have never got a tattoo and you may have just gave me an idea!
  13. Halt_ifmissing_display_incluemanager

    Thanks, Ive been looking for a method for a while and slacky suggested hot-keys and i made this and it worked. So what i did in GMRL is put all the defines in the setup procedure and then call this function before defining OSI. I was surprised the solution was so simple!
  14. Finally a solution for missing includes for newbies who do not know how to install them. Simply place this right before you include a file in a script and type the name of the include like so 'OSI/' and it will HALT the script and show the includes manager if the include does not exist and show a message to install the script in the debug box! [sCAR] Procedure HALT_IFMISSING_DISPLAY_INCLUEMANAGER(INCLUDE: STRING); begin if (NOT DirectoryExists(IncludesPath + INCLUDE)) then begin VKeyDown(18); VKeyDown(CharToVKey('F')); VKeyDown(CharToVKey('I')); VKeyDown(13); VKeyUp(13); VKeyUp(CharToVKey('I')); VKeyUp(CharToVKey('F')); VKeyUp(18); ClearDebug; Writeln(''); Writeln('PLEASE SELECT '+INCLUDE+' AND INSTALL THE INCLUDE'); Writeln('TO USE THIS SCRIPT!'); end; end; [/sCAR] Example of USE in GMRL: [sCAR] {$IFDEF OSI} HALT_DISPLAY_IFMISSING_INCLUEMANAGER('OSI/'); {$I OSI\OSI.scar} {$ENDIF} [/sCAR] Credit to SLACKY for giving me this idea using hot keys!
  15. Note on OSI setup this procedure should not be broken down because it does nothing the user needs to understand because it is a core setup routine. OSI is meant to be a useful include and if people want to learn to understand the code it should be spelled out with ABC blocks thats what tutorials are for. Make a tutorial explaining each step, just because you dont understand or it looks messy its because you dont understand language syntax. Defines are placed wired. Microsoft didnt simplify there DLL files for people to understand them better but instead provided better documentation for how to use the function. If you understood the function there would be no need to use an include, it would be easier to write you own functions. OSI has many standards devoted to capturing errors and fixing them if it can and if not providing some sort of error. Note on RS2 setup: Why add more front end for the scripter. I dont want to have to add more procedures and functions which add time to the total compilation of the script which is what they do, it takes more time to process functions than it does to just have the function within the function that needs it, yes we are talking about processor ticks but still in a include that totals up to 10000+lines + the script that uses this the time adds up and over all slows down the proformance of the include. 2 distinct reasons a deffine if much better than a setup procedure. Also do you understand that defines are PRE PROCESSOR commands which means if the define isnt defined then the code is not included shortening the code? Does that make since? this is why they are used. Also if something remains unchanged and still works it means it was built well in the first place. If it isnt broke dont change it. That is the number one problem in america right now everyone wants to fix things that arnt broken which just cause mroe issues because these new solutions dont stand to the test of time. (Off topic i know.. lol) Anyways LordJashin im not trying to hinder you in your development but instead tell you rearranging and spiting functions up is not going to add to any performance increases everything you have mentioned would either A slow it down even more (Taking out the defines) or be B change nothing at all but the way something is commented. Also if Slacky has a useful function he can post in in the OSI suggestions, or create a include him self if he has enough functions to consider it an include, or better yet post it in the code been where people can find the functions easily. Dont forget OSI is Wanteds Baby, and he clearly lays our how he wants the comments and structure of the pascal langue to look in the OSI wiki. Tell me he has not thought out OSI and spent hours setting things up in a way he thought users would find functions easily. How would you like someone to jump in you include and tell you your commenting systems which have been thought out are shit or the way you layout your functions is shit just because you can understand them. Honestly i follow Wanteds coding very well with no problems. I have broken many of his functions down to understand them step by step and honesty it made me a better/ or i would like to think programmer. I also now use his methods of laying out the code and providing fail-safes even when someone else would think they were not needed. This is a good way to peruse things with coding. I am a Junior in college working toward a degree in Electronic Engineering i understand the concepts behind fail-safes. I am taking a computer programming class over algorithms next semester for fun and im excited! signed up for it today! Anyways I say screw the comments and lets make some functions that people need now, and not functions someone MAY use in the next 10 years. - - - Updated - - - Side not I hate the LEVEL 1 and LEVEL 2 folder BS! First time i saw it i was lost, and took a few mins to understand it. Defiantly not clear.