* 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
|
||||
12/09
|
||||
* char-server -UNTESTED- [Wizputer]
|
||||
* new method for getting GMs [Wizputer]
|
||||
* Added unique key for Char names [Wizputer]
|
||||
|
||||
12/08
|
||||
* Started optimizing char-server [Wizputer]
|
||||
|
||||
|
@ -187,9 +187,10 @@ CREATE TABLE `char` (
|
||||
KEY (`partner_id`),
|
||||
KEY (`party_id`),
|
||||
KEY (`guild_id`),
|
||||
UNIQUE (`name`),
|
||||
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
|
||||
) TYPE=INNODB AUTO_INCREMENT=150001;
|
||||
) TYPE=INNODB AUTO_INCREMENT=150000;
|
||||
|
||||
CREATE TABLE `friend` (
|
||||
`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;
|
||||
}
|
||||
|
||||
void read_GMs(void) {
|
||||
unsigned char *level;
|
||||
level = malloc(sizeof(unsigned char));
|
||||
static int gmdb_final(void *key,void *data,va_list ap) {
|
||||
unsigned char *level;
|
||||
|
||||
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");
|
||||
|
||||
WFIFOW(fd, 0) = 0x2732;
|
||||
|
||||
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 )
|
||||
*level = 99;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -931,10 +964,6 @@ int do_init(int argc,char **argv){
|
||||
free(online_db);
|
||||
online_db = numdb_init();
|
||||
|
||||
// GM database init
|
||||
free(gm_db);
|
||||
gm_db = numdb_init();
|
||||
|
||||
// Read GMs from table
|
||||
read_GMs();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user