回复: 【原创】名字前加标记_v0.2--2005.9.11
Post by '']我估计你没考虑如果OP也在IP范围内,他的名称改变,那就不是OP了。除非OP设置是IP。。
哦,是没考虑。感谢提醒。。。
回复: 【原创】名字前加标记_v0.3--2005.9.12
可以了。目前的问题是:多次更新标记或多次在id与flag间切换后,名字与标记间的空格会增加。2,3次问题都不大,多了就有点不好看了。
回复: 【原创】名字前加标记_v0.3--2005.9.12
:super: :super: :super: :super: :super: :super: :super: :super: :super: :super:支持!!!!!!!!!我试试看~~~
回复: 【原创】名字前加标记_v0.3--2005.9.12
啥东东。。。。。。我来看看
回复: 【原创】名字前加标记_v0.3--2005.9.12
Post by Enigmaya可以了。目前的问题是:多次更新标记或多次在id与flag间切换后,名字与标记间的空格会增加。
2,3次问题都不大,多了就有点不好看了。
不用说,你肯定缺少了检测玩家名称的函数,比如说 public check_name(id),它的作用就是玩家的名称是否符合添加标记后的要求,比如,名称为play的玩家,被你标记后为 [#1]play,那么这个时候玩家的名称是改变了的,而public client_infochanged(id)这个时候会马上执行,但是由于你没有判断,从而标记再次被添加,如此反复,空格会越来越多。
哈哈,看来你考虑问题还欠缺周全啊。。。。。。再动动脑筋吧!
回复: 【原创】名字前加标记_v0.3--2005.9.12
Post by '']不用说,你肯定缺少了检测玩家名称的函数,比如说 public check_name(id),它的作用就是玩家的名称是否符合添加标记后的要求,比如,名称为play的玩家,被你标记后为 play,那么这个时候玩家的名称是改变了的,而public client_infochanged(id)这个时候会马上执行,但是由于你没有判断,从而标记再次被添加,如此反复,空格...
晕,不要纸上谈兵啊,看看代码再说嘛。
不是这个原因。。。infochanged不会反复执行。
如果反复执行,增加的会是标记和空格,而现在只是空隙(连空格都不是)!
你没看清我上面说的?我没有说标记会被反复添加阿!
我说的是更改n次以后才会出现,2,3次不会出现(看不出来,改一次会增加一点空隙,改多了才看得出来)
回复: 【原创】名字前加标记_v0.3--2005.9.12
而且也不需要单独再做个做个函数来判断是否含有标记,本身加标记函数就会判断name中是否含有新标记,改完名后执行了infochanged,又会回到加标记函数来,而这时name中已经包含了新标记,就不会再添加标记了。
回复: 【原创】名字前加标记_v0.3--2005.9.12
:cool::cool: 试验看看,不知道会不回冲突,和CD.回复: 【原创】名字前加标记_v0.3--2005.9.12
if( containi(newname,cvar_fgstr)==1 && newname=='[' && newname==']')就这么判断我觉得不完美,如果标记是,而玩家改名字为play,不知道还有没用。。
言外之意就是说[]内的字符长度只要和标记长度相等,就没问题。。
我觉得你不如
copy(newflag,len,newname)
copy(oldflag,len,amx_flag)
if(!equali(newflag,oldflag))
{
......
}
个人意见,因为我没装AMMX,没办法测试。。。不过我的AMX代码就这么写的,很有用,什么都不会增加,即使用户换了新名称,那么就会在新名称前已经定义的标记。
还有一点不知道你考虑到没有,如果玩家从普通名字改到OP,,,,,,
回复: 【原创】名字前加标记_v0.3--2005.9.12
Post by '']if( containi(newname,cvar_fgstr)==1 && newname=='==']')
就这么判断我觉得不完美,如果标记是,而玩家改名字为play,不知道还有没用。。
言外之意就是说内的字符长度只要和标记长度相等,就没问题。。
我觉得你不如
copy(newflag,len,newname)
copy(oldflag,len,amx_flag)
if(!equali(newflag,oldflag)...
呵呵,不可能出现那样的情况,containi(newname,cvar_fgstr)==1,这个就会判断[]之间的标记(这个函数你的理解错了,不是长度相等,而是完全匹配并且从数组下标1开始,也就是说,即使匹配但是不在下标1处,也不能通过,避免玩家名字里本身就含有标记字符),
我设置的标记和[]是分开的([] 是默认的,这样换标记就只考虑中间的了),所以[ ]也拿出来单独判断。
不分开的话,如果标记是 ,而有玩家 用 [test 加在名字前面( [test abc),这样函数就判断通过了。这样和真正加标记的玩家名字区别就不明显了。
应该说分开才完美些。。。