广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 1982 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
能天使
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x72 鲜花 x196
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[1.6][插件] 如何变更/msg指令? 变更之后出现错误了 新code付上..求大大你们解答
如题 希望有人教我 先感谢

复制程式
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <nvault>
#define MAX_WORDS 192

new const PLUGIN[] = "Hook system final"
new const VERSION[] = "3.5"
new const AUTHOR[] = "WS.Chu:)"
static const VAULTNAME[] = "signature"
new const SYS_PLUGIN_NAME[] = "\y插件名称^n\r"
new const SYS_PLUGIN_AUTHOR[] = "\y插件作者^n\r"
new const SYS_PLUGIN_VERSION[] = "\y插件版本^n\r"
new const SYS_PLUGIN_DB[] = "\y资料库^n\r"

new iMessages[256];
new iUserName[40], iTag[256], iPlayerTag[256] = "[一般玩家]";
new iUserAlive, iUserTeam;
new tUserTeam[16], tUserAlive[10];
new gSayText, gMaxplayers;
new szVault, szName[33][35];
new cmdType;
new iHideTag;
new CHARS_MIN = 0, CHARS_MAX = 256;
new SwearsNames[MAX_WORDS][32];
new gSwearsNum;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_clcmd("say", "cmdHookSay");
    register_clcmd("say_team", "cmdHookSayTeam");
    
    cmdType = register_cvar("amx_hook_sysf_type", "1");
    
    register_cvar(SYS_PLUGIN_NAME, PLUGIN, FCVAR_SERVER|FCVAR_SPONLY);
    register_cvar(SYS_PLUGIN_AUTHOR, AUTHOR, FCVAR_SERVER|FCVAR_SPONLY);
    register_cvar(SYS_PLUGIN_VERSION, VERSION, FCVAR_SERVER|FCVAR_SPONLY);
    register_cvar(SYS_PLUGIN_DB, VAULTNAME, FCVAR_SERVER|FCVAR_SPONLY);
    
    szVault = nvault_open(VAULTNAME) 
    
    gSayText = get_user_msgid("SayText");
    gMaxplayers = get_maxplayers();
    
    if(get_pcvar_num(cmdType) >= 3)
    {
        server_cmd("amxx pause hook_sys.amxx");
        server_print("[ERROR] Cvar ^"hook_sys_type^" effective value are ^"0^" and ^"1^".");
        server_print("[ERROR] Plugin info: %s %s %s, auto pause plugin.", PLUGIN, VERSION, AUTHOR);
    }
    
    readList()
}

readList() 
{ 
    // file to read words from 
    new szConfigdir[64];
    new szFileName[64];
    get_configsdir(szConfigdir, 63);
    formatex(szFileName, 63, "%s/swear/swearwords.ini", szConfigdir);

    if(!file_exists(szFileName))
    {
        server_print("[ERROR] Swear Filter: file %s not found.", szFileName);
        return;
    }
    new iLen 
    while(gSwearsNum < MAX_WORDS && read_file(szFileName, gSwearsNum ,SwearsNames[gSwearsNum][1], 30, iLen))
    { 
        if(SwearsNames[gSwearsNum][0] == ';') continue;
        SwearsNames[gSwearsNum][0] = iLen;
        ++gSwearsNum;
    }
    server_print("[AMXX] Swear Filter: loaded %d words", gSwearsNum);
} 

public client_authorized(id)
{
    get_user_name(id , szName[id] , charsmax(szName[]));
}

public plugin_end()
{
    nvault_close(szVault);
}

