Writing Bots with Robot-js menu

User Tag List

Page 7 of 7 FirstFirst ... 34567
Results 91 to 97 of 97
  1. #91
    WiNiFiX's Avatar Banned
    Reputation
    242
    Join Date
    Jun 2008
    Posts
    447
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Saridormi View Post
    You're setting mouse to the result of calling robot.Mouse(). Did you mean to set it to robot.Mouse instead?
    I will try that, i was not aware java supported that, everything ends in () with it.

    Writing Bots with Robot-js
  2. #92
    maltikism's Avatar Member
    Reputation
    8
    Join Date
    Jun 2009
    Posts
    34
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I don't think robot-js supports any of the remotely recent versions of Node? i.e. ones with the cool stuff like async await. I was using a custom fork of memoryjs instead - GitHub - idiidk/memoryjs: Read and write memory in NodeJS (finally!) - this lib supports memory pattern matching too.

  3. #93
    Torpedoes's Avatar ★ Elder ★ Doomsayer
    Authenticator enabled
    Reputation
    1147
    Join Date
    Sep 2013
    Posts
    956
    Thanks G/R
    148/415
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by WiNiFiX View Post
    I will try that, i was not aware java supported that, everything ends in () with it.
    In your case, you were creating an instance of the mouse object but setPos is a static variable. What you were doing is identical to "new Mouse()". This is not normal for JavaScript and it's something special I did to save on having to write "new". If you do "let mouse = robot.Mouse". then setPos will work fine.

    Originally Posted by maltikism View Post
    I don't think robot-js supports any of the remotely recent versions of Node?
    While I haven't tried node 10, robot-js works with Node 0.12 up to and including 9. If you have Node 10 you can try installing robot-js and see if it compiles automatically.

    Originally Posted by maltikism View Post
    i.e. ones with the cool stuff like async await. I was using a custom fork of memoryjs instead - GitHub - idiidk/memoryjs: Read and write memory in NodeJS (finally!) - this lib supports memory pattern matching too.
    So that's one of the limitations of robot-js, it's all blocking so it doesn't technically support Promises and async/await. But thanks for linking me this project. It'll help me improve robot-js.

  4. Thanks WiNiFiX (1 members gave Thanks to Torpedoes for this useful post)
  5. #94
    Thornsworth's Avatar Member
    Reputation
    1
    Join Date
    Apr 2009
    Posts
    5
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    First off, thank you Torpedoes for all your hard work. I have a few questions and I'm very much willing to do the research but I am unsure where to start. I've sifted through a lot of Google Searches as well as OwnedCore forum threads and I've come to a bit of a road block.

    I'm attempting to write a super basic bot (eventually just a rotation bot). For right now I just want to read memory and get used to the ins and out of robot-js as well as the WoW client itself.

    I've already written (with the help of the many robot-js tutorials) a node app that can attach to the client and runs through a loop function (already done in the tutorials but I wanted Promises and ES6/7 functionality/syntax). All that works great.

    I've been using CE to find what the currently selected character is (unable to remember yet how to use IDA as the last time I used it was maybe 6 years ago). It seems obvious now that the client is dynamically referencing offsets as I am unable to lock anything down. I am able to get pointer for the module.

    Code:
    let entry = memory.readPtr(module); //12894362189 <-- Looks to be a decimal
    And once I find the address on CE of the selected target I am able to console log the result:

    Code:
    let target = 0x238A07A350A; // From CE
    console.log(memory.readString(target, 80).split("|")[0]);
    But the target address changes every time the client is loaded. Is there a static pointer/offset address from the entry that I am not finding information about in my searches? Am I even on the right track? Is the fact that its all dynamic making this all a moot project? I want to learn this but I am on the hard cord struggle bus. Any help with my endeavors would be appreciated.

  6. #95
    szuecsg's Avatar Member
    Reputation
    1
    Join Date
    Mar 2012
    Posts
    1
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello All,

    This is a very nice tutorial for a beginner, altough i managed to get stuck, or maybe the client changed somehow.
    I was trying out your cooldown iterator demo, but i have some problems.
    I am not a javascript expert, i worked with C++ before, so the concept of pointers are clear to me.
    But here what i am getting on the latest clients:

    Cooldown table address: 7ff719b5f9e8 (This is the base address + the offset for the cooldown table)
    After reading this, i get the following address:132965ee000
    This address does contain valid data as i can see that spellID = 28730 is valid.
    After trying to read the next entry, which should be located at currentAddress + 0x08, io get the following address: 7ff719b5f9e9 (This is the cooldown table + 0x01)
    This address does not contain any valid address or valid data.

    So the structure should look something like this if the entry holds the next pointer:
    class CooldownEntry {
    Int64 unused; // Or 2 Int32, etc
    Pointer nextEntry; // located at 0x08 - 64bit pointer size
    Int32 SpellID; // located at 0x10
    Int32 itemID; //located at 0x14
    }

    Update: I could find the second entry at the cooldown table base(7ff719b5f9e8 ) + 0x08
    The third one is not at cooldown table base + 0x10

    Did anyone manage to find these cooldowns?

    And also a little question about the timestamps for example spellStartTime, it is not epoch, what is it then?

    Thank you all for your answers in advance.

    Best Regards,
    szuecsg

  7. #96
    ejt's Avatar Contributor
    Reputation
    209
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/111
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by szuecsg View Post
    Hello All,

    This is a very nice tutorial for a beginner, altough i managed to get stuck, or maybe the client changed somehow.
    I was trying out your cooldown iterator demo, but i have some problems.
    I am not a javascript expert, i worked with C++ before, so the concept of pointers are clear to me.
    But here what i am getting on the latest clients:

    Cooldown table address: 7ff719b5f9e8 (This is the base address + the offset for the cooldown table)
    After reading this, i get the following address:132965ee000
    This address does contain valid data as i can see that spellID = 28730 is valid.
    After trying to read the next entry, which should be located at currentAddress + 0x08, io get the following address: 7ff719b5f9e9 (This is the cooldown table + 0x01)
    This address does not contain any valid address or valid data.

    So the structure should look something like this if the entry holds the next pointer:
    class CooldownEntry {
    Int64 unused; // Or 2 Int32, etc
    Pointer nextEntry; // located at 0x08 - 64bit pointer size
    Int32 SpellID; // located at 0x10
    Int32 itemID; //located at 0x14
    }

    Update: I could find the second entry at the cooldown table base(7ff719b5f9e8 ) + 0x08
    The third one is not at cooldown table base + 0x10

    Did anyone manage to find these cooldowns?

    And also a little question about the timestamps for example spellStartTime, it is not epoch, what is it then?

    Thank you all for your answers in advance.

    Best Regards,
    szuecsg
    All times are calculated using the timing functions that wow uses. They have 2 methods AFAIK, one is located at 0x285CD0 (8.0.1.28153) the other one is high performance counter, cba to find it as the first one works fine for me. If you are out-of-process you can look at the function in IDA, the function reads the time from a global variable.

    As for the cooldown structure, you have to RE it in IDA (or CE if you're brave enough).

  8. #97
    3588's Avatar Member
    Reputation
    2
    Join Date
    Aug 2015
    Posts
    29
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi Torpedoes
    test more than 3days, but still didn't work on 8.0.1.28153. Could you please update the new offsets.js? so for some noobs like me can start use it.
    I know made some Cheat Engine Table before, is possible to have some CE table for 8.0.1.28153? don't know how to use OD xD

    Thanks

Page 7 of 7 FirstFirst ... 34567

Similar Threads

  1. Make your own Bot with Java Robot Class
    By whappit in forum Programming
    Replies: 19
    Last Post: 09-27-2015, 06:07 AM
  2. Making a bot with java (robot class) Help
    By ASDF4Ever in forum Programming
    Replies: 3
    Last Post: 09-10-2013, 01:50 AM
  3. Making an anti-afk bot with AutoIT the easy way.
    By Tsai in forum World of Warcraft Bots and Programs
    Replies: 13
    Last Post: 10-02-2007, 04:22 PM
  4. Easy AFK Bot with G15
    By husky003 in forum World of Warcraft Exploits
    Replies: 7
    Last Post: 01-13-2007, 12:42 AM
  5. anit afk bot with Cheat engine
    By thechosenone in forum World of Warcraft Bots and Programs
    Replies: 3
    Last Post: 09-11-2006, 03:44 PM
All times are GMT -5. The time now is 06:13 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search