Jump to content

Playerbot (archive)


Recommended Posts

excellent good information thanks!

Would it be possible to have the mage not melee the polyd mob? It seemed the others didn't attack polyd mobs not sure why the mage likes to break it's own poly.

:)

I was kinda expecting one of them to yell out LEEEROOOYY at one point.. ;) JK! Overall this is an excellent addition!

Link to comment
Share on other sites

  • Replies 1.8k
  • Created
  • Last Reply

Top Posters In This Topic

excellent good information thanks!

Would it be possible to have the mage not melee the polyd mob? It seemed the others didn't attack polyd mobs not sure why the mage likes to break it's own poly.

:)

I was kinda expecting one of them to yell out LEEEROOOYY at one point.. ;) JK! Overall this is an excellent addition!

Hi,

These are the default attack modes for the bot classes.

priest ranged

mage ranged

warlock ranged

warrior melee

shaman melee

paladin melee

rogue mellee

druid melee

hunter ranged

death knight melee

The bot(s) will try to use these preferred modes. However, you will appreciate that in close combat, ranged weapons cannot be used and they will switch to melee.

Sometimes bot(s) do go haywire, shooting at nothing or running back and forth (stuck in combat mode). Use the reset command to gain contol again. The bot|(s) also have an annoying habit of leaving you in the thick of it. Look around whilst in combat with a 'boss hostile' and they seem to be standing on the sidelines, having a smoke. After you manage to killl the hostile, on your own, they join you again. If you do need them to help, use my favourite :rolleyes: reset command to snap them out of it.

Hope this helps

Link to comment
Share on other sites

Hi Guys,

Revision of get patch (rev.2)

I have now revised the get command to allow mining of minerals and milling of herbs. All bot(s) can do this, as long as they have the relevant skills and in the case of mining, a trusty pick :P

Revision of survey patch (rev.3)

I have also updated the survey command, to behave as I would like. It now filters out used items from the link string list.

To use the revised commands

First use the survey command to detect & display all available gameobjects, local to the bot(s)

/w botname survey //single bot survey

/p survey //party bot survey

This lists all available gameobjects local to the bot(s), in [link string] format. Then hold down the shift key and select the desired [link string] (e.g [Copper Vein]) with your mouse.

/w botname get [Copper Vein]

/p get [silverleaf]

Summary of how it works (pseudo code)

IF ( bot(s) have the necessary skills (i.e mining or herbalism) )

     IF ( [For mining only] bot(s) possess a tool capable of mining (i.e pick or hammer/pick) )

       IF ( bot(s) inventory can hold mined or milled items )

            IF ( bots(s) have the relevant skill level )
            {
                get items;
                update skill level;
            }

Due to the size of these patches, I propose to add them to the code on blueboy, and carry out further development in-situ.

I will updated the code shortly, after merging with the latest MaNGOS.

EDIT: The updated code is now live on blueboy for you guys to use. Feedback would be appreciated.

Hope this helps

Link to comment
Share on other sites

Just a few test with warlock & priest level 30, and few suggestion for the AI:)

- Warlock

its friend (imp, succubus,...) doesn't attack a lot (once in 2 hours)

- priest

belonging to a group he can can heal friends.

Hi,

I have a small guild group, including a warlock and a priest. The warlock's imp invariably instigates attack, although I have him set on defence. Are you sure the imp, succubus, etc.. is configured correctly? Are the demon spells activated or not.

When you say 'heal friends', are these members of the same bot group? As far as I know, if the priest's combat orders are set to heal, it will heal only members of the same bot group and the player master.

Let me know on this thread, my private message box is nearly full.

Cheers

Link to comment
Share on other sites

a little merge conflict with latest mangos core :)

I did try to test with my healer, but in raid mod I encounter a lot of crashes:

Call stack:

Address Frame Function SourceFile

007C1686 00000000 PlayerbotAI::HasAura+16

007C628D 00000000 PlayerbotAI::CastSpell+18D

