Официалният форум на iPlay.bg 

Всякакви уроци свързани с PAWN - изработката на плъгини за AMX Mod X.
 #440279  от OciXCrom™
 вт мар 02, 2021 9:29 pm
Изображение

cmd_targetex() - Advanced Command Targeting

Изображение
Описание
  • Този .inc файл добавя напреднала версия на cmd_target() функцията която ви позволява да създавате администраторски команди с които можете да таргетирате групи от играчи.
API документация
Достъпни аргументи
  • По-долу ще намерите списък с всички аргументи които администраторите може да ползват при команди направени с cmd_targetex().
  • Глобалният образец за аргументите е: @[!]<аргумент>[отбор]
    • @aim - таргетира играча към когото администратора си е насочил мерника
    • @all - таргетира всички играчи
    • @alive - таргетира всички живи играчи
    • @bots - таргетира всички ботове
    • @dead - таргетира всички мъртви играчи
    • @humans - таргетира всички истински играчи
    • @me - таргетира себе си
    • @spectating - таргетира играча когото администратора спектира
    • @view - таргетира всички играчи на екрана на администратора
  • Допълнително, можете да зададете и отбор при който да е аргумент който се отнася за група от играчи, на пример @alivect или @viewt.
  • Администраторът може да ползва ! за да се изключи себе си от таргетираната група, на пример @!all ще таргетира всички играчи освен администратора който е ползвал командата.
Таргетиращи флагове
  • Подобно на обикновената cmd_target() функция, cmd_targetex() също разполага с различни флагове които може да се добавят в flags аргумента ѝ.
    • TARGETEX_NONE - не ползва специални флагове
    • TARGETEX_OBEY_IMM_SINGLE - спазва имунитета на играчите при ползване на аргумент който таргетира 1 играч
    • TARGETEX_OBEY_IMM_GROUP - спазва имунитета на играчите при ползване на аргумент който таргетира повече играчи
    • TARGETEX_NO_SELF - не позволява таргетиране себе си
    • TARGETEX_NO_GROUPS - не позволвяа таргетиране на групи от играчи
    • TARGETEX_NO_BOTS - не позволява таргетиране ботове
    • TARGETEX_NO_ALIVE - не позволява таргетиране живи играчи
    • TARGETEX_NO_DEAD - не позволява таргетиране мъртви играчи
  • Повече флагове може да бъдат зададени наведнъж, на пример TARGETEX_NO_SELF|TARGETEX_NO_ALIVE|TARGETEX_OBEY_IMM_SINGLE
Пример
  • По-долу е предоставен пример за направа на проста slap команда която поддържа специалните аргументи.
    Код: Избери всички
    #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[MAX_NAME_LENGTH], szName[MAX_NAME_LENGTH]
    	read_argv(1, szArg, charsmax(szArg))
    
    	new iPlayers[MAX_PLAYERS], iPnum = cmd_targetex(id, szArg, iPlayers, szName, charsmax(szName), TARGETEX_OBEY_IMM_SINGLE)
    
    	if(!iPnum)
    	{
    		return PLUGIN_HANDLED
    	}
    	
    	for(new i; i < iPnum; i++)
    	{
    		user_slap(iPlayers[i], 0)
    	}
    
    	client_print(0, print_chat, "ADMIN %n slapped %s", id, szName)
    	return PLUGIN_HANDLED
    }
  • Примери за нейното ползване:
    • test_slap @me
    • test_slap @all
    • test_slap OciXCrom
    • test_slap "STEAM_ID"
    • test_slap #userid
    • test_slap @!alivect
Допълнителна информация и линк за теглене

Изображение
Изображение