AchievementTriggerzone.cs
using Sandbox;
public sealed class AchievementTriggerzone : Component, Component.ITriggerListener
{
[Property, Description( "Lowercase letters, numbers and . _ - / only. \nNo spaces or other special characters." )] string AchievementName { get; set; }
[Property] bool SendTime { get; set; } = false;
HighscoreManager highscoreManager;
protected override void OnStart()
{
if ( SendTime )
{
highscoreManager = Scene.Get<HighscoreManager>();
}
}
public void OnTriggerEnter( GameObject other )
{
if ( other.Tags.Has( "player" ) )
{
if ( AchievementName == null ) { Log.Error( $"{GameObject}: AchievementName is null" ); return; }
Sandbox.Services.Achievements.Unlock( AchievementName );
Log.Info( $"{AchievementName} unlocked!" );
if (SendTime)
{
Sandbox.Services.Stats.SetValue(AchievementName+"leaderboard", highscoreManager.TimeSpanSinceGameStart.Seconds);
}
}
}
}