Jump to content
AC Tool Forums


  • Content Count

  • Joined

  • Last visited

About mysticdrew

  • Rank
    Cool Newbie

Profile Information

  • Gender
    Not Telling

Recent Profile Visitors

2,294 profile views
  1. Chrome is not written in Java, it is mostly C++ and Objective-C, On Android the Chrome UI bits are in java but the core is C++. Chrome OS, also C++. Andoid OS is mostly C++ but apps can be C++ or/and Java. It is widely thought that Android is pure java, it is not. The core is all C++ but the UI is a mix of java/c++. They expose the api through java, I think that is why most think it is a pure Java OS. While java has the perception from rumors of being slow it really is not. It probably was back in the 90's when it was first created. But on today's machines it can be as fast as native applications. I am using several libraries that give native system access without pulling the data from the JVM. All input /mouse/keys/pixel data are from the native system through C++ dlls. Yes there is a bit of slowness to startup in the IDE(havent tested the compiling), because I have to scan the classpath for annotations and build dynamic classes using ASM writing optcode instead of using reflection for my eventbus. Writing Optcode is a huge pain, but for speed, it's worth it. Many of the tools/macros/bots people have written in AcTool will be just as fast in Java. They are pretty small in the scope of things. At work our Enterprise systems are all java and they are blazing fast, huge applications, tons of threads, still extremely fast. I also plan on caching a lot to speed things up. For example, pixel detection is a heavy call for any language. My plan is when a getColor call is executed, it will take a small image around that pixel and store for maybe 10-50ms, then all calls in that area are done on that image. So if you want to scan maybe a healthbar, you loop through a getColor 100 times in a matter of nanoseconds. That can be a very heavy call if you check the pixel each time and it will take more than a few ns. The first getColor(x,y) call will check if that region has a living cache, if it does, it will scan cached image. If it does not, it will use a JNA call to create the region, toss it into cache and scan it. In theory it should be lighting fast. I have not implemented any of the color detection code yet, but that is my plan. If you want access to the github project, private message me your GH account name and I will add you. I think I can only add 3 people to free private GH projects.
  2. Disclaimer: This is not released yet! -> Pending licensing, due to some dependencies that I require. So one of the issues with AcTool, AutoIt, AutoHotkey, and likely even the new Divinity is that they are Windows specific. There are a few tools out there for MacOS and Linux but nothing that I have found works on all of them. Write one script/application and it is platform agnostic. I am in the process of writing a Java tool that will do just that! I am a java software engineer by trade so obviously it is language I am drawn too. I was thinking either java or python I went with java because I already had a basic project started for this tool. While there will be no "scripting engine" for this, it will be a dependency library of sorts with helpful methods, annotations, native tools to get the ball rolling right away. I may however write a scripting engine for this and it will use python or javascript/typescript. That is a long way off, if it ever happens. I will post updates here as I progress on the project. It will be open source when I get my licensing situation figured out. One of the main things I want to provide with this project, is I want to make it easy enough that non programmers can use it, like they can with ACTool. ACTool is simple, yet powerful scripting tool but the syntax is not complex. It is what got me into my software development career. My current phase is creating a dynamic annotation system for events. (key events, mouse click events, custom events) Actool has an event processor for calling procedures below: Procedure Foo when bar=foobar I currently have a working key event system. KeyEvent - KeyPressedEvent, KeyReleasedEvent that works like so. @SubscribeKeyEvent(key = "v", modifier = KeyModifier.CTRL_SHIFT, type=KeyEvent.Type.PRESSED) public static void onKeyPress() { // Fires on key press and key release // Fires when only the combination of CTRL+SHIFT+V is pressed/released (it is case agnostic) } @SubscribeKeyEvent(key = "b") public static void onKeyPressStatic(KeyEvent.KeyPressedEvent event) { // only fires when CTRL+SHIFT+V is pressed (it is case agnostic) } @SubscribeKeyEvent() public static void onKeyPressedEvent(KeyEvent.KeyReleasedEvent event) { // fires only when a key, any key, is released // validate it with if("a".equalsIgnoreCase(event.keyString)) { // a was pressed } } Any combinations of qualifiers in the annotation or specific method parameter type will work. It's pretty robust. I am traveling for work the next week, I am not sure how much time I will have to work on it. However, until it is open sourced I have a couple slots on my github repo that I can provide access to a few users who wish to tinker or help with this. Please respond or PM me and we can chat. Future plans: I will be adding a bunch of MouseEvents, the obvious click events, but also area events. When your mouse moves to an area, the event will execute and you can do stuff. Imaging tools, with workarounds for Windows10's slow getPixel garbage. Custom gradle plugin to make it easier to a project setup in Intellij or Eclipse Guides and Documentation. And anything else that I can think of to make life easier. Thoughts: I want to make it clear, I am not writing this to replace actool, divinity, autoit, or autohotkey. They all have their place, I just want something that is platform agnostic. This project is not new, I started it about 4 years ago and worked on it for a few days then got busy and forgot about it. I am picking it up again to hopefully get it workable and usable by a community.
  3. Constantsrnd = 0EndProcedure RANDOM using LO, HICompute rnd = INT(($HI - $LO + 1) * rnd(1) + $LO)EndCall RANDOM 10,200 //could be any minimum and maximum number range you wish. loop $rnd // do stuff end
  4. does this person know how to use google? A simple search "how to send keypress in c#" comes up with all kinds of results.
  5. You repeat a lot of code in those if statements. Don't duplicate code, it will save lines. Here are two ways. Though I could probably come up with even more. I'd personally use Lists as the solution. Clean, Simple, Straight Forward. Using lists, this code will not work as is it's more sudo code as list[index+1] is not valid syntax sadly. This is just to give you an idea (don't forget to account for max list size, {loopNo} + 1 can give you an index out of bounds error) constructs layouts = List accounts = List avatars = List leftLocations = List topLocations = List end procedure setValues listAdd layouts, 110 // ... add others listAdd accounts, 140 // ... add others listAdd avatars, 1xxxxx // ... add others listAdd leftLocations, 0 // ... add others listAdd topLocations, 0 end // list way procedure numbers loop $number if $number > 1 set layout[{loopNo}] = layout[{loopNo} + 1] set accounts[{loopNo}] = accounts[{loopNo} + 1] set avatars[{loopNo}] = avatars[{loopNo} + 1] set leftLocations[{loopNo}] = leftLocations[{loopNo} + 1] set topLocations[{loopNo}] = topLocations[{loopNo} + 1] end call layout call accountname end end Simpler if statement way .. this is untested, I am not sure if it will work 100% but again just to give you an idea. procedure numbers loop $number If $number >= 1 set layout = $layout1 set AccountName = $AccountName1 set avatarname = $avatar1name set left = $left1 set top = $top1 end If $number >= 2 set layout = $layout2 set AccountName1 = $AccountName2 set avatar1name = $avatar2name set left1 = $left2 set top1 = $top2 End If $number >= 3 set layout = $layout3 set AccountName2 = $AccountName3 set avatar2name = $avatar3name set left2 = $left3 set top2 = $top3 End If $number >= 4 set layout = $layout4 set AccountName3 = $AccountName4 set avatar3name = $avatar4name set left3 = $left4 set top3 = $top4 End If $number >= 5 set layout = $layout5 set AccountName4 = $AccountName5 set avatar4name = $avatar5name set left4 = $left5 set top4 = $top5 End If $number >= 6 set layout = $layout6 set AccountName5 = $AccountName6 set avatar5name = $avatar6name set left5 = $left6 set top5 = $top6 End call layout call accountname end end
  6. scanning a whole window would be very time consuming and quite slow, especially if you're on windows 10.
  7. If you are using windows 10, it will be very slow with color detection.
  8. The  is happening because of an encoding issue. &nbsp is UTF-8, but for some reason it is displaying it as ISO-8859-1 which shows the non breaking space (&nbsp) as Â. Not really sure how that happened, I assume you exported the DB as utf-8 and I imported it as UTF-8. Who knows.
  9. I was checking about twice a week. Then it dawned on me, I've been paying for a host for years and havent done much with it, time to use it! Glad to help.
  10. The actool download link is not work, getting a 403 forbidden.Â
  11. I had no idea you could change themes, This Deviant them is much more gentle on the eyes. The header is quite large, but meh.
  12. There is a solution that someone using autoit created for the GetPixel problem. It is not as fast as GetPixel without AERO but it is multiple times faster than the default GetPixel and Aero.  https://www.autoitscript.com/forum/topic/126430-advanced-pixel-search-library/ I am sure something like this could be implemented into AcTool with the work WABBIT is doing. Â
  13. Update color detection logic to work well with windows 10, currently it is quite slow. I will run some diagnostic tests when I get home. Comparing windows 10 vs windows 7 with aero turned off.
  14. Any chance your codebase could be put on github or bitbucket. We can turn this more into a community project. Also are there detailed instructions somewhere on building actool, I tried a few years ago and I had no luck because it required some paid modules.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and to our Privacy Policy.