EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Bots (https://www.eqemulator.org/forums/forumdisplay.php?f=676)
-   -   EQoffline, bots and more.. (https://www.eqemulator.org/forums/showthread.php?t=22667)

Magoth78 05-07-2007 04:45 AM

hehe, that's true :) the bots re working correctly now though... it becomes easy to do certain pulls that are riskys with a real group.

Concerning the sources, I'm making them cleans, commenting everything and pointing out the lines where I think I've made mistakes.

They will be soon available.

Mag

Magoth78 05-07-2007 08:52 AM

You can see three source files (the most importants) in the Open sources section. Don't hesitate to give advise, be rude if the code is really too sucky (it's the best way to learn :p ), give your ideas..

I will release a beta version soon so you guys can try the bots. I would really like to finish all the things that are group related so we can start to focus on raids.

Just a little resume of the actual features:

1) Commands:
#bot help / #bot help create = shows the help
#bot create [name] [class] [race] [gender] = create your bot
#bot list = show the list of all the available bots
#bot spawn [Bot ID] = spawn yours bots (you can have the IDs with #bot list)
#bot group add [target] = make your targetted bot joining the group
#bot group remove [target] = remove the targetted bot from your group
#bot inventory list [target] = show the inventory of your targetted bot
#bot inventory remove [slotid] [target] = remove an item in the given slot of your targetted bot
#bot update [target] = update your bot (necessary once you've gained a level)

2) In-game
Since the start, you are able to create your bots and make them joining your group. Actually, the exp rate isn't based on the number of bots you have. So, you can set it to 0.3 (variable table) wich is fair.

3) After a level
Target all your bots and "#bot update" them so they will also gain power/spells.

4) Fighting in a closed place
As the bots don't stay packed and split, be careful to not stay too near of a wall. Else, if there is a bot in a wall, it will not assist you if you have the aggro.

5) If you want to play a CC, don't be surprised if the bots break your mezz's :D yes, the CC'ing isn't implemented yet and, in the actual state, the bots will always attack the mob that has the most aggro on you. That will be changed as I would like to make the bots always assist the main tank of the group. This way, it will be easier to CC or to make a bot able to do some CC.

to be continued,
Mag

dudeman123 05-07-2007 09:49 AM

Just a quick question to Magoth78, but before that, let me bow before you. (/bows) Well, how would a novice like me implement this beauty and work of art that you created to a guide like this
eqemu 0.7.0 guide

Arex 05-07-2007 06:13 PM

I have any questions Magoth, my char is lvl65, then i would like create 5 bots lvl65, is it possible using command #bot update, or i need use SQL scripting? and other question, bots belong to database (any player can use any bot) or bots belong to players (each player have his own set of bots)?

Thank you!

Magoth78 05-07-2007 09:15 PM

Dudeman, nothing special about installing Eqoffline as it's an eqemu server. You can just use your guide then paste the eqoff binaries (when they will be released) into your eqemu dir. You will have 3 things to add into the database also, nothing else.

Arex, you can create your bot when you want to. If you create them at 65, they will be 65 but use "#bot update" to be sure their stats are upgraded.

Mag

Magoth78 05-08-2007 04:37 AM

Good news, bards bots and group buffs are now working. I'll update the sources on the site, later.

Now, I've to find a way so the bots are following normally and not warping around. Then, I will release the first beta binaries.

G'day,
Mag

Arex 05-08-2007 06:33 PM

great work magoth!

Magoth78 05-10-2007 03:58 AM

Hello,

The first beta binaries have been released.
More info on website.

G'day,
Mag

Arex 05-10-2007 10:44 PM

Magoth, could u release server source code for linux users? Please...

Thank You!

Magoth78 05-11-2007 01:25 AM

I will upload them tonight.

G'day
Mag

Zard 05-12-2007 02:58 AM

Excellent work! Testing it out now. As per some email communication I made the mistake after pasting the files and inserting the SQL of starting my world with the same start.bat I always did, which ended up showing me an error when attempting to type any of the #bot commands. If you find yourself in this boat, then just start with zonedebugpearl.exe and worlddebug.exe instead as per Magoth78's advice in an email from him.

Thanks Mag!

Zard 05-13-2007 05:11 AM

Perhaps I have yet another install issue. The casters do not seem to want to do thier part. Magicians do not cast pets nor help in battles. Most tank classes appear to be working well. Along with the Cleric class who heals me most diligently.
No classes have offered me any type of buff either. Enchanters just hang out like the mages, so do Wizards.
Even without any improvements from what I am experiencing now, it is still nice to have what works. So great job, I'm just letting you know what I am experiencing.

