Register for your free account! | Forgot your password?

You last visited: Today at 20:35

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



BotThings

Discussion on BotThings within the Battle of the Immortals forum part of the MMORPGs category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2007
Posts: 36
Received Thanks: 2
BotThings

Hey Guy.. I see maybe 5 differents verssions of bots for BoI , All do same things, use hp pots, mp pots, pet pots, attack in same are, attack same moob, hit the lord, dont hit the lord.. Nothing new.. except new version from PHANTON called "PBBOT_v1.0.0.2.rar_FOR INTERNATIONAL BOI" .. with a PartyHeal very usefull, but, I play with a Slayer and all my bots are Hrtics... killing and healling themselves, I m using old "pbbot_v_0.2c_beta" and "PBBOT v1.0.0.1" because I dont need "yet" party heal, ... So my point is.. Dont create more different versions of bot doing same things, WE (players) REALLY need is a BOT for :
- Use itens in Bag
- Delete Itens on Bag
- Do a Posidons/Cruzaders
- Summon Pet if It die
- Old Option "Attck this moob" ( 2 or 3 Different moobs not only one)
- Many ppl ask for auto LM anwsers and Quiz .. (for me not necessary)

The Phantons bots working good, I recommend,

Programmers, please, focus on Bag Itens, and Crusaders/Posidons, autorotes, follow leaders can wait...

Thanks....
inetwiz is offline  
Old 12/26/2010, 20:24   #2
 
LvH019's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 93
Received Thanks: 1
Theres a site with a BoI BOT like this you want, i don't think the link should be posted here, i'm not sure. Google it will find it!
LvH019 is offline  
Old 12/27/2010, 07:59   #3
 
elite*gold: 0
Join Date: Nov 2010
Posts: 14
Received Thanks: 1
I wish phantoms new bot had all my characters in 1 screen like i think decodes version.
Having to run 2 different bot programs at once is bleh heh
xeener is offline  
Old 12/29/2010, 12:05   #4
 
elite*gold: 0
Join Date: Feb 2008
Posts: 191
Received Thanks: 135
I'm casually developing a botting API for BoI called HackBoy. It's Open-source and uses an injected DLL that can call internal functions and retrieve lots of information. A pipe is setup by the DLL for communication between a bot script and the API and then you can basically write any sort of bot you want.

But since I don't really play, I don't know what's needed.

So far, though, I have the following features implemented:
- item pickup
- skill use
- target selection (including iteration of all players/mobs in range)
- use item in bag, also able to get item id of items in bag to identify food etc.
- move to x,y (by using internal function that autopaths, no stuck etc.)

But I need to know what it is people need to write the best bots in BoI. I coded the GWCA for Guild Wars which is one of the most complete botting API's to be publicly released, and since BoI is easier to reverse engineer, I can get pretty much everything people need from the client.

The HackBoy project is hosted on GoogleCode under the name "hackboy", of course. I'm sure you can find it with that info, since I'm not sure I can post a link without adding a backlink - and I don't feel like doing that

EDIT: Forgot to mention that I, of course, also have a lot of info on each player/mob available
SuneC is offline  
Old 01/01/2011, 17:13   #5
 
elite*gold: 0
Join Date: Jul 2010
Posts: 188
Received Thanks: 158
Niceness, I'll be sure to check you guys out after my vacation. If you already have your DLL doing all of that, we can make a bot which does almost everything people ask for.

Another item which would be useful to be capable of off the top of my head: Activating Chat Window with NPCs, and selecting a specific option from their list of available. (ie - anything which ends in "- Done" to finish quests, or "- New" to start them). With this, you could automate Academy Quest and others. Along with that would be being able to check the titles of all active quests, but that should be trivial.
dumpersta is offline  
Old 01/01/2011, 20:59   #6
 
elite*gold: 0
Join Date: Feb 2008
Posts: 191
Received Thanks: 135
Quote:
Originally Posted by dumpersta View Post
Niceness, I'll be sure to check you guys out after my vacation. If you already have your DLL doing all of that, we can make a bot which does almost everything people ask for.

Another item which would be useful to be capable of off the top of my head: Activating Chat Window with NPCs, and selecting a specific option from their list of available. (ie - anything which ends in "- Done" to finish quests, or "- New" to start them). With this, you could automate Academy Quest and others. Along with that would be being able to check the titles of all active quests, but that should be trivial.
Thanks for the reply. Motivated me to add quest support as in accepting new quests and grabbing rewards. No quest info yet though, but I'm sure it won't be hard to locate the dynamic list.

Also added a function for destroying items - so now you can pick up, check which items you got, but if the item id's are not worth keeping, destroy them.

