311890 发表于 2009-8-13 14:43:18

R版本,有个小问题想请教一下你!

我的目的是想玩家进服务器选择队伍后以及换名字的时候,各执行JoinMessage一次,但我按照以下方式编写的话,玩家一进入服务器,就会连续执行2次该函数,换名字的时候,只执行一次,请帮我看看,是哪里出了问题?谢谢了!

public client_connect(id){       
g_JoinedTeam = 0;
}

public EventJoinedTeam(){
        new id=read_data(1);
        if(( g_JoinedTeam == 0) && (!is_user_bot(id))){
                g_JoinedTeam=1;
       
                if(msg_hide != 0)
                        return PLUGIN_CONTINUE
               
                if(is_user_bot(id) || is_user_hltv(id))
                        return PLUGIN_CONTINUE
                set_task(1.0, "JoinMessage", id,"130524")
                remove_task(130524)
                }
        return PLUGIN_CONTINUE
}

public client_infochanged(id)
{
        new newname,oldname
        get_user_info(id, "name", newname,31)
        get_name(id,oldname,31)
        if (!equal(oldname,newname)){
        set_task(1.0, "JoinMessage", id,"130525")
        }
}

public JoinMessage(id){
                ......
        new szMessage;
        format( szMessage, 511, "^x01* 欢迎^x04新朋友^x01[^x04%s^x01]加油! ", name);
client_color(0,id,szMessage);       
        }

Rulzy 发表于 2009-8-13 19:12:55

请提供完整源代码,特别是 EventJoinedTeam 事件你是怎么定义的。

311890 发表于 2009-8-13 21:06:10

register_event( "TeamInfo", "EventJoinedTeam", "a", "2!UNASSIGNED");

这样定义的,源码有点大,贴不完整,如果还不行,我就上传附件上来!

Rulzy 发表于 2009-8-13 21:58:27

改成
register_event( "TeamInfo", "EventJoinedTeam", "a", "2=CT", "2=TERRORIST" );
试试

311890 发表于 2009-8-13 21:58:57

好的,谢谢,我马上去试!

311890 发表于 2009-8-13 22:46:02

晕了,我把
get_name换成get_user_name,恢复正常了!
怪了!其他地方的get_name也没问题,我是用的simen的中文ID插件。

Rulzy 发表于 2009-8-14 15:07:08

如果在玩家连接过程中给玩家改名为中文名,等玩家进入之后,就会发生一次改名事件。

Cr@zyTreE 发表于 2009-8-15 09:54:08

要玩家写cfg文件就可以了,还要用simen的中文ID插件啊。

311890 发表于 2009-8-15 11:36:26

要玩家写cfg文件就可以了,还要用simen的中文ID插件啊。
Cr@zyTreE 发表于 2009-8-15 09:54 http://www.dt-club.net/forum/images/common/back.gif
有些插件,如果不使用get_name函数而使用get_user_name的话,有可能造成服务器挂掉!像内网优先插件,所以为了保险,我全部替换了。

Rulzy 发表于 2009-8-15 21:11:24

我的服务器都是使用get_user_name来获取玩家名字的,不存在会挂服的问题啊。get_name其实跟get_user_info(id, "name",...)是一样的,而且还存在BUG。

另外,使用了破解的支持中文ID的swds.dll之后,根本就不需要用simen的中文ID插件了,直接用set_user_info(id, "name", "中文ID")就可以了。
页: [1] 2
查看完整版本: R版本,有个小问题想请教一下你!