原创技术帖,自己解决了,让魔兽仅保存注册过的玩家的经验
原创技术帖,自己解决了,让魔兽仅保存注册过的玩家的经验如果X123这个玩家名字在users.ini里存在,那么就保存他的经验,否则就在玩家退出后自动丢弃这些经验,同理,如果ADMIN.AMXX插件使用了mysql保存权限帐号也一样效果。
一切路径以addons\amxmodx\开始
1. 在scripting\include\amxconst.inc里增加:
/* r 玩家已注册
* s 总是保存该玩家经验
* t 永不保存该玩家经验
* By 先锋
*/
#define ADMIN_REGED (1<<17) /* flag "r" */
#define ADMIN_SAVEXP (1<<18) /* flag "s" */
#define ADMIN_TEMPID (1<<19) /* flag "t" */
2. scripting\warcraft3ft.sma里 WAR3_exec_config()这行上方增加
register_cvar("Only_SaveXP_Reged", "0")
3. scripting\war3ft\XP.inl里替换如下过程
public XP_Save_Helper( parm )
{
#if ADVANCED_DEBUG
writeDebugInfo("XP_Save_Helper", parm);
#endif
XP_Save( parm );
}
替换为:
public XP_Save_Helper( parm )
{
#if ADVANCED_DEBUG
writeDebugInfo("XP_Save_Helper", parm);
#endif
new savexpreg
iCvar = get_cvar_num("Only_SaveXP_Reged")
if ( access( parm, ADMIN_SAVEXP ) || !savexpreg )
{
XP_Save( parm );
} else {
if ( savexpreg )
{
if ( access( parm, ADMIN_REGED) )
{
if ( !access( parm, ADMIN_TEMPID) )
{
XP_Save( parm );
} else {
client_print( parm, print_chat, "%s 此ID为公用帐号,本局经验不会被保存,请更改您的ID后重新进入.", g_MODclient )
}
} else {
client_print( parm, print_chat, "%s 此ID没有注册,本局经验不会被保存,请到官方网站注册您的ID.", g_MODclient )
}
}
}
}
重新编译插件,然后将warcraft3ft.amxx放到plugins下。
4. configs\war3ft.cfg里增加一行
Only_SaveXP_Reged 1 //仅保存users.ini上有帐号的玩家经验 (1 开启/0 关闭)功能
5. configs\users.ini增加一行
"X123" "123" "zr" "a"
那么当"only_savexp_reged 1 "时候,因为存在r权限,就是已注册的,就能保存
而"X123" "123" "z" "a"或"X123" "123" "abcdeju" "a"
这两个帐号虽然users.ini中也存在,甚至具有一定OP权限,但是因为没有r,所以一样不保存
要注意,r s t 这三个权限中 s 有最高优先权,当s存在时候,不管其它设置,都是一定保存经验的。然后 t 高于r,
而"X123" "123" "zrt" "a"
一旦具有t,即使再有r也不会保存了。
而"X123" "123" "zrst" "a"这个仍然保存。
这样设置后,普通玩家连进来仅具有z权限。就可以不保存他的经验,强迫他只有通过注册后,users.ini或者sql数据库里有了他的信息才给他保存,另外,注册的插件别忘了写入数据库时候自动多一个r字母。把经常有人用的,例如www.dcoo.com,www.esai.com等装好客户端就有、并且玩家不改就进来玩的ID,提前自己注册好。密码为空,加上t权限,就可以让大家随便进入,而不会导致这个帐号太多人玩,一进来就有经验,好多人很懒的,下载了客户端,名字都不改就进来玩了。
回复: 原创技术帖,自己解决了,让魔兽仅保存注册过的玩家的经验
顶,又学到一种判断注册非注册的方法,不过你的这种损失了r、s、t权限,其实应该也只能这样还有一种方法就是直接在数据库查名字,有名字的就是注册了的,没有名字则为未注册,然后一样的处理~
回复: 原创技术帖,自己解决了,让魔兽仅保存注册过的玩家的经验
原先当only_savexp_reged为0时候,即使有t也会保存,5.4号中午更新,现在是:不管only_savexp_reged是什么,只要有s,一定保存,只要有t没s,一定不保存。
有r没(t、s),条件性保存。
public XP_Save_Helper( parm )
{
#if ADVANCED_DEBUG
writeDebugInfo("XP_Save_Helper", parm);
#endif
if ( access( parm, ADMIN_SAVEXP ) )
{
XP_Save( parm );
} else {
if ( access( parm, ADMIN_TEMPID ) )
{
client_print( parm, print_chat, "%s 此ID为公用帐号,本局经验不会被保存,请更改您的ID后重新进入.", g_MODclient )
} else {
if ( get_cvar_num("Only_SaveXP_Reged") && !access( parm, ADMIN_REGED ) )
{
client_print( parm, print_chat, "%s 此ID没有注册,本局经验不会被保存,请到官方网站注册您的ID.", g_MODclient )
} else {
XP_Save( parm );
}
}
}
} 楼主有QQ号码?有事情想请教您 我的QQ20576526 楼主也不来上点通了,等待中呀................... 楼主也不上点通了? liuge ji hao xian{:3_57:} 有没有人会这个不注册不能保存玩家的经验呀? 这个问题还是没有能够解决 这个问题还没有解决呢?
页:
[1]
2