Jump to content

Playerbot


Recommended Posts

would be easier to make bots learn talents automatically by a preset talent tree?

I mean incorporate in a db some specific builds and give the bot the command to follow one of them...

there is that program, I don't remember the name of it, who let's u improve your character based on what options u gave him... and the thing is that it has ALL the talent specs and glyphs attached ... I am saying this maybe u guys know the program and wish to apply this idea...

Respect

Link to comment
Share on other sites

  • Replies 799
  • Created
  • Last Reply

Top Posters In This Topic

would be easier to make bots learn talents automatically by a preset talent tree?

I mean incorporate in a db some specific builds and give the bot the command to follow one of them...

It won't be easier but I think you'll be happy because that's exactly what we're working on.

there is that program, I don't remember the name of it, who let's u improve your character based on what options u gave him... and the thing is that it has ALL the talent specs and glyphs attached ... I am saying this maybe u guys know the program and wish to apply this idea...

I do know of addons like Talented, and there are some paid addon/guides out there with some more information and talent spec presets but I'm unaware of a free addon or program or website out there with talent specs that calculates best gear (or vice versa), or gives you a set of ideal options to follow (gear/enchants/gems/stats, talents, glyphs, skill/spell rotation, ...) based on a few choices. I you do remember please do let me know.

So far, I have not found anything that did for talent specs what TourGuide did for levelling (and other) guides.

Link to comment
Share on other sites

Yay me! TalentSpec is working (talent wise - glyphs are still ignored).

.bot add Drood

Level 20 druid, 11 free talent points

/w drood talent spec 1

Feral Levelling spec applied - 11 talents learned

/s .level 10

Level 30 druid - talents not applied as he levels (to be implemented)

/w drood talent spec 1

Feral Levelling spec applied - 11 previous talents verified - further 10 talents learned

/w drood talent spec 5

Master warned: talents known that aren't in this talent spec - but that's what "talent reset" is for (thanks blueboy)

TODO (for branch TalentSpec):

* Automatically apply talents at each levelup

* In some way automate glyph acquisition (low on the priority list - not even sure how the bot might get about doing this in a non-cheating way)

* Do a victory dance. Make sure it doesn't end up on youtube.

AFAIK everything else is working as intended.

Link to comment
Share on other sites

I've found rawr and it looks extremely interesting (Rawr 2.3.22 - Source - Latest 3.3.5a release I think - C# using .NET 3.5 I believe) - especially keeping in mind I'm interested in independent PlayerbotAI's who would need equipment. I'm not sure if I'll add those talent specs to PlayerbotAI's TalentSpec branch. The descriptions are very short so I'm not confident in generation a purpose for any of them - plus most appear to be geared towards PvE Raid. But if you're up for the task, have at it :)

In other news, TalentSpec now applies talents automatically as you level. ProTip: TalentSpecs are forgotten once a bot logs off.

.bot add drood

Drood logs on, level 30

/w Drood talent

21 free talent points

/target Drood

/s .level

level 31

/w Drood talent

22 free talent points (because you forgot to apply a talent spec)

/w Drood talent spec 1

Applied talent spec 1, 0 free talent points

/s .level

level 32

/w Drood talent

0 free talent points (extra talent applied)

I'm happy with how TalentSpec acts, as far as I'm concerned it's working as intended. It's still undecided what ideology to use for acquiring Glyphs, so I'll set that as a distant todo (as in, rebranch in the future), pending discussion. What's left is for me to merge master into TalentSpec (after learning how, without breaking anything), and fix the major bug that makes mangosd.exe hang upon shutdown. Beyond that TalentSpec is ready for merging into master, as far as I'm concerned.

Link to comment
Share on other sites

well there few specs that every class must have ... maybe max 3 or six specs ... 2 for each category...

I suggest to do a few things...

- implement in talent specs 1 basic leveling spec + glyphs for each category and class ( ex. 1 for fire 1 for aracane 1 for frost)

- make a random choice for bot (if not commanded by owner) so the bot can choose random a spec to level

for lvl 80:

- I suggest to implement 2 specs for each category of every class ...

- also random (unless owner select his desire) choice by the bot

Also,

- for PVE would be good to make a system like rawr does, bot can optimize his own gear for current spec (gems + ench + glyphs, food, elixir ,etc). This part can be user for further pvp gear optimization

- one more thing that I can suggest is make a table for talent specs so everyone can change or add in it new specs or mod existing ones

The thing that the bot can select random a spec to level makes him more "human"if I can say that...or .. less dependent by his owner... somehow he can think for himself .. and that is a good feeling.. u won't have to think for his gear, enchants ,etc... by the system I suggested upper (rawr like) bot will act more mature as concern the spec and gear.

This is the open road for further bots improvements.. like bots can do their own rotations, cast spells that would help u to not die.. heal u automatically... keep u buffed... ask for buffs.... and much more...

if u like my ideas tell me and I will continue to add new ones and continue to discuss.

In my head I see playerbot an artificial intelligence bot... that can act as his master say or act independent as much "humanly"as possible.

Respect

Link to comment
Share on other sites

