Veteran Member
|
03-03-2021
, 07:09
Re: [INC] cmd_targetex(): @all, @ct, @t, @me, @view & more!
|
#5
|
Quote:
Originally Posted by OciXCrom
cmd_targetex() - Advanced Command Targeting
☄ Description
- 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.
☄ API Documentation
☄ Available Arguments
- 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.
☄ Target Flags
- 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
☄ Example
- Here's an example code of how this .inc file can be used to create a simple slap command that supports advanced targeting.
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <targetex>
public plugin_init()
{
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))
{
return PLUGIN_HANDLED
}
new szArg[32], szTarget[32]
read_argv(1, szArg, charsmax(szArg))
new iPlayers[32], iPnum = cmd_targetex(id, szArg, iPlayers, szTarget, charsmax(szTarget), TARGETEX_OBEY_IMM_SINGLE)
if(!iPnum)
{
return PLUGIN_HANDLED
}
for(new i; i < iPnum; i++)
{
user_slap(iPlayers[i], 0)
}
new szName[32]
get_user_name(id, szName, charsmax(szName))
client_print(0, print_chat, "ADMIN %s slapped %s", szName, szTarget)
return PLUGIN_HANDLED
}
- Example usage:
- test_slap @me
- test_slap @all
- test_slap OciXCrom
- test_slap "STEAM_ID"
- test_slap #userid
- test_slap @!alivect
☄ Additional information and download link
|
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[0]).
|
|