Ive never been able to figure it out, but you 'should' use the following code styling then dealing with arrayed structs.
Some functions work OK without the seemingly exessive brackets, but other need them. So use em all the time and all will be well.
str_cpy(our_players[i].playername,current_player); <<what you wanted
str_cpy(
(our_players[i]
).playername,current_player); << what you need
Same again in case its not clear as formatted.
str_cpy( our_players[i].playername ,current_player); <<what you wanted
str_cpy( (our_players[i]).playername,current_player); <<what you need
It seems some functions get messed up when trying to access (mostly to change)
individual elements of arrayed structures, Ive had this issue with arrayed strings myself.