Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 12-28-2007, 09:52 AM
mcox05
Fire Beetle
 
Join Date: Dec 2006
Posts: 21
Default Command-able Bots

Sorry if this is not the right area for this post. I'm new to the forums so bear with me.

Anyways, I'm just hoping to get a point in the right direction for an idea using command-able bots. I've had troubles with keeping some of my other friends interesting in playing so it would be awesome to know how to do the following:

Scenario
I am a warrior and need a cleric for healing. So i create 2 characters and log them into the server and they are both in the same zone. I want to be able to (as the warrior) request a heal, or a buff, or a undead nuke on a target ... etc...
As the warrior I send a tell to the cleric with the required commands
Example: /tell healer spell greater healing

Then the cleric would heal.

I've already thought of a lot of conditions that must be met for the heal to actually occur and how I would handle them but the main thing is that I want this program to be a third party piece of software ... preferably in C#. Is this process monitoring possible ... can anyone lend me a hand?

Thanks
Reply With Quote
  #2  
Old 12-28-2007, 02:53 PM
mcox05
Fire Beetle
 
Join Date: Dec 2006
Posts: 21
Default Thought of an idea

Okay so I was researching different ways to moniter processes and decode packets for the idea that I had mentioned above. But I thought of a much easier solution and I wanted feedback / upgrades for it.

If I remember correctly, the developers at Verant Interactive included chat log options for players. This would mean that anytime text is sent or received by a player that it would be logged away into a simple text file and thus I could create a log parser that would search for commands under appropriate conditions and then relay those commands to another application that would basically be a bot.

The part that I'm in the dark with on this idea is creating a 3rd party piece of software (bot) that I can force feed commands to the EQ client.

Anyone familiar with how to create bots ... I was thinking that one approach might be to monitor the EQ client process then SOMEHOW feed psuedo-keyPressed and MouseClicked events to it so that it would think a player was generating those interactions. just a thought


anyways, plz give me some feedback.
Reply With Quote
  #3  
Old 12-28-2007, 06:39 PM
Dralanna
Sarnak
 
Join Date: Jan 2006
Posts: 49
Default

You've pretty much just described MacroQuest
Reply With Quote
  #4  
Old 12-28-2007, 07:20 PM
mcox05
Fire Beetle
 
Join Date: Dec 2006
Posts: 21
Default

haha well thanks for that. It was also for a learning experience .... kinda trying to jump into more complicated coding that isn't exactly taught in the lesson plans if you know what i mean thanks
Reply With Quote
  #5  
Old 12-31-2007, 03:41 AM
fathernitwit
Developer
 
Join Date: Jul 2004
Posts: 773
Default

Your proposed solution of using tells actually sounds like a great idea. I have pondered bot writing many times in the past, but have never really come up with a good solution to address the command interface. I was always limiting my scope to the current quest functionality though. Tells is brilliant.

To implement a bot with tells, A few simple things would be needed. First, each NPC healer would obviously need a unique name, so youd prolly need a quest to spawn them or something. Second would be to enhance the tell system to search for NPCs in the zone with the specified name if the tell comes back from world as "person not found" (always give priority to characters). Third would be to add a new event to perl, EVENT_TELL, to pass the receipt of a tell on to the quest.

From there, you can implement anything you want from perl, as you have access to almost the entire object model.

Quote:
Originally Posted by mcox05 View Post
the main thing is that I want this program to be a third party piece of software ... preferably in C#. Is this process monitoring possible ... can anyone lend me a hand?
As stated above, really the only way to pull it off is server side (sanctioned by the server operation), and using perl. You could easily distribute your perl script if that is your motivation for "3td party". What you cannot really do is create this purely as a player, on the client machine... that is cheating to most operators, and it is exactly what MacroQuest does as previously mentioned.
Reply With Quote
  #6  
Old 12-31-2007, 04:43 AM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default

