Originally Posted by OciXCrom
cmd_targetex() - Advanced Command Targeting
☄ API Documentation
☄ Available Arguments
- This .inc file adds an advanced version of the default cmd_target() function which allows you to create admin commands that can target players that meet certain criteria.
☄ Target Flags
- Below is a list of all arguments admins can use when using a command created with cmd_targetex().
- The global format for the arguments is: @[!]<argument>[team]
- @aim - targets the player that the admin is aiming at
- @all - targets all players
- @alive - targets alive players
- @bots - targets all bots
- @dead - targets dead players
- @humans - targets all humans
- @me - targets the admin himself
- @spectating - targets the client that the admin is spectating
- @view - targets all clients in the admin's field of view
- In addition, you can also specify a team name if the argument is used to target more than one player, e.g. @alivect or @viewt.
- The admin can also use ! to exclude himself from the target group, e.g. @!all will target all players except the admin who used the command.
- Just like the default cmd_target() function, cmd_targetex() also offers a variety of targeting flags that can be added in the flags argument.
- TARGETEX_NONE - don't use any special flags
- TARGETEX_OBEY_IMM_SINGLE - immunity will be obeyed when using arguments that target a single client
- TARGETEX_OBEY_IMM_GROUP - immunity will be obeyed when using arguments that target a group of clients
- TARGETEX_NO_SELF - doesn't allow the admin to target himself
- TARGETEX_NO_GROUPS - doesn't allow usage of arguments that target a group of clients
- TARGETEX_NO_BOTS - doesn't allow targeting bots
- TARGETEX_NO_ALIVE - doesn't allow targeting alive clients
- TARGETEX_NO_DEAD - doesn't allow targeting dead clients
- Multiple flags can be specified per usage, e.g. TARGETEX_NO_SELF|TARGETEX_NO_ALIVE|TARGETEX_O BEY_IMM_SINGLE
☄ Additional information and download link
- Here's an example code of how this .inc file can be used to create a simple slap command that supports advanced targeting.
register_plugin("MyPlugin", "1.0", "OciXCrom")
register_clcmd("test_slap", "Cmd_Slap", ADMIN_SLAY, "<player|group>")
public Cmd_Slap(id, iLevel, iCid)
if(!cmd_access(id, iLevel, iCid, 2))
new szArg, szTarget
read_argv(1, szArg, charsmax(szArg))
new iPlayers, iPnum = cmd_targetex(id, szArg, iPlayers, szTarget, charsmax(szTarget), TARGETEX_OBEY_IMM_SINGLE)
for(new i; i < iPnum; i++)
get_user_name(id, szName, charsmax(szName))
client_print(0, print_chat, "ADMIN %s slapped %s", szName, szTarget)
- Example usage:
- test_slap @me
- test_slap @all
- test_slap OciXCrom
- test_slap "STEAM_ID"
- test_slap #userid
- test_slap @!alivect
Good job. However, if u want this include to be added to AMXX, it's better if u can provide support for games other than CS 1.6 and CZero, as in CS, for example, spectator is a team, but on HL1 and other goldsrc games it isn't, and from what I've seen teams are only supported on CS. TFC, for example, uses 4 teams, blue, red, yellow and green, however, on most games spectator is detected if pev -> iuser1 and iuser2 are not 0, but on TFC, if pev->team is 0, it means the player is a spectator. So perhaps check if modname is cstrike or czero use the CS teams, otherwise provide support for up to 4 teams, by providing @team1, @team2, @team3 and @team4. If TFC is detected, it could instead be @blue, @red, @yellow and @green, otherwise, up to 4 teams if neither TFC or CS are detected. And I recommend making szModName a static char, and only call get_modname if the string has no size, aka if(!szModName).