008DF09D 00000000 PlayerbotPriestAI::DoNextCombatManeuver+EAD

007C2BDA 00000000 PlayerbotAI::DoNextCombatManeuver+1CA

007C5C7E 00000000 PlayerbotAI::UpdateAI+66E

00511697 00000000 Player::Update+F57

004D815B 00000000 Map::Update+DB

004DFB83 00000000 InstanceMap::Update+13

00891E8E 00000000 MapInstanced::Update+DE

006A4558 00000000 MapManager::Update+128

0063F372 00000000 World::Update+7B2

0045605E 00000000 WorldRunnable::run+8E

00923C99 00000000 ACE_Based::Thread::ThreadTask+19

73551B84 00000000 ?invoke@ACE_OS_Thread_Adapter@@UAEKXZ+74

73B43433 00000000 _endthreadex+44

73B434C7 00000000 _endthreadex+D8

77233677 00000000 BaseThreadInitThunk+12

77AE9D72 00000000 RtlInitializeExceptionChain+63

77AE9D45 00000000 RtlInitializeExceptionChain+36

========================

Local Variables And Parameters

Call stack:

Address Frame Function SourceFile

007C1686 00000000 PlayerbotAI::HasAura+16

Local <user defined> 'iter'

Local <user defined> 'this'

punting on symbol spellId

Local <user defined> 'player'

007C628D 00000000 PlayerbotAI::CastSpell+18D

Local <user defined> 'this'

punting on symbol spellId

Local <user defined> 'pSpell'

punting on symbol targetGUID

Local <user defined> 'pTarget'

Local <user defined> 'pSpellInfo'

008DF09D 00000000 PlayerbotPriestAI::DoNextCombatManeuver+EAD

Local <user defined> 'this'

Local <user defined> 'pTarget'

Local <user defined> 'ai'

punting on symbol masterHP

punting on symbol dist

Local <user defined> 'pVictim'

Local <user defined> 'm_group'

Local <user defined> 'm_bot'

007C2BDA 00000000 PlayerbotAI::DoNextCombatManeuver+1CA

Local <user defined> 'this'

007C5C7E 00000000 PlayerbotAI::UpdateAI+66E

Local <user defined> 'pSpell'

Local <user defined> 'this'

Local <user defined> 'p_time'

punting on symbol currentTime

00511697 00000000 Player::Update+F57

Local <user defined> 'this'

punting on symbol p_time

punting on symbol now

Local <user defined> 'pet'

004D815B 00000000 Map::Update+DB

Local <user defined> 'this'

Local <user defined> 't_diff'

Local <user defined> 'updater'

Local <user defined> 'world_object_update'

Local <user defined> 'grid_object_update'

004DFB83 00000000 InstanceMap::Update+13

Local <user defined> 'this'

Local <user defined> 't_diff'

00891E8E 00000000 MapInstanced::Update+DE

Local <user defined> 'this'

Local <user defined> 't'

Local <user defined> 'i'

006A4558 00000000 MapManager::Update+128

Local <user defined> 'iter'

Local <user defined> 'this'

punting on symbol diff

0063F372 00000000 World::Update+7B2

punting on symbol i

Local <user defined> 'this'

punting on symbol diff

0045605E 00000000 WorldRunnable::run+8E

punting on symbol diff

Local <user defined> 'this'

punting on symbol realCurrTime

punting on symbol realPrevTime

punting on symbol prevSleepTime

00923C99 00000000 ACE_Based::Thread::ThreadTask+19

punting on symbol param

Local <user defined> '_task'

73551B84 00000000 ?invoke@ACE_OS_Thread_Adapter@@UAEKXZ+74

73B43433 00000000 _endthreadex+44

73B434C7 00000000 _endthreadex+D8

77233677 00000000 BaseThreadInitThunk+12

77AE9D72 00000000 RtlInitializeExceptionChain+63

77AE9D45 00000000 RtlInitializeExceptionChain+36

========================

Global Variables

Link to comment
Share on other sites

a little merge conflict with latest mangos core :)

