微波炉 发表于 2005-5-29 14:06:26

【讨论】如何何获取玩家的杀敌数?

如何何获取玩家的杀敌数?
是get_player 吗?
如何从MYSQL返回我要的数据???
如:我要从mysql返回mydata的数据(var的),库名为entertainment
是这样吗?
result=obi_quey(mysql,"SELECT mydata FROM `entertainment`",mydata)
这样格式对不对?
result就有了mydata的数据?

nwb13 发表于 2005-5-30 12:35:36

获取玩家的杀敌数
/* Returns player frags. */
native get_user_frags(index);

result=dbi_quey(...) 只能获取一张所搜索内容的结果表,具体的内容还需要自己再用
while( dbi_nextrow(...) > 0 ) {
dbi_result(...)
...
}
这样的格式来提取需要的数据

微波炉 发表于 2005-5-30 17:42:30

谢谢。我正在准备一个MYSQL数据库的大集成版。再有问题请教时来发贴。

微波炉 发表于 2005-5-31 11:49:25

牛牛大人。
我获得玩家的杀敌数,可无法写入MYSQL数据库。
我是这样弄的。

new csdata=get_user_frags(id)
result = dbi_query(dbc,"INSERT INTO Entertainment (csname,steamid,csip,csid,csdata,num) values ('%s','%s','%s','%d',csdata,1)",csname,steamid,csip,csid,csdata)
dbi_free_result(result)


其它的都有数据写入,就是csdata无法写入,一片空白。
如果把csdata换为'%d',则写入的都是0.
是语法不对吗?

nwb13 发表于 2005-5-31 12:35:28


new csdata=get_user_frags(id)
result = dbi_query(dbc,"INSERT INTO Entertainment (csname,steamid,csip,csid,csdata,num) values ('%s','%s','%s','%s','%d',1)",csname,steamid,csip,csid,csdata)
dbi_free_result(result)
修改为这样试试看,你自己对比一下看看区别
应该不会存为0 的

微波炉 发表于 2005-5-31 13:57:07

不能把CSID 对应的改为'%s',这样返回的不是玩家的ID,而是玩家的IP地址及乱码了。

微波炉 发表于 2005-6-1 09:54:32

牛牛老大,可否再指点??这个问题困扰我好久了。

流氓 发表于 2005-6-1 10:30:51

晕!不懂!!

nwb13 发表于 2005-6-1 11:20:27

发你的代码上来我看看,或者发到我的邮箱
nwb13-dt@163.com

微波炉 发表于 2005-6-2 12:43:50

下面在的代码


#include <amxmodx>
#include <amxmisc>
#include <dbi>
//#include <lang>
#include <fun>
new Sql:dbc
new Result:result
public plugin_init() {
register_plugin("SQL Entertainment","0.1","lai-xiwan_cn")
set_task(0.1,"sql_init")
}
public sql_init() {
new host, username, password, dbname, error
get_cvar_string("amx_sql_host",host,64)
get_cvar_string("amx_sql_user",username,32)
get_cvar_string("amx_sql_pass",password,32)
get_cvar_string("amx_sql_db",dbname,32)
dbc = dbi_connect(host,username,password,dbname,error,32)
if (dbc == SQL_FAILED)
log_amx(" SQL Connection Failed")
else
{
dbi_query(dbc,"CREATE TABLE IF NOT EXISTS `Entertainment` (`csname` VARCHAR(32) NOT NULL,`steamid` VARCHAR(32) NOT NULL,`csip` VARCHAR(64) NOT NULL,`csid` VARCHAR(64) NOT NULL,`csdata` VARCHAR(64) NOT NULL,`num` INT NOT NULL, PRIMARY KEY(csid,csname))")
}
}
public client_infochanged(id) {
new steamid
get_user_authid(id,steamid,31)
new csname
get_user_name(id,csname,31)
new csip
get_user_ip(id,csip,63,1)
new csid=get_user_userid(id)
new csdata=get_user_frags(id)
result = dbi_query(dbc,"SELECT * FROM Entertainment WHERE csname = '%s'",csname)
if (dbi_num_rows(result) < 1) {
new newname
get_user_name(id,newname,31)
if ( equal(newname,"csname") ){
return PLUGIN_HANDLED
}

result = dbi_query(dbc,"INSERT INTO Entertainment (csname,steamid,csip,csid,csdata,num) values ('%s','%s','%s','%d','%d',1)",csname,steamid,csip,csid,csdata)
dbi_free_result(result)
}else{
result = dbi_query(dbc,"UPDATE Entertainment SET num=num+1, csdata=csdata WHERE csname = '%s'",csname)
dbi_free_result(result)
}
dbi_free_result(result)
return PLUGIN_HANDLED
}
页: [1] 2 3
查看完整版本: 【讨论】如何何获取玩家的杀敌数?