Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Создание чат/консоль/сервер команд
_wS_ Дата: Суббота, 14.01.2012, 02:40:04 | Сообщение # 1
RegConsoleCmd(const String:cmd[], ConCmd:callback, const String:descr[]="", flags=0);

Код
cmd - команда
callback - блок, который будет вызван
descr - описание команды (не обязательно)
flags - флаги


Пример:

Код
#include <sourcemod>     

public OnPluginStart()
{
       RegConsoleCmd("xz", xzBlock);
}

public Action:xzBlock(client, args)
{
       PrintToChatAll("args = %d, your name = %N", args, client);
       return Plugin_Handled;
}


Будет доступно три команды: xz (консоль), !xz и /xz (чат). Если ввести !xz, то все игроки увидят ваш ввод, если /xz, то никто не увидит. args - это количество аргументов после команды 'xz'. например здесь: xz 4 "dfdd" 2 три аргумента, где 4 это первый из них.

Вы можете получать аргументы с помощью функции GetCmdArg(argnum, String:buffer[], maxlength); или сразу же всю строку: GetCmdArgString(String:buffer[], maxlength);

Создание СЕРВЕРНОЙ команды:

Код
RegServerCmd("xz", callback);

public Action:callback(args)
{
     PrintToServer("Была введена RCON команда xz");
     PrintToServer("Аргументов: %d", args);
     return Plugin_Handled;
}


Создание АДМИНСКОЙ консольной команды:

Код
RegAdminCmd("xz", wS_AdminSay, ADMFLAG_ROOT);

public Action:wS_AdminSay(i, args)
{
     // Если у админа есть ADMFLAG_ROOT, он увидит это сообщение
     PrintToChat(i, "Вы использовали админскую команду xz");
     return Plugin_Handled;
}


Админские флаги:

Код
#define ADMFLAG_RESERVATION   (1<<0)  /**< Convenience macro for Admin_Reservation as a FlagBit */
#define ADMFLAG_GENERIC    (1<<1)  /**< Convenience macro for Admin_Generic as a FlagBit */
#define ADMFLAG_KICK    (1<<2)  /**< Convenience macro for Admin_Kick as a FlagBit */
#define ADMFLAG_BAN     (1<<3)  /**< Convenience macro for Admin_Ban as a FlagBit */
#define ADMFLAG_UNBAN    (1<<4)  /**< Convenience macro for Admin_Unban as a FlagBit */
#define ADMFLAG_SLAY    (1<<5)  /**< Convenience macro for Admin_Slay as a FlagBit */
#define ADMFLAG_CHANGEMAP   (1<<6)  /**< Convenience macro for Admin_Changemap as a FlagBit */
#define ADMFLAG_CONVARS    (1<<7)  /**< Convenience macro for Admin_Convars as a FlagBit */
#define ADMFLAG_CONFIG    (1<<8)  /**< Convenience macro for Admin_Config as a FlagBit */
#define ADMFLAG_CHAT    (1<<9)  /**< Convenience macro for Admin_Chat as a FlagBit */
#define ADMFLAG_VOTE    (1<<10)  /**< Convenience macro for Admin_Vote as a FlagBit */
#define ADMFLAG_PASSWORD   (1<<11)  /**< Convenience macro for Admin_Password as a FlagBit */
#define ADMFLAG_RCON    (1<<12)  /**< Convenience macro for Admin_RCON as a FlagBit */
#define ADMFLAG_CHEATS    (1<<13)  /**< Convenience macro for Admin_Cheats as a FlagBit */
#define ADMFLAG_ROOT    (1<<14)  /**< Convenience macro for Admin_Root as a FlagBit */
#define ADMFLAG_CUSTOM1    (1<<15)  /**< Convenience macro for Admin_Custom1 as a FlagBit */
#define ADMFLAG_CUSTOM2    (1<<16)  /**< Convenience macro for Admin_Custom2 as a FlagBit */
#define ADMFLAG_CUSTOM3    (1<<17)  /**< Convenience macro for Admin_Custom3 as a FlagBit */
#define ADMFLAG_CUSTOM4    (1<<18)  /**< Convenience macro for Admin_Custom4 as a FlagBit */
#define ADMFLAG_CUSTOM5    (1<<19)  /**< Convenience macro for Admin_Custom5 as a FlagBit */
#define ADMFLAG_CUSTOM6    (1<<20)  /**< Convenience macro for Admin_Custom6 as a FlagBit */
 
dron216 Дата: Вторник, 04.09.2012, 17:44:16 | Сообщение # 2
Сообщений: 151
Репутация: 18 [ +/- ]
А как сделать так что бы можно было писать в чат команду без "!" и "/" ? Например плагин на rtv
 
Scarface_slv Дата: Вторник, 04.09.2012, 18:41:33 | Сообщение # 3
Сообщений: 737
Репутация: 61 [ +/- ]
вообщем есть два способа) RegConsoleCmd("say"... и HookEvent("player_say"...
Code

public OnPluginStart()
{
     RegConsoleCmd( "say", CommandSay);
     RegConsoleCmd( "say_team", CommandSay);
     HookEvent("player_say", Say);
}

public Action:CommandSay(client, args)     
{
     decl String:text[128];
     GetCmdArgString(text, sizeof(text) - 1 );
     StripQuotes(text);
     TrimString(text);
     if(StrEqual(text, "1")) PrintToChat(client, "\x03Вы ввели цифру 1");
}

public Say(Handle:event, const String:name[], bool:dontBroadcast)
{
         new client = GetClientOfUserId(GetEventInt(event, "userid"));
         decl String:text[5];
         GetEventString(event, "text", text, sizeof(text));
         if (StrEqual(text, "2")) PrintToChat(client, "\x03Вы ввели цифру 2");
}


Сообщение отредактировал Scarface_slv - Вторник, 04.09.2012, 18:48:47
 
  • Страница 1 из 1
  • 1
Поиск: