normen 发表于 2007-4-12 18:34:00

怎么样能让魔兽插件仅保存某一部分的玩家经验

就是做个判断,如果X123这个玩家的名字在users.ini里出现,那么就保存他的经验,否则就在玩家退出后自动丢弃这些经验,同理,如果ADMIN.AMXX插件使用了mysql保存权限帐号,那么就读取sql数据库,如果里面有x123这个名字,就保存经验,否则丢弃,我凭着自己学的一点皮毛遍了一下,居然编译过去了,就是运行起来不起作用
war3ft.cfg增加:
XP_Save_Reged 1
warcraft3FT.sma增加:
#include <sqlx>
#define AUTH_IN_SQL
register_cvar("XP_Save_Reged", "0")
Xp.inl修改:
public XP_Save_Helper( parm )
{
#if ADVANCED_DEBUG
writeDebugInfo("XP_Save_Helper", parm);
#endif
new xpsavereged = get_cvar_num("XP_Save_Reged")
if( xpsavereged )
{
if( Player_Reged( parm ) )
XP_Save( parm );
}else{
XP_Save( parm )
}

}
增加:
public Player_Reged(id)
{
#if ADVANCED_DEBUG
writeDebugInfo("Player_Reged", id);
#endif
#if defined AUTH_IN_SQL
new table, error, type, errno

new Handle:info = SQL_MakeStdTuple()
new Handle:sql = SQL_Connect(info, errno, error, 127)
new authname
get_user_name(id,authname,31)
get_cvar_string("amx_sql_table", table, 31)

SQL_GetAffinity(type, 11)

if (sql == Empty_Handle)
{
server_print(" %L", LANG_SERVER, "SQL_CANT_CON", error)
return findini(authname);
}
new Handle:query

if (equali(type, "sqlite"))
{
if (!sqlite_TableExists(sql, table))
{
SQL_QueryAndIgnore(sql, "CREATE TABLE %s ( auth TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '', access TEXT NOT NULL DEFAULT '', flags TEXT NOT NULL DEFAULT '' )", table)
}
query = SQL_PrepareQuery(sql,"SELECT * FROM %s WHERE auth = %s", table,authname)
} else {
SQL_QueryAndIgnore(sql, "CREATE TABLE IF NOT EXISTS `%s` (`auth` varchar(32) BINARY NOT NULL primary key, `password` varchar(32) NOT NULL, `access` varchar(32) NOT NULL, `flags` varchar(32) NOT NULL, `question` varchar(64) NOT NULL, `answer` varchar(64) NOT NULL, `email` varchar(32), `qq` varchar(16), `msn` varchar(32), `homepage` varchar(64), `regdate` varchar(14) NOT NULL, `username` varchar(32) NOT NULL, `sexMM` tinyint(1), `lastconn` varchar(14)) COMMENT = 'AMX Mod X Admins'", table)
query = SQL_PrepareQuery(sql,"SELECT * FROM `%s` WHERE `auth` = `%s`", table,authname)
}
if (!SQL_Execute(query))
{
SQL_QueryError(query, error, 127)
server_print(" %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error)
return false;
}
return SQL_NumResults(query)
#else
return findini(authname)

#endif
}
public findini(authname)
{
#if ADVANCED_DEBUG
writeDebugInfo("findini", authname);
#endif
new configsDir
new finded = 0

get_configsdir(configsDir, 63)
format(configsDir, 63, "%s/users.ini", configsDir)
if (!file_exists(configsDir))
return false
new szText
new a, pos = 0
while ( finded && read_file(configsDir, pos++, szText, 255, a) )
{
if (szText == authname)
{
finded = 1
return true;
}
}
return false;
}

请高手指点。
页: [1]
查看完整版本: 怎么样能让魔兽插件仅保存某一部分的玩家经验