搜索
查看: 6484|回复: 23

有没有指定某人可以不开sxe的插件?

[复制链接]
发表于 2015-3-21 12:18:06 | 显示全部楼层 |阅读模式 来自 江苏南京
有没有指定某人可以不开sxe的插件?记得以前在点通好像看到过啊。
 楼主| 发表于 2015-3-24 23:21:54 | 显示全部楼层 来自 江苏南京
大家帮帮忙啊。
回复

使用道具 举报

发表于 2015-3-27 03:06:54 | 显示全部楼层 来自 广东深圳
不强制SXE,然后判断名字是否为 [NO-sXe-I]
回复

使用道具 举报

 楼主| 发表于 2015-3-28 12:43:18 | 显示全部楼层 来自 江苏南京
k1nader 发表于 2015-3-27 03:06
不强制SXE,然后判断名字是否为 [NO-sXe-I]

谢谢你,但我想的是强制sxe,但可以指定某人不开sxe并且名字无[NO-sXe-I]
回复

使用道具 举报

发表于 2015-3-30 09:57:42 | 显示全部楼层 来自 广东深圳
本帖最后由 k1nader 于 2015-3-30 09:58 编辑
aKang 发表于 2015-3-28 12:43
谢谢你,但我想的是强制sxe,但可以指定某人不开sxe并且名字无[NO-sXe-I]


不强制SXE,名字出现 [No-sXe-I] 就直接KICK,你只需要指定不kick谁就行了,道理一样,不改这个人的名字你看下 FM_ClientUserInfoChanged 就OK了
回复

使用道具 举报

 楼主| 发表于 2015-3-31 14:47:45 | 显示全部楼层 来自 江苏南京
k1nader 发表于 2015-3-30 09:57
不强制SXE,名字出现 [No-sXe-I] 就直接KICK,你只需要指定不kick谁就行了,道理一样,不改这个人的名字 ...

谢谢版主指导。
回复

使用道具 举报

发表于 2015-4-2 22:42:08 | 显示全部楼层 来自 广东深圳
k1nader 发表于 2015-3-30 09:57
不强制SXE,名字出现 [No-sXe-I] 就直接KICK,你只需要指定不kick谁就行了,道理一样,不改这个人的名字 ...


我以前也尝试过用FM_ClientUserInfoChanged禁止让sxe修改某个玩家的名字为 [No-sXe-I],但会出现你不断禁止它修改,而sxe却一直不断的尝试修改,好像进入一个死循环一样,最后服务器duang~的一声,挂掉了。
不知道有没有更好的解决方法?
回复

使用道具 举报

发表于 2015-4-2 23:36:29 | 显示全部楼层 来自 中国
XE没公开接口把
回复

使用道具 举报

发表于 2015-4-17 11:47:55 | 显示全部楼层 来自 广东深圳
ttbs123 发表于 2015-4-2 22:42
我以前也尝试过用FM_ClientUserInfoChanged禁止让sxe修改某个玩家的名字为 [No-sXe-I],但会出现你不断禁 ...

  1. get_user_msgid("SayText");
复制代码

Hook 这个消息
  1. #Cstrike_Name_Change
复制代码

判断这个,改名的一瞬间给他改回去并且 return PLUGIN_HANDLED
回复

使用道具 举报

发表于 2015-4-17 12:07:56 | 显示全部楼层 来自 广东深圳
ttbs123 发表于 2015-4-2 22:42
我以前也尝试过用FM_ClientUserInfoChanged禁止让sxe修改某个玩家的名字为 [No-sXe-I],但会出现你不断禁 ...

#include <amxmodx>
#include <amxmisc>

#define PLUGIN        "New Plug-In"
#define VERSION        "1.0"
#define AUTHOR        "k1nader"

static const g_nosXeIname[] = "[NO-sXe-I]";

new g_iSayTextBlock[33], g_iUserIsUsesXeClient[33];

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR);
        register_message(get_user_msgid("SayText"), "Message_SayText");
}

public client_putinserver(id)
{
        g_iSayTextBlock[id] = 0;
        g_iUserIsUsesXeClient[id] = 1;
}

public Message_SayText(dest, type, id)
{
        static msg[128];
        get_msg_arg_string(2, msg, charsmax(msg));

        if (equal(msg, "#Cstrike_Name_Change"))
        {
                static name[32], PlayerId;
        
                PlayerId = get_msg_arg_int(1);
                
                if (!g_iSayTextBlock[PlayerId])
                {
                        get_msg_arg_string(4, name, charsmax(name));
                        
                        if(contain(name, g_nosXeIname) != -1)
                        {
                                replace_all(name, charsmax(name), g_nosXeIname, "");
                                set_user_info(PlayerId, "name", name);
                                g_iSayTextBlock[PlayerId] = 1;
                                g_iUserIsUsesXeClient[PlayerId] = 0;
                                return PLUGIN_HANDLED;
                        }
                }
                else
                {
                        g_iSayTextBlock[PlayerId] = 0;
                        return PLUGIN_HANDLED;
                }
        }
        return PLUGIN_CONTINUE;
}

stock sXeClient(id)
{
        return g_iUserIsUsesXeClient[id];
}


我用这个测试了下,可以通过。
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表