Cr@zyTreE 发表于 2008-6-3 03:38:16

如何实现玩家改了名字之后重新认证一次权限?

如何实现玩家改了名字之后重新认证一次权限?

client_infochanged(id)

Rulzy 发表于 2008-6-3 07:24:20

回复: 如何实现玩家改了名字之后重新认证一次权限?

稍微查看下admin.sma就可以明白了,就是在 client_infochanged(id) 事件中重新认证权限。

baili1258 发表于 2008-6-3 09:17:20

回复: 如何实现玩家改了名字之后重新认证一次权限?

public client_infochanged(id)
{
if (!is_user_connected(id) || !get_cvar_num("amx_mode"))
return PLUGIN_CONTINUE
new newname, oldname

get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31)
if (!equal(newname, oldname))
accessUser(id, newname)
return PLUGIN_CONTINUE
}
:brick::burn: :burn:

Cr@zyTreE 发表于 2008-6-3 09:54:44

回复: 如何实现玩家改了名字之后重新认证一次权限?

Post by baili1258
:brick::burn: :burn:


我写了这个函数了,就少了accessUser(id, newname)

昨天折腾好久,忘记去看admin.sma了:)

Cr@zyTreE 发表于 2008-6-3 19:26:55

回复: 如何实现玩家改了名字之后重新认证一次权限?

哇,我回来看代码,发现代码要加好多啊。。

想写一个队标保护的代码,下载官方网站上的插件发现不太好使。

baili1258 发表于 2008-6-4 09:25:24

回复: 如何实现玩家改了名字之后重新认证一次权限?

其实应该在客户端认证后进行名字检测!
就可以了
这个时候的玩家有权限的,应该都有提示的..
public client_putinserver(id)
{
}
这个时候检测的话...应该可以的

Cr@zyTreE 发表于 2008-6-4 09:41:57

回复: 如何实现玩家改了名字之后重新认证一次权限?

Post by baili1258
其实应该在客户端认证后进行名字检测!
就可以了
这个时候的玩家有权限的,应该都有提示的..
public client_putinserver(id)
{
}
这个时候检测的话...应该可以的

这里检测我肯定加了哈,这个是玩家进入服务器的时候验证id。

我要解决的问题是在游戏里面改名字,那就要重新认证一下权限。不想用set_task定期检测。
就像netbar最终版本的那样。

baili1258 发表于 2008-6-4 10:18:03

回复: 如何实现玩家改了名字之后重新认证一次权限?

用类似这个的
accessUser(id, newname)
自己做一个试下了
就是检测客户端改名字后,检测新名字的权限。。。
修改下,就是accessUser(id, newname)权限后,
获得用户权限后,设置个5分钟后的 set_task,检测下iD就行了!

/* 本插件由 AMXX-Studio 中文版自动生成*/
/* UTF-8 func by www.DT-Club.net */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN_NAME "New Plug-In"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "Administrator"
new g_motdFile
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
get_configsdir(g_motdFile, 63)
format(g_motdFile, 63, "%s/clanname.ini", g_motdFile)

//在此处添加您的代码...
}
public client_putinserver(id){
if (file_exists(g_motdFile)){
if (get_user_flags(id)&ADMIN_VOTE) //排除有权限的
return PLUGIN_CONTINUE
new name,usrip,message, len, line = 0
get_user_name( id, name, 31)
get_user_ip( id, usrip, 31, 1)
while(read_file( g_motdFile, line++, message, 191, len)){
if( containi( name, message) != -1 ){
new userid = get_user_userid( id)
server_cmd( "kick #%d; wait;addip 5 ^"%s^";wait;writeip",userid,usrip)
}
}
}
return PLUGIN_CONTINUE
}

参照了"禁止 改名 名称 长度"的代码修改的!

Cr@zyTreE 发表于 2008-6-4 12:21:16

回复: 如何实现玩家改了名字之后重新认证一次权限?

Post by baili1258
用类似这个的
accessUser(id, newname)
自己做一个试下了
就是检测客户端改名字后,检测新名字的权限。。。
修改下,就是accessUser(id, newname)权限后,
获得用户权限后,设置个5分钟后的 set_task,检测下iD就行了!

/* 本插件由 AMXX-Studio 中文版自动生成*/
/* UTF-8 func by www.DT-Club.net */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN_NAME "New Plug-In"
...

呵呵,感谢你的帮忙,不过你可能没明白我的意思。

我的代码中已经有client_putinserver(id),已经实现了玩家进入服务器的id检测,也就是在玩家连接服务器后进入服务器选择队伍后检测玩家的id是否为受包含的id。

而我想解决的是玩家在游戏中改名字,改了名字就要先取消权限,再读取user.ini文件,看看新id是否在这个文件中(这个文件中至少有b这个权限),如果没有就踢出服务器或者名字仍然是以前的名字,改名不成功。

我再试试看吧。

zwfgdlc 发表于 2008-6-4 13:22:46

回复: 如何实现玩家改了名字之后重新认证一次权限?

先用remove_user_flags(id)移除权限,然后再用set_user_flags(id,read_flags("abcd"))设置权限.
页: [1] 2
查看完整版本: 如何实现玩家改了名字之后重新认证一次权限?