搜索
查看: 2603|回复: 4

菜鸟求救!这么简单的插件竟然无法搞定!

[复制链接]
发表于 2007-3-30 11:57:26 | 显示全部楼层 |阅读模式 来自 中国–广东–中山
这是我写的第一个涉及到MySQL数据库的插件,请各位高手不吝赐教。

插件功能:当玩家连接到服务器的时候,检查他是不是第一次登录服务器,如果是,就显示信息“欢迎新朋友XXX”,如果不是,就检查他是第几次登陆,并显示“欢迎老朋友XXX第x次登录”。
对应的数据库名为database,其中只有一个表player-data,表中只有2个列,一个是“STEAM-ID”,记录玩家的STEAM-ID,另一个是“LoginTimes”,记录玩家登录次数。

插件代码如下:
/* UTF-8 func by www.DT-Club.net */
#include <amxmodx>
#include <amxmisc>
#include <dbi>
#define PLUGIN_NAME "HC_StatusChecker"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "Apocalyptic"
new SteamId[21]
new Name[33]
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
}
public client_connect(id)
{
//获取玩家的STEAM-ID信息,并存放在字符串变量SteamId中
get_user_authid (id, SteamId, 20)
//获取玩家的名字,并存放在字符串变量Name中
get_user_name (id,Name,32)
//连接到MySQL数据库
new sql:mysql=dbi_connect("127.0.0.1","root","password","database")
//检查玩家的STEAM-ID是否已经被记录,即在第1列(STEAM-ID)中搜索是否存在对应的记录
new result:SteamIdExist=dbi_query(mysql,"SELECT STEAM-ID FROM player-data WHERE STEAM-ID='%s",SteamId)
//如果尚未被记录
if (SteamIdExist<=RESULT_NONE)
{
//在player-data表中的STEAM-ID列插入一条新的记录,即玩家的STEAM-ID字符串
//同时把第2列(LoginTimes)的对应记录设置为2
new result:AddSteamId=dbi_query(mysql,"INSERT INTO player-data VALUES ('%s',2)",SteamId)
//如果插入成功
if (AddSteamId>=RESULT_NONE)
{
//在服务器控制台显示初始化成功
server_print("Initialize OK!")
//在玩家屏幕显示欢迎信息
client_print(0,print_center,"欢迎新朋友%s!",Name)
}
}
//如果已经有记录
else
{
//读取第2列(LoginTimes)中对应的数字,并存放在变量PlayerLoginTimes中
new PlayerLoginTimes = dbi_field(SteamIdExist,2)
client_print(id,print_center,"欢迎老朋友%s第%d次登录!",Name,PlayerLoginTimes)
//登录次数+1
PlayerLoginTimes=PlayerLoginTimes+1
//把+1后的登录次数写入到对应STEAM-ID的LoginTimes列中
//下次登录的时候就会显示正确的登录次数
new result:SteamIdExist=dbi_query(mysql,"UPDATE player-data SET LoginTimes=%d WHERE STEAM-ID=%s",PlayerLoginTimes,SteamId)
}
//断开数据库连接
dbi_close(mysql)
return PLUGIN_CONTINUE
}

在完成了以上插件代码的编写之后,我进行编译,却发现很多Tag mismatch(标识符失匹配)错误,错误位置是以上代码中的粗体部分,请问是什么问题?
我认为,数据库的四中最基本操作——检索、插入、读取、更新,都已经在上面的简单插件中实现了,如果能把这个插件弄出来的话,对于那些对SQL感兴趣的AMXX编写者来说会有很大的参考价值。
请各位高手不吝赐教!
发表于 2007-3-30 14:09:14 | 显示全部楼层 来自 中国–福建–厦门

回复: 菜鸟求救!这么简单的插件竟然无法搞定!

result 应该是 Result,第一个字母大写。
回复

使用道具 举报

 楼主| 发表于 2007-3-30 14:46:33 | 显示全部楼层 来自 中国–广东–中山

回复: 菜鸟求救!这么简单的插件竟然无法搞定!

Post by Rulzy
result 应该是 Result,第一个字母大写。
就这么简单?不会吧?:cry:

基本上我现在对于在AMXX中使用SQL还是浑浑噩噩没有什么明确的了解……
:cry:

把result改为Result之后好像也没什么改善……
回复

使用道具 举报

发表于 2007-4-1 20:00:19 | 显示全部楼层 来自 中国–福建–漳州

回复: 菜鸟求救!这么简单的插件竟然无法搞定!

new sql:mysql=dbi_connect("127.0.0.1","root","password","database")

这里的 sql  应该是 Sql。
回复

使用道具 举报

 楼主| 发表于 2007-4-1 20:39:05 | 显示全部楼层 来自 中国–广东–中山

回复: 菜鸟求救!这么简单的插件竟然无法搞定!

Post by Rulzy
new sql:mysql=dbi_connect("127.0.0.1","root","password","database")

这里的 sql 应该是 Sql。
果然是这个问题,谢谢!
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

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