From 53ba0c7362dffa576c58f7dc2decbeab0269d67b Mon Sep 17 00:00:00 2001 From: Inkfish Date: Sun, 26 Jul 2009 09:52:08 +0000 Subject: Fixed mob counts and quest states are not saved properly sometimes git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13964 54d463be-8e91-2dee-dedb-b68131a5f0ec --- sql-files/upgrade_svn13960_questlog.sql | 20 ++++++++++++++++++++ sql-files/upgrade_svn13963.sql | 1 + sql-files/upgrade_svn_13963.sql | 1 - sql-files/upgrade_svn_questlog.sql | 20 -------------------- src/common/mmo.h | 2 +- src/map/pc.h | 1 - src/map/quest.c | 10 +++++----- src/map/script.c | 1 + 8 files changed, 28 insertions(+), 28 deletions(-) create mode 100644 sql-files/upgrade_svn13960_questlog.sql create mode 100644 sql-files/upgrade_svn13963.sql delete mode 100644 sql-files/upgrade_svn_13963.sql delete mode 100644 sql-files/upgrade_svn_questlog.sql diff --git a/sql-files/upgrade_svn13960_questlog.sql b/sql-files/upgrade_svn13960_questlog.sql new file mode 100644 index 000000000..c7a42960f --- /dev/null +++ b/sql-files/upgrade_svn13960_questlog.sql @@ -0,0 +1,20 @@ +-- +-- Table structure for table `questlog` +-- + +CREATE TABLE IF NOT EXISTS `questlog` ( + `char_id` int(11) unsigned NOT NULL default '0', + `quest_id` int(10) unsigned NOT NULL, + `state` enum('2','1','0') NOT NULL default '0', + `time` int(11) unsigned NOT NULL default '0', + `mob1` mediumint(9) unsigned NOT NULL default '0', + `count1` mediumint(8) unsigned NOT NULL default '0', + `mob2` mediumint(9) unsigned NOT NULL default '0', + `count2` mediumint(8) unsigned NOT NULL default '0', + `mob3` mediumint(9) unsigned NOT NULL default '0', + `count3` mediumint(8) unsigned NOT NULL default '0', + PRIMARY KEY USING BTREE (`char_id`,`quest_id`) +) ENGINE=MyISAM; + +DROP TABLE `quest_objective`; +DROP TABLE `quest`; \ No newline at end of file diff --git a/sql-files/upgrade_svn13963.sql b/sql-files/upgrade_svn13963.sql new file mode 100644 index 000000000..97211ba44 --- /dev/null +++ b/sql-files/upgrade_svn13963.sql @@ -0,0 +1 @@ +RENAME TABLE `questlog` TO `quest`; \ No newline at end of file diff --git a/sql-files/upgrade_svn_13963.sql b/sql-files/upgrade_svn_13963.sql deleted file mode 100644 index 97211ba44..000000000 --- a/sql-files/upgrade_svn_13963.sql +++ /dev/null @@ -1 +0,0 @@ -RENAME TABLE `questlog` TO `quest`; \ No newline at end of file diff --git a/sql-files/upgrade_svn_questlog.sql b/sql-files/upgrade_svn_questlog.sql deleted file mode 100644 index c7a42960f..000000000 --- a/sql-files/upgrade_svn_questlog.sql +++ /dev/null @@ -1,20 +0,0 @@ --- --- Table structure for table `questlog` --- - -CREATE TABLE IF NOT EXISTS `questlog` ( - `char_id` int(11) unsigned NOT NULL default '0', - `quest_id` int(10) unsigned NOT NULL, - `state` enum('2','1','0') NOT NULL default '0', - `time` int(11) unsigned NOT NULL default '0', - `mob1` mediumint(9) unsigned NOT NULL default '0', - `count1` mediumint(8) unsigned NOT NULL default '0', - `mob2` mediumint(9) unsigned NOT NULL default '0', - `count2` mediumint(8) unsigned NOT NULL default '0', - `mob3` mediumint(9) unsigned NOT NULL default '0', - `count3` mediumint(8) unsigned NOT NULL default '0', - PRIMARY KEY USING BTREE (`char_id`,`quest_id`) -) ENGINE=MyISAM; - -DROP TABLE `quest_objective`; -DROP TABLE `quest`; \ No newline at end of file diff --git a/src/common/mmo.h b/src/common/mmo.h index 029f5e115..61c2f5217 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -135,7 +135,7 @@ struct quest { int mob[MAX_QUEST_OBJECTIVES]; int count[MAX_QUEST_OBJECTIVES]; quest_state state; - + bool save_quest; int num_objectives; }; diff --git a/src/map/pc.h b/src/map/pc.h index 925db7184..c219c8f45 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -380,7 +380,6 @@ struct map_session_data { //Quest log system [Kevin] [Inkfish] int num_quests; int avail_quests; - bool save_quest[MAX_QUEST_DB]; struct quest quest_log[MAX_QUEST_DB]; // temporary debug [flaviojs] diff --git a/src/map/quest.c b/src/map/quest.c index f146ca325..360cebd29 100644 --- a/src/map/quest.c +++ b/src/map/quest.c @@ -184,7 +184,7 @@ void quest_update_objective(TBL_PC * sd, int mob) if( sd->quest_log[i].mob[j] == mob ) { sd->quest_log[i].count[j]++; - sd->save_quest[i] = true; + sd->quest_log[i].save_quest = true; //clif_send_quest_info(sd, &sd->quest_log[i]); //TODO: Figure out the real packet [Inkfish] //break; } @@ -207,7 +207,7 @@ int quest_update_status(TBL_PC * sd, int quest_id, int status) if( status != Q_COMPLETE ) { clif_send_quest_status(sd, quest_id, (bool)status); - sd->save_quest[i] = true; + sd->quest_log[i].save_quest = true; } else { @@ -220,7 +220,7 @@ int quest_update_status(TBL_PC * sd, int quest_id, int status) memcpy(&sd->quest_log[i], &sd->quest_log[sd->avail_quests],sizeof(struct quest)); memcpy(&sd->quest_log[sd->avail_quests], &tmp_quest,sizeof(struct quest)); - sd->save_quest[sd->avail_quests] = true; + sd->quest_log[sd->avail_quests].save_quest = true; } return 0; @@ -231,7 +231,7 @@ int quest_save(TBL_PC * sd) int i; for( i = 0; i < sd->num_quests; i++ ) - if( sd->save_quest[i] ) + if( sd->quest_log[i].save_quest ) intif_quest_save(sd->status.char_id, &sd->quest_log[i]); return 0; @@ -253,7 +253,7 @@ int quest_save_ack(int char_id, int quest_id, int success) return -1; if(success) - sd->save_quest[i] = false; + sd->quest_log[i].save_quest = false; else { ShowError("Quest %d for character %d could not be saved!\n", quest_id, char_id); diff --git a/src/map/script.c b/src/map/script.c index fd1fa5b0e..a2a60c13d 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -13447,6 +13447,7 @@ BUILDIN_FUNC(completequest) TBL_PC * sd = script_rid2sd(st); quest_update_status(sd, script_getnum(st, 2), Q_COMPLETE); + intif_quest_save(sd->status.char_id, &sd->quest_log[sd->avail_quests]); return 0; } -- cgit v1.2.3-70-g09d2