@@ -13,33 +13,47 @@ public class GetPlayerDataMethod : ReturningMethod, IAdditionalDescription, ICan
1313 public override string Description => "Gets player data from the key." ;
1414
1515 public string AdditionalDescription =>
16- "WARNING: This method will error if the key doesn't exist. " +
17- $ "Use { NameOfMethod ( typeof ( HasPlayerDataMethod ) ) } to verify if a key exists before calling this method. ";
16+ "It's recommended to set 'default value' argument for you to not get errors when the key doesn't exist " +
17+ "for a given player! ";
1818
1919 public override TypeOfValue Returns => new UnknownTypeOfValue ( ) ;
2020
2121 public string [ ] ErrorReasons { get ; } =
2222 [
23- "Key was not found for the player."
23+ "Key %key% was not found for the player %player_name% ."
2424 ] ;
2525
2626 public override Argument [ ] ExpectedArguments { get ; } =
2727 [
2828 new PlayerArgument ( "player" ) ,
29- new TextArgument ( "key" )
29+ new TextArgument ( "key" ) ,
30+ new AnyValueArgument ( "default value" )
31+ {
32+ Description = "If the key doesn't exist, this value will be returned." ,
33+ DefaultValue = new ( null , "no default value - will error when key doesnt exist" )
34+ }
3035 ] ;
3136
3237 public override void Execute ( )
3338 {
3439 var player = Args . GetPlayer ( "player" ) ;
3540 var key = Args . GetText ( "key" ) ;
3641
37- if ( ! SetPlayerDataMethod . PlayerData . TryGetValue ( player , out var dict ) ||
38- ! dict . TryGetValue ( key , out var value ) )
42+ if ( SetPlayerDataMethod . PlayerData . TryGetValue ( player , out var dict ) &&
43+ dict . TryGetValue ( key , out var value ) )
3944 {
40- throw new ScriptRuntimeError ( this , ErrorReasons [ 0 ] ) ;
45+ ReturnValue = value ;
46+ }
47+ else if ( Args . GetAnyValue ( "default value" ) is { } defaultValue )
48+ {
49+ ReturnValue = defaultValue ;
50+ }
51+ else
52+ {
53+ throw new ScriptRuntimeError (
54+ this ,
55+ ErrorReasons [ 0 ] . Replace ( "%key%" , key ) . Replace ( "%player_name%" , player . Nickname )
56+ ) ;
4157 }
42-
43- ReturnValue = value ;
4458 }
4559}
0 commit comments