I did try to test with my healer, but in raid mod I encounter a lot of crashes:

Hi,

Is this typical of the crash log?

Is there some event that seems to trigger the crash, or are they just random?

If possible, I want to be able to reproduce the crash on my server, so I can work on a fix.

Is it just the healer that causes the crash?

Describe your RAID group and area(s) where crash occurs?

Thanks for the info on the merge conflict, I'll look into that.

Cheers

Link to comment
Share on other sites

I try trop separate each bot for testing.

how I did it with the healer :

- level 30 for everybody

- 4 people in raid mod (no bots) inside a dungeon

- 1 go back to orgrimmar, create a bot, put it inside the raid (5 people)

- tele back to the dungeon (human + bot)

- the healer start to add (I suspect) spell areas to each people of the group and the crash occured

=> the dungeon was scarlet monastery

Link to comment
Share on other sites

Ey blueboy, I've been working abit with this bot and I really liked the idea. I've got some ideas to improve it and I'm really up to help developing it. But first I need time ))

I've done some modifications and as soon as I can I'll show you 'em.

Regards

Link to comment
Share on other sites

Ey blueboy, I've been working abit with this bot and I really liked the idea. I've got some ideas to improve it and I'm really up to help developing it. But first I need time ))

I've done some modifications and as soon as I can I'll show you 'em.

Regards

Hi,

That's great, I look forward to seeing your ideas

Cheers

Link to comment
Share on other sites

I try trop separate each bot for testing.

how I did it with the healer :

- level 30 for everybody

- 4 people in raid mod (no bots) inside a dungeon

- 1 go back to orgrimmar, create a bot, put it inside the raid (5 people)

- tele back to the dungeon (human + bot)

- the healer start to add (I suspect) spell areas to each people of the group and the crash occured

=> the dungeon was scarlet monastery

Hi,

Yes, I'm not sure playerbot was designed to be used like this. Have you tried doing the same with ONE real player and 4 bots. The bot healer should only heal other bots and the botmaster, from the same account. The other human players are on their own. Bots only serve one master. Try setting the bot's command orders to only heal the botmaster or a specific bot.

.bot co bothealer heal botname

or

.bot co bothealer heal botmaster

Hopefully this should prevent the crash. I might need to introduce a condition to prevent bot(s) from casting spells on other human players and then you can safely use the following command order again

.bot co bothealer heal

Hope this helps

Link to comment
Share on other sites

Hi,

Yes, I'm not sure playerbot was designed to be used like this. Have you tried doing the same with ONE real player and 4 bots. The bot healer should only heal other bots and the botmaster, from the same account. The other human players are on their own. Bots only serve one master. Try setting the bot's command orders to only heal the botmaster or a specific bot.

=> using bots like "my way" is the best thing for raid group :)

=> it works well with warrior (druid for example)

=> I suspect the limit is for healers, but is a good debugging way :)

Link to comment
Share on other sites

It would seem really useful to have a bot to fill an empty role in a party or raid group, but I understand that the design philosophy of playerbot is for the use of an individual player.

Is there some technical reason that prevents a playerbot from being coded to assist other players, such as casting heals and buffs, if the bot master chooses? I suspect it might require revising some large portions of code, so the client/server behaves as if the bot were a regular character. This assumes it can even be done, of course.

Link to comment
Share on other sites

It would seem really useful to have a bot to fill an empty role in a party or raid group, but I understand that the design philosophy of playerbot is for the use of an individual player.

Is there some technical reason that prevents a playerbot from being coded to assist other players, such as casting heals and buffs, if the bot master chooses? I suspect it might require revising some large portions of code, so the client/server behaves as if the bot were a regular character. This assumes it can even be done, of course.

Yes you have some dungeon where you have to be at 20 to have a chance to "play"

=> the only way is to merge human with bots

Link to comment
Share on other sites

Yes you have some dungeon where you have to be at 20 to have a chance to "play"

=> the only way is to merge human with bots

Hi ,

