Sourcemod Админ чат.

Тема в разделе "Запросы", создана пользователем RomaShKeee, 2 дек 2012.

  1. RomaShKeee

    RomaShKeee

    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте!как можно сделать так чтобы в sourcemod'e писать админом не через "@",а через другой знак например через точку "." или запятую ","...или не возможно поменять?Потому что уже надоело переключатся ,то на русскую ,то на английскую раскладку ,чтобы написать в чат...
     
  2. Konstantin

    Konstantin

    Сообщения:
    1.789
    Симпатии:
    767
    В SourceMod не знаю, а вот в MAP в файле mani_server.cfg есть такая строка:
     

    Вложения:

    • fff.JPG
      fff.JPG
      Размер файла:
      15,2 КБ
      Просмотров:
      64
    RomaShKeee нравится это.
  3. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    Возможность отправки сообщений администраторам через @ или $ или ;
    PHP:
    #pragma semicolon 1

    #include <sourcemod>
    #include <colors>

    public Plugin:myinfo 
    {
        
    name "Basic Chat",
        
    author "AlliedModders LLC",
        
    description "Basic Communication Commands",
        
    version SOURCEMOD_VERSION,
        
    url "http://www.sourcemod.net/"
    };

    #define CHAT_SYMBOL '@'
    #define CHAT_SYMBOL2 '$'
    #define CHAT_SYMBOL3 ';'

    new String:g_ColorNames[13][10] = {"White""Red""Green""Blue""Yellow""Purple""Cyan""Orange""Pink""Olive""Lime""Violet""Lightblue"};
    new 
    g_Colors[13][3] = {{255,255,255},{255,0,0},{0,255,0},{0,0,255},{255,255,0},{255,0,255},{0,255,255},{255,128,0},{255,0,128},{128,255,0},{0,255,128},{128,0,255},{0,128,255}};

    new 
    Handle:g_Cvar_Chatmode INVALID_HANDLE;

    new 
    g_GameEngine SOURCE_SDK_UNKNOWN;

    public 
    OnPluginStart()
    {
        
    LoadTranslations("common.phrases");
        
        
    g_GameEngine GuessSDKVersion();

        
    g_Cvar_Chatmode CreateConVar("sm_chat_mode""1""Allows player's to send messages to admin chat."0true0.0true1.0);

        
    RegConsoleCmd("say"Command_SayChat);
        
    RegConsoleCmd("say_team"Command_SayAdmin);        
        
    RegAdminCmd("sm_say"Command_SmSayADMFLAG_CHAT"sm_say <message> - sends message to all players");
        
    RegAdminCmd("sm_csay"Command_SmCsayADMFLAG_CHAT"sm_csay <message> - sends centered message to all players");
        
        
    /* HintText does not work on Dark Messiah */
        
    if (g_GameEngine != SOURCE_SDK_DARKMESSIAH)
        {
            
    RegAdminCmd("sm_hsay"Command_SmHsayADMFLAG_CHAT"sm_hsay <message> - sends hint message to all players");    
        }
        
        
    RegAdminCmd("sm_tsay"Command_SmTsayADMFLAG_CHAT"sm_tsay [color] <message> - sends top-left message to all players");
        
    RegAdminCmd("sm_chat"Command_SmChatADMFLAG_CHAT"sm_chat <message> - sends message to admins");
        
    RegAdminCmd("sm_psay"Command_SmPsayADMFLAG_CHAT"sm_psay <name or #userid> <message> - sends private message");
        
    RegAdminCmd("sm_msay"Command_SmMsayADMFLAG_CHAT"sm_msay <message> - sends message as a menu panel");
    }

    public 
    Action:Command_SayChat(clientargs)
    {    
        
    decl String:text[192];
        if (
    IsChatTrigger() || GetCmdArgString(textsizeof(text)) < 1)
        {
            return 
    Plugin_Continue;
        }
        
        new 
    startidx;
        if (
    text[strlen(text)-1] == '"')
        {
            
    text[strlen(text)-1] = '\0';
            
    startidx 1;
        }
        
        if ((
    text[startidx] != CHAT_SYMBOL) && (text[startidx] != CHAT_SYMBOL2) && (text[startidx] != CHAT_SYMBOL3))
            return 
    Plugin_Continue;
        
        new 
    msgStart 1;
        
        if ((
    text[startidx+1] == CHAT_SYMBOL) && (text[startidx+1] == CHAT_SYMBOL2) && (text[startidx+1] == CHAT_SYMBOL3))
        {
            
    msgStart 2;
            
            if ((
    text[startidx+2] == CHAT_SYMBOL) && (text[startidx+2] == CHAT_SYMBOL2) && (text[startidx+2] == CHAT_SYMBOL3))
                
    msgStart 3;
        }
        
        
    decl String:message[192];
        
    strcopy(message192text[startidx+msgStart]);
        
        if (
    msgStart == && CheckCommandAccess(client"sm_say"ADMFLAG_CHAT)) // sm_say alias
        
    {
            
    SendChatToAll(clientmessage);
            
    LogAction(client, -1"\"%L\" triggered sm_say (text %s)"clientmessage);
        }
        else if (
    msgStart == && CheckCommandAccess(client"sm_csay"ADMFLAG_CHAT)) // sm_csay alias
        
    {
            
    DisplayCenterTextToAll(clientmessage);
            
    LogAction(client, -1"\"%L\" triggered sm_csay (text %s)"clienttext);        
        }    
        else if (
    msgStart == && CheckCommandAccess(client"sm_psay"ADMFLAG_CHAT)) // sm_psay alias
        
    {
            
    decl String:arg[64];
        
            new 
    len BreakString(messageargsizeof(arg));
            new 
    target FindTarget(clientargtruefalse);
            
            if (
    target == -|| len == -1)
                return 
    Plugin_Handled;
        
            
    PrintToChat(client"\x05(\x04Вы отправили лисное сообщение \x03%N\x05) \x04%N: \x01%s"targetclientmessage[len]);
            
    PrintToChat(target"\x05(\x04Вы отправили личное сообщение \x03%N\x05) \x04%N: \x01%s"targetclientmessage[len]);

            
    LogAction(client, -1"\"%L\" triggered sm_psay to \"%L\" (text %s)"clienttargetmessage);        
        }
        else
            return 
    Plugin_Continue;
        
        return 
    Plugin_Handled;    
    }

    public 
    Action:Command_SayAdmin(clientargs)
    {
        if (!
    CheckCommandAccess(client"sm_chat"ADMFLAG_CHAT) && !GetConVarBool(g_Cvar_Chatmode))
        {
            return 
    Plugin_Continue;    
        }
        
        
    decl String:text[192];
        if (
    IsChatTrigger() || GetCmdArgString(textsizeof(text)) < 1)
        {
            return 
    Plugin_Continue;
        }
        
        new 
    startidx;
        if (
    text[strlen(text)-1] == '"')
        {
            
    text[strlen(text)-1] = '\0';
            
    startidx 1;
        }
        
        if ((
    text[startidx] != CHAT_SYMBOL) && (text[startidx] != CHAT_SYMBOL) && (text[startidx] != CHAT_SYMBOL2) && (text[startidx] != CHAT_SYMBOL3))
            return 
    Plugin_Continue;
        
        
    decl String:message[192];
        
    strcopy(message192text[startidx+1]);

        
    SendChatToAdmins(clientmessage);
        
    LogAction(client, -1"\"%L\" triggered sm_chat (text %s)"clientmessage);
        
        return 
    Plugin_Handled;    
    }

    public 
    Action:Command_SmSay(clientargs)
    {
        if (
    args 1)
        {
            
    ReplyToCommand(client"\x05[SM]\x01  Используйте: sm_say <message>");
            return 
    Plugin_Handled;    
        }
        
        
    decl String:text[192];
        
    GetCmdArgString(textsizeof(text));

        
    SendChatToAll(clienttext);
        
    LogAction(client, -1"\"%L\" triggered sm_say (text %s)"clienttext);
        
        return 
    Plugin_Handled;        
    }

    public 
    Action:Command_SmCsay(clientargs)
    {
        if (
    args 1)
        {
            
    ReplyToCommand(client"\x05[SM]\x01  Используйте: sm_csay <message>");
            return 
    Plugin_Handled;    
        }
        
        
    decl String:text[192];
        
    GetCmdArgString(textsizeof(text));
        
        
    DisplayCenterTextToAll(clienttext);
        
        
    LogAction(client, -1"\"%L\" triggered sm_csay (text %s)"clienttext);
        
        return 
    Plugin_Handled;        
    }

    public 
    Action:Command_SmHsay(clientargs)
    {
        if (
    args 1)
        {
            
    ReplyToCommand(client"\x05[SM]x01  Используйте: sm_hsay <message>");
            return 
    Plugin_Handled;  
        }
        
        
    decl String:text[192];
        
    GetCmdArgString(textsizeof(text));
     
        
    decl String:nameBuf[MAX_NAME_LENGTH];
        
        for (new 
    1<= MaxClientsi++)
        {
            if (!
    IsClientInGame(i) || IsFakeClient(i))
            {
                continue;
            }
            
    FormatActivitySource(clientinameBufsizeof(nameBuf));
            
    PrintHintText(i"%s: %s"nameBuftext);
        }
        
        
    LogAction(client, -1"\"%L\" triggered sm_hsay (text %s)"clienttext);
        
        return 
    Plugin_Handled;    
    }

    public 
    Action:Command_SmTsay(clientargs)
    {
        if (
    args 1)
        {
            
    ReplyToCommand(client"\x05[SM]\x01  Используйте: sm_tsay <message>");
            return 
    Plugin_Handled;  
        }
        
        
    decl String:text[192], String:colorStr[16];
        
    GetCmdArgString(textsizeof(text));
        
        new 
    len BreakString(textcolorStr16);
            
        new 
    color FindColor(colorStr);
        new 
    String:nameBuf[MAX_NAME_LENGTH];
        
        if (
    color == -1)
        {
            
    color 0;
            
    len 0;
        }
        
        for (new 
    1<= MaxClientsi++)
        {
            if (!
    IsClientInGame(i) || IsFakeClient(i))
            {
                continue;
            }
            
    FormatActivitySource(clientinameBufsizeof(nameBuf));
            
    SendDialogToOne(icolor"%s: %s"nameBuftext[len]);
        }

        
    LogAction(client, -1"\"%L\" triggered sm_tsay (text %s)"clienttext);
        
        return 
    Plugin_Handled;    
    }

    public 
    Action:Command_SmChat(clientargs)
    {
        if (
    args 1)
        {
            
    ReplyToCommand(client"\x05[SM]\x01  Используйте: sm_chat <message>");
            return 
    Plugin_Handled;    
        }    
        
        
    decl String:text[192];
        
    GetCmdArgString(textsizeof(text));

        
    SendChatToAdmins(clienttext);
        
    LogAction(client, -1"\"%L\" triggered sm_chat (text %s)"clienttext);
        
        return 
    Plugin_Handled;    
    }

    public 
    Action:Command_SmPsay(clientargs)
    {
        if (
    args 2)
        {
            
    ReplyToCommand(client"\x05[SM]\x01  Используйте: sm_psay <name or #userid> <message>");
            return 
    Plugin_Handled;    
        }    
        
        
    decl String:text[192], String:arg[64], String:message[192];
        
    GetCmdArgString(textsizeof(text));

        new 
    len BreakString(textargsizeof(arg));
        
    BreakString(text[len], messagesizeof(message));
        
        new 
    target FindTarget(clientargtruefalse);
            
        if (
    target == -1)
            return 
    Plugin_Handled;    
            
        
    decl String:name[64];

        if (
    client == 0)
        {
            
    name "Console";
        }
        else
        {
            
    GetClientName(clientnamesizeof(name));
        }

        if (
    client == 0)
        {
            
    PrintToServer("(Private: %N) %s: %s"targetnamemessage);
        }
        else
        {
            
    CPrintToChat(client"\x05(\x04Вы отправили личное сообщение: \x03%N\x05)\x04: \x03%s"targetmessage);
        }

        
    CPrintToChat(target"\x05(\x04Вы получили личное сообщение от: \x03%s\x05)\x04: \x03%s"namemessage);
        
    LogAction(client, -1"\"%L\" triggered sm_psay to \"%L\" (text %s)"clienttargetmessage);
        
        return 
    Plugin_Handled;    
    }

    public 
    Action:Command_SmMsay(clientargs)
    {
        if (
    args 1)
        {
            
    ReplyToCommand(client"\x05[SM]\x01  Используйте: sm_msay <message>");
            return 
    Plugin_Handled;    
        }
        
        
    decl String:text[192];
        
    GetCmdArgString(textsizeof(text));

        
    SendPanelToAll(clienttext);

        
    LogAction(client, -1"\"%L\" triggered sm_msay (text %s)"clienttext);
        
        return 
    Plugin_Handled;        
    }

    FindColor(String:color[])
    {
        for (new 
    013i++)
        {
            if (
    strcmp(colorg_ColorNames[i], false) == 0)
                return 
    i;
        }
        
        return -
    1;
    }

    SendChatToAll(clientString:message[])
    {
        new 
    String:nameBuf[MAX_NAME_LENGTH];
        
        for (new 
    1<= MaxClientsi++)
        {
            if (!
    IsClientInGame(i) || IsFakeClient(i))
            {
                continue;
            }
            
    FormatActivitySource(clientinameBufsizeof(nameBuf));
            
            
    PrintToChat(i"\x05(\x04Админ\x05)\x03 ADMIN: %s"message);
        }
    }

    DisplayCenterTextToAll(clientString:message[])
    {
        new 
    String:nameBuf[MAX_NAME_LENGTH];
        
        for (new 
    1<= MaxClientsi++)
        {
            if (!
    IsClientInGame(i) || IsFakeClient(i))
            {
                continue;
            }
            
    FormatActivitySource(clientinameBufsizeof(nameBuf));
            
    PrintCenterText(i"%s: %s"nameBufmessage);
        }
    }

    SendChatToAdmins(fromString:message[])
    {
        new 
    fromAdmin CheckCommandAccess(from"sm_chat"ADMFLAG_CHAT);
        for (new 
    1<= MaxClientsi++)
        {
            if (
    IsClientInGame(i) && (from == || CheckCommandAccess(i"sm_chat"ADMFLAG_CHAT)))
            {
                
    CPrintToChat(i"\x05(%s\x04Админам\x05) \x03%N\x04: \x03%s"fromAdmin "" ""frommessage);
            }    
        }
    }

    SendDialogToOne(clientcolorString:text[], any:...)
    {
        new 
    String:message[100];
        
    VFormat(messagesizeof(message), text4);    
        
        new 
    Handle:kv CreateKeyValues("Stuff""title"message);
        
    KvSetColor(kv"color"g_Colors[color][0], g_Colors[color][1], g_Colors[color][2], 255);
        
    KvSetNum(kv"level"1);
        
    KvSetNum(kv"time"10);
        
        
    CreateDialog(clientkvDialogType_Msg);
        
        
    CloseHandle(kv);    
    }

    SendPanelToAll(fromString:message[])
    {
        
    decl String:title[100];
        
    Format(title64"%N:"from);
        
        
    ReplaceString(message192"\\n""\n");
        
        new 
    Handle:mSayPanel CreatePanel();
        
    SetPanelTitle(mSayPaneltitle);
        
    DrawPanelItem(mSayPanel""ITEMDRAW_SPACER);
        
    DrawPanelText(mSayPanelmessage);
        
    DrawPanelItem(mSayPanel""ITEMDRAW_SPACER);

        
    SetPanelCurrentKey(mSayPanel10);
        
    DrawPanelItem(mSayPanel"Выход"ITEMDRAW_CONTROL);

        for(new 
    1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i) && !IsFakeClient(i))
            {
                
    SendPanelToClient(mSayPaneliHandler_DoNothing10);
            }
        }

        
    CloseHandle(mSayPanel);
    }

    public 
    Handler_DoNothing(Handle:menuMenuAction:actionparam1param2)
    {
        
    /* Do nothing */
    }
     
    RomaShKeee нравится это.
  4. RomaShKeee

    RomaShKeee

    Сообщения:
    2
    Симпатии:
    0
    Спасибо то что нужно!+