搜索
楼主: Enigmaya

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

[复制链接]
 楼主| 发表于 2005-9-12 17:27:11 | 显示全部楼层 来自 中国–四川–成都

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

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


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

使用道具 举报

 楼主| 发表于 2005-9-12 19:26:33 | 显示全部楼层 来自 中国–四川–成都

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

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

使用道具 举报

发表于 2005-9-12 22:09:33 | 显示全部楼层 来自 中国–广西–玉林

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

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

支持!!!!!!!!!我试试看~~~
回复

使用道具 举报

发表于 2005-9-12 22:24:26 | 显示全部楼层 来自 中国–河南–南阳–邓州市

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

啥东东。。。。。。
我来看看
回复

使用道具 举报

发表于 2005-9-12 23:38:35 | 显示全部楼层 来自 中国–广东–广州–天河区

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

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


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

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

使用道具 举报

 楼主| 发表于 2005-9-13 12:26:23 | 显示全部楼层 来自 中国–四川–成都

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

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


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

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

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

使用道具 举报

 楼主| 发表于 2005-9-13 13:22:26 | 显示全部楼层 来自 中国–四川–成都

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

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

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

使用道具 举报

发表于 2005-9-13 13:54:50 | 显示全部楼层 来自 中国–广东–珠海–斗门区

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

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

使用道具 举报

发表于 2005-9-13 14:02:05 | 显示全部楼层 来自 中国–广东–广州–天河区

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

  1. if( containi(newname,cvar_fgstr)==1 && newname[0]=='[' && newname[len+1]==']')
复制代码


就这么判断我觉得不完美,如果标记是[test],而玩家改名字为[haha]play,不知道还有没用。。
言外之意就是说[]内的字符长度只要和标记长度相等,就没问题。。
我觉得你不如

  1. copy(newflag,len,newname)
  2. copy(oldflag,len,amx_flag)
  3. if(!equali(newflag,oldflag))
  4. {
  5. ......
  6. }
复制代码

个人意见,因为我没装AMMX,没办法测试。。。不过我的AMX代码就这么写的,很有用,什么都不会增加,即使用户换了新名称,那么就会在新名称前已经定义的标记。
还有一点不知道你考虑到没有,如果玩家从普通名字改到OP,,,,,,
回复

使用道具 举报

 楼主| 发表于 2005-9-13 14:50:50 | 显示全部楼层 来自 中国–四川–成都

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

Post by '[Grief.QQ
']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 加在名字前面( [test abc),这样函数就判断通过了。这样和真正加标记的玩家名字区别就不明显了。

应该说分开才完美些。。。
回复

使用道具 举报

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

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