* char-server -UNTESTED- [Wizputer]
* new method for getting GMs [Wizputer] * Added unique key for Char names [Wizputer] git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@529 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
840343a118
commit
caf03e7095
@ -1,4 +1,9 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
12/09
|
||||||
|
* char-server -UNTESTED- [Wizputer]
|
||||||
|
* new method for getting GMs [Wizputer]
|
||||||
|
* Added unique key for Char names [Wizputer]
|
||||||
|
|
||||||
12/08
|
12/08
|
||||||
* Started optimizing char-server [Wizputer]
|
* Started optimizing char-server [Wizputer]
|
||||||
|
|
||||||
|
@ -187,9 +187,10 @@ CREATE TABLE `char` (
|
|||||||
KEY (`partner_id`),
|
KEY (`partner_id`),
|
||||||
KEY (`party_id`),
|
KEY (`party_id`),
|
||||||
KEY (`guild_id`),
|
KEY (`guild_id`),
|
||||||
|
UNIQUE (`name`),
|
||||||
FOREIGN KEY (`account_id`) REFERENCES `login` (`account_id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (`account_id`) REFERENCES `login` (`account_id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
FOREIGN KEY (`partner_id`) REFERENCES `char` (`char_id`) ON DELETE SET NULL
|
FOREIGN KEY (`partner_id`) REFERENCES `char` (`char_id`) ON DELETE SET NULL
|
||||||
) TYPE=INNODB AUTO_INCREMENT=150001;
|
) TYPE=INNODB AUTO_INCREMENT=150000;
|
||||||
|
|
||||||
CREATE TABLE `friend` (
|
CREATE TABLE `friend` (
|
||||||
`char_id` mediumint(6) UNSIGNED NOT NULL default '0',
|
`char_id` mediumint(6) UNSIGNED NOT NULL default '0',
|
||||||
|
1055
src/char_sql/char.c
1055
src/char_sql/char.c
File diff suppressed because it is too large
Load Diff
@ -188,22 +188,55 @@ unsigned char isGM(int account_id) {
|
|||||||
return *level;
|
return *level;
|
||||||
}
|
}
|
||||||
|
|
||||||
void read_GMs(void) {
|
static int gmdb_final(void *key,void *data,va_list ap) {
|
||||||
unsigned char *level;
|
unsigned char *level;
|
||||||
level = malloc(sizeof(unsigned char));
|
|
||||||
|
|
||||||
sprintf(tmpsql,"SELECT `%s`,`%s` FROM `%s` WHERE `%s` > 0", login_db_account_id, login_db_level, login_db,login_db_level);
|
nullpo_retr(0, level=data);
|
||||||
|
|
||||||
|
free(level);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void do_final_gmdb(void) {
|
||||||
|
if(gm_db){
|
||||||
|
numdb_final(gm_db,gmdb_final);
|
||||||
|
gm_db=NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void read_GMs(int fd) {
|
||||||
|
unsigned char *level;
|
||||||
|
int i=0;
|
||||||
|
|
||||||
|
if(gm_db)
|
||||||
|
do_final_gmdb();
|
||||||
|
|
||||||
|
gm_db = numdb_init();
|
||||||
|
|
||||||
|
sprintf(tmpsql,"SELECT `%s`,`%s` FROM `%s` WHERE `%s` > '%d'", login_db_account_id, login_db_level, login_db,login_db_level,lowest_gm_level);
|
||||||
sql_query(tmpsql,"read_GMs");
|
sql_query(tmpsql,"read_GMs");
|
||||||
|
|
||||||
|
WFIFOW(fd, 0) = 0x2732;
|
||||||
|
|
||||||
if ((sql_res = mysql_store_result(&mysql_handle))) {
|
if ((sql_res = mysql_store_result(&mysql_handle))) {
|
||||||
while((sql_row = mysql_fetch_row(sql_res))) {
|
for(i=0;(sql_row = mysql_fetch_row(sql_res));i++) {
|
||||||
|
level = malloc(sizeof(unsigned char));
|
||||||
|
|
||||||
if( (*level = atoi(sql_row[1])) > 99 )
|
if( (*level = atoi(sql_row[1])) > 99 )
|
||||||
*level = 99;
|
*level = 99;
|
||||||
|
|
||||||
numdb_insert(gm_db, atoi(sql_row[0]), level);
|
numdb_insert(gm_db, atoi(sql_row[0]), level);
|
||||||
|
|
||||||
|
WFIFOL(fd,6+5*i) = atoi(sql_row[0]);
|
||||||
|
WFIFOB(fd,10+5*i) = *level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WFIFOW(fd,2) = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WFIFOSET(fd,6+5*i);
|
||||||
|
|
||||||
mysql_free_result(sql_res);
|
mysql_free_result(sql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -931,10 +964,6 @@ int do_init(int argc,char **argv){
|
|||||||
free(online_db);
|
free(online_db);
|
||||||
online_db = numdb_init();
|
online_db = numdb_init();
|
||||||
|
|
||||||
// GM database init
|
|
||||||
free(gm_db);
|
|
||||||
gm_db = numdb_init();
|
|
||||||
|
|
||||||
// Read GMs from table
|
// Read GMs from table
|
||||||
read_GMs();
|
read_GMs();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user