Magoth78 05-13-2007 06:35 AM

Strange, are you sure that you used "#bot create" correctly ?
Are the casters grouped ?

What spellsID do you have on casters bots ? try a #showstats on them

Zard 05-13-2007 08:09 AM

When I do #bot list it show them correctly as thier class.
SpellID's
Working: ( they do everything minus buffs )
Cleric: 1
Ranger: 10

NON-Working ( all below but bard just stand around, bard helps attack melee, but without songs)
Wizard he is spellsID: 514
Magician: 516
Enchanter: 517
Shaman: 518
Bard:11


When I do bot create I use the following for magician example:

#bot create Magic_man 13 6 male

This made a Dark Elf Magician Male with the auto spell ID of 516

Magoth78 05-13-2007 08:32 AM

Your spellsID are fines but if you don't use the latest PEQ database, I'm not sure that they will work.

So first, be sure that you're using the latest PEQ database.
Second, group your bots. The bot AI will only start once the bots are grouped. Else they will do nothing.
If you have a lot of buffers, wait for 4-6mins till everyone in group get buffed.
Then, fight and see if everyone is doing his job.

But, as I've said earlier, when you fight, you must be sure that all your offensives caster bots have a line of sight with the pulled mob. Else, they won't attack and they will wipe their attack list.

Mag

Zard 05-13-2007 09:02 AM

OK, I will give it a shot. I have been using my own database, but I will make a backup just in case I need to add some of my content back in. I will let you know my progress. Thanks.

Zard

tranquiltwist 05-14-2007 10:34 AM

Magoth,

I seem to be having some serious issues getting this up and running on my server. I downloaded your beta binaries and put them in my EQEMU folder, and then ran the http://eqoffline.free.fr/README.txt steps in mySQL. everything went by fine- and then I loaded into my server only to find that "command 'bot' is not recognized."

this is my first undertaking with a server or even with mySQL.. so would it be possible for you or somebody else to write a step by step guide for dummies? It would be really appreciated, as I got super hyped when I read this.

Thank you, Mag. You've given the community something amazing!

-ttw

John Adams 05-14-2007 11:52 AM

I don't know if you've put any effort into the linux/makefiles, but I thought I'd post for you an error I am getting compiling the source under FC4, with gcc 4.0.2:

Code:

npc.o(.text+0x9d1): In function `NPC::Process()':
/home/eqemu/build/EQEmu-EQOffline/zone/npc.cpp:563: undefined reference to `Mob::BOT_Process()'
npc.o(.text+0xa0d):/home/eqemu/build/EQEmu-EQOffline/zone/npc.cpp:565: undefined reference to `Mob::PET_Process()'
npc.o(.gnu.linkonce.r._ZTV3NPC[vtable for NPC]+0x16c): undefined reference to `NPC::Bot_AI_IdleCastCheck()'
npc.o(.gnu.linkonce.r._ZTV3NPC[vtable for NPC]+0x170): undefined reference to `NPC::Bot_AI_EngagedCastCheck()'
pets.o(.gnu.linkonce.r._ZTV3Pet[vtable for Pet]+0x16c): undefined reference to `NPC::Bot_AI_IdleCastCheck()'
pets.o(.gnu.linkonce.r._ZTV3Pet[vtable for Pet]+0x170): undefined reference to `NPC::Bot_AI_EngagedCastCheck()'
horse.o(.gnu.linkonce.r._ZTV5Horse[vtable for Horse]+0x16c): undefined reference to `NPC::Bot_AI_IdleCastCheck()'
horse.o(.gnu.linkonce.r._ZTV5Horse[vtable for Horse]+0x170): undefined reference to `NPC::Bot_AI_EngagedCastCheck()'
collect2: ld returned 1 exit status
make[1]: *** [zone] Error 1
make[1]: Leaving directory `/home/eqemu/build/EQEmu-EQOffline/zone'
make: *** [all] Error 2

I don't know enough C to read what this means, except that something appears to be missing. Like a dependency on the new .cpp file(s) maybe? If you can advise, I'd love to check this out. No hurries. My vacation is over, back to work F/T+ for me! sigh...

Magoth78 05-14-2007 05:35 PM

tranquiltwist> You have to launch worlddebug.exe then zonedebug.exe

John Adams> I didn't try to compile the code under Linux but it seems that you need to add botAI.cpp and petAI.cpp to your project.

