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


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About nemolorn

  • Rank

Personal Information

  • Interests
    Developing SCAR for use in R/N/S Kingdoms and Sec Fenia
  1. nemolorn


    So coming back after a long while and need help with finding/reading text. What I need to do is identify the line that is blue, then read that line(writeln) so It can be copied and paste into notepad Only one line will be that particular shade of blue at a time. What I've done is set the default x,y to a corner of the border(the grey bar). I believe the font is Arial, size 8. I can't find this function in the wiki, and don't quite understand all the settings of this function, least of which is which corner/pixel needs to be the "starting point" for this function to work properly. thanks. *Set your Browser as the Active client program New; var x,y,Font: Integer; begin Bmp := TSCARBitmap.Create('deNqLYGBi+IAKGBgIiCBz4WxkBoSNqYxUNcTbT' + 'owVeBSTB3A5DM1qXMGF1cF4vI8nHDC1Y3UGQbsgAAClLlHq') Findbitmap(x,y,bmp,0,0,1000,500) Movemouse(x,y+9) Font := LoadCharsFromFont2('Arial', 8, False, False, False, False); writeln(GetTextatex(x,y+39,10,Font,True,true,0,1,13395456,20,false,10)); end.
  2. It's Website based. Seems the Font set is "font-family: Helvetica,Arial,sans-serif" But the characters aren't spaced "normally", and seem to be at font size 6.5, so when I'm trying the read the characters, it's just giving me jibberish. I've written up most of a font include to read this, but I'm not getting the pixel spacing correct somewhere, so it's not coming through clearly. making some screenshots now I just added what I have, NKFields has the raw character bmp, as well as a mastersheet of most of the characters(still need to add a few symbols) and an image called Sample Field Text which I'm trying to read. NKFields.zip
  3. Anyone want to tackle a script to help generate font folders for custom fonts, based on a sequential sampling of letters and texts >_< *I.e. j11122233344455566677.....zzz
  4. didn't know registered now though. thanks.
  5. Think i may have hiccuped a bug. everytime I try and open the DTMEditor, my scar 3.35(RC) Dies a very horrible and painful crash and burn.
  6. When I upgraded to the 3.35 beta and started moving my scripts over, alot of functions stopped working, because they were removed I've gotten most replaced, I think the find client functions are the only ones still broken. one of those that were removed was the findwindowstitlepart and now I'm trying to find a way to use that same concept to locate different screens to make my script .35 compatible
  7. unfortunately, I don't have an answer, but will sneak to piggy back a question. I'm having trouble replacing my FindWindowtitlePart function and wondering and half expecting the solution to be along the same response >_>
  8. that works only so far to say that that is the new title of the client, which is USUALLY easy enough to check and predetermine. The problem is in checking when the page has finished loading. sometimes the site will take 5 seconds, sometimes it can take up to a minute or longer, depending on how many players are connected and which proxy I'm going through. as a player, waiting a minute doesn't bother me, because I intuitively know where to move and click before the website is finished, after it has finished loading the buttons and images I need to check for. But the script needs to wait until the clickable functions are loaded in their correct space, otherwise it returns false, or worse pushes the wrong button, especially since the only difference between some buttons are silver vs grey, and they could load in the same spot until the next one loads which could shift the position of the first one, unless it happens that when the page has finished loading, there is only one button, or perhaps no buttons. I'm currently running it with a about a minute delay between each page load so that my script can gimp through the pages, but I'm trying to have it learn when it only needs to wait 5 seconds because all the elements on the page are where they need to be, or 2+ minutes.
  9. My proxy engine didn't capture appa correctly for me to use it. Finding the browser isn't the problem, it's finding when the website has fully loaded to perform the bitmap functions.
  10. I've been trying to find a way to write a stand alone script that would: [scar]function isbrowserloaded(browser:String;):boolean; begin Recognize that the active client is a browser(non-essential, Findtitlepart(browser) works well enough) Check if the browser is currently loading a webpage repeat wait(500) until scar recognizes that the webpage has finished loading all elements of the page = True; result := true; end;[/scar] While googling, I found a function (browser.wait_until) for javascript and VB that seems like it would do what I need, but I'm not sure how to do it in scar, and can't find anything similair. I've tried identifying the little subscript text that sometimes shows up in the bottom left hand corner of the browser, but it isn't always there, sometimes is starts to load then blinks for that part of a second to start loading something else, no way to time the blink that is worth it. I've tried locating the last item that the CSS loads, but my home ISP "Optimizes" the order larger images load, so it doesn't always load "in order" help?
  11. it runs well enough though >_> added the semi's, and works just fine Thanks. I've been thinking about changing my setupstuff to a logfile/readfile string when I start setting up more bots, just haven't looked into that yet, still cleaning up a few other bugs before I try and streamline my code more.
  12. I'm stuck. This is what I have working: [scar]program stuff; type DB = record Name, Status, Server, Field1, Field2 :String; end; var DBName :DB; Smith, Jenny :DB; procedure namespace(login:string); begin case login of 'Smith': DBName := Smith; 'Jenny': DBName := Jenny; end; end; procedure setupstuff; begin Smith.Name := 'Smith' Smith.Status := 'Ready' Smith.Server := '176.26' Smith.Field1 := 'unknown' Smith.Field2 := 'unknown' Jenny.Name := 'Jenny' Jenny.Status := 'Ready' Jenny.Server := '176.26' Jenny.Field1 := 'unknown' Jenny.Field2 := 'unknown' end; begin setupstuff; Namespace('Smith') wait(1000) writeln(DBName.Name+'.Name := '+DBName.Name) end.[/scar] Expected Result: Smith.Name := Smith I need to somehow incorporate a second part to the array, as the final result needs to be: [scar] procedure setupstuff; begin Smith.S1.Name := 'Smith' Smith.S1.Status := 'Ready' Smith.S1.Server := '176.26' Smith.S1.Field1 := 'unknown' Smith.S1.Field2 := 'unknown' Jenny.S1.Name := 'Jenny' Jenny.S1.Status := 'Ready' Jenny.S1.Server := '176.26' Jenny.S1.Field1 := 'unknown' Jenny.S1.Field2 := 'unknown' Smith.s2.Name := 'Smithy' Smith.s2.Status := 'Ready' Smith.s2.Server := '176.25' Smith.s2.Field1 := 'unknown' Smith.s2.Field2 := 'unknown' Jenny.s2.Name := 'Jenny10' Jenny.s2.Status := 'Ready' Jenny.s2.Server := '176.25' Jenny.s2.Field1 := 'unknown' Jenny.s2.Field2 := 'unknown' Smith.s3.Name := 'Smith' Smith.s3.Status := 'Ready' Smith.s3.Server := '176.75' Smith.s3.Field1 := 'unknown' Smith.s3.Field2 := 'unknown' Jenny.s3.Name := 'Jenny' Jenny.s3.Status := 'Ready' Jenny.s3.Server := '176.75' Jenny.s3.Field1 := 'unknown' Jenny.s3.Field2 := 'unknown' Smith.s4.Name := 'Smith_Ken' Smith.s4.Status := 'Ready' Smith.s4.Server := '82.126' Smith.s4.Field1 := 'Sheep' Smith.s4.Field2 := 'unknown' Jenny.s4.Name := 'Jenny' Jenny.s4.Status := 'Ready' Jenny.s4.Server := '82.126' Jenny.s4.Field1 := 'Corn' Jenny.s4.Field2 := 'unknown' end; begin setupstuff; Namespace('Smith') wait(1000) writeln(DBName.Name+'.'+(NewVariablearrayidentifier)+'.Server:= '+(NewVariablearrayidentifier)+DBName.Server) writeln(DBName.Name+'.'+(NewVariablearrayidentifier)+'.Name := '+(NewVariablearrayidentifier)+DBName.Name) Namespace('Jenny') wait(1000) writeln(DBName.Name+'.'+(NewVariablearrayidentifier)+'.Server:= '+(NewVariablearrayidentifier)+DBName.Name) writeln(DBName.Name+'.'+(NewVariablearrayidentifier)+'.Field1 := '+(NewVariablearrayidentifier)+DBName.Name) end.[/scar] Expected Result: Smith.S2.Server:= S2.176.25 Smith.S2.Name := S2.Smithy Jenny.S4.Server:= S4.82.126 Jenny.S4.Field1 := S4.Corn I need that middle array to go (s1, s2, s3, s4), because it represents 3 different servers and a 4th game that is very similar, and it needs to respond to a procedure similar to the Namespace procedure, where I can change that middle variable once
  13. you say normal circumstances. What extra ordinary circumstances would let you run through kernel mode?
  14. You can call the start Key Directly on Any windows with [scar]Sendkey(92);[/scar] OR [scar]Keydown(92) wait(40) Keyup(92);[/scar] That will free up the need for the start button bitmaps. I'd also recommend a procedure to set the window up in the same place on every version of windows. another thing is to be sure to turn off the font smoothing/cleartype functions on your windows. 7Aero and Vista have entirely different smoothing procedures that will make your bitmaps useless in some cases. I also wrote a script that can help with change window functions(Alt+Tab, Print Screen Only of selected Window) and some multi-key commands. Here is the rough if you can use it. [scar] //Nemolorn 6/12/12 Procedure NLSHK(ctrl,alt,shift,winkey,command:string); // All values must be entered as a string 'True' or value begin IF Uppercase(ctrl) = 'TRUE' then Keydown(17) else ctrl := ''; IF Uppercase(alt) = 'TRUE' then Keydown(18) else alt := ''; IF Uppercase(shift) = 'TRUE' then Keydown(16) else shift := ''; IF Uppercase(winkey) = 'TRUE' then Keydown(92) else winkey := ''; command := Uppercase(command) IF Length(Command) = 1 Then Keydown(strget(Command,1)) Else IF StrtoInt(GetLetters(Command)) > 1 Then Case command of 'BACKSPACE' :Keydown(8); 'TAB' :Keydown(9); 'ENTER' :Keydown(13); 'SHIFT' :Keydown(16); 'ALT' :Keyup(18); 'CAPS LOCK' :Keydown(20); 'CAPS' :Keydown(20); 'CAPSLOCK' :Keydown(20); 'ESC' :Keydown(27); 'SPACEBAR' :Keydown(32); 'SPACE' :Keydown(32); 'PAGE UP' :Keydown(33); 'PAGEUP' :Keydown(33); 'PG UP' :Keydown(33); 'PGUP' :Keydown(33); 'PAGE DOWN' :Keydown(34); 'PAGEDOWN' :Keydown(34); 'PG DOWN' :Keydown(34); 'PGDOWN' :Keydown(34); 'END' :Keydown(35); 'HOME' :Keydown(36); 'LEFT' :Keydown(37); 'UP' :Keydown(38); 'RIGHT' :Keydown(39); 'DOWN' :Keydown(40); 'PRINTSCREEN' :Keydown(44); 'PRTSCRN' :Keydown(44); 'PRINT SCREEN' :Keydown(44); 'PRT SCR' :Keydown(44); 'INSERT' :Keydown(45); 'COPY' : Keydown(67); 'PASTE' : Keydown(86); 'CUT' :Keydown(88); 'WINDOWS' :Keydown(92); 'START' :Keydown(92); 'UNDO' :Keydown(90); 'F1' :Keydown(112); 'F2' :Keydown(113); 'F3' :Keydown(114); 'F4' :Keydown(115); 'F5' :Keydown(116); 'F6' :Keydown(117); 'F10' :Keydown(121); 'NUMLOCK' :Keydown(144); 'NUM LOCK' :Keydown(144); 'NUM' :Keydown(144); end Else IF Length(Command) <1 Then Writeln('Fatal Error'); wait(40) IF Uppercase(ctrl) = 'TRUE' then begin Keyup(17) ctrl := 'ctrl' end else; IF Uppercase(alt) = 'TRUE' then begin Keyup(18) alt := 'alt' end else; IF Uppercase(shift) = 'TRUE' then begin Keyup(16) shift := 'shift' end else; IF Uppercase(winkey) = 'TRUE' then begin Keyup(92) winkey := 'winkey' end else; IF Length(Command) = 1 Then Keyup(strget(Command,1)) Else IF StrtoInt(GetLetters(Command)) > 1 Then Case command of 'BACKSPACE' :Keyup(8); 'TAB' :Keyup(9); 'ENTER' :Keyup(13); 'SHIFT' :Keyup(16); 'ALT' :Keyup(18); 'CAPS LOCK' :Keyup(20); 'CAPS' :Keyup(20); 'CAPSLOCK' :Keyup(20); 'ESC' :Keyup(27); 'SPACEBAR' :Keyup(32); 'SPACE' :Keyup(32); 'PAGE UP' :Keyup(33); 'PAGEUP' :Keyup(33); 'PG UP' :Keyup(33); 'PGUP' :Keyup(33); 'PAGE DOWN' :Keyup(34); 'PAGEDOWN' :Keyup(34); 'PG DOWN' :Keyup(34); 'PGDOWN' :Keyup(34); 'END' :Keyup(35); 'HOME' :Keyup(36); 'LEFT' :Keyup(37); 'UP' :Keyup(38); 'RIGHT' :Keyup(39); 'DOWN' :Keyup(40); 'PRINTSCREEN' :Keyup(44); 'PRTSCRN' :Keyup(44); 'PRINT SCREEN' :Keyup(44); 'PRT SCR' :Keyup(44); 'INSERT' :Keyup(45); 'COPY' : Keyup(67); 'PASTE' : Keyup(86); 'CUT' :Keyup(88); 'WINDOWS' :Keyup(92); 'START' :Keyup(92); 'UNDO' :Keyup(90); 'F1' :Keyup(112); 'F2' :Keyup(113); 'F3' :Keyup(114); 'F4' :Keyup(115); 'F5' :Keyup(116); 'F6' :Keyup(117); 'F10' :Keyup(121); 'NUMLOCK' :Keyup(144); 'NUM LOCK' :Keyup(144); 'NUM' :Keyup(144); end Else IF Length(Command) <1 Then Writeln('Fatal Error'); Writeln(ctrl+alt+shift+winkey+command) end;[/scar]
  • Create New...