First a comment that goes for your entire post - I feel (or hope, at least) we'll migrate to a point where PlayerbotAI has two modes. First, a mode where you can activate your alts as bots (from now on: AltBots). These bots are persistent (because they are in fact your characters on your account). You can build these, gear them, etc. You have total control, but you must also control totally (limited autonomy). Second, a mode with autonomous bots (henceforth: AutoBots). You're short a tank for an instance (or you're waiting too long in LFG), you run into a 3man world quest, your server is full of Horde but no allies (for a battleground), you enter a pvp zone that would otherwise be empty, ... You summon the bot(s) and/or the system does so for (or against?) you, but you otherwise have limited control. On the other hand these autonmous bots are level, gear, talentspec-appropriate by design (if you're level 70 and find yourself needing a tank but have no alts, you wouldn't need to level one from level 1 to level 70 first).

Also a reminder that I speak only for myself, not (necessarily) the other PlayerbotAI collaborators.

well there few specs that every class must have ... maybe max 3 or six specs ... 2 for each category...

I suggest to do a few things...

- implement in talent specs 1 basic leveling spec + glyphs for each category and class ( ex. 1 for fire 1 for aracane 1 for frost)

- make a random choice for bot (if not commanded by owner) so the bot can choose random a spec to level

for lvl 80:

- I suggest to implement 2 specs for each category of every class ...

- also random (unless owner select his desire) choice by the bot

There could probably be a few more talent specs, but I'm personally content with what's available. I won't be adding any myself for a good while, I think. But if you're up to the challenge, I'm certainly willing to explain how. As for your 'random choice'... Yes for AutoBots, no for AltBots.

Also,

- for PVE would be good to make a system like rawr does, bot can optimize his own gear for current spec (gems + ench + glyphs, food, elixir ,etc). This part can be user for further pvp gear optimization

- one more thing that I can suggest is make a table for talent specs so everyone can change or add in it new specs or mod existing ones

Rawr is quite an impressive program but I fear it's use in regards to Playerbot may be limited. Rawr takes a base (what you're wearing now), takes extra information (armory suggestions as well as an extensive database) and suggests improvements for one item slot based on which stats you're missing most.

Since AltBots level with you, it's up to the player to maintain them including gear and such. Granted, a simple (optional) system to automatically equip clearly superior gear would be nice but it's still up to the player to micro-manage, tweak, as well as collect the gear, etc.

For AutoBots (who may come into existence as a naked level 1-80), Rawr may appear to be promising. But there is no 'base' as the bot starts out naked. Second there's an entire database of items to traverse, but no armory. You can't really suggest improvements for any one slot since you're completely free to pick all the equips and thus you must consider the entire package (including soft/hard limits - like +hit becomes useless after a certain point). But most detrimental to Rawr's system is the sheer time and computing power it takes. Taking 10 seconds (or way, way more) to equip a bot (probably stalling all other server functions) is simply unacceptable.