Mag

cavedude 05-15-2007 01:45 AM

This is an excellent project, and I can even see a very good use for it in the normal EQ code. One of the biggest problems PEQ has is the players have to multi box to get to the higher content (some players multi box 6 clients at once... how they do it is my question) This code could help with that problem a bit. I have a couple of questions though.

1. Could you tie this system into the rules system so the server op can control how many bots a player can have at once? By level (1-15, 16-35, 36-55, 56-75, just examples) would be wonderful.

2. Could you diff your changes so they can be integrated into the ever changing EQEmu code easily?

Great work, I am impressed with how fast this project became a reality.

John Adams 05-15-2007 07:12 AM

Quote:

Originally Posted by Magoth78
John Adams> I didn't try to compile the code under Linux but it seems that you need to add botAI.cpp and petAI.cpp to your project.

Thanks Mag, I'll check into it and let you know how Linux goes.

tranquiltwist 05-15-2007 07:45 AM

on top of the original world and zone exes? or... alone?

if I run JUST worlddebug and zonedebug I can't zone once i get into the game... and if I run them on top worlddebug.exe crashes.

sorta confused :(

[it says "this zone is not ready to receive visitors yet.. please try again in a few moments."]

I've tried any combo of them... i either get bots and can't zone or i get to zone and no bots. o_O

Zard 05-15-2007 12:32 PM

Quote:

Originally Posted by tranquiltwist
on top of the original world and zone exes? or... alone?

if I run JUST worlddebug and zonedebug I can't zone once i get into the game... and if I run them on top worlddebug.exe crashes.

sorta confused :(

[it says "this zone is not ready to receive visitors yet.. please try again in a few moments."]

I've tried any combo of them... i either get bots and can't zone or i get to zone and no bots. o_O

Just double click on zonedebugperl.exe again, each window = a second, third..ect. available zone.

dudeman123 05-15-2007 01:17 PM

I am having a problem with zonedebugperl.exe. I get this error after i select a character.
HTML Code:

AppName: zonedebugperl.exe        AppVer: 0.0.0.0        ModName: zonedebugperl.exe
ModVer: 0.0.0.0        Offset: 0002034e

I am using
# Fresh Titanium install
# MySQL 4.0.23.
# ActiveState Perl 5.8
# EQEmulator Map Files
# cavedude's ServerPack 3.6
# MySQLCC
-- I added Magoth's exe's to my eq directory... and added those queries from the readme.
My eqemu server works normally. I start with minilogin.exe, then world.exe, then zone.exe. But when I use Magoth's exe's i cant get past the character select screen. I even tried using minilogin.exe with worlddebug.exe and the ZONE.exe and it worked. I tried using minilogin.exe, world.exe and zonedebugperl.exe but zonedebugperl.exe crashed.

>I did not know what logs to include in this post, but if you need more information or logs i will gladly supply them.

Zard 05-15-2007 03:06 PM

Quote:

Originally Posted by dudeman123
I am having a problem with zonedebugperl.exe. I get this error after i select a character.
HTML Code:

AppName: zonedebugperl.exe        AppVer: 0.0.0.0        ModName: zonedebugperl.exe
ModVer: 0.0.0.0        Offset: 0002034e

I am using
# Fresh Titanium install
# MySQL 4.0.23.
# ActiveState Perl 5.8
# EQEmulator Map Files
# cavedude's ServerPack 3.6
# MySQLCC
-- I added Magoth's exe's to my eq directory... and added those queries from the readme.
My eqemu server works normally. I start with minilogin.exe, then world.exe, then zone.exe. But when I use Magoth's exe's i cant get past the character select screen. I even tried using minilogin.exe with worlddebug.exe and the ZONE.exe and it worked. I tried using minilogin.exe, world.exe and zonedebugperl.exe but zonedebugperl.exe crashed.

>I did not know what logs to include in this post, but if you need more information or logs i will gladly supply them.

Try Minilogin.exe, worlddebug.exe,zonedebugperl.exe...I use zonedebugperl.exe twice so that I can move from one zone to another.

tranquiltwist 05-15-2007 04:07 PM

I ended up getting it to work later today.. but the bots do not zone with you. Mag, maybe you should try to make the bots a "pet type" npc so that they zone with their guild leader? they buffed up every time I zoned and restarted the group. Also, when I would try to #bot group remove [target], the zonedebugperl.exe would crash- thus causing the server to hang. :(

so I can run more than one zonedebugperl.exe? hmm..

Zard 05-15-2007 04:20 PM

I also experienced the crash whenever removing bots from the group. I found it easier just to #kill them, but then again, I like decepticons :P

Arex 05-15-2007 06:00 PM

Quote:

John Adams> I didn't try to compile the code under Linux but it seems that you need to add botAI.cpp and petAI.cpp to your project.
I am having exactly the same problem, how can i add that files to project? I am professional developer (I work with java), and i feel stupid asking it, but i am not sure how to do it.

Magoth78 05-15-2007 07:19 PM

Hello,

Cavedude: I will check what I can do with the rules system but that should be doable. Concering the diffs, yes I will post them once I've finished the project.

Now, I'd like to clarify some things up concering the install. In the binaries pack that you can download on the project's website, you can find 3 files (for windows). WorldDebug.exe and ZoneDebug.exe are the standard World.exe and Zone.exe with the EQoffline code changes.
So to make it works, you should make a directory named "old" (by example) and you move your actual world.exe, zone.exe and EmuShareMem.dll in it.
Then, you open the EQoffline package and you extract all the files in your eqemu dir.
Finally, you rename WorldDebug.exe > World.exe and ZoneDebug.exe > Zone.exe.
You will be able to launch your server normally with the bots.

Concerning the Linux compile, I think that botAI.o and petAI.o have to be added into the makefile.common, not sure though. I will try on an Unbuntu when I ll get the time.

Crashing when removing bots from the group happened to me but I thought I had it fixed. Does it happen all the time ? Are you using "#bot group remove <your_target>" ?

About the fact that the bots don't zone with you. Yeah, I didn't make them zone with you. At this time, I even don't know if I can do it. Not sure I will start to work on it in the future though, it's not really a prority. I really want to debug all the basics things first.

Now, about the news. I'm actually leveling a character with bots to see what are the bugs and what I could improve.
I think that all the buffing, healing, DD'ing things are fines.
At the start, I didn't really like the way they follow their leader and how they split once they stop. But, I don't know how I can do otherwise. After all, that's working correctly. The only issue is when we're in a closed place and you have the aggro while they re in a wall, they won't assist. I can make them assist but if I do that I remove the Line of Sight check and the bots can aggro mobs through walls, floors etc... wich is not good.

Now what is not fine to me is the way the mobs assist.
Actually, they attack only if they (each individual bot) or you have the aggro.
Their target is the aggro'd mob that has the most aggro on them or you.
It's not good because if you play a CC class, they will break your mez in 80% of the cases.
I really need advise on how they can assist. What I can do is that they only assist the warrior in your group. And the warrior only attack/assist you.

G'day,
Mag

Arex 05-15-2007 08:15 PM

Quote:

Concerning the Linux compile, I think that botAI.o and petAI.o have to be added into the makefile.common, not sure though. I will try on an Unbuntu when I ll get the time.
I can try it for u on my ubuntu machine, i ll say tomorrow if adding that files to makefile.common compilation is working.

Crow102 05-15-2007 09:01 PM

so to install your bots all I would need to do is extract WorldDebug.exe and ZoneDebug.exe and re-name them the standard World.exe and Zone.exe to my emu directory and thats it? I don't have to change anything with Perl or MYSQL?

Sorry if it sounds like a stupid question, still a little bit of a newbie with this stuff.

Magoth78 05-15-2007 09:16 PM

It's np. Yes, you just have to rename the files in the archive to world.exe and zone.exe

Arex, ok let me know if that works.

Mag

dudeman123 05-15-2007 11:34 PM

Quote:

Originally Posted by Zard
Try Minilogin.exe, worlddebug.exe,zonedebugperl.exe...I use zonedebugperl.exe twice so that I can move from one zone to another.

Still getting an error from zonedebugperl.exe.

tranquiltwist 05-16-2007 03:30 AM

I get an error from zonedebugperl.exe.

Mag-> I recommended the pet class option so that some control of the bots could be had. I'm playing around with this using a wizard... and he continuously dies before the bots even raise an eyebrow, let alone their sword at the aggro. so just like /pet attack helps out monumentally, i think that a #bot command to have [each one or all of them] attack.

Also: Enchanter just stood around in battle... didn't do any CC at all. He buffed, yes, but that was about it. Bard didn't do any songs except when I first invited him. Also had a graphical issue with the rogue... i gave him an Ifir and a discordant dagger of night... and he was running around with a table in his hands. [i fixed this by giving him other weapons]...

Zard 05-16-2007 08:20 AM

Dudeman123 - I would be unable to assist further as I am not sure and would hate to lead you on a goose chase. The previous advice is what works for myself.

Tranquil - Just a thought, do you use a large nuke or spell that would cause mass aggro? Your best bet IMO to play while it is in its current state would be to mem a level 1 nuke and use it for pulling purposes. In higher levels this may even cause more concern tho due to the amount of damage a wiz can take from a high level mob even with the first spree of attacks ( assuming your tank could remove aggro that quckly ). I would pull with a low level spell for minimum aggro, then I would let the tank classes build some aggro before continuing the bombfest. Just my thoughts.

Mag - I am still attempting to set up a PEQ database ( it has changed a lot since I first started and have to familiarize myself with some new database tools to set it up ) I have not forgot to follow up when I hopefully get the bots to buff and casters to assist in attacking.

Arex 05-16-2007 06:57 PM

Quote:

Arex, ok let me know if that works.
it is working doing the changes that u said in makefile.common

I want give u any fails that i have seen...

* When u invite to group to bot, u can see on u bar group the name of bot like "name_bot000", i think that it should be easy remove that three zeros.

* When give to bots equip that they cant use (for example i gave complete velious rogue set to a CLERIC, and the cleric was equiping it...).

* How can i delete a bot? I did it with SQL scripting, but i didnt see any command for it. command remove group to bot, do zone crash.

* what skills have bots?? improve they his skills like a normal player? I think that there is a problem with stats or skills of bots, they are very weaks...

* When you use #update command, u must respawn bot.

* When u spawn a bot, u cant see his equip, but when u invite him to group, the equip is visible.

Magoth78 05-16-2007 10:50 PM

Thanks for the reports,

1) Yes, you see the name of the bot with the number behind their name. I had to do that because a mob is an unique entity with an unique name in the zone. I've tried to add their "clean name" (without the number) in the group bar but it didn't work. That's why I had to keep their full entity name.

2) Hm, a cleric shouldn't be able to wear a rogue set. I've checked into the code and I can confirm it. But what you see is "Thank you for this item, Leader." but in fact, the bot dosn't really equips the item. Did you try to "#bot inventory list (target)" on the bot to see if the rogue set was in its inventory ? Did you see any graphic change ?