mrefire & UnkleNuke

It's certainly something to tackle. As you will appreciate, I am presently doing all the development/support and it can be difficult jump from one thing to the next, particularly as I am unfamiliar with the code as a whole. When I recently looked at the class AI files, I did notice quite a difference in the coding structure. If you say that spells casting works with Druids & Warriors, then perhaps we should use the general code structure of PlayerbotDruidAI.cpp & PlayerbotWarriorAI.cpp as templates for the rest.

Cheers

Link to comment
Share on other sites

Hi ,

mrefire & UnkleNuke

It's certainly something to tackle. As you will appreciate, I am presently doing all the development/support and it can be difficult jump from one thing to the next, particularly as I am unfamiliar with the code as a whole. When I recently looked at the class AI files, I did notice quite a difference in the coding structure. If you say that spells casting works with Druids & Warriors, then perhaps we should use the general code structure of PlayerbotDruidAI.cpp & PlayerbotWarriorAI.cpp as templates for the rest.

Cheers

No problem blueboy

We give you ways of how we use your tool :)

in my example, priets work "sometimes" and "sometimes not", it doesn't allways crash ( !! :) )

but somewhere there is a little "glitch", so this is why I try to give you as much information as I can

Link to comment
Share on other sites

Hey Blueboy... do you mind updating your repo? [9843] created a compile error and i can't seem to find a way to solve this (because of rollType not being an Uint8 anymore but an enumeration)

Hi,

I have just updated the code on blueboy and corrected the error that was causing the compile issue.

A recent change to 'RollType' in the core was the cause of the issue. It also reminded me to update the choice variable to allow for 'disenchant' rolls.

@@ -299,7 +299,7 @@ void PlayerbotMgr::HandleMasterIncomingPacket(const WorldPacket& packet)

for (PlayerBotMap::const_iterator it = GetPlayerBotsBegin(); it != GetPlayerBotsEnd(); ++it)

{

302 - uint32 choice = urand(0,2); //returns 0,1,or 2

302 + uint32 choice = urand(0,3); //returns 0,1,2 or 3

Player* const bot = it->second;

if(!bot)

... ... @@ -309,7 +309,7 @@ void PlayerbotMgr::HandleMasterIncomingPacket(const WorldPacket& packet)

if(!group)

return;

312 - group->CountRollVote(bot->GetGUID(), Guid, NumberOfPlayers, choice);

312 + group->CountRollVote(bot->GetGUID(), Guid, NumberOfPlayers, RollVote(choice));

switch (choice)

{

The code has been merged with MaNGOS[9848] and now compiles without issue.

Hope this helps

Link to comment
Share on other sites

Hi Guys,

I have a new revision for the 'get' command (ver.3). This allows bot(s) to loot almost all gameobjects, (i,e Water Barrels, Food Crates, Chests (locked, requiring lockpicking & unlocked) as well herbs and ore deposits. The exception are special locked chests that require specific keys (e.g Benedict's Chest in Durotar). I can't find a relationship in the database between the chest and the key. The item (Benedict's key) has reference to a spell (6529, Opening Benedict's chest), but it is of no help for the bots. You can of course open this particular chest if you have lockpicking (level 100). I will update the code on blueboy shortly.

Hope this helps

Link to comment
Share on other sites

Goodness knows the amount of effort and time you've already put into the various features we now enjoy. Anything you do beyond the basic bots is icing on the cake and you've already done considerably more than anyone ever dared to hope for with this core mod. Having it work with other player characters would be the birthday candles on top, but there's no hurry. It's bound to be a great deal of work and your focus on enabling more detail in features like get means we either wait or someone else steps up to help implement this feature. You're a super coder, but you're not Superman, after all! :)

Honestly, blueboy, I'd love to help contribute to the development of playerbot. I've only just blown the dust off my old C++ college textbook and trying to muddle my way through chapter one of "Design And Problem Solving With C++".

Expect my first patch sometime in 2011 at this rate. lol ... but I am inspired by you to at least try. :)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use