aKang 发表于 2015-3-21 12:18:06

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

有没有指定某人可以不开sxe的插件?记得以前在点通好像看到过啊。

aKang 发表于 2015-3-24 23:21:54

大家帮帮忙啊。

k1nader 发表于 2015-3-27 03:06:54

不强制SXE,然后判断名字是否为

aKang 发表于 2015-3-28 12:43:18

k1nader 发表于 2015-3-27 03:06
不强制SXE,然后判断名字是否为

谢谢你,但我想的是强制sxe,但可以指定某人不开sxe并且名字无

k1nader 发表于 2015-3-30 09:57:42

本帖最后由 k1nader 于 2015-3-30 09:58 编辑

aKang 发表于 2015-3-28 12:43
谢谢你,但我想的是强制sxe,但可以指定某人不开sxe并且名字无

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

aKang 发表于 2015-3-31 14:47:45

k1nader 发表于 2015-3-30 09:57
不强制SXE,名字出现 就直接KICK,你只需要指定不kick谁就行了,道理一样,不改这个人的名字 ...

谢谢版主指导。

ttbs123 发表于 2015-4-2 22:42:08

k1nader 发表于 2015-3-30 09:57
不强制SXE,名字出现 就直接KICK,你只需要指定不kick谁就行了,道理一样,不改这个人的名字 ...

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

liyang2008 发表于 2015-4-2 23:36:29

XE没公开接口把

k1nader 发表于 2015-4-17 11:47:55

ttbs123 发表于 2015-4-2 22:42
我以前也尝试过用FM_ClientUserInfoChanged禁止让sxe修改某个玩家的名字为 ,但会出现你不断禁 ...

get_user_msgid("SayText");
Hook 这个消息
#Cstrike_Name_Change
判断这个,改名的一瞬间给他改回去并且 return PLUGIN_HANDLED

k1nader 发表于 2015-4-17 12:07:56

ttbs123 发表于 2015-4-2 22:42
我以前也尝试过用FM_ClientUserInfoChanged禁止让sxe修改某个玩家的名字为 ,但会出现你不断禁 ...

#include <amxmodx>
#include <amxmisc>

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

static const g_nosXeIname[] = "";

new g_iSayTextBlock, g_iUserIsUsesXeClient;

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

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

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

        if (equal(msg, "#Cstrike_Name_Change"))
        {
                static name, PlayerId;
       
                PlayerId = get_msg_arg_int(1);
               
                if (!g_iSayTextBlock)
                {
                        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 = 1;
                                g_iUserIsUsesXeClient = 0;
                                return PLUGIN_HANDLED;
                        }
                }
                else
                {
                        g_iSayTextBlock = 0;
                        return PLUGIN_HANDLED;
                }
        }
        return PLUGIN_CONTINUE;
}

stock sXeClient(id)
{
        return g_iUserIsUsesXeClient;
}

我用这个测试了下,可以通过。
页: [1] 2 3
查看完整版本: 有没有指定某人可以不开sxe的插件?