ZhengPeiRu21 / mod-playerbots

AzerothCore Playerbots Module
MIT License
194 stars 93 forks source link

PlayerBots spamming the chat #119

Open jrelyt93 opened 1 year ago

jrelyt93 commented 1 year ago

Started up a new game with fresh (level 1) bots. Shortly after logging them all on and inviting them all to the party, they will begin to spam the chat with "(bot name) says something unintelligible." This issue starts gradually at first, but quickly ramps up into a massive amount of chat spam that I've noticed causes game lag after a while.

I've tried restarting the server as well as simply logging the bots off and then back on again, but neither attempted solution fixed the issue.

Also noted: it seems like the bots get stuck trying to speak in chat rather than engaging in combat, so warriors and paladins, in spite of being set to DPS or Tank will stand behind me (a warlock) such that they're just out of range to attack. Rarely will they walk forward to engage in combat.

corker22 commented 1 year ago

i also have this problem i had to gut the source that makes them talk to to get them to shut up. it was bogging the server down bad

htc16 commented 1 year ago

In reality this is a bot quantity problem! Maybe your processor is not able to process everything at the same time. I don't know your computer, but I recommend using minimum bot amount of 1 and maximum bot amount of 20~30 maximum, or your processor will crash!

jrelyt93 commented 1 year ago

Do note that I have the configs such that the randomly generated bots will not load at startup. So the bot issues I am experiencing are via a party of 3, not as a result of random bots generated and running throughout the world. I have tested a little more on this issue and found that having 1 bot in my party will not create the issue, but if I add more than 1 to my party, they will start to spam the chat saying "something unintelligible". I suspect that perhaps the bots are trying to talk to one another for some reason?

corker22 commented 1 year ago

this happens for me only when my alts are in my group? so only 3-4 total in game rest are turned off. i even tried it with only 2 of my alts as bots. they just start chatting that unintelligible thing and once it starts it starts it grows more and more

htc16 commented 1 year ago

image

jrelyt93 commented 1 year ago

Both set to 0, my guy. Also have the following set:

Enable random bot system AiPlayerbot.RandomBotAutologin = 0

Log on all random bots on start AiPlayerbot.RandomBotLoginAtStartup = 0

So, I repeat, there are NO randomly generated bots running around. ONLY the 3 bots that are my player alts. ONLY. The problem persists.

corker22 commented 1 year ago

i think they are replying to themselves but dont have anything to say or know what to say. with the nearby a simple /dance makes them start spiraling right away

drozco commented 1 year ago

I'm seeing the same issue. Seems like if I turn off custom::say strategy for them all, then they start spamming guild chat with blank lines instead, with the same pattern. Still having the same issue now with spamming "something unintelligible" Are you using the Playerbot addon?

jrelyt93 commented 1 year ago

I am using the addon. It's a touch janky sometimes with certain buttons not really working. But I also wonder if that's just because the bots are still level 1-2 and don't have enough options to be a proper tank or anything.

drozco commented 1 year ago

If you only have 2 bots, they just go back and forth one-by-one saying something unintelligible but it really starts to spam chat with 3 bots or more in the group. If you kick one of them offline, they calm down.

jrelyt93 commented 1 year ago

Yeah, I've noticed that as well. My temporary workaround has been to keep parties low (1-2 bots), and kick them and bring them back online if they start to get too chatty. It's worked for now.

htc16 commented 1 year ago

IMG_20221013_165541 find this setting and increase this value, see if it improves spam.

drozco commented 1 year ago

Yeah setting it to 60000, they stop with the emote spam at least for me, but they do still spam guild chat on occasion. Relogging them usually fixes that. Thanks!

htc16 commented 1 year ago

ok, thanks for letting know. I will soon propose this change.

virgo77 commented 1 year ago

Hi! This solution is not working. For me for sure. I tried to put different values like 54000 (15 min) / 60000 (16,66667 min.) / 108000 (30 min.) but the bots seems not to "see" this value. So, they are still yelling and do emote again and again... and the server slows down quickly.

So, I commented this line and... spamming has vanished! The bots are more quiet, but still emote when charging, fighting, etc. There's no interaction between them and it's more simple to play. (EDIT : after some few minutes, it's spamming again... grrrrr)

I'm actually on the latest branches of the 'Playerbot' core and mod.

I stay tuned :)

"Not a good day, have a great day!", ie. Guy, yeah

drozco commented 1 year ago

I presume this value is in ms, so 60000 = 1 minute. Regardless which line did you comment out?

virgo77 commented 1 year ago

Damn, I think you are right Drozco. My big bad! Oo

The line I tried to disable is this one: "AiPlayerbot.RepeatDelay", showed earlier by HTC16. And it semt to work. But it's not.

Note that the conf file is in the './etc/modules/' folder. The same as the original playerbot.conf.dist one. Note sure if it's important :/

drozco commented 1 year ago

Yeah testing this a bit more today, setting that value doesn't prevent the spamming, it just seems to postpone it a little while. Once they start it goes nuts like before.

gamefish commented 1 year ago

same problem here, any fixes?

gamefish commented 1 year ago

