Skip to content
26 changes: 24 additions & 2 deletions managed/CounterStrikeSharp.API/Modules/Commands/CommandInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,29 @@ internal CommandInfo(IntPtr pointer, CCSPlayerController? player)

public string ArgByIndex(int index) => NativeAPI.CommandGetArgByIndex(Handle, index);
public string GetArg(int index) => NativeAPI.CommandGetArgByIndex(Handle, index);


public IEnumerable<string> GetArgs(int startIndex = 0, int endIndex = -1)
{
if (string.IsNullOrEmpty(ArgString))
return [];

string[] args = ArgString.Split(' ', StringSplitOptions.RemoveEmptyEntries);
int lastIndex = args.Length - 1;

startIndex = Math.Clamp(startIndex, 0, lastIndex);
endIndex = Math.Clamp(endIndex < 0 ? lastIndex : endIndex, startIndex, lastIndex);

string[] selectedArgs = startIndex == endIndex
? [args[startIndex]]
: args[startIndex..(endIndex + 1)];

return selectedArgs.Select(arg =>
arg.Length >= 2 && arg[0] == '"' && arg[^1] == '"'
? arg[1..^1]
: arg
);
}

/// <summary>
/// Whether or not the command was sent via Console or Chat.
/// </summary>
Expand Down Expand Up @@ -87,4 +109,4 @@ public void ReplyToCommand(string message)
}
}
}
}
}
Loading