Eventhough I see the words fixed there, this is how you should solve the problem;
-
Actions
-
Set TransparencyValue = 0.00
-
Custom script: if GetLocalPlayer() != GetTriggerPlayer() then
-
Set TransparencyValue = 100.00
-
Custom script: endif
-
Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with TransparencyValue% transparency
This way, you are creating the actions outside the GetLocalPlayer block, which will never cause a desync.
What you did was creating handles/actions inside the GetLocalPlayer, which possibly could create 2 split servers each time you repeat that action.
Remember,
each time.
Imagine if you have repeat that trigger for at least 10 times ?
It would create a possible of 20 split servers, that's why desync occurs.
But by following this method, it would never cause a desync because you actually create the handles/actions outside the GetLocalPlayer which does not create split server.
Only selected player(s) will get the values inside the GetLocalPlayer block.
Note, setting variables inside GetLocalPlayer does not create a split server, that is why it is safe.
Method Explanation:
1. First, you set 0.00 values for all Players.
2. When you go inside the GetLocalPlayer block, only selected player(s) will get the new set values which are 100.00
3. When you exit the GetLocalPlayer block, simply use the action.
4. Remember, all players initially sets value to 0.00, only player(s) inside the block will get 100.00
5. Which in this case, GetOwningPlayer(GetTriggerUnit()) -> GetTriggerPlayer() gets the 0.00 value, while other player other than GetTriggerPlayer() will get the value 100.00.