Подкиньте какую нибудь идейку для VIP

Тема в разделе "Запросы", создана пользователем Черная вдова, 4 фев 2013.

  1. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    Ну собственно в названии темы все сказано,
    Если я этого не делал еще и идея мне понравиться постараюсь сделать и выложу сюда
     
  2. infernozet

    infernozet

    Сообщения:
    96
    Симпатии:
    18
    Организуйте личный кабинет с веб панелью возможностью влиять на сервер, акциями, конкурсами, и бонусами :P
    /thread

    [​IMG]
     
  3. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    ilga80,
    Я это уже сделал, только без auto bhop и не 16 000, а на 2 000 больше чем обычно
    infernozet,
    Это слишком тяжело для меня, учитывая что в сайтах я 0
     
  4. KapaT

    KapaT Эгоист

    Сообщения:
    1.983
    Симпатии:
    408
    Всегда мечтал о админ чате таком же как на маньке. Чтоб и вобласти чата и в топе отображалось сообщение от админа, как для простых игроков так и для админов но разными цветами.
     
  5. infernozet

    infernozet

    Сообщения:
    96
    Симпатии:
    18
    Жаль они сразу на sourcemod не сделали, а на кривом эвент скрипте
     
  6. KapaT

    KapaT Эгоист

    Сообщения:
    1.983
    Симпатии:
    408
    Вот поделились, но тут только для игроков сделано (показует сообщение от админа игрокам в чате и топе), а вот для админов стандартное осталось.
    PHP:
    /**
     * vim: set ts=4 :
     * =============================================================================
     * SourceMod Basic Chat Plugin
     * Implements basic communication commands.
     *
     * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
     * =============================================================================
     *
     * This program is free software; you can redistribute it and/or modify it under
     * the terms of the GNU General Public License, version 3.0, as published by the
     * Free Software Foundation.
     * 
     * This program is distributed in the hope that it will be useful, but WITHOUT
     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
     * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
     * details.
     *
     * You should have received a copy of the GNU General Public License along with
     * this program.  If not, see <http://www.gnu.org/licenses/>.
     *
     * As a special exception, AlliedModders LLC gives you permission to link the
     * code of this program (as well as its derivative works) to "Half-Life 2," the
     * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
     * by the Valve Corporation.  You must obey the GNU General Public License in
     * all respects for all other code used.  Additionally, AlliedModders LLC grants
     * this exception to all derivative works.  AlliedModders LLC defines further
     * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
     * or <http://www.sourcemod.net/license.php>.
     *
     * Version: $Id$
     */

    #pragma semicolon 1

    #include <sourcemod>
    #include <colors>

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

    #define CHAT_SYMBOL '@'

    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 
    bool:g_DoColor true;

    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");
        
        
    decl String:modname[64];
        
    GetGameFolderName(modnamesizeof(modname));
        
        if (
    strcmp(modname"hl2mp") == 0)
        {
            
    g_DoColor false;
        }
    }

    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)
            return 
    Plugin_Continue;
        
        new 
    msgStart 1;
        
        if (
    text[startidx+1] == CHAT_SYMBOL)
        {
            
    msgStart 2;
            
            if (
    text[startidx+2] == CHAT_SYMBOL)
                
    msgStart 3;
        }
        
        
    decl String:message[192];
        
    strcopy(message192text[startidx+msgStart]);
        
        
    decl String:name[64];
        
    GetClientName(clientnamesizeof(name));
        
        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;
            
            
    decl String:name2[64];
            
    GetClientName(targetname2sizeof(name2));
        
            if (
    g_DoColor)
            {
                
    PrintToChat(client"\x04(Private to %s) %s: \x01%s"name2namemessage[len]);
                
    PrintToChat(target"\x04(Private to %s) %s: \x01%s"name2namemessage[len]);
            }
            else
            {
                
    PrintToChat(client"(Private to %s) %s: %s"name2namemessage[len]);
                
    PrintToChat(target"(Private to %s) %s: %s"name2namemessage[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)
            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"[SM] Usage: 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"[SM] Usage: 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"[SM] Usage: 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"[SM] Usage: sm_tsay <message>");
            return 
    Plugin_Handled;  
        }
        
        
    decl String:text[192], String:colorStr[16];
        
    GetCmdArgString(textsizeof(text));
        
        new 
    len BreakString(textcolorStr16);
     
        
    decl String:name[64];
        
    GetClientName(clientnamesizeof(name));
            
        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"[SM] Usage: 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"[SM] Usage: 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], String:name2[64];

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

        
    GetClientName(targetname2sizeof(name2));

        if (
    client == 0)
        {
            
    PrintToServer("(Private: %s) %s: %s"name2namemessage);
        }
        else if (
    g_DoColor)
        {
            
    PrintToChat(client"\x04(Private: %s) %s: \x01%s"name2namemessage);
        }
        else
        {
            
    PrintToChat(client"(Private: %s) %s: %s"name2namemessage);
        }

        if (
    g_DoColor)
        {
            
    PrintToChat(target"\x04(Private: %s) %s: \x01%s"name2namemessage);
        }
        else
        {
            
    PrintToChat(target"(Private: %s) %s: %s"name2namemessage);        
        }

        
    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"[SM] Usage: sm_msay <message>");
            return 
    Plugin_Handled;    
        }
        
        
    decl String:text[192];
        
    GetCmdArgString(textsizeof(text));

        
    decl String:name[64];
        
    GetClientName(clientnamesizeof(name));
            
        
    SendPanelToAll(nametext);

        
    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));
            
            if (
    g_DoColor)
            {
                
    PrintToChat(i"\x03(ADMIN) %s: %s"nameBufmessage);
            }
            else
            {
                
    PrintToChat(i"%s: %s"nameBufmessage);
            }
        }
        
    ////////////////////////// TSAY dub
        
        //decl String:colorStr[16];
        
        //new len = BreakString(text, colorStr, 16);
        
    new len 0;
        new 
    color 0;    
        for (new 
    1<= MaxClientsi++)
        {
            if (!
    IsClientInGame(i) || IsFakeClient(i))
            {
                continue;
            }
            
    FormatActivitySource(clientinameBufsizeof(nameBuf));
            
    SendDialogToOne(icolor"%s: %s"nameBufmessage[len]);
        }

        
    LogAction(client, -1"%L triggered sm_tsay (text %s)"clientmessage);
        
    //////////////////////////
    }

    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)))
            {
                if (
    g_DoColor)
                {
                    
    PrintToChat(i"\x04(%sADMINS) %N: \x01%s"fromAdmin "" "TO "frommessage);
                }
                else
                {
                    
    PrintToChat(i"(%sADMINS) %N: %s"fromAdmin "" "TO "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(String:name[], String:message[])
    {
        
    decl String:title[100];
        
    Format(title64"%s:"name);
        
        
    ReplaceString(message192"\\n""\n");
        
        new 
    Handle:mSayPanel CreatePanel();
        
    SetPanelTitle(mSayPaneltitle);
        
    DrawPanelItem(mSayPanel""ITEMDRAW_SPACER);
        
    DrawPanelText(mSayPanelmessage);
        
    DrawPanelItem(mSayPanel""ITEMDRAW_SPACER);

        
    SetPanelCurrentKey(mSayPanel10);
        
    DrawPanelItem(mSayPanel"Exit"ITEMDRAW_CONTROL);

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

        
    CloseHandle(mSayPanel);
    }

    public 
    Handler_DoNothing(Handle:menuMenuAction:actionparam1param2)
    {
        
    /* Do nothing */
    }