So here's the scenario:
Each player controls just one type of unit the whole game, when it dies it is respawned in ~10 seconds.
I have observer slots that I would like to utilize if a player drops/leave the game they would be "swapped" but I can't think of a good way to detect if a player has left the game. Thanks in advance!
None.
An artist's depiction of an Extended Unit Death
Have a trigger owned by each player to set a death, and have a computer player reset the deaths each trigger cycle. Players with no deaths are not or no longer in the game.
Example:
Player 1Player 2Player 3Player 4Player 5Player 6AlwaysSet Deaths of Cave for Current Player: Set to 1Preserve Trigger Player 8Player 1 suffered exactly 0 deaths of Cave// Player 1 is not in the game Player 8Player 2 suffered exactly 0 deaths of Cave// Player 2 is not in the game Player 8Player 3 suffered exactly 0 deaths of Cave// Player 3 is not in the game etc.
Player 8AlwaysSet Deaths of Cave for All Players: Set to 0 The reason this works is because triggers owned by players that aren't in the game do not run. So if Player 3 isn't in the game, the trigger to set deaths of Cave for Player 3 won't run, and it will be 0.
Like I mentioned, this will also detect players that were never in the game to begin with. If this is a problem, you can always make a similar system at the very start of the game to check if the player is there.
We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch
Like I mentioned, this will also detect players that were never in the game to begin with. If this is a problem, you can always make a similar system at the very start of the game to check if the player is there.
Or you modify your system to "reset" to 2 (instead of 0) and check for this 2 in the "Player isn't here" triggers.
That way players that never were there will have 0 deaths, and those who were at least present during the first trigger run will cycle through 1 and 2.
This works because setting for "All Players" affects only players that are still in the game.
I guess I don't understand how the trigger for the Player has left game wouldn't fire when the score is set to 0, because how would I ensure the triggers loop back to the set to 1 before the check has fired.
Because with what you said I have:
Player 1Player 2Player 3Player 4Player 5Player 6AlwaysSet Deaths("Current Player", "Protoss Observer", Set To, 1);Preserve Trigger(); Player 8AlwaysSet Deaths("All players", "Protoss Observer", Set To, 2);Preserve Trigger(); Player 8Deaths("Player 1", "Protoss Observer", Exactly, 2);Set Deaths("Player 8", "Protoss Probe", Set To, 1); (For 1-6 I have this trigger)
But the triggers fire at start of game, even if P1-6 are in game.
None.
An artist's depiction of an Extended Unit Death
It's easier conceptually to just have a separate DC to indicate if a player was there at the beginning of the game.
Nude's idea, if I'm reading it correctly, is to have players set deaths to 2 instead of 1, and the reset trigger subtracts 1 death instead of setting deaths to 0. That way, if Player 8 sees a player with exactly 1 death of the unit, it means the player has
just left the game.
Example:
Player 1Player 2Player 3Player 4Player 5Player 6AlwaysSet Deaths of Cave for Current Player: Set to 2Preserve Trigger Player 8Player 1 suffered exactly 0 deaths of Cave// Player 1 is not in the game Player 8Player 1 suffered exactly 1 deaths of Cave// Player 1 just left the game Player 8AlwaysSet Deaths of Cave for All Players: Subtract 1 I also forgot to mention that it's important that the reset trigger in both systems must come after the leave checks; it won't work correctly if you put it above the check triggers. Of course, if you've spent time with trigger firing order, you'd already know this.
Yeah.. I realized that and changed it, forgot to post right away. I wasn't thinking about the trigger execution order, haha.
Sorry
;
Works great, thanks guys
None.