GUILDCACHE

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@657 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
amber 2004-12-20 15:54:31 +00:00
parent 3e663377ab
commit e8402a3971
6 changed files with 16 additions and 317 deletions

View File

@ -1,6 +1,8 @@
Date Added Date Added
12/20 12/20
* Rolling GUILDCACHE and FASTCHAR into main branches/stable
tree [MouseJstr]
* Changed max_paramter to an unsigned int so that you can have over 255 as your max stat [Codemaster] * Changed max_paramter to an unsigned int so that you can have over 255 as your max stat [Codemaster]
* Experimental: Reverting a change on deleting any skill units when we're * Experimental: Reverting a change on deleting any skill units when we're
logging off - might reduce the 'delete_timer' errors [celest] logging off - might reduce the 'delete_timer' errors [celest]

View File

@ -37,18 +37,14 @@
#include "strlib.h" #include "strlib.h"
#include "itemdb.h" #include "itemdb.h"
#include "inter.h" #include "inter.h"
#ifdef FASTCHAR
#include "db.h" #include "db.h"
#endif /* FASTCHAR */
#ifdef MEMWATCH #ifdef MEMWATCH
#include "memwatch.h" #include "memwatch.h"
#endif #endif
#ifdef FASTCHAR
static struct dbt *char_db_; static struct dbt *char_db_;
#endif /* FASTCHAR */
char char_db[256] = "char"; char char_db[256] = "char";
char cart_db[256] = "cart_inventory"; char cart_db[256] = "cart_inventory";
char inventory_db[256] = "inventory"; char inventory_db[256] = "inventory";
@ -157,11 +153,8 @@ int GM_num = 0;
int console = 0; int console = 0;
#ifdef FASTCHAR
#define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y) #define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y)
#endif /* FASTCHAR */
//------------------------------------------------- //-------------------------------------------------
// Set Character online/offline [Wizputer] // Set Character online/offline [Wizputer]
//------------------------------------------------- //-------------------------------------------------
@ -206,13 +199,22 @@ void set_all_offline(void) {
} }
void set_char_offline(int char_id, int account_id) { void set_char_offline(int char_id, int account_id) {
struct mmo_charstatus *cp;
if ( char_id == 99 ) if ( char_id == 99 )
sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `account_id`='%d'", char_db, account_id); sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `account_id`='%d'", char_db, account_id);
else else {
sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `char_id`='%d'", char_db, char_id); cp = numdb_search(char_db_,char_id);
if (cp != NULL) {
free(cp);
numdb_erase(char_db_,char_id);
}
sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `char_id`='%d'", char_db, char_id);
if (mysql_query(&mysql_handle, tmp_sql)) if (mysql_query(&mysql_handle, tmp_sql))
printf("DB server Error (set_char_offline)- %s\n", mysql_error(&mysql_handle)); printf("DB server Error (set_char_offline)- %s\n", mysql_error(&mysql_handle));
}
if (login_fd <= 0 || session[login_fd]->eof) if (login_fd <= 0 || session[login_fd]->eof)
return; return;
@ -297,7 +299,6 @@ void insert_friends(int char_id_count){
} }
} }
#ifdef FASTCHAR
int compare_item(struct item *a, struct item *b) { int compare_item(struct item *a, struct item *b) {
return ( return (
(a->id == b->id) && (a->id == b->id) &&
@ -313,39 +314,24 @@ int compare_item(struct item *a, struct item *b) {
(a->card[3] == b->card[3])); (a->card[3] == b->card[3]));
} }
#endif /* FASTCHAR */
//===================================================================================================== //=====================================================================================================
int mmo_char_tosql(int char_id, struct mmo_charstatus *p){ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
int i=0,party_exist,guild_exist; int i=0,party_exist,guild_exist;
int eqcount=1; int eqcount=1;
int noteqcount=1; int noteqcount=1;
#ifdef FASTCHAR
int diff = 0; int diff = 0;
#endif /* FASTCHAR */
char temp_str[1024]; char temp_str[1024];
char *tmp_p = tmp_sql; char *tmp_p = tmp_sql;
#ifndef FASTCHAR
#else /* FASTCHAR */
struct mmo_charstatus *cp; struct mmo_charstatus *cp;
#endif /* FASTCHAR */
struct itemtemp mapitem; struct itemtemp mapitem;
#ifdef FASTCHAR
#endif /* FASTCHAR */
if (char_id!=p->char_id) return 0; if (char_id!=p->char_id) return 0;
#ifdef FASTCHAR
cp = numdb_search(char_db_,char_id); cp = numdb_search(char_db_,char_id);
#endif /* FASTCHAR */
save_flag = p->char_id; save_flag = p->char_id;
printf("(\033[1;32m%d\033[0m) %s \trequest save char data - ",char_id,char_dat[0].name); printf("(\033[1;32m%d\033[0m) %s \trequest save char data - ",char_id,char_dat[0].name);
#ifndef FASTCHAR
#endif /* not FASTCHAR */
//for(testcount=1;testcount<50;testcount++){//---------------------------test count-------------------- //for(testcount=1;testcount<50;testcount++){//---------------------------test count--------------------
// printf("test count : %d\n", testcount); // printf("test count : %d\n", testcount);
// eqcount=1; // eqcount=1;
@ -355,16 +341,12 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
//----------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------
//=========================================map inventory data > memory =============================== //=========================================map inventory data > memory ===============================
#ifdef FASTCHAR
diff = 0; diff = 0;
#endif /* FASTCHAR */
//map inventory data //map inventory data
for(i=0;i<MAX_INVENTORY;i++){ for(i=0;i<MAX_INVENTORY;i++){
#ifdef FASTCHAR
if (!compare_item(&p->inventory[i], &cp->inventory[i])) if (!compare_item(&p->inventory[i], &cp->inventory[i]))
diff = 1; diff = 1;
#endif /* FASTCHAR */
if(p->inventory[i].nameid>0){ if(p->inventory[i].nameid>0){
if(itemdb_isequip(p->inventory[i].nameid)==1){ if(itemdb_isequip(p->inventory[i].nameid)==1){
mapitem.equip[eqcount].flag=0; mapitem.equip[eqcount].flag=0;
@ -398,30 +380,19 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
} }
} }
} }
#ifdef FASTCHAR
#endif /* FASTCHAR */
//printf("- Save item data to MySQL!\n"); //printf("- Save item data to MySQL!\n");
#ifndef FASTCHAR
memitemdata_to_sql(mapitem, eqcount, noteqcount, p->char_id,TABLE_INVENTORY);
#else /* FASTCHAR */
if (diff) if (diff)
memitemdata_to_sql(mapitem, eqcount, noteqcount, p->char_id,TABLE_INVENTORY); memitemdata_to_sql(mapitem, eqcount, noteqcount, p->char_id,TABLE_INVENTORY);
#endif /* FASTCHAR */
//=========================================map cart data > memory ==================================== //=========================================map cart data > memory ====================================
eqcount=1; eqcount=1;
noteqcount=1; noteqcount=1;
#ifdef FASTCHAR
diff = 0; diff = 0;
#endif /* FASTCHAR */
//map cart data //map cart data
for(i=0;i<MAX_CART;i++){ for(i=0;i<MAX_CART;i++){
#ifdef FASTCHAR
if (!compare_item(&p->cart[i], &cp->cart[i])) if (!compare_item(&p->cart[i], &cp->cart[i]))
diff = 1; diff = 1;
#endif /* FASTCHAR */
if(p->cart[i].nameid>0){ if(p->cart[i].nameid>0){
if(itemdb_isequip(p->cart[i].nameid)==1){ if(itemdb_isequip(p->cart[i].nameid)==1){
mapitem.equip[eqcount].flag=0; mapitem.equip[eqcount].flag=0;
@ -457,16 +428,11 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
} }
//printf("- Save cart data to MySQL!\n"); //printf("- Save cart data to MySQL!\n");
#ifndef FASTCHAR
memitemdata_to_sql(mapitem, eqcount, noteqcount, p->char_id,TABLE_CART);
#else /* FASTCHAR */
if (diff) if (diff)
memitemdata_to_sql(mapitem, eqcount, noteqcount, p->char_id,TABLE_CART); memitemdata_to_sql(mapitem, eqcount, noteqcount, p->char_id,TABLE_CART);
#endif /* FASTCHAR */
//===================================================================================================== //=====================================================================================================
#ifdef FASTCHAR
if ((p->base_exp != cp->base_exp) || (p->class != cp->class) || if ((p->base_exp != cp->base_exp) || (p->class != cp->class) ||
(p->base_level != cp->base_level) || (p->job_level != cp->job_level) || (p->base_level != cp->base_level) || (p->job_level != cp->job_level) ||
(p->job_exp != cp->job_exp) || (p->zeny != cp->zeny) || (p->job_exp != cp->job_exp) || (p->zeny != cp->zeny) ||
@ -484,7 +450,6 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
(p->head_mid != cp->head_mid) || (p->head_bottom != cp->head_bottom) || (p->head_mid != cp->head_mid) || (p->head_bottom != cp->head_bottom) ||
(p->partner_id != cp->partner_id)) { (p->partner_id != cp->partner_id)) {
#endif /* FASTCHAR */
//}//---------------------------test count------------------------------ //}//---------------------------test count------------------------------
//check party_exist //check party_exist
party_exist=0; party_exist=0;
@ -541,7 +506,6 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle)); printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle));
} }
#ifdef FASTCHAR
} }
diff = 0; diff = 0;
@ -554,7 +518,6 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
} }
if (diff) { if (diff) {
#endif /* FASTCHAR */
//printf("- Save memo data to MySQL!\n"); //printf("- Save memo data to MySQL!\n");
//`memo` (`memo_id`,`char_id`,`map`,`x`,`y`) //`memo` (`memo_id`,`char_id`,`map`,`x`,`y`)
sprintf(tmp_sql,"DELETE FROM `%s` WHERE `char_id`='%d'",memo_db, p->char_id); sprintf(tmp_sql,"DELETE FROM `%s` WHERE `char_id`='%d'",memo_db, p->char_id);
@ -571,11 +534,8 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
printf("DB server Error (insert `memo`)- %s\n", mysql_error(&mysql_handle)); printf("DB server Error (insert `memo`)- %s\n", mysql_error(&mysql_handle));
} }
} }
#ifdef FASTCHAR
} }
#endif /* FASTCHAR */
#ifdef FASTCHAR
diff = 0; diff = 0;
for(i=0;i<MAX_SKILL;i++) for(i=0;i<MAX_SKILL;i++)
if((p->skill[i].id != cp->skill[i].id) || (p->skill[i].lv != cp->skill[i].lv) || if((p->skill[i].id != cp->skill[i].id) || (p->skill[i].lv != cp->skill[i].lv) ||
@ -585,7 +545,6 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
} }
if (diff) { if (diff) {
#endif /* FASTCHAR */
//printf("- Save skill data to MySQL!\n"); //printf("- Save skill data to MySQL!\n");
//`skill` (`char_id`, `id`, `lv`) //`skill` (`char_id`, `id`, `lv`)
sprintf(tmp_sql,"DELETE FROM `%s` WHERE `char_id`='%d'",skill_db, p->char_id); sprintf(tmp_sql,"DELETE FROM `%s` WHERE `char_id`='%d'",skill_db, p->char_id);
@ -597,11 +556,7 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
for(i=0;i<MAX_SKILL;i++){ for(i=0;i<MAX_SKILL;i++){
if(p->skill[i].id){ if(p->skill[i].id){
if (p->skill[i].id && p->skill[i].flag!=1) { if (p->skill[i].id && p->skill[i].flag!=1) {
#ifndef FASTCHAR
sprintf(tmp_sql,"INSERT delayed INTO `%s`(`char_id`, `id`, `lv`) VALUES ('%d', '%d','%d')",
#else /* FASTCHAR */
sprintf(tmp_sql,"INSERT INTO `%s`(`char_id`, `id`, `lv`) VALUES ('%d', '%d','%d')", sprintf(tmp_sql,"INSERT INTO `%s`(`char_id`, `id`, `lv`) VALUES ('%d', '%d','%d')",
#endif /* FASTCHAR */
skill_db, char_id, p->skill[i].id, (p->skill[i].flag==0)?p->skill[i].lv:p->skill[i].flag-2); skill_db, char_id, p->skill[i].id, (p->skill[i].flag==0)?p->skill[i].lv:p->skill[i].flag-2);
if(mysql_query(&mysql_handle, tmp_sql)) { if(mysql_query(&mysql_handle, tmp_sql)) {
printf("DB server Error (insert `skill`)- %s\n", mysql_error(&mysql_handle)); printf("DB server Error (insert `skill`)- %s\n", mysql_error(&mysql_handle));
@ -609,13 +564,8 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
} }
} }
} }
#ifdef FASTCHAR
} }
#endif /* FASTCHAR */
#ifndef FASTCHAR
#else /* FASTCHAR */
diff = 0; diff = 0;
for(i=0;i<p->global_reg_num;i++) { for(i=0;i<p->global_reg_num;i++) {
if ((p->global_reg[i].str == NULL) && (cp->global_reg[i].str == NULL)) if ((p->global_reg[i].str == NULL) && (cp->global_reg[i].str == NULL))
@ -629,7 +579,6 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
} }
if (diff) { if (diff) {
#endif /* FASTCHAR */
//printf("- Save global_reg_value data to MySQL!\n"); //printf("- Save global_reg_value data to MySQL!\n");
//`global_reg_value` (`char_id`, `str`, `value`) //`global_reg_value` (`char_id`, `str`, `value`)
sprintf(tmp_sql,"DELETE FROM `%s` WHERE `type`=3 AND `char_id`='%d'",reg_db, p->char_id); sprintf(tmp_sql,"DELETE FROM `%s` WHERE `type`=3 AND `char_id`='%d'",reg_db, p->char_id);
@ -649,54 +598,37 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus *p){
} }
} }
} }
#ifdef FASTCHAR
} }
#endif /* FASTCHAR */
// Friends list // Friends list
// account_id, friend_id0, name0, ... // account_id, friend_id0, name0, ...
tmp_p += sprintf(tmp_p, "REPLACE INTO `%s` (`id`, `account_id`",friend_db); tmp_p += sprintf(tmp_p, "REPLACE INTO `%s` (`id`, `account_id`",friend_db);
#ifdef FASTCHAR
diff = 0; diff = 0;
#endif /* FASTCHAR */
for (i=0;i<20;i++) for (i=0;i<20;i++)
tmp_p += sprintf(tmp_p, ", `friend_id%d`, `name%d`", i, i); tmp_p += sprintf(tmp_p, ", `friend_id%d`, `name%d`", i, i);
tmp_p += sprintf(tmp_p, ") VALUES (NULL, '%d'", char_id); tmp_p += sprintf(tmp_p, ") VALUES (NULL, '%d'", char_id);
#ifndef FASTCHAR
for (i=0;i<20;i++)
#else /* FASTCHAR */
for (i=0;i<20;i++) { for (i=0;i<20;i++) {
#endif /* FASTCHAR */
tmp_p += sprintf(tmp_p, ", '%d', '%s'", p->friend_id[i], p->friend_name[i]); tmp_p += sprintf(tmp_p, ", '%d', '%s'", p->friend_id[i], p->friend_name[i]);
#ifdef FASTCHAR
if ((p->friend_id[i] != cp->friend_id[i]) || if ((p->friend_id[i] != cp->friend_id[i]) ||
strcmp(p->friend_name[i], cp->friend_name[i])) strcmp(p->friend_name[i], cp->friend_name[i]))
diff = 1; diff = 1;
} }
#endif /* FASTCHAR */
tmp_p += sprintf(tmp_p, ")"); tmp_p += sprintf(tmp_p, ")");
#ifndef FASTCHAR
mysql_query(&mysql_handle, tmp_sql);
#else /* FASTCHAR */
if (diff) if (diff)
mysql_query(&mysql_handle, tmp_sql); mysql_query(&mysql_handle, tmp_sql);
#endif /* FASTCHAR */
printf("saving char is done.\n"); printf("saving char is done.\n");
save_flag = 0; save_flag = 0;
#ifdef FASTCHAR
memcpy(cp, p, sizeof(struct mmo_charstatus)); memcpy(cp, p, sizeof(struct mmo_charstatus));
#endif /* FASTCHAR */
return 0; return 0;
} }
@ -930,22 +862,17 @@ int memitemdata_to_sql(struct itemtemp mapitem, int eqcount, int noteqcount, int
// printf("=================================================================================\n"); // printf("=================================================================================\n");
// //
} }
#ifdef FASTCHAR
#endif /* FASTCHAR */
return 0; return 0;
} }
//===================================================================================================== //=====================================================================================================
int mmo_char_fromsql(int char_id, struct mmo_charstatus *p, int online){ int mmo_char_fromsql(int char_id, struct mmo_charstatus *p, int online){
int i, n; int i, n;
char *tmp_p = tmp_sql; char *tmp_p = tmp_sql;
#ifdef FASTCHAR
struct mmo_charstatus *cp; struct mmo_charstatus *cp;
cp = numdb_search(char_db_,char_id); cp = numdb_search(char_db_,char_id);
if (cp != NULL) if (cp != NULL)
free(cp); free(cp);
#endif /* FASTCHAR */
memset(p, 0, sizeof(struct mmo_charstatus)); memset(p, 0, sizeof(struct mmo_charstatus));
@ -1187,22 +1114,18 @@ int mmo_char_fromsql(int char_id, struct mmo_charstatus *p, int online){
printf("char data load success]\n"); //ok. all data load successfuly! printf("char data load success]\n"); //ok. all data load successfuly!
#ifdef FASTCHAR
cp = (struct mmo_charstatus *) malloc(sizeof(struct mmo_charstatus)); cp = (struct mmo_charstatus *) malloc(sizeof(struct mmo_charstatus));
memcpy(cp, p, sizeof(struct mmo_charstatus)); memcpy(cp, p, sizeof(struct mmo_charstatus));
numdb_insert(char_db_, char_id,cp); numdb_insert(char_db_, char_id,cp);
#endif /* FASTCHAR */
return 1; return 1;
} }
//========================================================================================================== //==========================================================================================================
int mmo_char_sql_init(void) { int mmo_char_sql_init(void) {
int i; int i;
#ifdef FASTCHAR
char_db_=numdb_init(); char_db_=numdb_init();
#endif /* FASTCHAR */
printf("init start.......\n"); printf("init start.......\n");
// memory initialize // memory initialize
// no need to set twice size in this routine. but some cause segmentation error. :P // no need to set twice size in this routine. but some cause segmentation error. :P
@ -3396,13 +3319,11 @@ int do_init(int argc, char **argv){
return 0; return 0;
} }
#ifdef FASTCHAR
#undef mysql_query #undef mysql_query
int debug_mysql_query(char *file, int line, void *mysql, const char *q) { int debug_mysql_query(char *file, int line, void *mysql, const char *q) {
printf("sql: %s:%d# %s\n", file, line, q); // printf("sql: %s:%d# %s\n", file, line, q);
return mysql_query((MYSQL *) mysql, q); return mysql_query((MYSQL *) mysql, q);
} }
#endif /* FASTCHAR */

View File

@ -3,9 +3,6 @@
// SQL conversion by hack // SQL conversion by hack
// //
#ifdef TWILIGHT
#define GUILDCACHE
#endif
#include "char.h" #include "char.h"
#include "strlib.h" #include "strlib.h"
@ -15,21 +12,17 @@
#include "int_storage.h" #include "int_storage.h"
#include "mmo.h" #include "mmo.h"
#include "socket.h" #include "socket.h"
#ifdef GUILDCACHE
#include "db.h" #include "db.h"
#endif /* GUILDCACHE */
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef GUILDCACHE
static struct dbt *guild_db_; static struct dbt *guild_db_;
static struct dbt *castle_db_; static struct dbt *castle_db_;
static struct dbt *guild_expcache_db_; static struct dbt *guild_expcache_db_;
static struct dbt *guild_infoevent_db_; static struct dbt *guild_infoevent_db_;
static struct dbt *guild_castleinfoevent_db_; static struct dbt *guild_castleinfoevent_db_;
#endif /* GUILDCACHE */
static struct guild *guild_pt; static struct guild *guild_pt;
static struct guild *guild_pt2; static struct guild *guild_pt2;
@ -46,9 +39,7 @@ int mapif_guild_basicinfochanged(int guild_id,int type,const void *data,int len)
int mapif_guild_info(int fd,struct guild *g); int mapif_guild_info(int fd,struct guild *g);
int guild_break_sub(void *key,void *data,va_list ap); int guild_break_sub(void *key,void *data,va_list ap);
#ifdef FASTCHAR
#define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y) #define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y)
#endif /* FASTCHAR */
// Save guild into sql // Save guild into sql
int inter_guild_tosql(struct guild *g,int flag) int inter_guild_tosql(struct guild *g,int flag)
@ -68,11 +59,7 @@ int inter_guild_tosql(struct guild *g,int flag)
if (g->guild_id<=0) return -1; if (g->guild_id<=0) return -1;
#ifndef FASTCHAR
printf("(\033[1;35m%d\033[0m) Request save guild - ",g->guild_id);
#else /* FASTCHAR */
printf("(\033[1;35m%d\033[0m) Request save guild -(flag 0x%x) ",g->guild_id, flag); printf("(\033[1;35m%d\033[0m) Request save guild -(flag 0x%x) ",g->guild_id, flag);
#endif /* FASTCHAR */
jstrescapecpy(t_name, g->name); jstrescapecpy(t_name, g->name);
@ -206,35 +193,6 @@ int inter_guild_tosql(struct guild *g,int flag)
} }
if (flag&2||guild_member==0){ if (flag&2||guild_member==0){
#ifndef FASTCHAR
//printf("- Insert guild %d to guild_member\n",g->guild_id);
for(i=0;i<g->max_member;i++){
if (g->member[i].account_id>0){
struct guild_member *m = &g->member[i];
sprintf(tmp_sql,"DELETE FROM `%s` WHERE `char_id`='%d'",guild_member_db, m->char_id);
if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (delete `guild_member`)- %s\n", mysql_error(&mysql_handle) );
}
sprintf(tmp_sql,"INSERT INTO `%s` "
"(`guild_id`,`account_id`,`char_id`,`hair`,`hair_color`,`gender`,`class`,`lv`,`exp`,`exp_payper`,`online`,`position`,`rsv1`,`rsv2`,`name`) "
"VALUES ('%d','%d','%d','%d','%d', '%d','%d','%d','%d','%d','%d','%d','%d','%d','%s')",
guild_member_db, g->guild_id,
m->account_id,m->char_id,
m->hair,m->hair_color,m->gender,
m->class,m->lv,m->exp,m->exp_payper,m->online,m->position,
0,0,
jstrescapecpy(t_member,m->name));
//printf(" %s\n",tmp_sql);
if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (insert `guild_member`)- %s\n", mysql_error(&mysql_handle) );
}
sprintf(tmp_sql, "UPDATE `%s` SET `guild_id`='%d' WHERE `account_id`='%d' AND `char_id`='%d'",char_db, g->guild_id,m->account_id,m->char_id);
if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle) );
}
}
}
#else /* FASTCHAR */
struct StringBuf sbuf; struct StringBuf sbuf;
struct StringBuf sbuf2; struct StringBuf sbuf2;
int first = 1; int first = 1;
@ -275,7 +233,6 @@ int inter_guild_tosql(struct guild *g,int flag)
StringBuf_Destroy(&sbuf2); StringBuf_Destroy(&sbuf2);
StringBuf_Destroy(&sbuf); StringBuf_Destroy(&sbuf);
#endif /* FASTCHAR */
} }
if (flag&4||guild_member==0){ if (flag&4||guild_member==0){
@ -350,16 +307,11 @@ int inter_guild_tosql(struct guild *g,int flag)
} }
// Read guild from sql // Read guild from sql
#ifndef GUILDCACHE
int inter_guild_fromsql(int guild_id,struct guild *g)
#else /* GUILDCACHE */
struct guild * inter_guild_fromsql(int guild_id) struct guild * inter_guild_fromsql(int guild_id)
#endif /* GUILDCACHE */
{ {
int i; int i;
char emblem_data[4096]; char emblem_data[4096];
char *pstr; char *pstr;
#ifdef GUILDCACHE
struct guild *g; struct guild *g;
if (guild_id==0) return 0; if (guild_id==0) return 0;
@ -367,17 +319,9 @@ struct guild * inter_guild_fromsql(int guild_id)
g = numdb_search(guild_db_,guild_id); g = numdb_search(guild_db_,guild_id);
if (g != NULL) if (g != NULL)
return g; return g;
#endif /* GUILDCACHE */
#ifndef GUILDCACHE
if (g==NULL) return 0;
#else /* GUILDCACHE */
g = (struct guild *) malloc(sizeof(struct guild)); g = (struct guild *) malloc(sizeof(struct guild));
#endif /* GUILDCACHE */
memset(g,0,sizeof(struct guild)); memset(g,0,sizeof(struct guild));
#ifndef GUILDCACHE
if (guild_id==0) return 0;
#endif /* not GUILDCACHE */
// printf("Retrieve guild information from sql ......\n"); // printf("Retrieve guild information from sql ......\n");
// printf("- Read guild %d from sql \n",guild_id); // printf("- Read guild %d from sql \n",guild_id);
@ -387,9 +331,7 @@ struct guild * inter_guild_fromsql(int guild_id)
//printf(" %s\n",tmp_sql); //printf(" %s\n",tmp_sql);
if(mysql_query(&mysql_handle, tmp_sql) ) { if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (select `guild`)- %s\n", mysql_error(&mysql_handle) ); printf("DB server Error (select `guild`)- %s\n", mysql_error(&mysql_handle) );
#ifdef GUILDCACHE
free(g); free(g);
#endif /* GUILDCACHE */
return 0; return 0;
} }
@ -398,9 +340,7 @@ struct guild * inter_guild_fromsql(int guild_id)
sql_row = mysql_fetch_row(sql_res); sql_row = mysql_fetch_row(sql_res);
if (sql_row==NULL) { if (sql_row==NULL) {
mysql_free_result(sql_res); mysql_free_result(sql_res);
#ifdef GUILDCACHE
free(g); free(g);
#endif /* GUILDCACHE */
return 0; return 0;
} }
@ -439,9 +379,7 @@ struct guild * inter_guild_fromsql(int guild_id)
//printf(" %s\n",tmp_sql); //printf(" %s\n",tmp_sql);
if(mysql_query(&mysql_handle, tmp_sql) ) { if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (select `guild_member`)- %s\n", mysql_error(&mysql_handle) ); printf("DB server Error (select `guild_member`)- %s\n", mysql_error(&mysql_handle) );
#ifdef GUILDCACHE
free(g); free(g);
#endif /* GUILDCACHE */
return 0; return 0;
} }
sql_res = mysql_store_result(&mysql_handle) ; sql_res = mysql_store_result(&mysql_handle) ;
@ -470,9 +408,7 @@ struct guild * inter_guild_fromsql(int guild_id)
//printf(" %s\n",tmp_sql); //printf(" %s\n",tmp_sql);
if(mysql_query(&mysql_handle, tmp_sql) ) { if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (select `guild_position`)- %s\n", mysql_error(&mysql_handle) ); printf("DB server Error (select `guild_position`)- %s\n", mysql_error(&mysql_handle) );
#ifdef GUILDCACHE
free(g); free(g);
#endif /* GUILDCACHE */
return 0; return 0;
} }
sql_res = mysql_store_result(&mysql_handle) ; sql_res = mysql_store_result(&mysql_handle) ;
@ -492,9 +428,7 @@ struct guild * inter_guild_fromsql(int guild_id)
sprintf(tmp_sql,"SELECT `guild_id`,`opposition`,`alliance_id`,`name` FROM `%s` WHERE `guild_id`='%d'",guild_alliance_db, guild_id); sprintf(tmp_sql,"SELECT `guild_id`,`opposition`,`alliance_id`,`name` FROM `%s` WHERE `guild_id`='%d'",guild_alliance_db, guild_id);
if(mysql_query(&mysql_handle, tmp_sql) ) { if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (select `guild_alliance`)- %s\n", mysql_error(&mysql_handle) ); printf("DB server Error (select `guild_alliance`)- %s\n", mysql_error(&mysql_handle) );
#ifdef GUILDCACHE
free(g); free(g);
#endif /* GUILDCACHE */
return 0; return 0;
} }
sql_res = mysql_store_result(&mysql_handle) ; sql_res = mysql_store_result(&mysql_handle) ;
@ -513,9 +447,7 @@ struct guild * inter_guild_fromsql(int guild_id)
sprintf(tmp_sql,"SELECT `guild_id`,`name`,`mes`,`acc`,`account_id`,`rsv1`,`rsv2`,`rsv3` FROM `%s` WHERE `guild_id`='%d'",guild_expulsion_db, guild_id); sprintf(tmp_sql,"SELECT `guild_id`,`name`,`mes`,`acc`,`account_id`,`rsv1`,`rsv2`,`rsv3` FROM `%s` WHERE `guild_id`='%d'",guild_expulsion_db, guild_id);
if(mysql_query(&mysql_handle, tmp_sql) ) { if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (select `guild_expulsion`)- %s\n", mysql_error(&mysql_handle) ); printf("DB server Error (select `guild_expulsion`)- %s\n", mysql_error(&mysql_handle) );
#ifdef GUILDCACHE
free(g); free(g);
#endif /* GUILDCACHE */
return 0; return 0;
} }
sql_res = mysql_store_result(&mysql_handle) ; sql_res = mysql_store_result(&mysql_handle) ;
@ -540,9 +472,7 @@ struct guild * inter_guild_fromsql(int guild_id)
sprintf(tmp_sql,"SELECT `guild_id`,`id`,`lv` FROM `%s` WHERE `guild_id`='%d' ORDER BY `id`",guild_skill_db, guild_id); sprintf(tmp_sql,"SELECT `guild_id`,`id`,`lv` FROM `%s` WHERE `guild_id`='%d' ORDER BY `id`",guild_skill_db, guild_id);
if(mysql_query(&mysql_handle, tmp_sql) ) { if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (select `guild_skill`)- %s\n", mysql_error(&mysql_handle) ); printf("DB server Error (select `guild_skill`)- %s\n", mysql_error(&mysql_handle) );
#ifdef GUILDCACHE
free(g); free(g);
#endif /* GUILDCACHE */
return 0; return 0;
} }
sql_res = mysql_store_result(&mysql_handle) ; sql_res = mysql_store_result(&mysql_handle) ;
@ -557,33 +487,19 @@ struct guild * inter_guild_fromsql(int guild_id)
// printf("Successfully retrieve guild information from sql!\n"); // printf("Successfully retrieve guild information from sql!\n");
#ifndef GUILDCACHE
return 0;
#else /* GUILDCACHE */
numdb_insert(guild_db_, guild_id,g); numdb_insert(guild_db_, guild_id,g);
return g; return g;
#endif /* GUILDCACHE */
} }
// Save guild_castle to sql // Save guild_castle to sql
int inter_guildcastle_tosql(struct guild_castle *gc) int inter_guildcastle_tosql(struct guild_castle *gc)
{ {
#ifdef FASTCHAR
struct guild_castle *gcopy; struct guild_castle *gcopy;
#endif /* FASTCHAR */
// `guild_castle` (`castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7`) // `guild_castle` (`castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`, `visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7`)
if (gc==NULL) return 0; if (gc==NULL) return 0;
//printf("Save to guild_castle\n"); //printf("Save to guild_castle\n");
#ifndef FASTCHAR
sprintf(tmp_sql,"DELETE FROM `%s` WHERE `castle_id`='%d'",guild_castle_db, gc->castle_id);
//printf(" %s\n",tmp_sql);
if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error - %s\n", mysql_error(&mysql_handle) );
return 0;
#else /* FASTCHAR */
gcopy = numdb_search(castle_db_,gc->castle_id); gcopy = numdb_search(castle_db_,gc->castle_id);
if (gcopy == NULL) { if (gcopy == NULL) {
@ -595,17 +511,11 @@ int inter_guildcastle_tosql(struct guild_castle *gc)
(strcmp(gcopy->castle_event, gc->castle_event) == 0) && (strcmp(gcopy->castle_event, gc->castle_event) == 0) &&
(memcmp(&gcopy->guild_id, &gc->guild_id, &gc->GID7 - &gc->guild_id) == 0)) (memcmp(&gcopy->guild_id, &gc->guild_id, &gc->GID7 - &gc->guild_id) == 0))
return 0; return 0;
#endif /* FASTCHAR */
} }
#ifndef FASTCHAR
sprintf(tmp_sql,"INSERT INTO `%s` "
#else /* FASTCHAR */
memcpy(gcopy, gc, sizeof(struct guild_castle)); memcpy(gcopy, gc, sizeof(struct guild_castle));
sprintf(tmp_sql,"REPLACE INTO `%s` " sprintf(tmp_sql,"REPLACE INTO `%s` "
#endif /* FASTCHAR */
"(`castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`," "(`castle_id`, `guild_id`, `economy`, `defense`, `triggerE`, `triggerD`, `nextTime`, `payTime`, `createTime`,"
"`visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7`," "`visibleC`, `visibleG0`, `visibleG1`, `visibleG2`, `visibleG3`, `visibleG4`, `visibleG5`, `visibleG6`, `visibleG7`,"
"`Ghp0`, `Ghp1`, `Ghp2`, `Ghp3`, `Ghp4`, `Ghp5`, `Ghp6`, `Ghp7`)" "`Ghp0`, `Ghp1`, `Ghp2`, `Ghp3`, `Ghp4`, `Ghp5`, `Ghp6`, `Ghp7`)"
@ -638,15 +548,9 @@ int inter_guildcastle_tosql(struct guild_castle *gc)
// Read guild_castle from sql // Read guild_castle from sql
int inter_guildcastle_fromsql(int castle_id,struct guild_castle *gc) int inter_guildcastle_fromsql(int castle_id,struct guild_castle *gc)
{ {
#ifndef FASTCHAR
#else /* FASTCHAR */
struct guild_castle *gcopy; struct guild_castle *gcopy;
#endif /* FASTCHAR */
if (gc==NULL) return 0; if (gc==NULL) return 0;
//printf("Read from guild_castle\n"); //printf("Read from guild_castle\n");
#ifdef FASTCHAR
gcopy = numdb_search(castle_db_,gc->castle_id); gcopy = numdb_search(castle_db_,gc->castle_id);
if (gcopy == NULL) { if (gcopy == NULL) {
@ -657,7 +561,6 @@ int inter_guildcastle_fromsql(int castle_id,struct guild_castle *gc)
return 0; return 0;
} }
#endif /* FASTCHAR */
memset(gc,0,sizeof(struct guild_castle)); memset(gc,0,sizeof(struct guild_castle));
gc->castle_id=castle_id; gc->castle_id=castle_id;
if (castle_id==-1) return 0; if (castle_id==-1) return 0;
@ -707,11 +610,9 @@ int inter_guildcastle_fromsql(int castle_id,struct guild_castle *gc)
} }
mysql_free_result(sql_res) ; //resource free mysql_free_result(sql_res) ; //resource free
#ifdef FASTCHAR
memcpy(gcopy, gc, sizeof(struct guild_castle)); memcpy(gcopy, gc, sizeof(struct guild_castle));
#endif /* FASTCHAR */
return 0; return 0;
} }
@ -746,13 +647,11 @@ int inter_guild_sql_init()
{ {
int i; int i;
#ifdef GUILDCACHE
guild_db_=numdb_init(); guild_db_=numdb_init();
castle_db_=numdb_init(); castle_db_=numdb_init();
guild_expcache_db_=numdb_init(); guild_expcache_db_=numdb_init();
guild_infoevent_db_=numdb_init(); guild_infoevent_db_=numdb_init();
guild_castleinfoevent_db_=numdb_init(); guild_castleinfoevent_db_=numdb_init();
#endif /* GUILDCACHE */
printf("interserver guild memory initialize.... (%d byte)\n",sizeof(struct guild)); printf("interserver guild memory initialize.... (%d byte)\n",sizeof(struct guild));
guild_pt = calloc(sizeof(struct guild), 1); guild_pt = calloc(sizeof(struct guild), 1);
@ -795,9 +694,6 @@ int inter_guild_sql_init()
// Get guild by its name // Get guild by its name
struct guild* search_guildname(char *str) struct guild* search_guildname(char *str)
{ {
#ifndef GUILDCACHE
struct guild *g=guild_pt;
#endif /* not GUILDCACHE */
char t_name[24]; char t_name[24];
int guild_id=0; int guild_id=0;
printf("search_guildname\n"); printf("search_guildname\n");
@ -811,12 +707,7 @@ struct guild* search_guildname(char *str)
guild_id = atoi (sql_row[0]); guild_id = atoi (sql_row[0]);
} }
mysql_free_result(sql_res); mysql_free_result(sql_res);
#ifndef GUILDCACHE
inter_guild_fromsql(guild_id,g);
return g;
#else /* GUILDCACHE */
return inter_guild_fromsql(guild_id); return inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
} }
// Check if guild is empty // Check if guild is empty
@ -1248,13 +1139,7 @@ int mapif_parse_CreateGuild(int fd,int account_id,char *name,struct guild_member
// Return guild info to client // Return guild info to client
int mapif_parse_GuildInfo(int fd,int guild_id) int mapif_parse_GuildInfo(int fd,int guild_id)
{ {
#ifndef GUILDCACHE
struct guild *g;
g=guild_pt;
inter_guild_fromsql(guild_id,g);
#else /* GUILDCACHE */
struct guild * g = inter_guild_fromsql(guild_id); struct guild * g = inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
if(g!=NULL&&g->guild_id>0){ if(g!=NULL&&g->guild_id>0){
guild_calcinfo(g); guild_calcinfo(g);
mapif_guild_info(fd,g); mapif_guild_info(fd,g);
@ -1266,17 +1151,9 @@ int mapif_parse_GuildInfo(int fd,int guild_id)
// Add member to guild // Add member to guild
int mapif_parse_GuildAddMember(int fd,int guild_id,struct guild_member *m) int mapif_parse_GuildAddMember(int fd,int guild_id,struct guild_member *m)
{ {
#ifndef GUILDCACHE
struct guild *g=guild_pt;
#else /* GUILDCACHE */
struct guild *g = inter_guild_fromsql(guild_id); struct guild *g = inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
int i; int i;
#ifndef GUILDCACHE
inter_guild_fromsql(guild_id,g);
#endif /* not GUILDCACHE */
if(g==NULL||g->guild_id<=0){ if(g==NULL||g->guild_id<=0){
mapif_guild_memberadded(fd,guild_id,m->account_id,m->char_id,1); mapif_guild_memberadded(fd,guild_id,m->account_id,m->char_id,1);
return 0; return 0;
@ -1300,13 +1177,7 @@ int mapif_parse_GuildAddMember(int fd,int guild_id,struct guild_member *m)
// Delete member from guild // Delete member from guild
int mapif_parse_GuildLeave(int fd,int guild_id,int account_id,int char_id,int flag,const char *mes) int mapif_parse_GuildLeave(int fd,int guild_id,int account_id,int char_id,int flag,const char *mes)
{ {
#ifndef GUILDCACHE
struct guild *g=guild_pt;
inter_guild_fromsql(guild_id,g);
#else /* GUILDCACHE */
struct guild *g= inter_guild_fromsql(guild_id); struct guild *g= inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
if(g!=NULL&&g->guild_id>0){ if(g!=NULL&&g->guild_id>0){
int i; int i;
@ -1356,38 +1227,18 @@ int mapif_parse_GuildLeave(int fd,int guild_id,int account_id,int char_id,int fl
/* mapif_guild_leaved(guild_id,account_id,char_id,flag,g->member[i].name,mes); */ /* mapif_guild_leaved(guild_id,account_id,char_id,flag,g->member[i].name,mes); */
} }
#ifndef GUILDCACHE
#endif /* not GUILDCACHE */
return 0; return 0;
} }
#ifdef GUILDCACHE
#endif /* GUILDCACHE */
// Change member info // Change member info
int mapif_parse_GuildChangeMemberInfoShort(int fd,int guild_id, int mapif_parse_GuildChangeMemberInfoShort(int fd,int guild_id,
int account_id,int char_id,int online,int lv,int class) int account_id,int char_id,int online,int lv,int class)
{ {
// Could speed up by manipulating only guild_member // Could speed up by manipulating only guild_member
#ifndef GUILDCACHE
struct guild * g=guild_pt;
#else /* GUILDCACHE */
struct guild * g= inter_guild_fromsql(guild_id); struct guild * g= inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
int i,alv,c; int i,alv,c;
#ifndef GUILDCACHE
#endif /* not GUILDCACHE */
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)
return 0; return 0;
#ifndef GUILDCACHE
inter_guild_fromsql(guild_id,g);
#endif /* not GUILDCACHE */
g->connect_member=0; g->connect_member=0;
@ -1418,19 +1269,9 @@ int mapif_parse_GuildChangeMemberInfoShort(int fd,int guild_id,
// BreakGuild // BreakGuild
int mapif_parse_BreakGuild(int fd,int guild_id) int mapif_parse_BreakGuild(int fd,int guild_id)
{ {
#ifndef GUILDCACHE
struct guild *g=guild_pt;
#else /* GUILDCACHE */
struct guild *g= inter_guild_fromsql(guild_id); struct guild *g= inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
if(g==NULL) if(g==NULL)
return 0; return 0;
#ifndef GUILDCACHE
inter_guild_fromsql(guild_id,g);
#endif /* not GUILDCACHE */
// Delete guild from sql // Delete guild from sql
//printf("- Delete guild %d from guild\n",guild_id); //printf("- Delete guild %d from guild\n",guild_id);
@ -1494,25 +1335,12 @@ int mapif_parse_GuildMessage(int fd,int guild_id,int account_id,char *mes,int le
int mapif_parse_GuildBasicInfoChange(int fd,int guild_id, int mapif_parse_GuildBasicInfoChange(int fd,int guild_id,
int type,const char *data,int len) int type,const char *data,int len)
{ {
#ifndef GUILDCACHE
struct guild * g=guild_pt;
#else /* GUILDCACHE */
struct guild * g = inter_guild_fromsql(guild_id); struct guild * g = inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
// int dd=*((int *)data); // int dd=*((int *)data);
short dw=*((short *)data); short dw=*((short *)data);
#ifndef GUILDCACHE
#endif /* not GUILDCACHE */
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)
return 0; return 0;
#ifndef GUILDCACHE
inter_guild_fromsql(guild_id,g);
#endif /* not GUILDCACHE */
switch(type){ switch(type){
case GBI_GUILDLV: { case GBI_GUILDLV: {
printf("GBI_GUILDLV\n"); printf("GBI_GUILDLV\n");
@ -1539,15 +1367,8 @@ int mapif_parse_GuildMemberInfoChange(int fd,int guild_id,int account_id,int cha
{ {
// Could make some improvement in speed, because only change guild_member // Could make some improvement in speed, because only change guild_member
int i; int i;
#ifndef GUILDCACHE
struct guild * g=guild_pt;
#else /* GUILDCACHE */
struct guild * g = inter_guild_fromsql(guild_id); struct guild * g = inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
#ifndef GUILDCACHE
inter_guild_fromsql(guild_id,g);
#endif /* not GUILDCACHE */
//printf("GuildMemberInfoChange %s \n",(type==GMI_EXP)?"GMI_EXP":"OTHER"); //printf("GuildMemberInfoChange %s \n",(type==GMI_EXP)?"GMI_EXP":"OTHER");
if(g==NULL){ if(g==NULL){
@ -1586,13 +1407,7 @@ int mapif_parse_GuildMemberInfoChange(int fd,int guild_id,int account_id,int cha
int mapif_parse_GuildPosition(int fd,int guild_id,int idx,struct guild_position *p) int mapif_parse_GuildPosition(int fd,int guild_id,int idx,struct guild_position *p)
{ {
// Could make some improvement in speed, because only change guild_position // Could make some improvement in speed, because only change guild_position
#ifndef GUILDCACHE
struct guild * g=guild_pt;
inter_guild_fromsql(guild_id,g);
#else /* GUILDCACHE */
struct guild * g = inter_guild_fromsql(guild_id); struct guild * g = inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
if(g==NULL || idx<0 || idx>=MAX_GUILDPOSITION){ if(g==NULL || idx<0 || idx>=MAX_GUILDPOSITION){
return 0; return 0;
@ -1607,16 +1422,9 @@ int mapif_parse_GuildPosition(int fd,int guild_id,int idx,struct guild_position
int mapif_parse_GuildSkillUp(int fd,int guild_id,int skill_num,int account_id) int mapif_parse_GuildSkillUp(int fd,int guild_id,int skill_num,int account_id)
{ {
// Could make some improvement in speed, because only change guild_position // Could make some improvement in speed, because only change guild_position
#ifndef GUILDCACHE
struct guild *g=guild_pt;
#else /* GUILDCACHE */
struct guild *g = inter_guild_fromsql(guild_id); struct guild *g = inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
int idx = skill_num - GD_SKILLBASE; int idx = skill_num - GD_SKILLBASE;
#ifndef GUILDCACHE
inter_guild_fromsql(guild_id,g);
#endif /* not GUILDCACHE */
if(g == NULL || idx < 0 || idx >= MAX_GUILDSKILL) if(g == NULL || idx < 0 || idx >= MAX_GUILDSKILL)
return 0; return 0;
@ -1642,15 +1450,8 @@ int mapif_parse_GuildAlliance(int fd,int guild_id1,int guild_id2,
// Could speed up // Could speed up
struct guild *g[2]; struct guild *g[2];
int j,i; int j,i;
#ifndef GUILDCACHE
g[0]=guild_pt;
g[1]=guild_pt2;
inter_guild_fromsql(guild_id1,g[0]);
inter_guild_fromsql(guild_id2,g[1]);
#else /* GUILDCACHE */
g[0]= inter_guild_fromsql(guild_id1); g[0]= inter_guild_fromsql(guild_id1);
g[1]= inter_guild_fromsql(guild_id2); g[1]= inter_guild_fromsql(guild_id2);
#endif /* GUILDCACHE */
if(g[0]==NULL || g[1]==NULL || g[0]->guild_id ==0 || g[1]->guild_id==0) if(g[0]==NULL || g[1]==NULL || g[0]->guild_id ==0 || g[1]->guild_id==0)
return 0; return 0;
@ -1684,13 +1485,7 @@ int mapif_parse_GuildAlliance(int fd,int guild_id1,int guild_id2,
// ギルド告知変更要求 // ギルド告知変更要求
int mapif_parse_GuildNotice(int fd,int guild_id,const char *mes1,const char *mes2) int mapif_parse_GuildNotice(int fd,int guild_id,const char *mes1,const char *mes2)
{ {
#ifndef GUILDCACHE
struct guild *g=guild_pt;
inter_guild_fromsql(guild_id,g);
#else /* GUILDCACHE */
struct guild *g= inter_guild_fromsql(guild_id); struct guild *g= inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)
return 0; return 0;
@ -1702,13 +1497,7 @@ int mapif_parse_GuildNotice(int fd,int guild_id,const char *mes1,const char *mes
// ギルドエンブレム変更要求 // ギルドエンブレム変更要求
int mapif_parse_GuildEmblem(int fd,int len,int guild_id,int dummy,const char *data) int mapif_parse_GuildEmblem(int fd,int len,int guild_id,int dummy,const char *data)
{ {
#ifndef GUILDCACHE
struct guild * g=guild_pt;
inter_guild_fromsql(guild_id,g);
#else /* GUILDCACHE */
struct guild * g= inter_guild_fromsql(guild_id); struct guild * g= inter_guild_fromsql(guild_id);
#endif /* GUILDCACHE */
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)
return 0; return 0;
@ -1769,12 +1558,7 @@ int mapif_parse_GuildCastleDataSave(int fd,int castle_id,int index,int value)
case 1: case 1:
if( gc->guild_id!=value ){ if( gc->guild_id!=value ){
int gid=(value)?value:gc->guild_id; int gid=(value)?value:gc->guild_id;
#ifndef GUILDCACHE
struct guild *g=guild_pt;
inter_guild_fromsql(gid, g);
#else /* GUILDCACHE */
struct guild *g=inter_guild_fromsql(gid); struct guild *g=inter_guild_fromsql(gid);
#endif /* GUILDCACHE */
if(log_inter) if(log_inter)
inter_log("guild %s (id=%d) %s castle id=%d" RETCODE, inter_log("guild %s (id=%d) %s castle id=%d" RETCODE,
(g)?g->name:"??" ,gid, (value)?"occupy":"abandon", index); (g)?g->name:"??" ,gid, (value)?"occupy":"abandon", index);

View File

@ -17,10 +17,8 @@ int mapif_party_broken(int party_id,int flag);
int party_check_empty(struct party *p); int party_check_empty(struct party *p);
int mapif_parse_PartyLeave(int fd,int party_id,int account_id); int mapif_parse_PartyLeave(int fd,int party_id,int account_id);
#ifdef FASTCHAR
#define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y) #define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y)
#endif /* FASTCHAR */
// Save party to mysql // Save party to mysql
int inter_party_tosql(int party_id,struct party *p) int inter_party_tosql(int party_id,struct party *p)
{ {
@ -124,7 +122,7 @@ int inter_party_tosql(int party_id,struct party *p)
int i = 0; int i = 0;
while (i<MAX_PARTY&&((p->member[i].account_id>0&&p->member[i].leader==0)||(p->member[i].account_id<0))) i++; while (i<MAX_PARTY&&((p->member[i].account_id>0&&p->member[i].leader==0)||(p->member[i].account_id<0))) i++;
if (i<MAX_PARTY) leader_id = p->member[i].account_id; if (i<MAX_PARTY) leader_id = p->member[i].account_id;
sprintf(tmp_sql,"INSERT DELAYED INTO `%s` (`party_id`, `name`, `exp`, `item`, `leader_id`) VALUES ('%d', '%s', '%d', '%d', '%d')", sprintf(tmp_sql,"INSERT INTO `%s` (`party_id`, `name`, `exp`, `item`, `leader_id`) VALUES ('%d', '%s', '%d', '%d', '%d')",
party_db, party_id, t_name, p->exp, p->item,leader_id); party_db, party_id, t_name, p->exp, p->item,leader_id);
if(mysql_query(&mysql_handle, tmp_sql) ) { if(mysql_query(&mysql_handle, tmp_sql) ) {
printf("DB server Error (inset/update `party`)- %s\n", mysql_error(&mysql_handle) ); printf("DB server Error (inset/update `party`)- %s\n", mysql_error(&mysql_handle) );

View File

@ -12,12 +12,8 @@
struct s_pet *pet_pt; struct s_pet *pet_pt;
static int pet_newid = 100; static int pet_newid = 100;
#ifdef FASTCHAR
#define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y) #define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y)
#endif /* FASTCHAR */
//--------------------------------------------------------- //---------------------------------------------------------
int inter_pet_tosql(int pet_id, struct s_pet *p) { int inter_pet_tosql(int pet_id, struct s_pet *p) {
//`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incuvate`) //`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incuvate`)

View File

@ -13,9 +13,7 @@
struct storage *storage_pt=NULL; struct storage *storage_pt=NULL;
struct guild_storage *guild_storage_pt=NULL; struct guild_storage *guild_storage_pt=NULL;
#ifdef FASTCHAR
#define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y) #define mysql_query(_x, _y) debug_mysql_query(__FILE__, __LINE__, _x, _y)
#endif /* FASTCHAR */
// storage data -> DB conversion // storage data -> DB conversion
int storage_tosql(int account_id,struct storage *p){ int storage_tosql(int account_id,struct storage *p){