public cmdHookSay(id)
{
    read_args(iMessages, 255);
    remove_quotes(iMessages);
    
    get_user_name(id, iUserName, 31);
    
    if(!is_valid_msg(iMessages))
        return PLUGIN_HANDLED;
    
    CheckSwears(id);
    
    if(get_user_flags(id) & ADMIN_IMMUNITY)
        iTag = "[OP]";
    else if(get_user_flags(id) & ADMIN_KICK)
        iTag = "[Administrator]";
    else if(get_user_flags(id) & ADMIN_RESERVATION)
        iTag = "[VIP]";
    else
        iTag = iPlayerTag;
    
    iUserAlive = is_user_alive(id);
    
    new szKey[32], szSingature[256], iSignature[256];
    
    formatex(szKey, 31, "%s-Signature", szName[id]);
    formatex(szSingature, charsmax(szSingature), "%s", iMessages[10]);
    
    if(iMessages[0] == '/' && iMessages[1] == 'f' && iMessages[2] == 'u' && iMessages[3] == 'n' && iMessages[4] == '_' && iMessages[5] == 'n' && iMessages[6] == 'a' && iMessages[7] == 'm' && iMessages[8] == 'e' && iMessages[9] == ' '
    {
        new iMsg = strlen(iMessages);
        
        if(iMsg < CHARS_MIN)
        {
            client_color(id, id, "[香港伺服器温馨小提示] 您所键入的个性签名太短了。(下限: %d 个英文字或中文字)", CHARS_MIN - 5);
        }
        else if(iMsg > CHARS_MAX)
        {
            client_color(id, id, "[香港伺服器温馨小提示] 您所键入的个性签名太长了。(上限: %d 个英文字或 %d 个中文字)", CHARS_MAX - 5, (CHARS_MAX - 5) / 3);
        }
        else
        {
            client_color(id, id, "[香港伺服器温馨小提示] 您现在的个性签名:^"%s^"。", iMessages[5]);
            nvault_set(szVault, szKey, szSingature);
        }
        return PLUGIN_HANDLED;
    }
    
    if(equal(iMessages, "/delmsg"))
    {
        formatex(szSingature, charsmax(szSingature), "没有设定称号");
        nvault_set(szVault, szKey, szSingature);
            
        client_color(id, id, "[香港伺服器温馨小提示] 您现在的个性签名已经删除。");
        
        return PLUGIN_HANDLED;
    }
    
    formatex(szKey, 31, "%s-Signature", szName[id]);
    
    if(nvault_get(szVault, szKey, szSingature, charsmax(szSingature)))
        formatex(iSignature, charsmax(iSignature), "%s", szSingature);
    else
        formatex(iSignature, charsmax(iSignature), "没有设定称号");
    
    if(get_pcvar_num(cmdType) == 0)
    {
        client_color(0, id, "^x01%s^x04[^x01%s^x04] ^x03%s ^x01: %s", is_UserAlive(), iSignature, iUserName, iMessages);
        client_print(0, print_console, "%s[%s] %s : %s", is_UserAlive(), iSignature, iUserName, iMessages);
    }
    else if(get_pcvar_num(cmdType) == 1)
    {    if(is_user_admin(id))
        {
            if(equal(iMessages, "/hide"))
            {
                iHideTag = 1;
                client_color(id, id, "[提示] 您的管理员标签将由 %s 变成 %s。", iTag, iPlayerTag);
                return PLUGIN_HANDLED;
            }
            if(equal(iMessages, "/show"))
            {
                iHideTag = 0;
                client_color(id, id, "[提示] 您的管理员标签将由 %s 还原成 %s。", iPlayerTag, iTag);
                return PLUGIN_HANDLED;
            }
        }
        else if(!is_user_admin(id))
        {
            iHideTag = 0;
        }
        if(iHideTag == 1)
        {
            client_color(0, id, "^x01%s^x04%s ^x04[^x01%s^x04] ^x03%s ^x01: %s", is_UserAlive(), iPlayerTag, iSignature, iUserName, iMessages);
            client_print(0, print_console, "%s%s [%s] %s : %s", is_UserAlive(), iPlayerTag, iSignature, iUserName, iMessages);
        }
        else if(iHideTag == 0)
        {
            client_color(0, id, "^x01%s^x04%s ^x04[^x01%s^x04] ^x03%s ^x01: %s", is_UserAlive(), iTag, iSignature, iUserName, iMessages);
            client_print(0, print_console, "%s%s [%s] %s : %s", is_UserAlive(), iTag, iSignature, iUserName, iMessages);
        }
    }
    return PLUGIN_HANDLED;
}

public cmdHookSayTeam(id)
{
    read_args(iMessages, 255);
    remove_quotes(iMessages);    
    
    get_user_name(id, iUserName, 31);
    
    if(!is_valid_msg(iMessages))
        return PLUGIN_HANDLED;
        
    CheckSwears(id);
        
    iUserAlive = is_user_alive(id);
    iUserTeam = get_user_team(id);
    
    if(iMessages[0] != '@')
    {
        static player;
        
        for(player = 1; player <= gMaxplayers; player++)
        {
            if(get_user_team(player) == iUserTeam)
                client_color(player, id, "^x01%s^x03%s %s ^x01: %s", is_UserAlive(), i_UserTeam(), iUserName, iMessages);
        }
    }
    else
    {
        if(get_user_flags(id) & ADMIN_ADMIN)
            iTag = "(ADMIN)"
        else
            iTag = "(PLAYER)"
        
        new iPlayers[32], iNum;
        get_players(iPlayers, iNum, "ch");
        
//        for(new i = 0; i < iNum; i++)
//        {
//            if(get_user_flags(iPlayers[i]) & ADMIN_CHAT)
//            {
//                client_color(iPlayers[i], id, "^x04%s ^x03%s ^x01: %s", iTag, iUserName, iMessages[1]);
//            }
//            else if(!is_user_admin(iPlayers[i]))
//            {
//                client_color(iPlayers[i], id, "^x04%s ^x03%s ^x01: %s", iTag, iUserName, iMessages[1]);
//            }
//        }
        for(new i = 0; i < iNum; i++) 
        { 
            if(get_user_flags(iPlayers[i]) & ADMIN_CHAT && id != iPlayers[i]) 
            { 
                client_color(iPlayers[i], id, "^x04%s ^x03%s ^x01: %s", iTag, iUserName, iMessages[1]); 
            } 
        }
        client_color(id, id, "^x04%s ^x03%s ^x01: %s", iTag, iUserName, iMessages[1]);  
    }
    return PLUGIN_HANDLED;
}

public CheckSwears(id)
{
    new pos, i = 0;
    
    while (i < gSwearsNum)
    {
        if((pos = containi(iMessages, SwearsNames[i][1])) != -1 )
        { 
            new len = SwearsNames[i][0] 
            while(len--)
            iMessages[pos++] = '*';
            continue;
        }
        ++i
    }
    return PLUGIN_HANDLED;
}

bool:is_valid_msg(const iMessages[])
{
    if(iMessages[0] == '%' || !strlen(iMessages) || equal(iMessages, "") || equal(iMessages, " "))
    {
        return false;
    }
    return true;
}

public i_UserTeam()
{
    switch(iUserTeam)
    {
        case 0: copy(tUserTeam, sizeof(tUserTeam) - 1,"( SPEC )");
        case 1: copy(tUserTeam, sizeof(tUserTeam) - 1,"( TS )");
        case 2: copy(tUserTeam, sizeof(tUserTeam) - 1,"( CT )");
        case 3: copy(tUserTeam, sizeof(tUserTeam) - 1,"( SPEC )");
    }
    return tUserTeam;
}

public is_UserAlive()
{
    if(!iUserAlive && 0 < iUserTeam < 3)
        copy(tUserAlive, sizeof(tUserAlive) - 1,"*死亡* ");
    else
        copy(tUserAlive, sizeof(tUserAlive) - 1,"");
    return tUserAlive;
}

stock client_color(index, color, const msg[], any:...) 
{
    static szMessage[192]
    szMessage[0] = 0x04
    vformat(szMessage[1], charsmax(szMessage)-1, msg, 4)
    
    static iSayText
    if (iSayText || (iSayText = gSayText))
    {
        message_begin(index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, _, index)
        {
            write_byte(color)
            write_string(szMessage)
        }
        message_end()
    }
}


[ 此文章被能天使在2012-01-14 20:55重新编辑 ]





献花 x0 回到顶端 [楼 主] From:香港特别行政区 | Posted:2012-01-14 16:36 |
观众甲
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x319 鲜花 x963
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

if(iMessages[0] == '/' && iMessages[1] == 'm' && iMessages[2] == 's' && iMessages[3] == 'g' && iMessages[4] == ' ')
这行自己研究


献花 x0 回到顶端 [1 楼] From:未知地址 | Posted:2012-01-14 17:09 |
能天使
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x72 鲜花 x196
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感谢大大指点 因你的回答 我对SMA的认识 又开始慢慢慢慢慢慢慢慢进步了呢




献花 x0 回到顶端 [2 楼] From:香港特别行政区 | Posted:2012-01-14 18:32 |
能天使
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x72 鲜花 x196
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

错误了呢 什么问题请问




献花 x0 回到顶端 [3 楼] From:香港特别行政区 | Posted:2012-01-14 21:17 |
观众甲
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x319 鲜花 x963
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

如果指令还是(/三只字),应该不会有问题
如果是(/四只字)或以上,就要改一改下面的了= =


献花 x0 回到顶端 [4 楼] From:未知地址 | Posted:2012-01-15 09:43 |
能天使
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x72 鲜花 x196
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

哪么请问如何改呢^^?.


[ 此文章被能天使在2012-01-19 20:07重新编辑 ]




献花 x0 回到顶端 [5 楼] From:香港特别行政区 | Posted:2012-01-15 22:02 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.015804 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言