I started a Perl-Bot some time ago. Played with it and it worked pretty well considering the resources. If you made an EVENT_TELL , this would make a great difference - no EVENT_TELL was a big reason why that idea is idle for me ATM.
The Bot I made does work, and will buff and heal a melee type. Great for playing solo on your home server.
Reply With Quote
  #7  
Old 12-31-2007, 05:23 AM
narcberry
Sarnak
 
Join Date: Mar 2005
Location: Idaho, USA
Posts: 94
Default

What about EQOffline? Isn't it up and running right now?
Reply With Quote
  #8  
Old 12-31-2007, 02:57 PM
mcox05
Fire Beetle
 
Join Date: Dec 2006
Posts: 21
Default

haha Thanks fathernitwit. Appreciate the praise but my goal is to achieve controllable remote Box (PC) players. Which would be really fun because then I can play on ANYONE's server with my bots.

just log on two different characters and use tells to pass commands across.
This can be all done client-side through third-party software ONLY by using packet sniffing ... there is no other way to get the tells out of the EQ client besides altering the original source code for the server.

Unfortunately I am no pro net-worker and know relatively nothing about packet decoding to grab the Tells out of the EQ client. Once I can finally understand the EQ packets then I can write a piece of software to intercept them and translate them.

Thus, you now have a client-side command interface the rest is just simply a matter of writing a bot program to execute the commands and the remote PC where the character is logged-in.

Until I figure this out or until I can find someone interesting in teaming up that has the knowledge about packet decryption that I lack ... it is just a idea.
Reply With Quote
  #9  
Old 12-31-2007, 03:01 PM
mcox05
Fire Beetle
 
Join Date: Dec 2006
Posts: 21
Default Side Bar

Also the reason I want to make it the bots actually characters that are logged into everquest (remote pc players) is because then issues of how the bot's level, stats, armor, spells, etc... are not an issue ... they are IN FACT player characters so you have to upgarde their gear, spells, etc..

Once I do have this idea up and running then I can expand on a more complex command interface to support all sorts of actions from looting, equiping items, to ... whatever is allowable.
Reply With Quote
  #10  
Old 01-01-2008, 05:53 AM
Theeper
Discordant
 
Join Date: May 2004
Posts: 290
Default

Like Dralanna said, it sounds like you're trying to recreate MacroQuest. I don't think sorting through packets would be an efficient way to handle tells between clients if it was totally client-side though. Accessing the game client memory directly would prolly be the way to go.
Reply With Quote
  #11  
Old 01-01-2008, 09:22 AM
mcox05
Fire Beetle
 
Join Date: Dec 2006
Posts: 21
Default

Ive never done anything with low-level memory when it comes to accessing it from another process. how would i find it .. and how could I figure out which memory contains the chat that Im looking for?
Reply With Quote
  #12  
Old 02-25-2008, 07:17 PM
bushman77
Hill Giant
 
Join Date: May 2003
Location: In the bush
Posts: 129
Default eqoffline

well what your tryinmg to do is log on to a serve that has eqofflinf binaries. billion times easier to do and yiou can have as many bots to make up a full out raid. cleric will heal youi when you need it shammy will buff as required and well all fo this is auto so need i say more
Reply With Quote
  #13  
Old 02-27-2008, 04:43 AM
Soulscry
Fire Beetle
 
Join Date: Mar 2005
Posts: 10
Default can be done...

Just wanted to pipe in that the idea of useing tells is workable. Although i do not know how i have met players that use it and it works like a dream. The Bot players will respond to the /tell commands for buffing following group members sending there pets to attack and anything else you can do with marcos and hotkeys. I have also knowen a player whos bot rogue could move itself to face the real character about 5 feet away in front of him. so playing his warrior is rouge would set itself behind the mob he was figting and backstab on its own. Clarics would resond to heal request /tell's and chanter would /t enchater mez the enchanter would assist you for your target and keep that mob mesed. the even recognized fizzles and recast failed spells... I have no idea how they work but it can be done.

Good luck in your efforts =)
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:57 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3