The best solution I have (for now) for the 'AutoBot equipment generation' is to have a small-ish table with gear. The bot would then randomly pick some gear applicable to its level, class and purpose (tank/dps/heal). Unfortunately having this table would make it DB-dependent (you add some equipment. Turns out it's in UDB but not YTDB. oops.). So ideally I guess you would generate this table as a last step in your install (similar to what ad.exe, vmap extractor, mmaps do). At this point it's still an imperfect idea, hopefully I'll be patient a few more weeks and then still be motivated enough to start and finish implementing this :) (Also, this cannot be tested without AutoBots ("summon bot not based on existing character") so it may have to wait until after that).

On a sidenote, does anyone see any use of this for AltBots? Given the assumption of course that they cannot cheat.

The thing that the bot can select random a spec to level makes him more "human"if I can say that...or .. less dependent by his owner... somehow he can think for himself .. and that is a good feeling.. u won't have to think for his gear, enchants ,etc... by the system I suggested upper (rawr like) bot will act more mature as concern the spec and gear.

This is the open road for further bots improvements.. like bots can do their own rotations, cast spells that would help u to not die.. heal u automatically... keep u buffed... ask for buffs.... and much more...

if u like my ideas tell me and I will continue to add new ones and continue to discuss.

In my head I see playerbot an artificial intelligence bot... that can act as his master say or act independent as much "humanly"as possible.

Respect

I do like your ideas. One thing to keep in mind is I am not alone. Maybe my ideal server is one where 1-3 humans play with/against 0-80 bots (WUT?!? 80? ... Think Wintergrasp), but someone else may want a server with 2000 humans and 0-80 bots (perhaps mostly for low-level instances/battlegrounds). And so on. Something else to keep in mind is technical limitations. It should be reasonably possible to make human-esque bots. Have them heal, have the tank use raid icons to mark the first to die or which target the rogue should sap... But how much CPU can a bot draw? Is it necessary/possible to run 500 bots alongside 2000 humans? And so on. Also, how humanlike do you really want them to be? Do you want them to ninja all the instance gear (when you keep rolling greed's)? There's fun to consider as well as being 'humanlike' :)

Hope that clarifies some things. If I misunderstood something feel free to explain further. We're always up for discussion here, so feel free to throw out new ideas. Who knows, someone else may fancy an idea I don't and code it themselves - or perhaps you'll be compelled to :)

Link to comment
Share on other sites

Bug Report:

Problem: mangosd.exe crashes when using "skill learn [skill]"

Moved level 6 Druid bot next to Gennia Runetotem (druid trainer) in Mulgore.

/target Gennia

/w drood skill train

You can learn [Thorns] 95c and [Wrath] 95c. You have 1s99c left.

/w drood skill learn [Thorns]

--> mangosd.exe crashes

Tracked the problem down to PlayerbotAI.cpp line 6226:

TrainerSpell const* trainer_spell = cSpells->Find(spellId);

The spellId used for "skill learn [Thorns]" is spellId = 467... But it looks normal so I doubt it matters.

Also happens on master branch.

Beyond that, stumped. 0 experience so far with spells, this seems like a bad place to start.

Link to comment
Share on other sites

Thanks for the information. I am looking into the matter at present and I'll get back to you once I have an answer.

Does it only crash when learning [Thorns] ?

EDIT This is most peculiar,

I have taken a group of level 6 taurens to Bloodhoof Village and visited Gennia Runetotem

> /p skill train

[Two] whispers: The spells I can learn and their cost:

[Thorns] 94c

5s83c left.

> /w two skill learn [Thorns]

[Two] whispers: I learnt the following spells:

[Thorns]94c

Total of 1 spell learnt, 94c spent.

N.B [Thorns] is the spell link, selected by holding down the shift key and clicking on the link. I'm sure none of you are just typing '[Thorns]'

and I do not question the fact it's happening to you. What we need to do is find out what is different between my system and yours.

My system Compiled on linux, in debug mode

[MaNGOS] 11836

[sD2] 2319

[Database] ytdbase 0.14.3 R606

[Addon] EveryQuest2 // not necessary for playerbot. I am presently testing another patch.

@darkfr3ak Can you elaborate more. I have checked warriors and they learn skill like any other class.

I have a Warrior, which can't learn skills

Speak with you soon

Link to comment
Share on other sites

I for one am glad someone's verified the bug. Keeps me from doubting myself. Also, blueboy, sneaky sneaky editing your post. Almost missed it.

Does it only crash when learning [Thorns] ?

Nope, it crashes on [Wrath] as well.

I have taken a group of level 6 taurens to Bloodhoof Village and visited Gennia Runetotem

The tauren in question had learned the previous skills manually. Also, not just Gennia Runetotem. I visited Thunder Bluff to be certain, still crashes.

N.B [Thorns] is the spell link, selected by holding down the shift key and clicking on the link. I'm sure none of you are just typing '[Thorns]'

Well you are sure now. Also I have a habit to type extra spaces, but made sure to type without as well. Meaning:

I type "/w drood skill learn " then shift+click, making the input "learn{space}{space}[link]". But as I said, I made sure to try with just one space. Identical results.

My system Compiled on linux, in debug mode

[MaNGOS] 11836

[sD2] 2319

[Database] ytdbase 0.14.3 R606

[Addon] EveryQuest2

All tested on WinXP SP3 (32 bit).

[1] Release: [MaNGOS] 11831_02 with mmaps, playerbotai, loot-fix-bt, talentspec

[2] Release: [MaNGOS] 11831_02 with playerbotai (straight clone from master branch)

[3] Debug: [MaNGOS] 11831_02 with playerbotai (straight clone from master branch)

[sD2] 2319

[ACID] 3.0.9

[DB] UDB 402

[Addon] ... *sigh* seriously? A list of at least 50 (148 folders). Also tested disabling them all (for the master branch versions), no difference.

Running the debug version does grant some more information:

Run-Time Check Failure #2 - Stack around the variable szBuff was corrupted.

Also, none of my 3 paladins can get their skills listed (let alone crash the server by trying to learn). "skill train" command returns an empty list of skills, when two paladins have 2 skills to learn and one I bumped to level 10 but still no skills (when there should be at least 10).

So I decided to test the other classes (create, .bot add, /invite, .level 10, .modify money 10000, skill train, skill learn [skill link]):

Warrior, hunter, rogue, priest, shaman, mage, warlock crash the server.

I tried first skill, last skill, one and only skill, single skill, multiple skills, different masters, different trainers, short character names, long character names, (in)ability to afford all skills, ... No dice.

Death knight actually does learn, no problem. Tried levelling, different race, different class (as human controller) but couldn't seem to break it.

Paladins don't crash the server but that's because "skill train" doesn't list anything, so "skill learn" cannot be tested. If, however, I take another paladin, learn the skill, and link it from the spells&abilities tab, "skill learn" does in fact work. But "skill train" still does not, and it's not said "skill learn" would work with skills listed from "skill train".

On an unrelated note, requesting permission to merge talentspec branch into master. I'm done with it, and the mangosd 'hang on shutdown' is apparently just because of debug compile - I have that with core and playerbotai master as well.

On another unrelated note, is there a command to have the bot drop an item? Such as, for example, an extra quest item. Imagine the following scenario: you must collect 5 feathers (quest item, not sellable), your bot has 4/5, the feathers have a 100% droprate. You kill 4 more birds, you let the bot loot them all. The bot will now have 8 feathers, 3 left over after quest turn-in. These items cannot be sold, and I cannot find a "drop item" command, thus they sit there eating bag space until you log in with the bot and manually remove the items.

Unless I just missed the command.

Link to comment
Share on other sites

Hi

Sorry about being sneaky and editing my last post, it's me doing my bit to save the planet, by saving paper :lol:

I have now tested this on my windows server XP (32bit) and it works perfectly with no crashes. I manually leveled my group of Taurens on both servers from 1 the 6, manually learning all spells/skills and doing all quests (where did Saturday go :/ )

Run-Time Check Failure #2 - Stack around the variable szBuff was corrupted

Have you tried removing your client cache. I have had a number of issues in the past with corrupted data in the cache causing crashes. I created a batch file to automatically remove the old cache each time I run the client

@echo off

rd /s /q "e:/program files/world of warcraft/cache"

echo Cache cleared..

wow.exe

worth a try.

Paladins don't crash the server but that's because "skill train" doesn't list anything, so "skill learn" cannot be tested.

I think the next step will be for you and I to meet up in BloodHoof Village. I'm free tomorrow morning at about 11.00am GMT..

Yeah I've got no problems with you merging the 'talentspec' code with portal master.

There was a 'drop' command, but this was related to dropping unwanted quests. If you want to remove quest items, I suggest you occasionaly log the bots in as the player and destroy these items. I'm not sure a dedicated command would be worthwhile.

Speak with you soon

Link to comment
Share on other sites

I manually leveled my group of Taurens on both servers from 1 the 6, manually learning all spells/skills and doing all quests

Did the same - UD Warlock (me), 3 BE paladins, 1 Tauren druid, manually levelled to 4, all spells gotten manually. Levelled to 6, started testing. The other classes I just used .level for the first 3 then just tried with level 1s who apparently already have 1 or 2 spells to learn; None of this appeared to have any effect on testing.

(where did Saturday go :/ )

It went to waiting on the server to re-re-reboot that's where :)

Have you tried removing your client cache. I have had a number of issues in the past with corrupted data in the cache causing crashes.

I don't think I've ever cleared caches, unless perhaps something hinky was going on after a client patch. Still, worth a shot, but no effect. Alas.

Yeah I've got no problems with you merging the 'talentspec' code with portal master.

Good. Merged, removed talentspec branch. Now that's one less to maintain :)

There was a 'drop' command, but this was related to dropping unwanted quests. If you want to remove quest items, I suggest you occasionaly log the bots in as the player and destroy these items. I'm not sure a dedicated command would be worthwhile.

First thing I tried. Got something along the lines of "not a quest", probably.

Anyway, I like polish, taking it easy. Not having to logout, interrupting my gaming session. Arguably, having to command a bot interrupts it anyway, but it's much less intrusive than seeing the wow world disappear for a bit, only to show up as someone else.

Anyway, if you don't feel it's worthwhile, it's up to me. It's certainly made my shortlist :) You'll thank me later ;)

