trickerer / Trinity-Bots

NPCBots for TrinityCore and AzerothCore 3.3.5
https://github.com/trickerer/TrinityCore-3.3.5-with-NPCBots/
446 stars 148 forks source link

[AC] [Bug] [Core] NPCBOTS sometimes fails to recall the player's location. #795

Open moncat2005 opened 1 month ago

moncat2005 commented 1 month ago

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

Current behaviour

There is frequent feedback: NPCBOTS sometimes fails to recall the player's location.

When this problem occurs, it can be confirmed that the player's employment relationship with npcbots has not been dissolved.

The unrecalled NPCBOTS shows the avatar as black in the team.

This is still the case after players try to go offline and then go online, and NPCBOTS will not be able to return to the player again until worldserver is restarted.

I suspect that the NPCBOTS that cannot be recalled may be stuck in a combat state or in a position.

Normally, after the player goes offline, the employed NPCBOTS should automatically cancel all status and send it back to the respawn point. After the player is online, it is automatically transmitted to the player's location.

Expected behaviour

Hope to find the cause and fix the issue .

Thank you very much!

Crashlog

No response

Steps to reproduce the problem

No specific factor was found that triggered this issue.

TrinityCore or AzerothCore

AzerothCore

Core rev. hash/commit

AzerothCore-wotlk-with-NPCBots f758b14 2024-04-07

Operating system

Ubuntu 18.04

moncat2005 commented 1 month ago

Find some specific factors that trigger this problem:

  1. In some specific map locations, NPCBOTS will enter a combat state where the object of battle is not visible, and the soldier will see the anger value automatically rise to 100%. lost-control-gps combat-hold

  2. At this time, NPCBOTS does not follow the player, and the player cannot recall the combat NPCBOTS by clicking the recall command.

  3. If the NPCBOTS can be found, execute the STOP+Slack instruction on it, and then recall it.

Recommended optimization: for the hired NPCBOTS that the player has gone offline, increase the automatic sending STOP+Slack, complete the exit from the combat state, and then let the npcbots return to the respawn point.

moncat2005 commented 1 month ago

Increase feedback from players: The player accidentally found NPCbots that cannot be recalled in certain specific areas mentioned above. However, these NPCbots are still in battle, useless in executing recalls, and unable to follow employer players. And the level of this trapped warrior NPCbots has been raised to level 80, which is not consistent with the player's level. It should be that this NPCbots is in combat and its experience level has automatically increased to the highest level of 80.

Once this problem occurs at present, unless you find NPCbots to execute the above command and resume following after a remote recall away from a specific location, you will return to the respawn point only through server restart.

trickerer commented 1 month ago

Try after https://github.com/trickerer/AzerothCore-wotlk-with-NPCBots/commit/6fc305b1815705ca6a771f995fa04ca471c18e67

moncat2005 commented 1 month ago

Player feedback again (code version is 5/20):

  1. Normal return to the city of Orgrimmar
  2. All NPCbots are set to stand still
  3. Players go to the dummy to test the attack damage of their equipment
  4. After the player goes offline and goes online again, they find that NPCbots appear again and cannot be recalled
  5. Players can see on the map that the NPC bots partner's logo is located in its original position.
  6. However, the actual players did not see these NPC bots, and the team avatars were all blank. It is possible that they have entered a combat state again. Perhaps the fix code has not fully implemented the NPCbots automatic cancellation of combat status and return to respawn points after players log off?

map-log lost-npc logo-0

trickerer commented 1 month ago

Well even following these steps I cannot reproduce the problem. Far or close, bots return to player properly. Even if I make them stay near the dummy to make them continue attack when I move away, still if I leave combat, logout and log back in bots leave combat and return to their spawn location and then teleport back to player.

I think it could actually be related to the addon you're using and the changes that go with it since you cannot set 'inaction' command state using bot commands or gossip menu. Actually you can, memory fails me.

moncat2005 commented 1 month ago

The plugin is the latest version of NetherBot, so there shouldn't be any issues. I just made language adjustments. Other players have not reported the issue of being unable to recall NPCbots again after the 5/20 update. In order to rule out the possibility of this player's misoperation, I have contacted the player to request assistance in troubleshooting the issue by providing the account and password of the character. After using this character to enter the game, it was true that only one NPC bot was around, and the rest could not be recalled. I tried non hidden, no action, and no more NPC bots to respond to. I also checked the NPC ownership data of the character and confirmed that there are 9 NPC bots present.

Correct it, according to the screenshot above, the warrior is not in battle this time. The map shows it's right beside you, but it's just not visible.

trickerer commented 1 month ago

Correct it, according to the screenshot above, the warrior is not in battle this time. The map shows it's right beside you, but it's just not visible.

If player logs in and party is created then bot actually joins player and teleports, but either can't enter player's map or is restricted by something else. Map shows bot's last location since was noted, means bot was added to group and then teleported

If you have a reliable way to reproduce the issue locally you can try uncomment bot_ai.cpp lines 18278-18279, see if message triggers:

- //ChatHandler ch(master->GetSession());
- //ch.PSendSysMessage("Your bot %s cannot teleport to you. Restricted bot access on this map...", me->GetName().c_str());
+ ChatHandler ch(master->GetSession());
+ ch.PSendSysMessage("Your bot %s cannot teleport to you. Restricted bot access on this map...", me->GetName().c_str());
moncat2005 commented 1 month ago

I discovered an abnormal situation while trying it out myself: Team up with 4 NPCBOTS to go hunting dinosaurs in Arathi Highlands. Suddenly, three remote professions (mages, priests, and shamans) run uncontrollably into the distance. A few minutes later, I recalled the flash that flashed by my side again, but then continued to run towards the distant hills. Then I used the stealth command on NPCBOTS, and Hearthstone returned to Ironforge. After returning to Ironforge, click to cancel invisibility, and 4 NPCBOTS will appear, but 3 ranged professions will continue to run uncontrollably in one direction. At this point, I can only use the action command to prevent the automatic running and leaving of three npcbots. As long as you cancel the action command, it will immediately run away again. Even if I go back to the character selection interface and enter the game again, it's still like this.

The code version for WorldServer is May 20th.

trickerer commented 1 month ago

I remember transports causing this sometimes, but that was long ago. In any case that's a different, unrelated problem

moncat2005 commented 1 month ago

This is completely different from the show of NPCbots on ships a long time ago, when NPCbots were like floating on the deck of a boat and could not be synchronously transmitted. The current NPC bots location issue should be a new one. At the beginning, it is normal for the NPC bot to automatically flash and follow the battle after the player arrives at the scene. After hitting several creatures, three of the NPCbots suddenly started running and left the team, heading towards the mountain until they were out of sight. After a while, these three NPC bots flashed back to the player like a recall, but still continued to run in the same direction.