Hi guys after a few hours of experimenting, I think I found a workaround. Just modify \mod-playerbots\src\PlayerbotAI.cpp at line 720, add a !message.empty() condition, the final code will look like this:

                                if (!message.empty())
                                {
                                    QueueChatResponse(msgtype, guid1, ObjectGuid(), message, chanName, name);
                                    GetAiObjectContext()->GetValue<time_t>("last said", "chat")->Set(time(0) + urand(5, 25));
                                }

build all, restart the server, been testing for more than 1 hour. it seems the spamming issue has gone, not sure if there will be other issues.

htc16 commented 1 year ago

Hi guys after a few hours of experimenting, I think I found a workaround. Just modify \mod-playerbots\src\PlayerbotAI.cpp at line 720, add a !message.empty() condition, the final code will look like this:

                                if (!message.empty())
                                {
                                    QueueChatResponse(msgtype, guid1, ObjectGuid(), message, chanName, name);
                                    GetAiObjectContext()->GetValue<time_t>("last said", "chat")->Set(time(0) + urand(5, 25));
                                }

build all, restart the server, been testing for more than 1 hour. it seems the spamming issue has gone, not sure if there will be other issues.

Hello!

I tested this setting and it fixed a crash that is occurring, there are no crashes but there is endless crashing because of this. Therefore, from this configuration that the friend posted above solved this problem that I referenced.

@ZhengPeiRu21 I recommend you see the possibility of using it.

gamefish commented 1 year ago

Hi guys after a few hours of experimenting, I think I found a workaround. Just modify \mod-playerbots\src\PlayerbotAI.cpp at line 720, add a !message.empty() condition, the final code will look like this:

                                if (!message.empty())
                                {
                                    QueueChatResponse(msgtype, guid1, ObjectGuid(), message, chanName, name);
                                    GetAiObjectContext()->GetValue<time_t>("last said", "chat")->Set(time(0) + urand(5, 25));
                                }

build all, restart the server, been testing for more than 1 hour. it seems the spamming issue has gone, not sure if there will be other issues.

Hello!

I tested this setting and it fixed a crash that is occurring, there are no crashes but there is endless crashing because of this. Therefore, from this configuration that the friend posted above solved this problem that I referenced.

@ZhengPeiRu21 I recommend you see the possibility of using it.

I've been played a few days with this patch without any crashes, though the bots are still stupid, some of them just stop following me and I have to keep kicking them offline and reactivate them. What kind of crash are you experiencing?

htc16 commented 1 year ago

Before its configuration, the server log filled up with a lot of spam attempts not found, but the server didn't crash but the CPU was in the heights.

ZhengPeiRu21 commented 1 year ago

Thank you for the suggestion. I've implemented the empty message check as suggested, and am looking into adding a config option to reduce the amount of bot chat spamming.

lfox418 commented 1 year ago

Thank you for the suggestion. I've implemented the empty message check as suggested, and am looking into adding a config option to reduce the amount of bot chat spamming.

Problems still exist if (!message.empty() && (isRandomBot && !isPaused && (!urand(0, 20) || (!urand(0, 10) && message.find(bot->GetName()) != std::string::npos))) || (!isRandomBot && (isMentioned || msgtype != CHAT_MSG_CHANNEL || !urand(0, 4))))

somekindofali3n commented 1 year ago

So, for what it's worth, I've notice that this issue exists on Alli and Horde but manifests a bit different on each. On horde, I get bombarded with a ton of emotes from team members asking me to wait or announcing incoming enemies or telling everyone to attack me (lol?). On Alli side I just get a ton of the "unintelligible" emotes. Something about the way this code is built into acore can produce some funky results like me getting hit by members of the other faction when neither of us are flagged for pvp so I'm guessing this is something similar where the game is interpreting those emotes as horde-specific, maybe has something to do with the way these emotes are called/referenced in the code? I am not sure what's prompting the spam as It will happen in the middle of a safe area. I'm guessing there's some logic check in the AI that's falsely flagging on something prompting them to spout battle emotes when not in battle.

I summoned a party of bots to gm island and it still happened so I don't think it's random NPCs as (afaik) there's none there. For me, it does happen with random bots and my alt bots but it seems to be immediate for the alt bots where as it takes a bit of playing for the random bots to dive into madness. The way it scales with the number of members in a party really feels like it's some kind of feedback loop where they're continuously replying to or repeating each other but I don't know anything for sure.

Idk if any of this helps at all but I figured I would provide my experience and observations just in case it might help with troubleshooting. Regardless, I've been having a lot of fun playing around with the bots, goofy as they can be sometimes. Really appreciate the work you're doing ZhengPeiRu21!

Note: My server was freshly built and compiled with a pull from your branch ~2 days ago.

demibug commented 1 year ago

Thank you for the suggestion. I've implemented the empty message check as suggested, and am looking into adding a config option to reduce the amount of bot chat spamming.

Problems still exist if (!message.empty() && (isRandomBot && !isPaused && (!urand(0, 20) || (!urand(0, 10) && message.find(bot->GetName()) != std::string::npos))) || (!isRandomBot && (isMentioned || msgtype != CHAT_MSG_CHANNEL || !urand(0, 4))))

这段代码可能有问题,我尝试修复了一下: if (!message.empty() && ((isRandomBot && !isPaused && (!urand(0, 20) || (!urand(0, 10) && message.find(bot->GetName()) != std::string::npos))) || (!isRandomBot && (isMentioned || msgtype != CHAT_MSG_CHANNEL || !urand(0, 4)))))

改成这种就可以了