Link to comment
Share on other sites

Hi,

Now that I have slept on this, I was wondering

Did the same - UD Warlock (me), 3 BE paladins, 1 Tauren druid, manually levelled to 4,

none of my 3 paladins can get their skills listed

An intresiting group of characters, if your adventuring in Mulgore. Which paladin trainer are you visiting? The nearest one to my knowledge is in Orgrimmar (Master Pyreanor, Grommash Hold). Surely you are not commuting each time you wish to skill up.

Cheers

Link to comment
Share on other sites

Hey,

I started with my UD warlock. The rest teleported to me. Much to my surprise they didn't pick up the first quest, nor any of the others in the UD starting area (although after the first 3 quests they would be either missing pre-req quests or just plain underlevelled). Leaving the UD starting area I was on track at level 6 (although while doing this alone I have been 7 coming out of this), but my team-mates were level 4, I believe (or perhaps 3). At this point I went to undercity (passing Brill for my own trainer), to use the teleporter there to get to Silvermoon City. Here I would scratch my head as to why "skill train" listed no skills, but figured I'd do it manually since having never seen it in action I figured I just did it wrong and was unable to figure it out.

I wanted to do another starting area since we were supposed to be level 6. Plus reputation discounts are always nice. Since the BE starting area (up to 'level 6' at least) contains mostly BE-race only quests, the viable options were orc/troll starting area or tauren. Having a Tauren, my preference went here. At this point various little things were beginning to annoy me so I cheated and used ".tele Mulgore". At this same moment I started using ".modify speed 2" for regular play and ".modify speed 6" for travel, on the entire party. Bots aren't made to ignore aggro (for 'travel' mode), but then I also wasn't playing as intended.

Coming out of the first Tauren starting area we were all level 6 (myself at level 7). At this point I found the "skill learn" crash.

While testing I relied on .tele to go to the other trainers, but did so both before and after ".bot add". A ".tele" before ".bot add" should have 0 effect on it. I also made sure to test once without ".modify speed" (of course with the trainer furthest away). As for Death Knight testing, first it was with two DKs, next I added my level 1 warrior (a secondary 'master' to ensure it's not my lock's fault) as a bot, who then was teleported (as a bot, so technically summoned) up to the ebon hold, and proceeded to continue testing with him.

Surely you are not commuting each time you wish to skill up.

In different circumstances I would commute every 4 levels (they come so fast anyway and it is quite far), but seeing as I'm doing solo quests with a 5man team I would just ignore the paladins until the end of Mulgore (or until I die).

And while I'm posting anyway, did a few commits to master. Revamped selling output, now it's much more concise yet still comprehensive. If you really want to know which grays were sold exactly, let me know and I'll add it to the config. Knowing has absolutely no practical use though. Also changed some things behind the scenes to make it easier to program for PlayerbotAI as far as processing player commands goes - but nothing regular users would notice. Laid the ground work for a 'help' command so I don't have to keep the readme open. Will hopefully finish that today as well as some more background work.

Link to comment
Share on other sites

Greetings fellow inhabitants of Azeroth.

Some of you may have noticed the new 'help' command, which brings the bot readme into the game. This should help keep you immersed in the game, and to that end I tried to make this command seem as though the bot (rather than an impersonal readme) is explaining things to you.

