aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-26 14:02:11 -0600
committermegamage <none@none>2009-03-26 14:02:11 -0600
commit1ac13728a70fccf9180a7065b04c9dd9c83a9498 (patch)
tree48476df9c3caa90820269a0536c86a28a2c0e20f
parent68c3039715d8b68aa1b33a44bae3dd5d59eb5e5f (diff)
[7545] Fixed exploration achievements for certian areas Author: DonTomika
[7546] move uptime table to Realm database, use realmid column. Author: Triply --HG-- branch : trunk
-rw-r--r--sql/mangos.sql24
-rw-r--r--sql/realmd.sql23
-rw-r--r--sql/updates/7544_01_mangos_uptime.sql3
-rw-r--r--sql/updates/7546_02_realmd_uptime.sql16
-rw-r--r--src/game/AchievementMgr.cpp22
-rw-r--r--src/game/World.cpp8
-rw-r--r--src/shared/Database/DBCStructure.h2
-rw-r--r--src/shared/Database/DBCfmt.cpp2
8 files changed, 65 insertions, 35 deletions
diff --git a/sql/mangos.sql b/sql/mangos.sql
index 8652d133c91..db4cf2ad69b 100644
--- a/sql/mangos.sql
+++ b/sql/mangos.sql
@@ -22,7 +22,7 @@
DROP TABLE IF EXISTS `db_version`;
CREATE TABLE `db_version` (
`version` varchar(120) default NULL,
- `required_7536_01_mangos_spell_chain` bit(1) default NULL
+ `required_7544_01_mangos_uptime` bit(1) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
--
@@ -17850,28 +17850,6 @@ LOCK TABLES `transports` WRITE;
/*!40000 ALTER TABLE `transports` DISABLE KEYS */;
/*!40000 ALTER TABLE `transports` ENABLE KEYS */;
UNLOCK TABLES;
-
---
--- Table structure for table `uptime`
---
-
-DROP TABLE IF EXISTS `uptime`;
-CREATE TABLE `uptime` (
- `starttime` bigint(20) unsigned NOT NULL default '0',
- `startstring` varchar(64) NOT NULL default '',
- `uptime` bigint(20) unsigned NOT NULL default '0',
- `maxplayers` smallint(5) unsigned NOT NULL default '0',
- PRIMARY KEY (`starttime`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Uptime system';
-
---
--- Dumping data for table `uptime`
---
-
-LOCK TABLES `uptime` WRITE;
-/*!40000 ALTER TABLE `uptime` DISABLE KEYS */;
-/*!40000 ALTER TABLE `uptime` ENABLE KEYS */;
-UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
diff --git a/sql/realmd.sql b/sql/realmd.sql
index b7b55cc15d9..fcd7d166359 100644
--- a/sql/realmd.sql
+++ b/sql/realmd.sql
@@ -175,6 +175,29 @@ INSERT INTO `realmlist` VALUES
(1,'Trinity','127.0.0.1',8085,1,0,1,0,0);
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
UNLOCK TABLES;
+
+--
+-- Table structure for table `uptime`
+--
+
+DROP TABLE IF EXISTS `uptime`;
+CREATE TABLE `uptime` (
+ `realmid` int(11) unsigned NOT NULL,
+ `starttime` bigint(20) unsigned NOT NULL default '0',
+ `startstring` varchar(64) NOT NULL default '',
+ `uptime` bigint(20) unsigned NOT NULL default '0',
+ `maxplayers` smallint(5) unsigned NOT NULL default '0',
+ PRIMARY KEY (`realmid`,`starttime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Uptime system';
+
+--
+-- Dumping data for table `uptime`
+--
+
+LOCK TABLES `uptime` WRITE;
+/*!40000 ALTER TABLE `uptime` DISABLE KEYS */;
+/*!40000 ALTER TABLE `uptime` ENABLE KEYS */;
+UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
diff --git a/sql/updates/7544_01_mangos_uptime.sql b/sql/updates/7544_01_mangos_uptime.sql
new file mode 100644
index 00000000000..223f3f63069
--- /dev/null
+++ b/sql/updates/7544_01_mangos_uptime.sql
@@ -0,0 +1,3 @@
+ALTER TABLE db_version CHANGE COLUMN required_7536_01_mangos_spell_chain required_7544_01_mangos_uptime bit;
+
+DROP TABLE IF EXISTS `uptime`; \ No newline at end of file
diff --git a/sql/updates/7546_02_realmd_uptime.sql b/sql/updates/7546_02_realmd_uptime.sql
new file mode 100644
index 00000000000..a53b0f95ff5
--- /dev/null
+++ b/sql/updates/7546_02_realmd_uptime.sql
@@ -0,0 +1,16 @@
+ALTER TABLE realmd_db_version CHANGE COLUMN required_6976_01_realmd_realmd_db_version required_7546_02_realmd_uptime bit;
+
+
+--
+-- Table structure for table `uptime`
+--
+
+DROP TABLE IF EXISTS `uptime`;
+CREATE TABLE `uptime` (
+ `realmid` int(11) unsigned NOT NULL,
+ `starttime` bigint(20) unsigned NOT NULL default '0',
+ `startstring` varchar(64) NOT NULL default '',
+ `uptime` bigint(20) unsigned NOT NULL default '0',
+ `maxplayers` smallint(5) unsigned NOT NULL default '0',
+ PRIMARY KEY (`realmid`,`starttime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Uptime system';
diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp
index c23d16e25c3..2d99944e8ad 100644
--- a/src/game/AchievementMgr.cpp
+++ b/src/game/AchievementMgr.cpp
@@ -725,14 +725,24 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if(!worldOverlayEntry)
break;
- int32 exploreFlag = GetAreaFlagByAreaID(worldOverlayEntry->areatableID);
- if(exploreFlag < 0)
- break;
+ bool matchFound = false;
+ for (int i = 0; i < 3; ++i)
+ {
+ int32 exploreFlag = GetAreaFlagByAreaID(worldOverlayEntry->areatableID[i]);
+ if(exploreFlag < 0)
+ break;
+
+ uint32 playerIndexOffset = uint32(exploreFlag) / 32;
+ uint32 mask = 1<< (uint32(exploreFlag) % 32);
- uint32 playerIndexOffset = uint32(exploreFlag) / 32;
- uint32 mask = 1<< (uint32(exploreFlag) % 32);
+ if(GetPlayer()->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask)
+ {
+ matchFound = true;
+ break;
+ }
+ }
- if(GetPlayer()->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask)
+ if(matchFound)
SetCriteriaProgress(achievementCriteria, 1);
break;
}
diff --git a/src/game/World.cpp b/src/game/World.cpp
index e84a6cbaddc..d771b210ae9 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -1472,8 +1472,8 @@ void World::SetInitialWorldSettings()
sprintf( isoDate, "%04d-%02d-%02d %02d:%02d:%02d",
local.tm_year+1900, local.tm_mon+1, local.tm_mday, local.tm_hour, local.tm_min, local.tm_sec);
- WorldDatabase.PExecute("INSERT INTO uptime (startstring, starttime, uptime) VALUES('%s', " I64FMTD ", 0)",
- isoDate, uint64(m_startTime));
+ loginDatabase.PExecute("INSERT INTO uptime (realmid, starttime, startstring, uptime) VALUES('%u', " I64FMTD ", '%s', 0)",
+ realmID, uint64(m_startTime), isoDate);
m_timers[WUPDATE_OBJECTS].SetInterval(0);
m_timers[WUPDATE_SESSIONS].SetInterval(0);
@@ -1707,10 +1707,10 @@ void World::Update(uint32 diff)
if (m_timers[WUPDATE_UPTIME].Passed())
{
uint32 tmpDiff = (m_gameTime - m_startTime);
- uint32 maxClientsNum = sWorld.GetMaxActiveSessionCount();
+ uint32 maxClientsNum = GetMaxActiveSessionCount();
m_timers[WUPDATE_UPTIME].Reset();
- WorldDatabase.PExecute("UPDATE uptime SET uptime = %d, maxplayers = %d WHERE starttime = " I64FMTD, tmpDiff, maxClientsNum, uint64(m_startTime));
+ loginDatabase.PExecute("UPDATE uptime SET uptime = %u, maxplayers = %u WHERE realmid = %u AND starttime = " I64FMTD, tmpDiff, maxClientsNum, realmID, uint64(m_startTime));
}
/// <li> Clean logs table
diff --git a/src/shared/Database/DBCStructure.h b/src/shared/Database/DBCStructure.h
index 15a23211869..32f78faa509 100644
--- a/src/shared/Database/DBCStructure.h
+++ b/src/shared/Database/DBCStructure.h
@@ -1621,7 +1621,7 @@ struct WorldSafeLocsEntry
struct WorldMapOverlayEntry
{
uint32 ID; // 0
- uint32 areatableID; // 2
+ uint32 areatableID[4]; // 2-5
};
// GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some platform
diff --git a/src/shared/Database/DBCfmt.cpp b/src/shared/Database/DBCfmt.cpp
index 53c15827bae..fdaaac14f66 100644
--- a/src/shared/Database/DBCfmt.cpp
+++ b/src/shared/Database/DBCfmt.cpp
@@ -98,4 +98,4 @@ const char VehicleEntryfmt[]="niffffiiiiiiiiffffiiiiiifffffffffffssssfifi";
const char VehicleSeatEntryfmt[]="niiffffffffffiiiiiifffffffiiifffiiiiiiiffiiiii";
const char WorldMapAreaEntryfmt[]="xinxffffix";
const char WorldSafeLocsEntryfmt[]="nifffxxxxxxxxxxxxxxxxx";
-const char WorldMapOverlayEntryfmt[]="nxixxxxxxxxxxxxxx";
+const char WorldMapOverlayEntryfmt[]="nxiiiixxxxxxxxxxx";