搜索
查看: 2513|回复: 0

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

[复制链接]
发表于 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[1] )
{
#if ADVANCED_DEBUG
writeDebugInfo("XP_Save_Helper", parm[0]);
#endif
new xpsavereged = get_cvar_num("XP_Save_Reged")
if( xpsavereged )
{
if( Player_Reged( parm[0] ) )
XP_Save( parm[0] );
}else{
XP_Save( parm[0] )
}

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

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

SQL_GetAffinity(type, 11)

if (sql == Empty_Handle)
{
server_print("[AMXX] %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("[AMXX] %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error)
return false;
}
return SQL_NumResults(query)
#else
return findini(authname)

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

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

请高手指点。
游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

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