The help command was the result of some 6 hours of play testing last week. Having to tab out of the game wasn't the only thing that annoyed me, and I'd like to share what else is on my wish list:

  • Help for .bot command: To finish off the in-game help.
  • Colored text: Use colored text to make things more clear. Like the 'command' part of the help, for example. [em]Other parts may still benefit from colored text but I'm satisfied with this wish.[/em]
  • Quest completion notification: I don't want to spam a '/p quest' macro. Why can't bots tell me when they've completed a quest?
  • Auto-Equip: Start out simple - auto-equip white and gray items with greater armor values than already-equiped whites and grays. Expand this function as we go. Didn't 3.3.5a come with gear score? Think I saw mention of it in the LFG mod. This would make expanding this feature easy, methinks.
  • Drop item command: full inventory? Need space for that quest item or a more valuable item? It's time for a 'item drop' command! - see 'help drop'.
  • Auto drop excess quest items: Extension of the wish above, automatically drop excess quest items. Could do this after a quest turn-in, or better yet right after looting (objective: 9 of 8 items should be a hint). Might as well include BoP items that start a quest that's already turned in (like that robot head in Tanaris).
  • Quest subcommands: complete / incomplete, lists only (in)complete quests upon status request. Not quite as useful once 'quest completion notification' (see above) is implemented, but could still be useful in some situations to cut down on chat 'spam'.
  • [optional] increased speed for bots during looting outside of combat: Optional as in a (server) setting in playerbot.conf.
  • Need or Greed?: Bots need far too much. First clue was *everyone* needing Tigerseye. One bot had leatherworking, so arguably he had the right (although it's still bad etiquette). Only reason for bots to ninja is if the humans in the party ninja, and that's really a non-issue for AltBots.
  • Pull command: Tank pulls (furthest ranged attack) a mob, the entire party waits 2 seconds (for the mob to approach you, not other way around) before attacking. To be tweaked once proof-of-concept is out.
  • Human player ('master') healed as ghost: I noticed my bots were trying to heal me when I was a ghost. Waste of mana besides looking... well, not good. Also, perhaps, when the master is dead and bots are as well, the bots should only revive if and when the master does?
  • Druid tweaking: When a tank is present, [Thorns] should only be cast on the tank. For the other party members it causes undesired aggro. Also, a balance druid keeps using catform. Not cool.
  • Skill learn: blueboy's server may do it properly, both my servers still keep crashing no matter what I try. Only other things I can think of is ScriptDev2 wasn't running for him, and he had ytdb instead of UDB. If those don't tell me what's broken, this bug could live for a long, long time.
  • AutoBots: let's not forget AutoBots, independent bots. Create a bot at any level, properly geared and talented for it's purpose, with significant autonomy and limited obedience, allegiance. Current purposes in mind: battlegrounds (both team-mates and enemies - automatic for BG queuing), arenas (opposing teams only), instancing and raids (automatic for LFG queuing), world-quests. Blueboy suggested this 'creating' of bots should come with a (gold) cost, I'm divided on the issue. There would be ways around this, a disconnect would make people feel cheated, ... Perhaps a playerbot.conf setting?
  • PvP mode for bots: does it exist? I've seen mention of dueling and some ground work here and there in the code, but I can't really test it (well that's not entirely true. Two accounts with 9 alts each would fill WSG and be enough to start an AB the other 15man BGs... but that's a lot of work to test something that may not exist). Reckong this would only be really interesting <for most people> once Autobots exist.

Feel free to add to the list, share your own, work on these points yourself. If you do find yourself working on my wish list (and I'm not saying don't, in fact, please do) I would appreciate a heads up so we don't both work on the same thing.

Link to comment
Share on other sites

Hi,

Nice wish list and it certainly gives us plenty to work on. As I already mentioned on PM, there does exist a way to remove unwanted items manually from the bot's inventory. Interestingly, the 'sell' command allows you to donate (for no value) the items to your nearest vendor. This works for both quest and conjured items that would otherwise clog up the bot's inventory. I agree that it would be much better if the bots only received items they require while looting. At present, the looting system uses autostore that pockets everything regardless of need.

To everyone, please contribute. Playerbot is a community project and it need your help ;)

Cheers

Link to comment
Share on other sites

... the 'sell' command allows you to donate (for no value) the items to your nearest vendor.

I will use 'sell' for now (had an inkling it might, and recently noticed the 'sell' command works if any NPC is in the same zone, but hadn't connected the two). Still, it feels an awful lot like cheating. I still want a 'drop item' command (or whatever its name will be).

it would be much better if the bots only received items they require while looting. At present, the looting system uses autostore that pockets everything regardless of need.

I'm not sure which meaning you have in mind. If this is the need vs greed (vs pass) rolls, then /agree. If you mean not looting excess quest items, /disagree. They should loot everything, always (if configured that way, anyway), and drop what they don't need or want. This way there's no problem with items left in skinnable corpses.

To everyone, please contribute. Playerbot is a community project and it need your help ;)

Does asking help? Well, whatever. The more the merrier. I'm on a roll now but who knows when I'll burn out :P

<edit> I feel I've got too many double posts already, so here's an edit:

I would really like a discussion about AutoBots.

1. Do we create actual characters in the database, track those somewhere, etc? This would also need an actual account in the database, etc. It seems pretty intrusive database-wise, and high maintenance.

On the other hand we can keep it all-memory. The methods in Player.cpp (or wherever) get linked to memory for autobots, instead of the database. It's slightly more complicated code-wise but infinitely cleaner DB-wise. The biggest problem I see is keeping these character names 'in use' while the bot is alive (imagine someone creating a character named after an active autobot). This would probably have my preference, perhaps someone has a better idea though.

2. Aside from everything else, bots need names. Since there is no human creating these bots, ... Actually there may be. So the way I see it we have 3 options:

