Jump to content

Playerbot


Recommended Posts

  • Replies 799
  • Created
  • Last Reply

Top Posters In This Topic

the server said ingame that it is 0380, but actually i am using the newest version

Hi,

O.K I have managed to compile the playerbot code with the latest MaNGOS zero, with alot of chopping. I have no idea what still works, until I have chance to test it out. So please bear with me and I'll post here once I have more news :|

Hope this helps

Link to comment
Share on other sites

Greetings Blueboy and other Bot Developers,

I've been a fan of this work for some time now and am fascinated with what has been accomplished in the solution over the past few years. I was thinking about developing a relative position controller as an academic excercise (Im currently in grad school studying controls), and figured this could be interesting with a squadron of bots. This would probably be more useful in non combat situations when the team is dungeon crawling or navigating a road and could prevent the pile up resulting from all bots tracking an equivalent follow the master command.

For such a real time algorithm, it looks like everthing is in place... master xyz position, bot xyz position, and a 1 hz time update rate with the p_time variable? Also it looks like the mbot relocate command can be used for positioning... what do you think.

Enthusiastic to make a contribution!

Sincerely,

Bramm

<relevant code snippet>

/ This is called from Unit.cpp and is called every second (I think)

void UpdateAI(const uint32 p_time

float x, y, z; pTarget->GetContactPoint(m_bot, x, y, z, 3.666666f);

m_bot->Relocate(x, y, z);

<\\relevant code snippet>

Link to comment
Share on other sites

Hi Bramm,

If you could develop an algorithm to prevent (or reduce) bot collision in crowds, that would be brilliant. Your code snippet looks sound and in theory it should work. I in no way wish to discourage you from having a go, but I must tell you that many have tried before, without success ( there's the challenge ;) )

Possible pitfalls you might find

UpdateAI() can be useful to provide feedback in bot control loops, but should be used with caution. You'll probably find that adjusting the relative position on each cycle of the loop may cause continual undesirable movement in the bots.

Another problem visually is caused because the bots are not solid objects. If two player characters were to collide, they would just bounce off one another. If two bots were to collide, they will merge into one.

If you could post your patches on the forum we'll certainly test them out with pleasure and thanks in advance for your time and interest in playerbot.

Cheers

Link to comment
Share on other sites

Hi,

I will be updating the main playerbot repo and blueboy repo soon. I left them alone until such time that they have got over the teething period (with the addition of AuctionHouseBot) in the core. I have just tried the code from portal with the latest core and it applies without issue.

Good News :P

@All: I am busy at present creating a compatible playerbot patch to work with MaNGOS zero. I have got the patch working and I am just ironing out a few things before I release the code. I will obvoiusly be creating a new repo called portal_zero to hold the revised code.

Hope this helps

Link to comment
Share on other sites

Hi,

I will be updating the main playerbot repo and blueboy repo soon. I left them alone until such time that they have got over the teething period (with the addition of AuctionHouseBot) in the core. I have just tried the code from portal with the latest core and it applies without issue.

Good News :P

@All: I am busy at present creating a compatible playerbot patch to work with MaNGOS zero. I have got the patch working and I am just ironing out a few things before I release the code. I will obvoiusly be creating a new repo called portal_zero to hold the revised code.

Hope this helps

It Would be Great!! Looking forward to it!

Link to comment
Share on other sites

Hi Guys,

Playerbot support for MaNGOS zero is now live @ portalzero

The initial playerbot patch includes additional code from the loot-fix-bt and vendor branches, adjusted to function with MaNGOS zero code.

I have tested the following commands and they all appear to function without issue (Bot flight, SellGarbage and Bot Guy also work).

Commands:

=========

/s .bot add BOTNAME (add character to world)

/s .bot remove BOTNAME

/s .bot co|combatorder BOTNAME COMBATORDER [TARGET]

/invite BOTNAME (bot will auto accept invite)

/t BOTNAME attack (bot will attack selected target, similar to the way a pet can attack)

/t BOTNAME follow (orders bot to follow player; will also revive bot if dead or teleport bot if far away)

/t BOTNAME stay

/t BOTNAME assist (you'll need to be attacking something and the bot only does melee atm)

/t BOTNAME spells (replies with all spells known to bot)/t BOTNAME cast <SPELLID | (part of) SPELLNAME | SPELLLINK>

/t BOTNAME use <ITEM LINK>

/t BOTNAME equip <ITEM LINK>

/t BOTNAME reset (will reset states, orders and loot list)

/t BOTNAME report (bot reports all items needed to finish quests)

/t BOTNAME stats (bot shows available money, free inventory space and estimated item repair costs)

/t BOTNAME survey (bot shows all available gameobjects, within a local perimeter around the bot)

/t BOTNAME find <GAMEOBJECT LINK> (bot will travel to the gameobject location and then wait)

/t BOTNAME get <GAMEOBJECT LINK> (bot will fetch the selected gameobject and then return to the player)

/t BOTNAME quests (List bot's current quests)

/t BOTNAME drop <QUESTLINK> (Drop a quest)

/t BOTNAME orders (Shows bot's combat orders)

/t BOTNAME pet spells (Shows spells known to bot's pet. Autocast spells will be shown in green)

/t BOTNAME pet cast <SPELLID | (part of) SPELLNAME | SPELLLINK>

/t BOTNAME pet toggle <SPELLID | (part of) SPELLNAME | SPELLLINK> (Toggle autocast for a given spell)

/t BOTNAME pet state (Shows current react mode of bot's pet)

/t BOTNAME pet react <(a)ggressive | (d)efensive | (p)assive> (Set bot's pet reaction mode)

/t BOTNAME collect (shows collect subcommand options and current collect status)

/t BOTNAME collect <subcommand(s)> (subcommands can be alone or together [none combat loot objects profession quest])

/t BOTNAME auction (list active bot auctions with <AUCTION LINK>)

/t BOTNAME auction add <ITEM LINK> (creates bot auction)

/t BOTNAME auction remove <AUCTION LINK> (cancels bot auction)

/t BOTNAME bank (lists all items in bot bank)

/t BOTNAME bank deposit (put bot item in bot bank account)

/t BOTNAME bank withdraw (take bot item from bot bank account)

/t BOTNAME sell <ITEM LINK> (sell bot item to vendor)

/t BOTNAME repair all (repairs all damaged bot items)

/t BOTNAME repair <ITEM LINK> (repairs specific bot item)

/t BOTNAME skill (lists all <PROFESSION LINK> bot Primary profession skills)

/t BOTNAME skill train (lists <TRAINING LINK> available class, weapon & profession (Primary or Secondary) skills & spells, from selected trainer)

/t BOTNAME skill learn <TRAINING LINK> (learn selected skill or spell, from selected trainer)

/t BOTNAME skill unlearn <PROFESSION LINK> (unlearn selected primary profession skill & all associated spells)

Please keep us posted if you experience any issues. Here is an example script for you to create a standalone patch.

#!/bin/bash -x

git clone git://github.com/mangos/zero.git portal_zero_patch

cd portal_zero_patch

git fetch git://github.com/blueboy/portalzero.git master:portalzero

git checkout portalzero

HASH=`git log --pretty=oneline | grep -m 1 '\\[z1[0-9]\\{3\\}]' | cut -d " " -f 1`

git diff $HASH > playerbot_zero.patch

Hope this helps

Link to comment
Share on other sites

Every time i attack a mob, all my bots whisper me: What? and lists all the commands i can use! How can i remove this? Or what is the solution?

The commands syntax is displayed whenever you mis-type a command to a specific bot e.g.

Tell [botname]: cust Fireball

It does not display if you mis-type commands to the party

Party: cust Fireball

This was always displayed when a command was misunderstood by playerbot

original 'msg' string

std::string msg = "What? follow, stay, ©ast <spellname>, spells, (e)quip <itemlink>, (u)se <itemlink>, drop <questlink>, report, quests, stats, collect";

I have updated the code to clearly 8o show the syntax for all commands. I know that the code formatting is complex, but the displayed result is better, but I agree annoying.

msg << "What?\\r"

<< " follow, stay, orders, spells,\\r"

<< " cast |cffffffff< |cffFFCC00spellname |cffffffff| |cffFFCC00spellid |cffffffff| |cffFFCC00[spelllink] |cffffffff >|r,\\r"

<< " pet |cffffffff< |cff339900spells\\r"

<< " |cff339900cast |cffffffff< |cffFFCC00spellname |cffffffff| |cffFFCC00spellid |cffffffff| |cffFFCC00[spelllink] |cffffffff>\\r"

<< " |cff339900toggle |cffffffff< |cffFFCC00spellname |cffffffff| |cffFFCC00spellid |cffffffff| |cffFFCC00[spelllink] |cffffffff>\\r"

<< " |cff339900state\\r"

<< " |cff339900react |cffffffff< |cffFFCC00(|cff339900a|cffFFCC00)ggressive |cffffffff| |cffFFCC00(|cff339900d|cffFFCC00)efensive |cffffffff| |cffFFCC00(|cff339900p|cffFFCC00)assive |cffffffff>\\r"

<< " >|r,\\r"

<< " equip |cffFFCC00[itemlink]|r, use |cffFFCC00[itemlink]|r,\\r"

<< " quests, report, drop |cffFFCC00[questlink]|r,\\r"

<< " skill |cffffffff< \\r"

<< " |cff339900train\\r"

<< " |cff339900learn |cffFFCC00[spelllink]\\r"

<< " |cff339900unlearn |cffFFCC00[spelllink]\\r"

<< " |cffffffff>|r,\\r"

<< " stats,\\r"

<< " repair |cffffffff< |cff339900all |cffffffff| |cffFFCC00[itemlink]|cffffffff>|r,\\r"

<< " collect, survey,\\r"

<< " get |cffffffff< |cff339900select corpse |cffffffff| |cffFFCC00[golink] |cffffffff>|r,\\r"

<< " find |cffffffff< |cff339900select corpse |cffffffff| |cffFFCC00[golink] |cffffffff>|r,\\r"

<< " auction |cffffffff< |cff339900add |cffFFCC00[itemlink] |cffffffff| |cff339900remove |cffFFCC00[auctionlink] |cffffffff>|r,\\r"

<< " bank |cffffffff< |cff339900deposit |cffFFCC00[itemlink] |cffffffff| |cff339900withdraw |cffFFCC00[itemlink] |cffffffff>|r,\\r"

<< " sell |cffFFCC00[itemlink]|r";

I realise that in the heat of battle, command mis-typing will happen more frequently. What I will do is revert to the original 'msg' format and only show the syntax menu if you type say

Tell [botname]: help

I will be working on re-introducing command shortcuts (e.g cast [Fireball] or c [Fireball]) to reduce the amount of typing required. I was forced to remove them because the command vocabulary has grown and confusion was caused when the shortcuts were parsed and this led to a crash. Leave it with me.

If you wish to disable this altogether, just comment out the 'msg' contents at the foot of PlayerbotAI.cpp and then re-compile

Hope this helps

Link to comment
Share on other sites

Hi Guys,

I have just merged the code from the loot-fix-bt and vendor branches, with that in the portal master. It goes without saying that it is not necessary to re-apply code from these alpha branches, when building your servers. I have done some tests and it compiles and appears to run without issue. Please let us know if you experience any problems.

Hope this helps

Link to comment
Share on other sites

  • 2 weeks later...

Hi Guys.

I have improved the bot AI, with several changes

  • Increased bot combat efficiency, by improving the success rate of spell casting.

  • Fixed a long term problem where bots would frequently get stuck in spell casting limbo, after combat,
    (e.g. Hunters would aim their ranged weapons & Mages would be poised with fireballs, towards imaginary targets).

  • Bots having ranged combat will now tend to keep their distance from the target, while those having melee combat will go in and tank.

  • I have improved the appearance of bot combat, by removing code causing movement lag/hysteria,
    (e.g. bots appearing to run on the spot or sliding towards the target).

  • The bots now correctly turn and face their targets during combat.
  • Bots can now cast newly learnt spells immediately. There is no longer any need to resummon bots before they can utilize buffs.

If you would like to try this code, I'll be pushing it to the 'alpha' branch new-ai shortly.

Hope this helps.

Link to comment
Share on other sites

Hmm... Patched the new-ai branch into the latest mangos and SD2, and now all mobs are yellow (passive aggro) and I can't aggro any of them - but my pet and my bots can. Anyway, noone's reported this for a week so I probably just did something wrong.

What I'm really posting for is to suggest an additional feature: a 'pull' command. This would mostly be used by tanks, I suspect, but people can be surprisingly creative sometimes so I suggest you don't limit it as such.

  • First the bot commanded to pull does a ranged attack. Wand, throwing knives, (cross)bow/gun - if ammo, spells, ... You can be creative here - prioritizing high threat spells if in tank mode, prioritizing long cast times if the mob hasn't been aggro'd yet, ...
  • At this point do some sort of check whether the target remains stationary (may be difficult - some mobs it's better to wait out an initial spellcast because they actually are melee and will soon come in range - but this would be tweaking). If yes - remains stationary - rescind pull command and issue attack command to party (and of course don't do the next steps)
  • Next all bots in the party/raid act as though the stay command was issued.
  • Finally, once the mob comes close issue attack command to party/raid

There are several ways to improve on this as well. You could have a pullmax command, where the ordered bot would first move to just below the maximum range, lining up the other bots in an appropriate formation and appropriate distance away. Other melees would stand to the left and right, ranged would be a distance away left and right and the healer would be distanced on its own (because unless I'm mistaken this is best: the further away, the less threat is generated, so this would be just in case a ranged aggroes a mob). I can see this would be a lot of work though.

You could also have the bots obey some rules based on raid targets. I'm sure experiences will vary, but for every party/raid i've been in the following held true (and as an example): Skull marks first target, X marks secondary (as in switch to after skull, and/or secondary tank), moon and diamond are crowd control targets.

I have a few more ideas but I won't throw them out there without putting some work into them myself.

Anyway these are only suggestions, take or leave them.

Link to comment
Share on other sites

Hi kennumen,

The playerbot code will not have an effect of how real players react with mobs. If as you say the bots and pets aggro correctly, it must be something else causing this passive behaviour. What other mods are you running?

Interesting suggestion. As I understand, you wish to be able to 'recall' the bots during combat. I have recently been exploring ways to make bot ai more realistic and adaptive to changes in circumstances (e.g. Druids by default have melee attack, although they possess some quite useful ranged spells. If the bots had the ability to switch their attack mode they could be more effective in a fight. This may also be influenced by the status of other party members).

I don't get much chance to play the game myself (having zero raid experience) and I always appreciate input from those who have. I'm not sure how tolerant hostiles would be if provoked by a phased attack. In my experience hostiles will react immediately and do not give up unless you were to turn and outrun them. At which point the 'threat level' will drop sharply, and they would not be further provoked until their status resets. It maybe possible to distract the hostile during attack, by drawing it's fire. Forcing the hostile to repeatedly change it's target (bot presenting a higher threat), but it would be complex to orchestrate. It certainly will be something to consider as we develop the ai further.

Thanks

Link to comment
Share on other sites

Bit of a wall of text, but hopefully that makes it more clear.

The playerbot code will not have an effect of how real players react with mobs. If as you say the bots and pets aggro correctly, it must be something else causing this passive behaviour. What other mods are you running?

I figured as much, but thought I'd mention it anyway. Now that AHbot is core, and loot-bt-fix + vendor is in playerbot, I'm not using any other mods. Of course, there's the possibility it's DB related. Anyway, don't worry about it, I'll look into it later.

Interesting suggestion. As I understand, you wish to be able to 'recall' the bots during combat. I have recently been exploring ways to make bot ai more realistic and adaptive to changes in circumstances (e.g. Druids by default have melee attack, although they possess some quite useful ranged spells. If the bots had the ability to switch their attack mode they could be more effective in a fight. This may also be influenced by the status of other party members).

You mention several good ideas there (reminding me of one I forgot to mention) but none relate to what I suggested.

The pull command would be (mainly?) used in PvE instances and elite world mobs. The whole point of it is to aggro as few mobs as possible, including nearby mobs and patrols. Thus you 'pull' a mob towards you with a ranged attack, waiting for the mob (and as few of his friends as possible) to come to you.

I did go on to a few alternative actions when a pull command is issued, thinking ahead a bit. If you try to pull a mob, first you have the tank (or whomever) cast an attack to aggro the mob. If the mob starts casting, chances are it will never come to you. Two options - run away a bit (in an instance, this would be towards the entrance a.k.a. back to an area previously cleared), until they follow you a bit, thereby 'pulling' them (in relation to their starting position) in a roundabout way, or you could throw caution to the wind and jump in there like a leeroy jenkins. Easiest - for proof-of-concept, before tweaking - would probably be to just pull, [have the system issue a 'stay' command and] wait ~5 seconds, and then [have the system] issue an 'attack' command. If you try to pull a mob and it changes position, chances are it's coming to you (or, albeit unlikely, it's out of range of it's spells). In this case you could simply wait until the mob is within, what, 5 yards, then [have the system] issue an attack command to the party.

What I was trying to explain about healers previously (and I can't say definitively if this (already/still) applies to 3.3.5a mangos) is that threat is increased based on range to the mob. So a tank within 5 yards might get 130% threat to that mob whereas a healer 30 yards away would get 100%. For in-game info on this, I think they added an in-game threat meter, if not, try the Omen addon (should be able to find it at wowinterface - 3.0.9 is the last pre-cataclysm version).

I'm sure you realize the core of any group is the tank and healer. If the healer gets aggro, the tank must go berserk (so-to-speak), or the entire group ([em]almost[/em] always) dies. In that way, imagine a equilateral triangle, each 25 yards distance. Point A has the tank and melee DPS. Point B has the ranged DPS. Point C has the healer(s). If a melee DPS gains aggro on a mob, only that one character is in danger (and, frankly, deserves it for not watching his threat level). Even if a ranged DPS gains aggro, the healer still remains far away from danger. It also helps [us humans] see if a mob is aggroing towards the healer (red alert) or just towards a DPS (... meh, he probably deserved it - assuming the tank's doing his job).

A bit of a lengthy explanation but hopefully that should be all clear now.

On to what you reminded me of, I wonder how difficult it would be to have assist-tanks or assist-healers. A DPS paladin or DPS feral druid who aggro's single mobs that escape the main tank's aggro. A moonkin druid or shadowpriest that heals when the party is in a tough spot. I imagine those would be a few quite difficult algorithms.

I don't get much chance to play the game myself (having zero raid experience) and I always appreciate input from those who have. I'm not sure how tolerant hostiles would be if provoked by a phased attack. In my experience hostiles will react immediately and do not give up unless you were to turn and outrun them. At which point the 'threat level' will drop sharply, and they would not be further provoked until their status resets. It maybe possible to distract the hostile during attack, by drawing it's fire. Forcing the hostile to repeatedly change it's target (bot presenting a higher threat), but it would be complex to orchestrate. It certainly will be something to consider as we develop the ai further.

I barely raided myself. But the raid icons are available in a party and are quite useful, I've found.

As for shuffling threat (I think we misunderstood each other there), there is no doubt that aggro should always be held by a tank, if possible. The only reason I recall to not have a tank pull in an instance is because the tank was a paladin back when their highest range spell/skill was a paltry 20yards. Well, that and silly reasons like player impatience ;)

Thanks

You're joking right? If anything I should be thanking you. So thanks yourself.

Link to comment
Share on other sites

Hi Guys,

I have revamped code related to bot quest management and have a few improvements, that I will shortly push to the 'new-ai' branch.

  • The 'report' command will now monitor quest required creatures and gameobjects in addition to the existing required items.

  • The 'drop' command has been removed and now included as a sub-command in a far more comprehensive 'quest' command.
  • The bots can now undertake class related quests.

The new 'quest' command utilizes the findNearbyCreature() mechanism and bot(s) will approach the nearest questgiver before interacting. I have reduced the creature search radius (i.e. INTERACTION_DISTANCE), to minimize confusion that may occur if two or more questgivers are close together. The user should ideally execute all commands when the bot(s) are within close proximity to the desired questgiver.

  • quest
will show the status of active bot quests, as [Quest link]s (bot(s) do not need to be close to questgiver).

  • quest < list | l >
will show all quests available to bot from the nearest questgiver, as [Quest link]s.

  • quest < drop | d > [Quest Link]
will drop an active bot quest. (bot(s) do not need to be close to questgiver).

  • quest < add | a > [Quest Link]...
will add or start specified ([Quest link]s) quests, obtained from the 'list' sub-command.

  • quest < end | e >
will 'turn in' valid completed quests to the questgiver. The user will also be asked to select rewards, if there is a choice.

I have also improved the 'skill' command by adding an audible response. If bot(s) do not have enough gold the bot will make an announcment, alerting the user. Audible responses only have limited use with playerbot however, as generally alerts occur to more than one bot at a time (e.g. Inventory being full) and bots will tend to talk at once.

You're joking right? If anything I should be thanking you

As I said in my last reply, I do appreciate help from gamers who understand the game better than I, and your information is very useful. So I again thank you for your input and I will endeavour address your suggestions now that I have a clearer understanding.

Hope you all enjoy the changes.

Link to comment
Share on other sites

@ kennumen :

All mobs being neutral, their names appearing as yellow text, is most commonly caused by improper configuration in mangosd.conf. Your trouble is most likely due to having GM mode turned on for your character. You can test this by typing .gm off in the chat console while you're logged in to the game. If the mobs that should be hostile suddenly have their names highlighted in red, after turning off GM mode, then you most likely have the Game Master Settings in mangosd.conf set incorrectly.

These are the settings:

GM.LoginState

GM mode at login

Default: 2 (last save state)

0 (disable)

1 (enable)

Setting the above to zero '0' will ensure you must always enable/disable GM Mode through the console commands, preventing your problem.

@blueboy :

Still loving what you're doing! Playerbot has become a fantastically versatile addition for small servers. It would be even better to see the Playerbot AI eventually encompass Battlegrounds and Arenas, for the extra challenge of PvP combat.

I believe the previous suggestions of using raid markers to prioritize targets for the bots may be a simple method of assigning bots to go after mobs based on types, such as a skull icon marking a target that should be killed first, a moon for targets to be "crowd-controlled" with polymorph or sap, and so forth. It may be there could be specific commands one could add to the list for even greater versatility.

Perhaps Playerbot could benefit from some sort of scripting language to create "programs" that would allow a bot to follow a chain of commands tailored for certain scenarios, which could be activated by something like /t [bOTNAME] script [scriptname]. However, I still hold to the opinion that a UI addon could also achieve a more intuitive, fluid method of control, which could contain such scripts that can be activated by a simple button-click.

Anyone know WoW-lua scripting?

Link to comment
Share on other sites

Hi

I just started using Playerbot and after playing for some time, I noticed that priest wasn't healing at all.

After checking PlayerbotPriestAI.cpp, I noticed that Lesser Heal wasn't used at all and that was the

only healing spell for my low level priest. So I made this simple modification and now he's healing:

----------------

else if (hp < 80 && RENEW > 0 && ai->CastSpell(RENEW, *target))

return true;

// added these 2 lines

else if (hp < 80 && LESSER_HEAL > 0 && ai->CastSpell(LESSER_HEAL, *target))

return true;

else

return false;

} // end HealTarget

----------------

Dunno if that is the best way to do it.

Best regards,

Akuba

Link to comment
Share on other sites

@ kennumen :

... .gm off ...

@blueboy :

Still loving what you're doing! Playerbot has become a fantastically versatile addition for small servers. It would be even better to see the Playerbot AI eventually encompass Battlegrounds and Arenas, for the extra challenge of PvP combat.

I believe the previous suggestions of using raid markers to prioritize targets for the bots may be a simple method of assigning bots to go after mobs based on types, such as a skull icon marking a target that should be killed first, a moon for targets to be "crowd-controlled" with polymorph or sap, and so forth. It may be there could be specific commands one could add to the list for even greater versatility.

You were absolutely right, GM was on. I was under the impression I had one admin and one regular player account but I guess I got fed up of switching pretty quick. Thanks for the advice.

I second that desire for a BG & Arena viability but I feel like an instancing AI is much closer to being finished and shares many of the same building blocks (of things to come as well) so I'm currently throwing my interest behind that :)

As for raid markers, you could do it simply with commands or some sort of automatic list, and eventually that's probably where it's going (the tank generally does the marking so if the tank is a bot...) but you're talking about a complex algorithm there about which targets to mark and how. For now I'd be excited just to see a prototype of the bots following the raid marking 'orders'.

As for your addon idea, it sounds like all you need is an addon supporting very long macros (which, I believe, exists already). Then just look into adapting spell sequences (and/or spell priorities which I believe -only- paladins use) into playerbot sequences. Still, that's some pretty low-level micro-managing you're talking about. Personally I'd get burned out quick and thus am in full support of something like this being automatic. Also, if I understand correctly, most of this is tweaking. Such as - this sequence on that mob, that sequence on that boss, ...

I just started using Playerbot and after playing for some time, I noticed that priest wasn't healing at all.

After checking PlayerbotPriestAI.cpp, I noticed that Lesser Heal wasn't used at all and that was the

only healing spell for my low level priest. So I made this simple modification and now he's healing

Good catch. I checked a few sites but lesser heal is no longer on them (I guess it went away with Cataclysm). As I recall though, at a certain level lesser heal becomes either replaced or just functionally obsolete (by regular HEAL, isn't it?). So your if check should probably include a level check or better yet a check whether that replacement spell has been learnt.

Anyway, very nice work for a quick fix. I would however suggest changing the hp check to something like hp < 50 (because that's health %). Assuming it is HEAL, just change this line:

PLayerbotPriestAI.cpp - aroundabouts line 82

else if (hp < 60 && HEAL > 0 && ai->CastSpell(HEAL, *target))

return true;

// into

else if (hp < 60 && ( (HEAL > 0 && ai->CastSpell(HEAL, *target)) || (LESSER_HEAL > 0 && ai->CastSpell(LESSER_HEAL, *target)) ))

return true;

That way it will simply use the better of the two.

Link to comment
Share on other sites

Hi again

Lesser Heal is priest's starting healing spell and at lvl16 Heal is available.

My C++ skills are non-existent. I have only studied C about 20 years ago and very briefly :)

When I played today, I made priest master of the party and all went better. Before that my master was pally.

I also installed new-ai. It has a problem that crashes server. I will post more info about that tomorrow.

Best regards,

Akuba

Link to comment
Share on other sites

Hi Guys

First of all, I have just pushed the 'revamped bot quest management' code to new-ai branch, as promised. Sorry for the delay, but I had to iron out a few last minute issues with the code. The bot commands should now work much better and I would interested in your comments.

Lets keep the momentum going!

Talking of comments, it's good to read your discussion on future development of playerbot, with regard to Arenas and Battlegrounds support. I would like to help if I can, but it will require your patience and lots of feedback. This is new ground for me and I have not got a clue about gaming in such areas. I will need lots of help, ideally from guys who can program or at least relate their ideas in pseudo code. I have been approached by many who claim that they can rewrite the playerbot ai, but all seem to vanish into the woodwork. I like the idea of building modular code that could be utilized in a macro or scripting environment and so expertise in these areas would also be welcomed.

@Akuba Thanks for your contribution. I plan to include your suggested revision in the new-ai code shortly. I also look forward to hear about this issue, causing your server to crash. I have just pushed revised code to new-ai that may resolve these issues, but if not we'll sort you out ;)

Hope this helps

Link to comment
Share on other sites

Hi Guys

First of all, I have just pushed the 'revamped bot quest management' code to new-ai branch, as promised. Sorry for the delay, but I had to iron out a few last minute issues with the code. The bot commands should now work much better and I would interested in your comments.

Lets keep the momentum going!

Talking of comments, it's good to read your discussion on future development of playerbot, with regard to Arenas and Battlegrounds support. I would like to help if I can, but it will require your patience and lots of feedback. This is new ground for me and I have not got a clue about gaming in such areas. I will need lots of help, ideally from guys who can program or at least relate their ideas in pseudo code. I have been approached by many who claim that they can rewrite the playerbot ai, but all seem to vanish into the woodwork. I like the idea of building modular code that could be utilized in a macro or scripting environment and so expertise in these areas would also be welcomed.

@Akuba Thanks for your contribution. I plan to include your suggested revision in the new-ai code shortly. I also look forward to hear about this issue, causing your server to crash. I have just pushed revised code to new-ai that may resolve these issues, but if not we'll sort you out ;)

Hope this helps

Hi

Have do try your new revision after sending this message :) Keep up the good work!

That crash happened always on the west coast of Westfall. If you kill Murloc Hunter's pet, mangosd will do

Segmentation Fault. Last message on the server console before Segmentation Fault is something about looting. Could be DB issue. I'm using

YTDB_0.14.3_R600_MaNGOS_R11581_SD2_R2151_ACID_R308_RuDB_R39.

Before coming here I noticed that my lvl14 paladin isn't using Seal of Righteousness.

Without Seal of Righteousness, she can't use Judgement of Light or Wisdom.

She is using Blessing of Might and Devotion Aura.

When looting, bots still try to greed or need even when their bags are full.

Best regards,

Akuba

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