From d63bfea2a4c95f34b3373dab2d1425d72ea227df Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 20 Feb 2006 21:28:44 +0000 Subject: - Play-dead and Basilica now do block Gospel - Map SQL server will no longer ignore the gm-list packets received from char. - Login-SQL server will not free the current GM listing if the SQL reading of it failed. - Login-SQL will now read for the GM list ALL accounts with level above 0, not just those with level above min_gm_level (just like the TXT server does) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5349 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/login_sql/login.c | 19 ++++++++++--------- src/map/pc.c | 26 -------------------------- src/map/status.c | 22 +++++++++++++--------- 3 files changed, 23 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/login_sql/login.c b/src/login_sql/login.c index ca27c0036..9bbad06dc 100644 --- a/src/login_sql/login.c +++ b/src/login_sql/login.c @@ -122,7 +122,6 @@ char login_db_level[256] = "level"; char reg_db[256] = "global_reg_value"; -int lowest_gm_level; struct gm_account *gm_account_db; int GM_num; char tmpsql[65535], tmp_sql[65535]; @@ -203,15 +202,20 @@ void read_gm_account(void) { MYSQL_RES* sql_res ; MYSQL_ROW sql_row; - if (gm_account_db != NULL) - aFree(gm_account_db); - GM_num = 0; - - sprintf(tmp_sql, "SELECT `%s`,`%s` FROM `%s` WHERE `%s`>='%d'",login_db_account_id,login_db_level,login_db,login_db_level,lowest_gm_level); + sprintf(tmp_sql, "SELECT `%s`,`%s` FROM `%s` WHERE `%s`> '0'",login_db_account_id,login_db_level,login_db,login_db_level); if (mysql_query(&mysql_handle, tmp_sql)) { ShowSQL("DB error - %s\n",mysql_error(&mysql_handle)); ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql); + return; //Failed to read GM list! + } + + if (gm_account_db != NULL) + { + aFree(gm_account_db); + gm_account_db = NULL; } + GM_num = 0; + sql_res = mysql_store_result(&mysql_handle); if (sql_res) { gm_account_db = (struct gm_account*)aCalloc((size_t)mysql_num_rows(sql_res), sizeof(struct gm_account)); @@ -2146,9 +2150,6 @@ void sql_config_read(const char *cfgName){ /* Kalaspuff, to get login_db */ else if (strcmpi(w1, "loginlog_db") == 0) { strcpy(loginlog_db, w2); } - else if (strcmpi(w1, "lowest_gm_level") == 0) { - lowest_gm_level = atoi(w2); - } else if (strcmpi(w1, "reg_db") == 0) { strcpy(reg_db, w2); } diff --git a/src/map/pc.c b/src/map/pc.c index 7955c0132..b8bea9740 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -7949,14 +7949,11 @@ int pc_autosave(int tid,unsigned int tick,int id,int data) int pc_read_gm_account(int fd) { -#ifdef TXT_ONLY int i = 0; RFIFOHEAD(fd); -#endif if (gm_account != NULL) aFree(gm_account); GM_num = 0; -#ifdef TXT_ONLY gm_account = (struct gm_account *) aCallocA(((RFIFOW(fd,2) - 4) / 5), sizeof(struct gm_account)); for (i = 4; i < RFIFOW(fd,2); i = i + 5) { gm_account[GM_num].account_id = RFIFOL(fd,i); @@ -7964,26 +7961,6 @@ int pc_read_gm_account(int fd) //printf("GM account: %d -> level %d\n", gm_account[GM_num].account_id, gm_account[GM_num].level); GM_num++; } -#else - sprintf (tmp_sql, "SELECT `%s`,`%s` FROM `%s` WHERE `%s`>='%d'",gm_db_account_id,gm_db_level,gm_db,gm_db_level,lowest_gm_level); - if(mysql_query(&lmysql_handle, tmp_sql) ) { - ShowSQL("DB error - %s\n",mysql_error(&lmysql_handle)); - ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql); - return 0; - } - lsql_res = mysql_store_result(&lmysql_handle); - if (lsql_res) { - gm_account = (struct gm_account *) aCallocA((size_t)mysql_num_rows(lsql_res), sizeof(struct gm_account)); - while ((lsql_row = mysql_fetch_row(lsql_res))) { - gm_account[GM_num].account_id = atoi(lsql_row[0]); - gm_account[GM_num].level = atoi(lsql_row[1]); - ShowNotice("GM account: %d -> level %d\n", gm_account[GM_num].account_id, gm_account[GM_num].level); - GM_num++; - } - } - - mysql_free_result(lsql_res); -#endif /* TXT_ONLY */ return GM_num; } @@ -8394,9 +8371,6 @@ int do_init_pc(void) { natural_heal_prev_tick = gettick(); add_timer_interval(natural_heal_prev_tick + NATURAL_HEAL_INTERVAL, pc_natural_heal, 0, 0, NATURAL_HEAL_INTERVAL); add_timer(gettick() + autosave_interval, pc_autosave, 0, 0); -#ifndef TXT_ONLY - pc_read_gm_account(0); -#endif /* not TXT_ONLY */ if (battle_config.day_duration > 0 && battle_config.night_duration > 0) { int day_duration = battle_config.day_duration; diff --git a/src/map/status.c b/src/map/status.c index 3e36817c5..4b6fade9b 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -343,15 +343,6 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int if (target && status_isdead(target) && skill_num != ALL_RESURRECTION && skill_num != PR_REDEMPTIO) return 0; - if (skill_num == PA_PRESSURE && flag) { - //Once Gloria Domini has been casted, there's nothing you can do to stop it. [Skotlex] - //- Except hiding from it. - tsc = target?status_get_sc(target):NULL; - if(tsc && tsc->option&OPTION_HIDE) - return 0; - return 1; - } - mode = src?status_get_mode(src):MD_CANATTACK; if (!skill_num && !(mode&MD_CANATTACK)) @@ -368,6 +359,19 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int if (race&INF_GROUND_SKILL && skill_get_unit_target(skill_num)&BCT_ENEMY) return 0; } + + if (skill_num == PA_PRESSURE && flag) { + //Gloria Avoids pretty much everythng.... + tsc = target?status_get_sc(target):NULL; + if(tsc) { + if (tsc->option&OPTION_HIDE) + return 0; + if (tsc->count && tsc->data[SC_TRICKDEAD].timer != -1) + return 0; + } + return 1; + } + if (src) sc = status_get_sc(src); if(sc && sc->opt1 >0) -- cgit v1.2.3-70-g09d2