Atm, the test script uses AutoIt (yarh, I know!), but it's pretty easy to set up any language with the pipe protocol. If you are interested, drop me a PM
SuneC is offline  
Old 01/03/2011, 06:38   #7
 
elite*gold: 0
Join Date: Jul 2010
Posts: 188
Received Thanks: 158
Other random ideas that occur:

Automatic random realm change when attacked PvP
--Obvious reasons for this one. Some might enjoy allowing you to set instead to turn PvP on and target the attacker right back.

Using skills without assigning them to a Hotkey (not sure it is possible, but ought to be, same basic idea as the bag clicking)
Using skills instantly when available (no key spam, but also no waiting after skill goes off cooldown)
--With the two of these, it should be possible to not require entering cooldowns or key assignments. Instead the bot sees what class you are, and automatically uses all of your skills. Then you just need a checkbox for "Use Single Target Attacks" and "Use AoE Attacks" on the character to enable/disable each type of attacking.


Not sure which language I will wind up using, probably will stick with C# just to force myself to learn how to use threading better, but tempted to abandon it and dive back to the "safety" of C++ where I know more. I'll try to become a contributor at your google code page. I am sure I'll get tons more ideas as time goes on, so there I can add them myself, and ask for assistance on ones more complicated than I want to deal with at the time
dumpersta is offline  
Old 01/03/2011, 10:30   #8
 
elite*gold: 0
Join Date: Feb 2008
Posts: 191
Received Thanks: 135
You can't add yourself on GoogleCode I'll need a PM/mail with your Google account.

I just wrote the C# interface yesterday - which was one hell of a pain since I hadn't worked with unmanaged to managed and vice versa before - but it works perfectly now.
I'll probably be able to set up the C++ interface in much less time though, since I'm much more comfortable in that language.

I'll work on fetching the "ChangeRealm" function. Shouldn't be too much of a hassle.
Concerning skills, there's still a lot of work to do there. It is very possible to call a function that uses your skills by their skill id - and not slot in skill bar - but that will require fetching all the skill id's.
I also didn't investigate the cooldown (devs named it "colddown" xD) stuff yet, but I believe I can have this stuff up within at least a week.
SuneC is offline  
Old 01/04/2011, 04:12   #9
 
elite*gold: 0
Join Date: Jul 2010
Posts: 188
Received Thanks: 158
I was ****** at first with the unmanaged/managed thing. Meant I couldn't use a debug DLL, unless I had full version VS. But then I found that I can get full version VS free as a student, so once I get the time to do so I will be much happier with it. Though the errors I had with my DLL are quite likely absent from yours anyway, so that doesn't matter just yet.


I haven't looked closely at the realm changer in 420's bot, but as far as I could tell, he didn't even use the DLL for it, it was just offsets and memory writes. Not sure how exactly to find the offsets or I would have updated it to work already. Also haven't had any luck detecting the offset for "PvP attacked" status.
dumpersta is offline  
Old 01/04/2011, 18:09   #10
 
elite*gold: 0
Join Date: Jul 2010
Posts: 188
Received Thanks: 158
Just thought of a feature that would be VERY nice if possible (should be):

Lovematch can detect if you are running both characters on 1 PC, same with Alms & Pro EXP. Adding a feature to the bot which defeats that check would be very nice.
dumpersta is offline  
Old 01/04/2011, 18:58   #11
 
elite*gold: 0
Join Date: Feb 2008
Posts: 191
Received Thanks: 135
Quote:
Originally Posted by dumpersta View Post
Just thought of a feature that would be VERY nice if possible (should be):

Lovematch can detect if you are running both characters on 1 PC, same with Alms & Pro EXP. Adding a feature to the bot which defeats that check would be very nice.
Depends on whether the check is client- or server-side. Does Love match check IP-wise or PC-wise though? (that is, can you do it with 2 PC's with the same IP? If you can, then it's probably client-side; otherwise, most likely server-side)

Been working on the instant realm change. It works, aslong as you don't try changing realm within ~15-20 seconds of a load - why this happens, is currently beyond me xD
SuneC is offline  
Old 01/04/2011, 20:46   #12
 
elite*gold: 0
Join Date: Jul 2010
Posts: 188
Received Thanks: 158
Unfortunately I'm not sure exactly how they check. But you can use 2 PC's which are on the same wireless network. Done that fairly often. Also have read of people using Sandboxie to run both from 1 computer which simulates 2 IP's.


