Getting BasePlayer from hook without one?
Let's say I've got a class called PlayerInfo.
public class playerInfo
        {
            public bool isFrozen;
            public Vector3 frozenLocation;
        }​

I'd like to freeze the player from moving. This is the same as teleporting the player to their frozen location every frame right?
So I'm looking at the OnFrame universal hook.
void OnFrame()
        {
            if(playerInfoInstance.isFrozen){
                // don't allow the player to move
                player.Teleport(playerInfoInstance.frozenLocation);
            }

        }​

The problem I'm having is that the OnFrame hook doesn't have a BasePlayer param, so my question is what's the best way to access the BasePlayer info from a hook that doesn't pass it as an argument?

Thanks
p.s: I know there's a OnPlayerInput that does have a BasePlayer param... This is really not me trying to make a frozen plugin but more of looking to understand how oxide works.
There is no concept of a player object in OnFrame, it isn't at all related to players. The only relation above to Oxide would be the OnFrame hook, the rest is Rust. You can look up a BasePlayer using an available list in Rust, or use a hook that provides an object where BasePlayer can be obtained from.
Hi Wulf thanks for replying, could you explain more in detail about obtaining this hook? I can't seem to find anything in the oxide rust API docs.
I'm not really sure which hook you are looking for, but the hooks that we provided are documented in the Docs.

Also, there is a universal Freeze plugin if you want to see a universal example.
Ah so it's a custom hook then to obtain this. Do you know where I can read further into creating custom hooks outside of the ones oxide provides? I'm not really trying to build a freeze plugin persé.
All hooks are provided by Oxide, which you can see in the Docs.
I'll give you an example, take your PlayerList.cs plugin.
You make regular calls to a players.connected but no where in the plugin do you initialize a BasePlayer.
Where is this coming from?
players.Connected comes from Oxide; it contains an enumerable of all players currently connected. It is for IPlayer though, not BasePlayer, but you can get BasePlayer from that via "player.Object as BasePlayer"; though I'd suggest starting with teh basics first.