NotJustin / SkillAutoBalance

12 stars 3 forks source link

Spawn Issue #40

Closed rcon420 closed 3 years ago

rcon420 commented 3 years ago

This plugin for some reason is messing with server spawn points. People spawn in each other or outside the map for example in the de_nuke u get spawned behind the fence

edit did some tests Auto balance conflicts with a plugin called afk_manager4.smx This bug was reported already in 2020 still not fixed. I just forgot about this issue :). You said that this is not related in the alliedmodders reply #72 but it still in fact happens when I use afk_manager4.smx For now I will swap to another plugin but you might want to take a look if you can to check what is this spawn bug.

Also bug exists only when there are more than 1 real player on the server

NotJustin commented 3 years ago

First, thank you for notifying me of this issue.

However, when describing an issue, you should not say what the cause of the issue is if you do not have clear reproducible steps to cause the issue. I cannot trust what you say causes the issue, because you do not even understand the issue yourself.

This plugin does not conflict with afk-manager4. All afk-manager4 does is move players to spectator. Your issue is when players are spawning. afk-manager4 does not do anything with players when they are spawning. My plugin, on the other hand, does do things when players are spawning. The issue you describe is a bug strictly with my plugin and nothing else.

The current issue with spawnpoints occurs because of a recent change I made.

Let's say a map only has 5 spawnpoints for each team, but you have 10 players on each team (so, 20 players in total on server). Normally, only 5 players would be allowed on each team and the remaining 10 players will be stuck on the "Unassigned" team (they do not show on scoreboard, and when they type it just says *DEAD* <name>: <message>.

The game CSGO itself limits the amount of players who can be alive by the amount of spawnpoints that exist on the map. It does not want to assign more players to teams than there are spawnpoints. I have recently tried to fix this by using a different method of forcing players on a team when they connect to the server.

Before, when a client fully connects to the server, my plugin would have clients do ClientCommand + jointeam to join a specific team, following what this plugin does: https://forums.alliedmods.net/showthread.php?t=321314 . After some experimentation, I realized that the jointeam command is limited by the number of spawnpoints in the map, like what I described above.

To resolve this, I followed what was described here: https://forums.alliedmods.net/showpost.php?p=2706324&postcount=10 , which says to use RequestFrame + ChangeClientTeam. ChangeClientTeam is not limited by the number of spawnpoints.

There are two outcomes if there are more players on a team than there are spawnpoints for the team. The first outcome is, players will spawn inside of each other. This means you should have the convar mp_solid_teammates set to 0 or 2 (0 is not solid, 2 is only solid on top of the heads so you can boost teammates but still walk through them). The second outcome is, players will spawn at the map's origin (0.0, 0.0, 0.0). This occurs if the game has not found any valid spawnpoints for the player. I believe this will only occur if mp_solid_teammates is set to 1.

What I need to do now is check if the convar "mp_solid_teammates" is not equal to 1. If teammates are solid, then I should not force clients onto teams. To get around these issues, you can also check the amount of spawnpoints each of your maps have with spawntools7, and adding more if there are not enough.

NotJustin commented 3 years ago

If you would like to help me confirm the issue, can you tell me what you have the convar mp_solid_teammates set to?

rcon420 commented 3 years ago

If you would like to help me confirm the issue, can you tell me what you have the convar mp_solid_teammates set to?

mp_solid_teammates 2. Thanks for the explanation. Yeah, I understand that is on your side I'm just bad at explaining things :)

rcon420 commented 3 years ago

also, we were at the server only 3 ppl while this happened we should have enough spawns I suppose! And yes it depends on the map either spawn in the other player or outside the map but happens only in the warmups or on the connect.

NotJustin commented 3 years ago

Okay, this sounds consistent with what a player was complaining to me about on a server I help operate.

I will go back to the other method that only uses ClientCommand + jointeam. Need to do more research on how to avoid spawning at the map's origin before switching again.