Enigmaya 发表于 2005-9-12 17:27:11

回复: 【原创】名字前加标记_v0.2--2005.9.11

Post by '
']我估计你没考虑如果OP也在IP范围内,他的名称改变,那就不是OP了。除非OP设置是IP。。

哦,是没考虑。感谢提醒。。。

Enigmaya 发表于 2005-9-12 19:26:33

回复: 【原创】名字前加标记_v0.3--2005.9.12

可以了。目前的问题是:多次更新标记或多次在id与flag间切换后,名字与标记间的空格会增加。
2,3次问题都不大,多了就有点不好看了。

WeeVee 发表于 2005-9-12 22:09:33

回复: 【原创】名字前加标记_v0.3--2005.9.12

:super: :super: :super: :super: :super: :super: :super: :super: :super: :super:

支持!!!!!!!!!我试试看~~~

ninia 发表于 2005-9-12 22:24:26

回复: 【原创】名字前加标记_v0.3--2005.9.12

啥东东。。。。。。
我来看看

[Grief.QQ] 发表于 2005-9-12 23:38:35

回复: 【原创】名字前加标记_v0.3--2005.9.12

Post by Enigmaya
可以了。目前的问题是:多次更新标记或多次在id与flag间切换后,名字与标记间的空格会增加。
2,3次问题都不大,多了就有点不好看了。

不用说,你肯定缺少了检测玩家名称的函数,比如说 public check_name(id),它的作用就是玩家的名称是否符合添加标记后的要求,比如,名称为play的玩家,被你标记后为 [#1]play,那么这个时候玩家的名称是改变了的,而public client_infochanged(id)这个时候会马上执行,但是由于你没有判断,从而标记再次被添加,如此反复,空格会越来越多。

哈哈,看来你考虑问题还欠缺周全啊。。。。。。再动动脑筋吧!

Enigmaya 发表于 2005-9-13 12:26:23

回复: 【原创】名字前加标记_v0.3--2005.9.12

Post by '
']不用说,你肯定缺少了检测玩家名称的函数,比如说 public check_name(id),它的作用就是玩家的名称是否符合添加标记后的要求,比如,名称为play的玩家,被你标记后为 play,那么这个时候玩家的名称是改变了的,而public client_infochanged(id)这个时候会马上执行,但是由于你没有判断,从而标记再次被添加,如此反复,空格...

晕,不要纸上谈兵啊,看看代码再说嘛。
不是这个原因。。。infochanged不会反复执行。
如果反复执行,增加的会是标记和空格,而现在只是空隙(连空格都不是)!

你没看清我上面说的?我没有说标记会被反复添加阿!

我说的是更改n次以后才会出现,2,3次不会出现(看不出来,改一次会增加一点空隙,改多了才看得出来)

Enigmaya 发表于 2005-9-13 13:22:26

回复: 【原创】名字前加标记_v0.3--2005.9.12

而且也不需要单独再做个做个函数来判断是否含有标记,

本身加标记函数就会判断name中是否含有新标记,改完名后执行了infochanged,又会回到加标记函数来,而这时name中已经包含了新标记,就不会再添加标记了。

konglong 发表于 2005-9-13 13:54:50

回复: 【原创】名字前加标记_v0.3--2005.9.12

:cool::cool: 试验看看,不知道会不回冲突,和CD.

[Grief.QQ] 发表于 2005-9-13 14:02:05

回复: 【原创】名字前加标记_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,,,,,,

Enigmaya 发表于 2005-9-13 14:50:50

回复: 【原创】名字前加标记_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),这样函数就判断通过了。这样和真正加标记的玩家名字区别就不明显了。

应该说分开才完美些。。。
页: 1 2 [3] 4 5 6
查看完整版本: 【原创】名字前加标记_v0.3--2005.9.12