* 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:
wizputer 2004-12-10 06:00:44 +00:00
parent 840343a118
commit caf03e7095
4 changed files with 603 additions and 523 deletions

View File

@ -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]

View File

@ -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',

File diff suppressed because it is too large Load Diff

View File

@ -188,22 +188,55 @@ unsigned char isGM(int account_id) {
return *level;
}
void read_GMs(void) {
static int gmdb_final(void *key,void *data,va_list ap) {
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");
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();