Set material on client only via event begin play/construction script?

I am not sure if this is a bug or not, but event begin play and the construction script seem to be multicast and it’s confusing me as to how I can work around it.

I’m basically trying to set something up in a multiplayer game where the player’s character is translucent on their client and other players are opaque. I have the materials set up and I can make a function that toggles them on the client, so I know I can switch the materials in an unreplicated fashion, which is what I want. I set the default character material to be opaque and just want something like this (http://puu.sh/ieYts.jpg) which, on the client, should switch the material over to the translucent one, but as it stands, this makes every character translucent because it seems to run the function on every client. I am not sure if I am dumb or missing something, but this seems like it shouldn’t be the case.

If this is a bug, it would be good to know. If not, what can I do to automatically run the function yet only on the owning client? This seems really simple but it’s been pretty frustrating…

I have an workaround:
Duplicate the mesh in the Components box, set one of them to the other material and use Set Only Owner See and Set Only Owner No See for the meshes. This does cause the mesh and animations to be duplicated. This should not be a major issue if you limit the number of players and Mesh polycounts…

A better way would be to give each player a unique ID on connection. This is referenced in post #2 of [Player Index on MultiPlayer - Blueprint Visual Scripting - Unreal Engine Forums][1]

Pretty old post but if anyone has similar question, cleanest solution would be to use ‘Is locally controlled’ function + branch.