目的:
在char_athena.conf和login_athena.conf中增加设定,可以方便修改数据表的名字而不用重复修改源码。
方法:
修改char.c和login.c,通过读取char_athena.conf和login_athena.conf文件中的设定值,修改几个静态变量的值。
织梦好,好织梦
分析:
在char.c中有一段:
引用:
static int char_server_port = 3306;
static char char_server_ip[32] = "127.0.0.1";
static char char_server_id[32] = "ragnarok";
static char char_server_pw[32] = "ragnarok";
static char char_server_db[32] = "ragnarok";
static char char_server_charset[32] = "";
char char_db[256] = "char";
char reg_db[256] = "global_reg_value";
char friend_db[256] = "friend";
static char cart_db[256] = "cart_inventory";
static char inventory_db[256] = "inventory";
static char charlog_db[256] = "charlog";
// static char interlog_db[256] = "interlog";
static char skill_db[256] = "skill";
static char memo_db[256] = "memo";
内容来自dedecms
其中 char_server_port,char_server_ip,char_server_id,char_server_pw,char_server_db,char_server_charset 这几个原来的char_athena.conf中已经可以修改了。那么只要仿照原来的方法,增加几个设置,就可以达到目的。
具体实现:
打开char.c,修改char_sql_config_read_sub函数,在
else if(strcmpi(w1,"char_server_charset")==0){
strcpy(char_server_charset, w2);
}
末尾加入:
代码:
/* 增加读取自定义数据表设定 */
else if(strcmpi(w1,"char_db_name")==0){
strcpy(char_db, w2);
}
else if(strcmpi(w1,"reg_db_name")==0){
strcpy(reg_db, w2);
}
else if(strcmpi(w1,"friend_db_name")==0){
strcpy(friend_db, w2);
}
else if(strcmpi(w1,"cart_db_name")==0){
strcpy(cart_db, w2);
}
else if(strcmpi(w1,"inventory_db_name")==0){
strcpy(inventory_db, w2);
}
else if(strcmpi(w1,"charlog_db_name")==0){
strcpy(charlog_db, w2);
}
/* else if(strcmpi(w1,"interlog_db_name")==0){
strcpy(interlog_db, w2);
}
*/ else if(strcmpi(w1,"skill_db_name")==0){ 内容来自dedecms
strcpy(skill_db, w2);
}
else if(strcmpi(w1,"memo_db_name")==0){
strcpy(memo_db, w2);
}
织梦好,好织梦
本文来自织梦
然后只要在char_athena.conf中增加相应的设置即可。如:
织梦好,好织梦
代码:
char_db_name: char
reg_db_name: global_reg_value
friend_db_name: friend
cart_db_name: cart_inventory
inventory_db_name: inventory
charlog_db_name: charlog
interlog_db_name: interlog
skill_db_name: skill
memo_db_name: memo
织梦内容管理系统
dedecms.com
dedecms.com
同样的方法,修改login.c
找到login_sql_config_read_sub函数
加入:
代码:
/* 增加读取自定义数据表设定 */
else if(strcmpi(w1,"login_db_name")==0){
strcpy(login_db, w2);
}
else if(strcmpi(w1,"loginlog_db_name")==0){
strcpy(loginlog_db, w2);
}
本文来自织梦
织梦好,好织梦
然后在login_athena.conf中增加相应的设置即可。如:
代码:
login_db_name: login
loginlog_db_name: loginlog 内容来自dedecms
织梦好,好织梦
这里要注意一点,就是要检查一下,是不是所有地方都已经使用了变量来代替数据表名字。
可以用查找功能来查一下代码。 内容来自dedecms
发现有一处loginlog没有用变量。
引用:
sprintf(
tmp_sql,"INSERT INTO `loginlog` (`time`,`log`) VALUES (NOW(),′%s′)",
strecpy(buf,log)
);
可以修改成:
代码:
sprintf(
tmp_sql,"INSERT INTO `%s` (`time`,`log`) VALUES (NOW(),′%s′)",
loginlog_db, strecpy(buf,log)
);
至此,已经初步完成目标,但可以发现,现在还没有把全部表都添加自定义设置。接下来需要把其他表也完善起来
要注意char和login是相对独立的,所以两个项目都要分别检查所有表名是否使用了变量替换。用VC的查找功能可以很方便的检查整个项目。 内容来自dedecms
下面以完善login为例: 内容来自dedecms
分析:
Athena使用的数据表如下:
引用:
`cart_inventory`,`char`,`charlog`,`global_reg_value`,`storage`,friend,`homunculus`,`homunculus_skill`,`status_change`,
`guild`,`guild_alliance`,`guild_castle`,`guild_expulsion`,`guild_member`,`guild_position`,`guild_skill`,`guild_storage`,
`interlog`,`inventory`,`ipbanlist`,`login`,`login_error`,`loginlog`,`memo`,`party`,`pet`,`ragsrvinfo`,`skill`,`sstatus`
我们要一个一个来查找,看看程序中有没有调用这些数据表.如果找到了,就修改,用变量来代替它.(注意查找范围是当前项目) 织梦好,好织梦
很快,我们找到了`global_reg_value`相关操作,
引用:
sprintf(tmp_sql,"DELETE FROM `global_reg_value` WHERE `type`=′1′ AND `account_id`=′%d′",account_id);
if(mysql_query(mysql_handle, tmp_sql)) {
printf("DB server Error - %s\n", mysql_error(mysql_handle));
} 内容来自dedecms
修改一下:
代码:
sprintf(tmp_sql,"DELETE FROM `%s` WHERE `type`=′1′ AND `account_id`=′%d′",reg_db,account_id);
if(mysql_query(mysql_handle, tmp_sql)) {
printf("DB server Error - %sn", mysql_error(mysql_handle));
} copyright dedecms
本文来自织梦
其他所有类似的都修改好,然后就和上面的步骤差不多:
在
引用:
int login_server_port = 3306;
char login_server_ip[32] = "127.0.0.1";
char login_server_id[32] = "ragnarok";
char login_server_pw[32] = "ragnarok";
char login_server_db[32] = "ragnarok";
char login_server_charset[32] = "";
char login_db[256] = "login";
char loginlog_db[256] = "loginlog";
下面增加:
代码:
char reg_db[ 256 ] = "global_reg_value"; copyright dedecms
在login_sql_config_read_sub函数内也加入:
织梦好,好织梦
代码:
else if(strcmpi(w1,"reg_db_name")==0){
strcpy(reg_db, w2);
} 织梦内容管理系统
最后在login_athena.conf中增加相应的设置 织梦内容管理系统
代码:
reg_db_name: global_reg_value copyright dedecms
这样就完成global_reg_value表的自定义设置。 织梦好,好织梦
其他表用同样的方法可以全部完善。这里不作一一介绍了。
本文来自织梦
织梦内容管理系统
1.76精品传奇_1.76天下毁灭_1.76复古传奇_英雄合击_中变靓装传奇_无忧传奇
传奇花屏补丁,花屏补丁,土城花屏补丁,盟重土城花屏补丁下载,土城花屏补丁下载,沙巴克花屏补丁,传奇土城花屏补丁下载
网站每天发布最新、最好的传奇版本下载和与传奇服务端配套开区传奇模版,网游技术教程全部免费下载!
无忧网络是目前唯一家所有的传奇服务端,传奇私服花屏补丁,盟重花屏补丁和传奇客户端下载都经过站长亲自测试并配有真实测试图!
所有的工具软件和传奇版本在发布之前,都会经过站长亲自测试,保证chuanqisf可以进入游戏,所有软件都无毒无插件!
本站声明:本站所有技术资料与下载资源均为网络搜集整理,并不代表本站的观点与立场,如有侵犯您的权益,请来信指出,本站将立即改正Copyright © 2002-2014 无忧网络 版权所有蜀ICP备09041899号