- 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://svn.code.sf.net/p/rathena/svn/trunk@5349 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
9398266b65
commit
e20a35c322
@ -5,6 +5,15 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EV
|
||||
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
|
||||
|
||||
2006/02/20
|
||||
* Play-dead and Basilica now block Gospel [Skotlex]
|
||||
* Map SQL server will no longer ignore the gm-list packets received from
|
||||
char. [Skotlex]
|
||||
* Login-SQL server will not free the current GM listing if the SQL reading
|
||||
of it failed (prevents GM lists being lost on SQL connection problems)
|
||||
[Skotlex]
|
||||
* 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) [Skotlex]
|
||||
* SC_NOCHAT is not dispelled on death now. [Skotlex]
|
||||
* Cleaned up the global message function, Super Novice Explosion Spirits
|
||||
will not trigger on maps where said skill can't be used. [Skotlex]
|
||||
|
@ -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);
|
||||
}
|
||||
|
26
src/map/pc.c
26
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;
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user