- We have the user input it (and validate it's not in use yet) - not always an option, like enemies in arena/bg. Auto-filled AutoBots for LFG, etc.

- We take it from a static table (but what if we have a table of 300 names, 100 of which are already in use by existing characters, and we need 500 AutoBots?)

- We (semi?-) randomly create names. Will these need to be valid? Or can we say create a character named "123"?

Link to comment
Share on other sites

wow wow wow ... wow...

now my boy u are talking on my language...autobots is automatic playing and thinking for himself?

Something like this: Make 500 accounts and bots will populate your server and everything .. like LFG, auctionhouse, questing, bg's, etc? they will play fair and square..

if that is the meaning..well.. I am your nr1 tester my friend... I freekin love the idea...

just say yes to my question and I'm your man

Respect

Link to comment
Share on other sites

autobots is automatic playing and thinking for himself?

Something like this: Make 500 accounts and bots will populate your server and everything .. like LFG, auctionhouse, questing, bg's, etc? they will play fair and square..

Yes and no. What I've got in mind is less than that - but a good first step towards what you're thinking of.

What I have in mind is temporary bots. You're waiting too long in LFG, the server fills your slots with an autobot that does its purpose and barely listens to you. Doesn't trade with you, takes fair amount of Need rolls (unless you Ninja, hopefully it will adapt to that). Once your instance is done the bot will disappear. (This could be tweaked later to keep instancing, but this particular bot would only be doing instance runs)

Another purpose would be for BGs. You're in the BG queue too long so the game fills the empty slots (both alliance and horde) with autobots. These bots are there for the duration of the BG, and disappear afterwards.

Yet another purpose would be to populate empty zones. You enter Silithus, it was previously empty. The server creates a PvPing bot and a few farming bots. The farming bots don't really do anything (perhaps they answer a /invite, who knows), but they make the server feel less empty. Once the last human player disappears from Silithus, those AutoBots automatically vanish.

I wasn't planning on populating the auction house though. Isn't that what AHBot is for?

Anyway for now I can't start on AutoBot because I'm unsure how to implement it. We're basically creating players (controlled by a bot system rather than a WoW client, but players still), which will need a name (rest can be auto-generated and, more importantly, does not need to be unique). See above for full explanation.

Anyway, yes. With the above addendums.

Link to comment
Share on other sites

Not sure where to put this, this topic may not be the best place but at least the information's out there.

What you will have by the end:

1) Name, at most 254 letters.

2) Class, values -128 to 127.

3) Purpose, up to 32 flags telling playerbot what this talentspec is best used for

4) (up to) 71 talents.

5) (up to) 3 major glyphs

6) (up to) 3 minor glyphs

Creating your own talentspec:

1) Get a talent spec from a talent calculator (or other source)

2) Convert the talent names to talent IDs - using talent.dbc on wiki and/or the talent enums from src/game/playerbot/PlayerbotAI.h:

enum TalentsDeathKnight // 0x020

{

DEATHKNIGHT_BUTCHERY = 1939, // TabId = 398, Tab = 0, Row = 0, Column = 0

DEATHKNIGHT_SUBVERSION = 1945, // TabId = 398, Tab = 0, Row = 0, Column = 1

...

By now you should have 1 to 71 talents, seperate these with a comma ','. If less than 71, put your talents at the front and fill the rest with 0.

Good: 11, 1171, 8899, 0, 0, ...

Bad: 0, 11, ...

Bad: 11, 41, 0, 88, ...

3) Do the same for your 3 major glyphs (using enums and/or GlyphProperties.dbc on the wiki).

4) Do the same for your 3 minor glyphs

5) Purpose(s): See "PlayerbotAI.h" enum TalentSpecPurpose. Please combine hex manually. E.g. 0x00000008 & 0x00000004 & 0x00000020 = 0x0000002C

6) Class Id: See "SharedDefines.h" enum Classes for characters and "PlayerbotAI.h" enum ClassesCombatPets for pets.

7) Build Name: Any string of text NOT containing quote "'". Also recommend against semicolon ';' double quote '"' or new lines. Purely informational for developers and manual talent spec selection.

8.) Time to put everything together:

(NULL,'name',class,purpose,talent_10,talent_11,talent_12,talent_13,talent_14,talent_15,talent_16,talent_17,talent_18,talent_19,talent_20,talent_21,talent_22,talent_23,talent_24,talent_25,talent_26,talent_27,talent_28,talent_29,talent_30,talent_31,talent_32,talent_33,talent_34,talent_35,talent_36,talent_37,talent_38,talent_39,talent_40,talent_41,talent_42,talent_43,talent_44,talent_45,talent_46,talent_47,talent_48,talent_49,talent_50,talent_51,talent_52,talent_53,talent_54,talent_55,talent_56,talent_57,talent_58,talent_59,talent_60,talent_61,talent_62,talent_63,talent_64,talent_65,talent_66,talent_67,talent_68,talent_69,talent_70,talent_71,talent_72,talent_73,talent_74,talent_75,talent_76,talent_77,talent_78,talent_79,talent_80,major_glyph_15,major_glyph_30,major_glyph_80,minor_glyph_15,minor_glyph_50,minor_glyph_70),

for example:

(NULL,'Death Knight Fast Leveling (54/17/0)',6,0x00000006,1939,1939,1945,1945,1945,2217,2217,1948,1948,1948,1941,2086,2086,2086,1943,1942,1942,1942,1953,1953,1953,1943,1943,1943,1943,1944,1944,1944,2015,2015,1960,1960,1960,1936,1936,1955,1955,1955,2259,2259,1957,1958,1958,1958,2015,2034,2034,2034,2034,2034,1950,1950,1950,2031,2031,2031,2020,2020,1973,1973,1973,1973,1973,2042,2042,2042,2042,2042,1971,1971,1938,520,558,524,522,553,555),