There is a server-side restriction on realm shifting, can hit it without any outside programs if you try to change realms before your Safety timer (from the first realm shift) hits 49 seconds. You'll see a message in the system box (top half of chat) telling you how much longer till you can change realms. The only advantage to the instant shift in a bot is being able to jump the moment you decide you want to (if you didn't just hop already), and being able to enter a "Full" realm.
dumpersta is offline  
Old 01/04/2011, 23:11   #13
 
elite*gold: 0
Join Date: Jul 2010
Posts: 188
Received Thanks: 158
Ok SuneC, I have your code now, reviewing it a little bit, will post queries as they occur. Sadly can't compile and test it myself just yet, trying to use Dreamscape instead of Express and having some validation issues ><

CBag:
Function to get ID of item in the slot, and another to use item by slot. Maybe another function to use item by item ID? Faster to do the scan of all bagslots and use if valid all within the DLL instead of having a loop over all slots check ID's and then use if valid, doing multiple calls in and out of the DLL in the process.

I do love the idea of the Item ID being able to be checked, lets you set up to do Scroll clicks and have the clicking automatically stop if that slot changes to something else (ie - you finished, so now don't spam potions if they happen to pick up to that spot)


Cpet:
Didn't expect stats to be in here. I suppose the model is to have the DLL be the only thing that touches memory in any way? Lots of extra calls into and out of the DLL that way though, as the implementation program will have lots of logic checks based on these values. Would it be significantly faster to leave the HP/MP and other such stats to the implementation level? Probably depends on language used I suppose (my only long-term experience with DLL to another language was with Python, so calls between were to be avoided at all costs due to slowdown)

What good is the Pet ID going to be? Let you choose a specific one of the pets which you own to be summoned? Not sure precisely what use that would be, but might be of use somewhere/somehow.

Summoning the pet: Same as clicking the ability in game, or instant? Is it even possible to force instant spellcasting (and maybe collecting of resources like Celebeam)?

CPlayerMgr:
Move To function is only X/Y, why not also Map ID? Very useful to have this as well so that you can have auto-follow functionality which carries through zoning.

Select Target function: What exactly does this one do? Select any player, NPC, Monster or item based on unique IDs? Or only select other players?

CTarget:
Fetches by ID, quite nice, does that mean we can implement a true Assist function? (Set the bot to automatically target the same monster as some other player, likely Group Leader)

Main:
Use Skill: F keys come after the numeric keys for Slot number? edit - Actually looking in MessageHandling it appears we can use even the non-key slots from the expanded sidebar. So how does the enumeration run precisely?

Autoloot: Can we set it up to only loot specific items based on item ID? Like, "Pick up all Soulshards and Raw Jade only" or the like? I am guessing right now it runs a right click on the little treasure box icon on the map, but if that changed to a Left Click, then checking the pop-up window slot by slot for item ID, and running left clicks on it (have to accommodate checking multiple tabs for bosses).

If the selective autoloot is possible, then it would be useful to figure out if there are attributes we can pick up off of items other than just their ID so we can be more general, and to have Blacklist as well as Whitelist. ie - Do not pick up Green Gear, or Do Pick up all Soul Gear, or only pick up Rings with Light Attack > 50. This of course gets overcomplicated quite quickly, mostly just an exercise in seeing what is possible rather than an item likely to be implemented into a bot.

edit - Ok, MessageHandler made it clear that this is just a right click as I thought. Still nice if possible to complicate it slightly, mostly for a blacklist when you are in an area with frequent drops you simply do NOT want to have, or longterm bot running to avoid Berry Hearts or whatever. But Item deletion can handle that just as easily I suppose...

Destroy Item: I assume this deletes an item from your bag by the Item ID. How does it work with multiple instances of the same item? Like 2 stacks of Pet Potions or somesuch? Even if each stack appears to be the same type and quantity, do they have unique IDs? That sounds like the most likely case... But if so, are there 2 IDs to an item, one for the generic "What is it? (Pet potion)" and another for the specific "WHICH is it? (Pet Potions in Bagslot 5)"


CPlayer: (Why no CPP? Threw me off for a bit )
Talk to NPC: How does this work precisely? If you aren't already in range of the NPC, does it fail, set you to move toward them, or pop up communication even though you are out of range (that would be nice, but I doubt it is possible)?



Be useful to figure out if there is a way to automate purchase of items from the Marketplace. Then you could buy Pet Trainers when they are required, or re-stock salary potions and other such events.

Is it possible to initiate the Shop Window with an NPC and purchase a specific item from them? Forgot that this would also be required for automation of the Academic Quests. Not too many items are possible in those quests, so could hardcode the Item IDs if it were needed.

Would be nice if you could figure out a way to tell if a target cannot be attacked. I've tried a few times, but always run into issues with the pointers/offsets which I isolate. Good test subjects (if you have a high level character) would be the 4 sins in the Land of the Dead Dailies, and the walking condemned in the world through Aku. Also the Cart you escort for Guild Quest, and the old man you escort in Shadow Manor, or Yggdrassil in World Tree Garden. Pointers I have found so far work on some (Guild Cart) and not others (4 Sins), or work on some things they shouldn't once (Evil Adventurer's), or just don't update when the target changes from non-attackable to attackable (4 sins again, though really they respawn as a completely new NPC, not change type directly)
dumpersta is offline  
Old 01/05/2011, 00:03   #14
 
elite*gold: 0
Join Date: Feb 2008
Posts: 191
Received Thanks: 135
Just gonna take this one by one:

CBag
Writing wrapper functions is something I haven't really done atm, but it's exactly the kind of input I need to make them. That particular suggestion is very good.

CPet
Yes, the idea is to do everything through the DLL, a complete interface for getting all the infos.
I find that doing some stuff in the DLL and some in the bot makes the code messy. Atleast I had very good experience with keeping everything in the DLL from my previous project GWCA. With the use of pipes, speed is not really an issue unless you need to be pulling 10000's of data every second - not to mention we can batch up some of the commands (and even increase the number of parameters) to return ALL info on one "agent" with one command for example.

I implemented pet summoning so that the bot could summon the pet if it accidentally died and you were no longer being attacked by mobs. The retrieval of pet ID is entirely internal. The retrieval of the pet's player ID though (that is, the agent id) could be probably be useful for something

And I didn't investigate the matter of instant skill-casts, but I'll be sure to check if it's client-sided. A quick hack of the internal GetTime function should suffice I suppose.

CPlayerMgr
I will extend the MoveTo function to include map ID as soon as I have time. Holidays are over, I had to fix some stuff and I'm also writing the C++ interface - so I can't do as much progress a day as before

SelectTarget does what it says, it selects the target you specify - anything really (though you can't target item drops on the ground). To attack stuff and use skills you need to target them, so this function is... utmost vital
Why the BoI devs put this in here and not in the following class, don't ask me - leading us on to...

CTarget
I know there's only one function, but this is a nice way to implement a feature such as "Lock onto -current mob-".

Main
UseSkill inputs a slot from 1-26. 1-10 are your your skillbar (the keys 1 to 0), 11-18 are F1 to F8, and finally 19-26 corresponds to the expanded action bar counting from the top.

The loot function has been a big hassle for me. If you've seen some of my update notes, I've had to rework it and use a much more complicated - but foolproof - method. It doesn't just "do" a right-click It calculates the Z position of the drop based on it's X and Y coords (because the Z coord isn't given in the item's object data), uses the WorldToScreen function to transform the XYZ coords into client coords, and fakes the right-click handler into believing that your mouse is located on top of the drop, while calling that very same right-click handler.

I'll bring up DestroyItem now though, because these two functions are meant to be used in conjunction. DestroyItem does NOT delete by item ID, it clearly says "slot". The way they are to be used together is, that whenever a drop is picked up, a custom function iterates through your bag checking for unwanted drops (based on item ID). If it finds any, they are destroyed.
Just as you supposed

CPlayer
I honestly never tried it outside the range of the specific NPC xD.


I haven't done any work concerning the Marketplace nor the NPC shop window. Will definitely work on the latter though, since it can be quite useful.


About targets that are unable to be attacked: I don't really play BoI (got 2 lvl5x just from testing and getting top10 in the Quiz) so I haven't encountered any of these mobs, BUT, there is a useful command called CA_GetPlayerType. For all normal monsters, it returns 13; for pets, 69; for NPC's, 3 and for players 32 or 37.
SuneC is offline  
Old 01/05/2011, 01:16   #15
 
elite*gold: 0
Join Date: Jul 2010
Posts: 188
Received Thanks: 158
Other things which occur to me as useful:

A check to see if you are silenced/stunned which will prevent attempts to use skills (thus messing up your timers if you cannot detect that they are on cooldown and don't want to just spam the keys), and wasting food (trying to use food while silenced doesn't give food buff, but does put it on cooldown). I had found offsets for these, but none which are static, so the functions only work if I search for the offset manually each time I use a new instance of the client (I don't know how to set up the auto-update search strings just yet)


Can you check if the CA_GetPlayerType returns a 13 on the cart you escort for guild quest? I suspect it will even though it cannot be attacked just because you can target it with TAB when PvP is not turned on.

Out of curiosity, do you have your own Quiz program, or use mine? Wouldn't mind seeing another one out there so I can maybe borrow a thing or two from it
dumpersta is offline  
Reply




All times are GMT +1. The time now is 20:37.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.