So I tried Fixing this without having to bother someone again, But i'm stumped, The Server Command still returns the same error as before when im using%obj= %player.client;
except for when I use
%obj = findClientbyName("SuperFlamininja").player;
Then it only works with the server command and not the GUI, anyways heres the relevant code
function PlayerPowerArmorFrame::T60(%this, %obj)
{
%obj = findClientbyName("SuperFlamininja").player;
%obj.hideNode("T51_Head");
%obj.hideNode("Frame_Head");
%obj.unHideNode("T60_Head");
}
You don't want either. "T60" looks like it's supposed to be a method that takes in a player and then calls the appropriate hide and unhide functions. The %obj in the parentheses after the function name is that player, and using either of those lines of code will overwrite it. Using the first one won't work because %player doesn't exist inside that function, let alone %player.client. The second will technically work, but it'd be hardcoded to select you and nobody else, which isn't what you want. Don't overwrite %obj.
function serverCmdEquipT60Armor(%client)
{
PlayerPowerArmorFrame.T60(%player.client);
}
This part isn't working right either because again, %player is not defined in this function, so you won't be able to get a client from it. Not that you'd want to anyway, because T60 needs a player object to work.
Note how the argument at the top is %client - the user who sent the commandToServer. That's what you have to work with, and the idea is to get their player object from that and hand it off to "T60" so it can do the hiding and unhiding. Shouldn't be too hard to figure that one out.
You should probably also be checking to make sure the player exists and is using the right datablock before you call T60 to prevent errors, and "Equip()" is an extremely ambiguous name for your client script, but one thing at a time here.