Special note: All lines must end with a comma ',' except the last line which must end with a semicolon ';'.

9) Test your new SQL file by inserting it into your database. Fix errors if any (... duh).

10) Test your new talentspec in-game (must be done with a GM account or higher):

.gm on

.bot add Mybot

/w Mybot talent spec errorcheck

Again, must be done with a GM account (or higher) in GM-mode (.gm on). Fix errors (if any). Be sure to re-check - talent spec errorcheck only displays the first error it finds.

There you go, your very own talentspec. Please share it here with the community.

On a sidenote, I've done a little work on AutoBots. Gotten 100k names, english-sounding (or at least pronouncable), 4-12 characters each, letters a-z, no 3 consecutive letters the same. AFAIK that conforms to Blizzard/MaNGOS character naming rules. And of course they are all unique (no duplicates). It would be unwise to generate them in-game as the first 1k names generated only took 2 seconds, but once you have 50k names it takes 1.5 seconds per name to generate, increasing the more names you have. So if you had a popular server with 2k active players, meaning roughly 10k players including offlines, equaling perhaps 40k characters... Just the name generation would lock the server (or a thread, at least) for 1,5 seconds... That would be unacceptable.

100k names should be enough to ensure that no matter what you should be able to have an unused unique name no matter the circumstances, as well as provide some diversity ("Ugh, 'Generictank' again???"). The current structure allows for names to be defined for specific race (because "Beefcake" just works best for a Tauren), classes (Tankadin would be a silly name for a mage), genders (blueboy is pretty exclusively male, methinks), purposes (tank/dps/healer, pvp/pve - because Toughtank works best for tanks... unless you're PVPing), as well as a priority flag - priority names would be picked above all others.

I'll generate a newer version overnight when I'm less annoyed by how slow my PC is running (4 hours... and I just made the process more thorough -> slower). Feel free to let me know how you like them. Unless you don't. If you hate them, feel free to stay quiet ;) <edit> new version is up. Check the sql in the autobot branch if you're interested.</edit>

Link to comment
Share on other sites

It's been a week, time for an update (even if I am, technically, triple-posting).

Community has been quiet so my motivation hasn't been as high, but work has continued. I'm coming up on 3 months development which is generally when my interest in a project goes out all-together, but let's see how far I get with AutoBot before shouting doomsday messages :) Coding for master has been tweaks and bugfixes only, rest of work was on AutoBot.

Updated wishlist - almost none of this is on my 'todo soon' list so if you're feeling the coding bug, have at it.

[feature] [tweaking] [bug]

  • [feature] Auto-Equip: Start out simple - auto-equip white and gray items with greater armor values than already-equiped whites and grays. Expand this function as we go. Didn't 3.3.5a come with gear score? Think I saw mention of it in the LFG mod. This would make expanding this feature easier, methinks.
  • [feature] Auto drop excess quest items: Automatically drop excess quest items. Could do this after a quest turn-in, or better yet right after looting (objective: 9 of 8 items should be a hint). Might as well include BoP items that start a quest that's already turned in (like that robot head in Tanaris).
  • [feature] Auto drop trash items on full inventory: Drop grays, underleveled food/drink, even 'obvious' whites if bags are full and a quest/desirable item comes along.
  • [feature] Pull command: Tank pulls (furthest ranged attack) a mob, the entire party waits 2 seconds (for the mob to approach you, not other way around) before attacking. To be tweaked once proof-of-concept is out.
  • [feature] AutoBots [kennumen - but feel free to pitch in]: independent bots. Create a bot at any level, properly geared and talented for it's purpose, with significant autonomy and limited obedience, allegiance. Current purposes in mind: battlegrounds (both team-mates and enemies - automatic for BG queuing), arenas (opposing teams only), instancing and raids (automatic for LFG queuing), world-quests. Blueboy suggested this 'creating' of bots should come with a (gold) cost, I'm divided on the issue. There would be ways around this, a disconnect would make people feel cheated, ... Perhaps a playerbot.conf setting?
  • [feature] PvP mode for bots: does it exist? I've seen mention of dueling and some ground work here and there in the code, but I can't really test it (well that's not entirely true. Two accounts with 9 alts each would fill WSG and be enough to start an AB the other 15man BGs... but that's a lot of work to test something that may not exist). Reckong this would only be really interesting <for most people> once Autobots exist.
  • [feature] Auto-protect healer: instead of everyone (because I am everyone) forgetting to ".bot co <name> protect <healer_name>", do this automagically. No reason I know of to have the healer hold aggro. Ever.
  • [feature] Professions: List actual professions (like the 'link' button does for your <non-gathering> professions; with skill level, recipes etc) instead of just a link to the spell.
  • [tweaking] Help for .bot command: To finish off the in-game help.
  • [tweaking] Quest completion notification: I don't really want to spam '/p quest' and '/p quest report' macros that much. Why can't bots tell me when they've completed a quest?
  • [tweaking] [optional] increased speed for bots during looting outside of combat: Optional as in a (server) setting in playerbot.conf.
  • [bug] Need or Greed?: Bots need far too much. First clue was *everyone* needing Tigerseye. One bot had leatherworking, so arguably he had the right (although it's still bad etiquette). Only reason for bots to ninja is if the humans in the party ninja, and that's really a non-issue for AltBots.
  • [bug] Human player ('master') healed as ghost: I noticed my bots were trying to heal me when I was a ghost. Waste of mana besides looking... well, not good. Also, perhaps, when the master is dead and bots are as well, the bots should only revive if and when the master does?
  • [bug] Druid: When a tank is present, [Thorns] should only be cast on the tank. For the other party members it causes undesired aggro. Also, a balance druid keeps using catform. Not cool.
  • [bug] Skill learn: Crashes my server. Works great for blueboy. Too lazy to figure it out and will only get less annoying as my bots level. ... But still irks me, so this bug will die someday, as a matter of principle if nothing else.
  • [bug] Collect bug: Sometimes collection of a corpse does not happen. To reproduce bug: take a class with a ranged instant attack (lock's corruption, druid's moonfire, ...). Kill a mob far away from you. Mob dies, bots come to you. Bots start moving to corpse to loot, you aggro another mob. First corpse is removed from lootlist and never gets looted (unless manual intervention with /target corpse -> "get").
  • [bug] Target Unreachable: Had a mob in the sky. Bots couldn't reach but spazzed beneath mob trying to reach it ad infinitum.
  • [bug] Skinning bug: Skinning does not happen if the target isn't empty on the first try. Tough to fix though. Tough but not impossible.
  • [bug] Shaman bug: Shaman uses totems without the actual 'totem tool's. Was grouped with a new shaman (level 2 or 4 or so). The shaman was using earth bind totem, which requires an Earth Totem, which was not in the bot's inventory. Very low on my wishlist, if I even want this fixed at all... But right is right.
  • [bug] Follow-up quest, bots claim "already completed": In Mulgore, did "The Ravaged Caravan". Turned in, got the same-named follow-up, bots proclaim they already completed it. ... But they accepted it fine, so low-priority.
  • [bug] Mining / herbalism is flawed. Mining sometimes does not collect, Herbalism appears to never collect (both work fine when told manually using survey/get).
Link to comment
Share on other sites

Hi Guys,

Some time ago, we had a request to provide bots with the ability to interact with mailboxes. I am now pleased to

announce that I have a working patch ready and I'll push it shortly to the new-ai branch.

The code will allow bots to collect money, items and info (including auctionhouse mail) from a selected mailbox.

I wanted to keep the command syntax simple, yet functional. You can set up a macro for convenience

/p mail inbox [Mailbox]

However, to prevent cheating it is necessary for the player & bots to be within interaction distance of a mailbox.

mail inbox [Mailbox] List all bot mail from selected [Mailbox]

1. Command bots to do a survey for surrounding gameobjects.

/p survey

[Trill] whispers: [Mailbox][Trade Quarter][War Quarter]..

2. Command bots to look in their mail inbox.

/w botname or /p mail inbox [Mailbox]

[botname] whispers: Inbox:

[18] Subject: Auction cancelled: Mild Spices

Items: [Mild Spices]x5

[20] Subject: Auction successful: Copper Ore

Item Sold: Copper Ore

[buyout Sale: 5s 2c]

(Deposit: 1s 0c - Tax: 10c) +

[To Collect 5s 92c ]

[27] Subject: gift from the gods

I thought you could use this

Items: [Red Linen Bag]

[To Collect: 1g 23s 45c ]

mail getcash [MAILID] Gets money from all selected [MAILID]

/w botname mail getcash [27][20]..

[botname] whispers: I received 1g 29s 37c

mail getitem [MAILID] Gets items from all selected [MAILID]

/w botname mail getitem [18][27]..

[botname] whispers: I received item: [Mild Spices]x5

[botname] whispers: I received item: [Red Linen Bag]

All mail will automatically be removed from the mail box after a set number of days (default: 29days). However, if

you wish to tidy up the bots inbox sooner, then

mail delete [MAILID] Delete all selected [MAILID]

/w botname mail delete [18][27][20]

[botname] whispers: Mail [18][27][20] has been deleted.

I do not think it practical to allow bots to send mail, but I hope you will find the existing suite of subcommands

useful. Please test and provide feedback so that we can improve the code.

Link to comment
Share on other sites

kennumen, in spite of the apparent silence, I can assure you the crowd cheers with every release and update. Since most all of us lack the depth of technical skills that both you and blueboy possess, much of the discussion is over our heads, which is why there's the lack of posts. It's hard to take part in such conversation when you feel as if there's nothing worthy to contribute, sort of like being in a room full of nuclear physicists when you've barely managed to grasp algebra. :lol:

So, please, do not take it as lack of interest. I guarantee there's a great many people that love blueboy's Playerbot and would be overjoyed to have autonomous bots like the project you've undertaken. Being able to populate a world with virtual players so one may experience some measure of the multi-player features of retail has been a dream long held by many here. Dungeon groups, raids, arenas, and even battlegrounds seem within reach, thanks to the efforts put forth here.

And now blueboy amazes me yet again by adding the ability for bots to get mail! :cool:

You and blueboy, and the Playerbot pioneers who have come and gone, have enriched hundreds of worlds that exist on small servers across the globe. My own adventures are no longer as isolated or daunting, knowing I can summon forth a party to help me as I explore my own little realm. All of you who have contributed to Playerbot have my heartfelt thanks for adding more knowledge and more fun to my spare hours.

MaNGOS may be just a learning project, but it is one that has given a great deal of happiness and expanded horizons for countless numbers as they've passed through these grand halls where knowledge, skill, dedication, and even love pours forth from so many talented hearts and minds. Stay the course and continue on for as long as you can. Every line of code is a treasure to the rest of us.

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