Revision Difference
BasePlayer#530539
<cat>Code.Player</cat>⤶
<title>BasePlayer</title>⤶
⤶
This is WIP.⤶
⤶
Knowledge is based on the usage in the sample gamemodes. (I'm not sure if this doc will be approved, but lets find out.)⤶
⤶
# What is BasePlayer⤶
⤶
BasePlayer is an abstract class to define Player behaviour and functions. You can override Methods of BasePlayer to implement custom logic.⤶
⤶
# Abstract Methods⤶
## void Respawn()⤶
Handles what happens on respawn. It's smart to bind the Player Animator, Player Controller and Camera here.⤶
⤶
### Example: Basic spawn⤶
```cs⤶
public override void Respawn()⤶
{⤶
SetModel( "models/citizen/citizen.vmdl" );⤶
⤶
//⤶
// Use WalkController for movement (you can make your own PlayerController for 100% control)⤶
//⤶
Controller = new WalkController();⤶
⤶
//⤶
// Use StandardPlayerAnimator (you can make your own PlayerAnimator for 100% control)⤶
//⤶
Animator = new StandardPlayerAnimator();⤶
⤶
//⤶
// Use FirstPersonCamera (you can make your own Camera for 100% control)⤶
//⤶
Camera = new FirstPersonCamera();⤶
⤶
EnableAllCollisions = true;⤶
EnableDrawing = true;⤶
EnableHideInFirstPerson = true;⤶
EnableShadowInFirstPerson = true;⤶
⤶
base.Respawn();⤶
}⤶
```⤶
⤶
Source: [sbox-minimal MinimalPlayer.cs](https://github.com/Facepunch/sbox-minimal/blob/5bc57dd049b20bbf81ea0602780ccb40099e3aac/minimal/code/MinimalPlayer.cs#L9-L34)⤶
⤶
⤶
## void Tick()⤶
Called every tick, clientside and serverside. You can handle user's inputs here.⤶
⤶
## void OnKilled()⤶
Will be called when player was killed. If you want to stop the player from moving, you should set the `Controller` to `null` in here.⤶
⤶
## void UseFail()⤶
Guess: `UseFail` will be called when the player presses the "use" button, but the interaction fails (for whatever reason).⤶
⤶
By default this plays a sound. ⤶
⤶
## void OnActiveChildChanged( Entity from, Entity to )⤶
Called when the item in the player's hand changed. For example: the player changes his current weapon.⤶
⤶
### Example: Disable current weapon's flashlight on weapon change⤶
```cs⤶
public override void OnActiveChildChanged( Entity from, Entity to )⤶
{⤶
if ( to is Weapon weapon && HasFlashlightEntity )⤶
{⤶
ShowFlashlight( false );⤶
}⤶
⤶
base.OnActiveChildChanged( from, to );⤶
}⤶
```⤶
⤶
Source: [dm98 Player.cs](https://github.com/Facepunch/sbox-hidden/blob/5e72e9d310ee4ab12bbd9fea59c39005af95fefb/code/player/Player.cs#L182-L190)⤶
⤶
⤶
## void PostCameraSetup( Camera camera )⤶
WIP, used in [dm98 Player.cs](https://github.com/Facepunch/dm98/blob/2bebd230696b2a95b53225c22f722545ae41894d/code/Player.cs#L149-L183)⤶
⤶
## void TakeDamage( DamageInfo info )⤶
Gets called when the player takes damage.⤶
⤶
Don't forget to call ``base.TakeDamage( info );`` here if you want the player to take damage.⤶
⤶
### DamageInfo⤶
- `DamageInfo::Damage` - float, the damage amount⤶
- `DamageInfo::HitboxIndex` - integer, the hitbox index (obviously), 0 = head⤶
⤶
⤶
## PlayerController GetActiveController()⤶
WIP, used in [sandbox Player.cs](https://github.com/Facepunch/sandbox/blob/d251c6b6b39f57bba0df7caba1fe81fce06faac8/code/Player.cs#L61-L67)⤶
⤶
## Camera GetActiveCamera()⤶
WIP, used in [sandbox Player.cs](https://github.com/Facepunch/sandbox/blob/d251c6b6b39f57bba0df7caba1fe81fce06faac8/code/Player.cs#L69-L75)⤶
⤶
## PlayerAnimator GetActiveAnimator()⤶
WIP, used in [sandbox Player.cs](https://github.com/Facepunch/sandbox/blob/d251c6b6b39f57bba0df7caba1fe81fce06faac8/code/Player.cs#L77-L82)⤶
⤶
## void StartTouch( Entity other )⤶
Called when the player entity touches another entity. ⤶
⤶
## override bool HasPermission( string mode )⤶
Some sort of custom permission check. Used in [sandbox Player.cs](https://github.com/Facepunch/sandbox/blob/d251c6b6b39f57bba0df7caba1fe81fce06faac8/code/Player.cs#L170-L178)⤶
⤶
⤶
# Examples & References⤶
⤶
- [sbox-hidden Player.cs](https://github.com/Facepunch/sbox-hidden/blob/main/code/player/Player.cs)⤶
- [dm98 Player.cs](https://github.com/Facepunch/dm98/blob/master/code/Player.cs)⤶
- [sandbox Player.cs](https://github.com/Facepunch/sandbox/blob/master/code/Player.cs)⤶
- [sbox-minimal MinimalPlayer.cs](https://github.com/Facepunch/sbox-minimal/blob/master/minimal/code/MinimalPlayer.cs)⤶