RPC Issues / Questions

A server function will never not be ROLE_AUTHORITY. This means your condition that checks if its less than that will never be true because its called on the server.

This condition will only ever be useful if you call it from a function that can be called by either a server or a client, or authority or remote.

You could do something like:

void MyActor::GiveGold(int Amount)
{
    if(Role < ROLE_AUTHORITY)
    {
       // Client called this function, call server function
       ServerGiveGold(Amount);
    }
    else
    {
      // Always called from the authority here
      PlayerController->GiveGold(Amount);
    }
}

void MyActor::ServerGiveGold_Implmentation(int Amount)
{
    // Always server, when it calls GiveGold, it will be authority
    GiveGold(Amount);
}