3) Actually there is no commands to delete bots. I will add it. What you can do is to delete the field in the npc_types table. You would have to delete the entries in the botinventory table also. But, I will add a command that deletes a bot and its inventory.
Concerning the "#bot group remove (target)" commands crashing the zone, I've seen that you guys have this issue. For some reasons I don't, I will check that asap.

4) Actually bots are exactly like mobs. They hit the same ways the mobs do. For that reason, the way they fight isn't good at all. I have to make them as close as the clients but that's a lot of work to do, really.
As you noticed, some of them are weaks even with crazy weapons. That's why I'm going to write a new Attack() function for the bots. I want to make their dps directly depending of their stuff. I want to make the bots being really weak if they don't have any stuff and tougher with stuffs. Again that's a lot of work.

5) Yes, once updated, a bot must be respawned. When you do a "#bot update (target)" it updates its stats in the database. To make them taking effects, you have to respawn the bot so it has the new stats. I didn't see any other way to do otherwise.

6) Yes, a bot doesn't have any equip and doesn't have any form of AI if it's not grouped. Once you invite it, it loads its AI and equips its own stuff. That's not a bug, just a limitation for the moment.

Thanks again for thoses reports. It looks like I have a lot of work left to do before I begin to work on the raid.

G'day,
Mag

Arex 05-16-2007 11:45 PM

Quote:

2) Hm, a cleric shouldn't be able to wear a rogue set. I've checked into the code and I can confirm it. But what you see is "Thank you for this item, Leader." but in fact, the bot dosn't really equips the item. Did you try to "#bot inventory list (target)" on the bot to see if the rogue set was in its inventory ? Did you see any graphic change ?
i saw graphic change, but like u say, i have checked bot inventory table, and he havent any item...

Zard 05-18-2007 12:33 PM

Finially got time to set up the PEQ database and its working like a charm, excellent job Mag!

John Adams 05-18-2007 02:47 PM

Sadly, I still cannot seem to get into this system. It compiles now, but I think either my database is messed up, or because I am using a Titanium client. I get the old "zone unavailable", which I thought was normally just database.

Sleepy day. I will try again tomorrow.


All times are GMT -4. The time now is 09:10 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.