mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[8402] Optimalized guild_eventlog and guild_bank_eventlog loading from database.
Added config options to set count of eventlog records stored in DB. Attached SQL files will DROP existing and create new tables. Make sure you create backup (if you need old data). Renamed few variables in Guild class. Signed-off-by: Triply <triply@getmangos.com>
This commit is contained in:
parent
6c57a01507
commit
38fa6b241c
15 changed files with 463 additions and 368 deletions
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `character_db_version`;
|
DROP TABLE IF EXISTS `character_db_version`;
|
||||||
CREATE TABLE `character_db_version` (
|
CREATE TABLE `character_db_version` (
|
||||||
`required_8397_03_characters_character_spell` bit(1) default NULL
|
`required_8402_02_characters_guild_bank_eventlog` bit(1) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Last applied sql update to DB';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Last applied sql update to DB';
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
@ -935,16 +935,16 @@ UNLOCK TABLES;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `guild_bank_eventlog`;
|
DROP TABLE IF EXISTS `guild_bank_eventlog`;
|
||||||
CREATE TABLE `guild_bank_eventlog` (
|
CREATE TABLE `guild_bank_eventlog` (
|
||||||
`guildid` int(11) unsigned NOT NULL default '0',
|
`guildid` int(11) unsigned NOT NULL default '0' COMMENT 'Guild Identificator',
|
||||||
`LogGuid` int(11) unsigned NOT NULL default '0',
|
`LogGuid` int(11) unsigned NOT NULL default '0' COMMENT 'Log record identificator - auxiliary column',
|
||||||
`LogEntry` tinyint(1) unsigned NOT NULL default '0',
|
`TabId` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Guild bank TabId',
|
||||||
`TabId` tinyint(1) unsigned NOT NULL default '0',
|
`EventType` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Event type',
|
||||||
`PlayerGuid` int(11) unsigned NOT NULL default '0',
|
`PlayerGuid` int(11) unsigned NOT NULL default '0',
|
||||||
`ItemOrMoney` int(11) unsigned NOT NULL default '0',
|
`ItemOrMoney` int(11) unsigned NOT NULL default '0',
|
||||||
`ItemStackCount` tinyint(3) unsigned NOT NULL default '0',
|
`ItemStackCount` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`DestTabId` tinyint(1) unsigned NOT NULL default '0',
|
`DestTabId` tinyint(1) unsigned NOT NULL default '0' COMMENT 'Destination Tab Id',
|
||||||
`TimeStamp` bigint(20) unsigned NOT NULL default '0',
|
`TimeStamp` bigint(20) unsigned NOT NULL default '0' COMMENT 'Event UNIX time',
|
||||||
PRIMARY KEY (`guildid`,`LogGuid`),
|
PRIMARY KEY (`guildid`,`LogGuid`,`TabId`),
|
||||||
KEY `guildid_key` (`guildid`)
|
KEY `guildid_key` (`guildid`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
|
@ -1036,12 +1036,13 @@ UNLOCK TABLES;
|
||||||
DROP TABLE IF EXISTS `guild_eventlog`;
|
DROP TABLE IF EXISTS `guild_eventlog`;
|
||||||
CREATE TABLE `guild_eventlog` (
|
CREATE TABLE `guild_eventlog` (
|
||||||
`guildid` int(11) NOT NULL COMMENT 'Guild Identificator',
|
`guildid` int(11) NOT NULL COMMENT 'Guild Identificator',
|
||||||
`LogGuid` int(11) NOT NULL COMMENT 'Log entry identificator',
|
`LogGuid` int(11) NOT NULL COMMENT 'Log record identificator - auxiliary column',
|
||||||
`EventType` tinyint(1) NOT NULL COMMENT 'Event type',
|
`EventType` tinyint(1) NOT NULL COMMENT 'Event type',
|
||||||
`PlayerGuid1` int(11) NOT NULL COMMENT 'Player 1',
|
`PlayerGuid1` int(11) NOT NULL COMMENT 'Player 1',
|
||||||
`PlayerGuid2` int(11) NOT NULL COMMENT 'Player 2',
|
`PlayerGuid2` int(11) NOT NULL COMMENT 'Player 2',
|
||||||
`NewRank` tinyint(2) NOT NULL COMMENT 'New rank(in case promotion/demotion)',
|
`NewRank` tinyint(2) NOT NULL COMMENT 'New rank(in case promotion/demotion)',
|
||||||
`TimeStamp` bigint(20) NOT NULL COMMENT 'Event UNIX time'
|
`TimeStamp` bigint(20) NOT NULL COMMENT 'Event UNIX time',
|
||||||
|
PRIMARY KEY (`guildid`, `LogGuid`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'Guild Eventlog';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'Guild Eventlog';
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
|
||||||
20
sql/updates/8402_01_characters_guild_eventlog.sql
Normal file
20
sql/updates/8402_01_characters_guild_eventlog.sql
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
ALTER TABLE character_db_version CHANGE COLUMN required_8397_03_characters_character_spell required_8402_01_characters_guild_eventlog bit;
|
||||||
|
|
||||||
|
|
||||||
|
-- THIS SCRIPT DELETES table `guild_eventlog` - MAKE BACKUP, if you need it.
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `guild_eventlog`;
|
||||||
|
CREATE TABLE `guild_eventlog` (
|
||||||
|
`guildid` int(11) NOT NULL COMMENT 'Guild Identificator',
|
||||||
|
`LogGuid` int(11) NOT NULL COMMENT 'Log record identificator - auxiliary column',
|
||||||
|
`EventType` tinyint(1) NOT NULL COMMENT 'Event type',
|
||||||
|
`PlayerGuid1` int(11) NOT NULL COMMENT 'Player 1',
|
||||||
|
`PlayerGuid2` int(11) NOT NULL COMMENT 'Player 2',
|
||||||
|
`NewRank` tinyint(2) NOT NULL COMMENT 'New rank(in case promotion/demotion)',
|
||||||
|
`TimeStamp` bigint(20) NOT NULL COMMENT 'Event UNIX time',
|
||||||
|
PRIMARY KEY (`guildid`, `LogGuid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'Guild Eventlog';
|
||||||
|
|
||||||
|
-- The reason i decided for such dramatic change is that old guild_eventlog table didn't have Primary key and
|
||||||
|
-- used LogGuids from 0 to infinity
|
||||||
|
-- New system uses LogGuids from 0 to number defined in config.
|
||||||
23
sql/updates/8402_02_characters_guild_bank_eventlog.sql
Normal file
23
sql/updates/8402_02_characters_guild_bank_eventlog.sql
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
ALTER TABLE character_db_version CHANGE COLUMN required_8402_01_characters_guild_eventlog required_8402_02_characters_guild_bank_eventlog bit;
|
||||||
|
|
||||||
|
|
||||||
|
-- THIS SCRIPT DELETES table `guild_bank_eventlog` - MAKE BACKUP, if you need it.
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `guild_bank_eventlog`;
|
||||||
|
CREATE TABLE `guild_bank_eventlog` (
|
||||||
|
`guildid` int(11) unsigned NOT NULL default '0' COMMENT 'Guild Identificator',
|
||||||
|
`LogGuid` int(11) unsigned NOT NULL default '0' COMMENT 'Log record identificator - auxiliary column',
|
||||||
|
`TabId` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Guild bank TabId',
|
||||||
|
`EventType` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Event type',
|
||||||
|
`PlayerGuid` int(11) unsigned NOT NULL default '0',
|
||||||
|
`ItemOrMoney` int(11) unsigned NOT NULL default '0',
|
||||||
|
`ItemStackCount` tinyint(3) unsigned NOT NULL default '0',
|
||||||
|
`DestTabId` tinyint(1) unsigned NOT NULL default '0' COMMENT 'Destination Tab Id',
|
||||||
|
`TimeStamp` bigint(20) unsigned NOT NULL default '0' COMMENT 'Event UNIX time',
|
||||||
|
PRIMARY KEY (`guildid`,`LogGuid`,`TabId`),
|
||||||
|
KEY `guildid_key` (`guildid`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
-- The reason i decided for such dramatic change is that old guild_bank_eventlog table used `TabId` = 0 for Money events and
|
||||||
|
-- used `LogGuid` from 0 to infinity
|
||||||
|
-- New system uses `LogGuid` from 0 to number defined in config.
|
||||||
|
|
@ -90,6 +90,8 @@ pkgdata_DATA = \
|
||||||
8397_02_mangos_spell_threat.sql \
|
8397_02_mangos_spell_threat.sql \
|
||||||
8397_03_characters_character_spell.sql \
|
8397_03_characters_character_spell.sql \
|
||||||
8399_01_mangos_spell_elixir.sql \
|
8399_01_mangos_spell_elixir.sql \
|
||||||
|
8402_01_characters_guild_eventlog.sql \
|
||||||
|
8402_02_characters_guild_bank_eventlog.sql \
|
||||||
README
|
README
|
||||||
|
|
||||||
## Additional files to include when running 'make dist'
|
## Additional files to include when running 'make dist'
|
||||||
|
|
@ -160,4 +162,6 @@ EXTRA_DIST = \
|
||||||
8397_02_mangos_spell_threat.sql \
|
8397_02_mangos_spell_threat.sql \
|
||||||
8397_03_characters_character_spell.sql \
|
8397_03_characters_character_spell.sql \
|
||||||
8399_01_mangos_spell_elixir.sql \
|
8399_01_mangos_spell_elixir.sql \
|
||||||
|
8402_01_characters_guild_eventlog.sql \
|
||||||
|
8402_02_characters_guild_bank_eventlog.sql \
|
||||||
README
|
README
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
131
src/game/Guild.h
131
src/game/Guild.h
|
|
@ -146,7 +146,7 @@ enum GuildBankRights
|
||||||
GUILD_BANK_RIGHT_FULL = 0xFF,
|
GUILD_BANK_RIGHT_FULL = 0xFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GuildBankLogEntries
|
enum GuildBankEventLogTypes
|
||||||
{
|
{
|
||||||
GUILD_BANK_LOG_DEPOSIT_ITEM = 1,
|
GUILD_BANK_LOG_DEPOSIT_ITEM = 1,
|
||||||
GUILD_BANK_LOG_WITHDRAW_ITEM = 2,
|
GUILD_BANK_LOG_WITHDRAW_ITEM = 2,
|
||||||
|
|
@ -159,7 +159,7 @@ enum GuildBankLogEntries
|
||||||
GUILD_BANK_LOG_UNK2 = 9,
|
GUILD_BANK_LOG_UNK2 = 9,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GuildEventLogEntryTypes
|
enum GuildEventLogTypes
|
||||||
{
|
{
|
||||||
GUILD_EVENT_LOG_INVITE_PLAYER = 1,
|
GUILD_EVENT_LOG_INVITE_PLAYER = 1,
|
||||||
GUILD_EVENT_LOG_JOIN_GUILD = 2,
|
GUILD_EVENT_LOG_JOIN_GUILD = 2,
|
||||||
|
|
@ -169,16 +169,6 @@ enum GuildEventLogEntryTypes
|
||||||
GUILD_EVENT_LOG_LEAVE_GUILD = 6,
|
GUILD_EVENT_LOG_LEAVE_GUILD = 6,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GuildEventlogEntry
|
|
||||||
{
|
|
||||||
uint32 LogGuid;
|
|
||||||
uint8 EventType;
|
|
||||||
uint32 PlayerGuid1;
|
|
||||||
uint32 PlayerGuid2;
|
|
||||||
uint8 NewRank;
|
|
||||||
uint64 TimeStamp;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum GuildEmblem
|
enum GuildEmblem
|
||||||
{
|
{
|
||||||
ERR_GUILDEMBLEM_SUCCESS = 0,
|
ERR_GUILDEMBLEM_SUCCESS = 0,
|
||||||
|
|
@ -205,11 +195,18 @@ inline uint32 GetGuildBankTabPrice(uint8 Index)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct GuildBankEvent
|
struct GuildEventLogEntry
|
||||||
{
|
{
|
||||||
uint32 LogGuid;
|
uint8 EventType;
|
||||||
uint8 LogEntry;
|
uint32 PlayerGuid1;
|
||||||
uint8 TabId;
|
uint32 PlayerGuid2;
|
||||||
|
uint8 NewRank;
|
||||||
|
uint64 TimeStamp;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct GuildBankEventLogEntry
|
||||||
|
{
|
||||||
|
uint8 EventType;
|
||||||
uint32 PlayerGuid;
|
uint32 PlayerGuid;
|
||||||
uint32 ItemOrMoney;
|
uint32 ItemOrMoney;
|
||||||
uint8 ItemStackCount;
|
uint8 ItemStackCount;
|
||||||
|
|
@ -218,9 +215,9 @@ struct GuildBankEvent
|
||||||
|
|
||||||
bool isMoneyEvent() const
|
bool isMoneyEvent() const
|
||||||
{
|
{
|
||||||
return LogEntry == GUILD_BANK_LOG_DEPOSIT_MONEY ||
|
return EventType == GUILD_BANK_LOG_DEPOSIT_MONEY ||
|
||||||
LogEntry == GUILD_BANK_LOG_WITHDRAW_MONEY ||
|
EventType == GUILD_BANK_LOG_WITHDRAW_MONEY ||
|
||||||
LogEntry == GUILD_BANK_LOG_REPAIR_MONEY;
|
EventType == GUILD_BANK_LOG_REPAIR_MONEY;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -283,27 +280,27 @@ class Guild
|
||||||
Guild();
|
Guild();
|
||||||
~Guild();
|
~Guild();
|
||||||
|
|
||||||
bool create(Player* leader, std::string gname);
|
bool Create(Player* leader, std::string gname);
|
||||||
void Disband();
|
void Disband();
|
||||||
|
|
||||||
typedef std::map<uint32, MemberSlot> MemberList;
|
typedef std::map<uint32, MemberSlot> MemberList;
|
||||||
typedef std::vector<RankInfo> RankList;
|
typedef std::vector<RankInfo> RankList;
|
||||||
|
|
||||||
uint32 GetId(){ return Id; }
|
uint32 GetId(){ return m_Id; }
|
||||||
const uint64& GetLeader(){ return leaderGuid; }
|
const uint64& GetLeader(){ return m_LeaderGuid; }
|
||||||
std::string GetName(){ return name; }
|
std::string GetName(){ return m_Name; }
|
||||||
std::string GetMOTD(){ return MOTD; }
|
std::string GetMOTD(){ return MOTD; }
|
||||||
std::string GetGINFO(){ return GINFO; }
|
std::string GetGINFO(){ return GINFO; }
|
||||||
|
|
||||||
uint32 GetCreatedYear(){ return CreatedYear; }
|
uint32 GetCreatedYear(){ return m_CreatedYear; }
|
||||||
uint32 GetCreatedMonth(){ return CreatedMonth; }
|
uint32 GetCreatedMonth(){ return m_CreatedMonth; }
|
||||||
uint32 GetCreatedDay(){ return CreatedDay; }
|
uint32 GetCreatedDay(){ return m_CreatedDay; }
|
||||||
|
|
||||||
uint32 GetEmblemStyle(){ return EmblemStyle; }
|
uint32 GetEmblemStyle(){ return m_EmblemStyle; }
|
||||||
uint32 GetEmblemColor(){ return EmblemColor; }
|
uint32 GetEmblemColor(){ return m_EmblemColor; }
|
||||||
uint32 GetBorderStyle(){ return BorderStyle; }
|
uint32 GetBorderStyle(){ return m_BorderStyle; }
|
||||||
uint32 GetBorderColor(){ return BorderColor; }
|
uint32 GetBorderColor(){ return m_BorderColor; }
|
||||||
uint32 GetBackgroundColor(){ return BackgroundColor; }
|
uint32 GetBackgroundColor(){ return m_BackgroundColor; }
|
||||||
|
|
||||||
void SetLeader(uint64 guid);
|
void SetLeader(uint64 guid);
|
||||||
bool AddMember(uint64 plGuid, uint32 plRank);
|
bool AddMember(uint64 plGuid, uint32 plRank);
|
||||||
|
|
@ -313,8 +310,8 @@ class Guild
|
||||||
|
|
||||||
void SetMOTD(std::string motd);
|
void SetMOTD(std::string motd);
|
||||||
void SetGINFO(std::string ginfo);
|
void SetGINFO(std::string ginfo);
|
||||||
void SetPNOTE(uint64 guid,std::string pnote);
|
void SetPNOTE(uint64 guid, std::string pnote);
|
||||||
void SetOFFNOTE(uint64 guid,std::string offnote);
|
void SetOFFNOTE(uint64 guid, std::string offnote);
|
||||||
void SetEmblem(uint32 emblemStyle, uint32 emblemColor, uint32 borderStyle, uint32 borderColor, uint32 backgroundColor);
|
void SetEmblem(uint32 emblemStyle, uint32 emblemColor, uint32 borderStyle, uint32 borderColor, uint32 backgroundColor);
|
||||||
|
|
||||||
uint32 GetMemberSize() const { return members.size(); }
|
uint32 GetMemberSize() const { return members.size(); }
|
||||||
|
|
@ -344,7 +341,7 @@ class Guild
|
||||||
void DelRank();
|
void DelRank();
|
||||||
std::string GetRankName(uint32 rankId);
|
std::string GetRankName(uint32 rankId);
|
||||||
uint32 GetRankRights(uint32 rankId);
|
uint32 GetRankRights(uint32 rankId);
|
||||||
uint32 GetNrRanks() const { return m_ranks.size(); }
|
uint32 GetNrRanks() const { return m_Ranks.size(); }
|
||||||
|
|
||||||
void SetRankName(uint32 rankId, std::string name);
|
void SetRankName(uint32 rankId, std::string name);
|
||||||
void SetRankRights(uint32 rankId, uint32 rights);
|
void SetRankRights(uint32 rankId, uint32 rights);
|
||||||
|
|
@ -373,13 +370,12 @@ class Guild
|
||||||
void Roster(WorldSession *session);
|
void Roster(WorldSession *session);
|
||||||
void Query(WorldSession *session);
|
void Query(WorldSession *session);
|
||||||
|
|
||||||
void UpdateLogoutTime(uint64 guid);
|
void UpdateLogoutTime(uint64 guid);
|
||||||
// Guild eventlog
|
// Guild EventLog
|
||||||
void LoadGuildEventLogFromDB();
|
void LoadGuildEventLogFromDB();
|
||||||
void UnloadGuildEventlog();
|
void UnloadGuildEventLog();
|
||||||
void DisplayGuildEventlog(WorldSession *session);
|
void DisplayGuildEventLog(WorldSession *session);
|
||||||
void LogGuildEvent(uint8 EventType, uint32 PlayerGuid1, uint32 PlayerGuid2, uint8 NewRank);
|
void LogGuildEvent(uint8 EventType, uint32 PlayerGuid1, uint32 PlayerGuid2, uint8 NewRank);
|
||||||
void RenumGuildEventlog();
|
|
||||||
|
|
||||||
// ** Guild bank **
|
// ** Guild bank **
|
||||||
// Content & item deposit/withdraw
|
// Content & item deposit/withdraw
|
||||||
|
|
@ -401,18 +397,18 @@ class Guild
|
||||||
void SetGuildBankTabInfo(uint8 TabId, std::string name, std::string icon);
|
void SetGuildBankTabInfo(uint8 TabId, std::string name, std::string icon);
|
||||||
void CreateBankRightForTab(uint32 rankid, uint8 TabId);
|
void CreateBankRightForTab(uint32 rankid, uint8 TabId);
|
||||||
const GuildBankTab *GetBankTab(uint8 index) { if(index >= m_TabListMap.size()) return NULL; return m_TabListMap[index]; }
|
const GuildBankTab *GetBankTab(uint8 index) { if(index >= m_TabListMap.size()) return NULL; return m_TabListMap[index]; }
|
||||||
uint8 GetPurchasedTabs() const { return purchased_tabs; }
|
uint8 GetPurchasedTabs() const { return m_PurchasedTabs; }
|
||||||
uint32 GetBankRights(uint32 rankId, uint8 TabId) const;
|
uint32 GetBankRights(uint32 rankId, uint8 TabId) const;
|
||||||
bool IsMemberHaveRights(uint32 LowGuid, uint8 TabId,uint32 rights) const;
|
bool IsMemberHaveRights(uint32 LowGuid, uint8 TabId,uint32 rights) const;
|
||||||
bool CanMemberViewTab(uint32 LowGuid, uint8 TabId) const;
|
bool CanMemberViewTab(uint32 LowGuid, uint8 TabId) const;
|
||||||
// Load/unload
|
// Load/unload
|
||||||
void LoadGuildBankFromDB();
|
void LoadGuildBankFromDB();
|
||||||
void UnloadGuildBank();
|
void UnloadGuildBank();
|
||||||
void IncOnlineMemberCount() { ++m_onlinemembers; }
|
void IncOnlineMemberCount() { ++m_OnlineMembers; }
|
||||||
// Money deposit/withdraw
|
// Money deposit/withdraw
|
||||||
void SendMoneyInfo(WorldSession *session, uint32 LowGuid);
|
void SendMoneyInfo(WorldSession *session, uint32 LowGuid);
|
||||||
bool MemberMoneyWithdraw(uint32 amount, uint32 LowGuid);
|
bool MemberMoneyWithdraw(uint32 amount, uint32 LowGuid);
|
||||||
uint64 GetGuildBankMoney() { return guildbank_money; }
|
uint64 GetGuildBankMoney() { return m_GuildBankMoney; }
|
||||||
void SetBankMoney(int64 money);
|
void SetBankMoney(int64 money);
|
||||||
// per days
|
// per days
|
||||||
bool MemberItemWithdraw(uint8 TabId, uint32 LowGuid);
|
bool MemberItemWithdraw(uint8 TabId, uint32 LowGuid);
|
||||||
|
|
@ -424,33 +420,32 @@ class Guild
|
||||||
uint32 GetBankSlotPerDay(uint32 rankId, uint8 TabId);
|
uint32 GetBankSlotPerDay(uint32 rankId, uint8 TabId);
|
||||||
// rights per day
|
// rights per day
|
||||||
void LoadBankRightsFromDB(uint32 GuildId);
|
void LoadBankRightsFromDB(uint32 GuildId);
|
||||||
// logs
|
// Guild Bank Event Logs
|
||||||
void LoadGuildBankEventLogFromDB();
|
void LoadGuildBankEventLogFromDB();
|
||||||
void UnloadGuildBankEventLog();
|
void UnloadGuildBankEventLog();
|
||||||
void DisplayGuildBankLogs(WorldSession *session, uint8 TabId);
|
void DisplayGuildBankLogs(WorldSession *session, uint8 TabId);
|
||||||
void LogBankEvent(uint8 LogEntry, uint8 TabId, uint32 PlayerGuidLow, uint32 ItemOrMoney, uint8 ItemStackCount=0, uint8 DestTabId=0);
|
void LogBankEvent(uint8 EventType, uint8 TabId, uint32 PlayerGuidLow, uint32 ItemOrMoney, uint8 ItemStackCount=0, uint8 DestTabId=0);
|
||||||
void RenumBankLogs();
|
|
||||||
bool AddGBankItemToDB(uint32 GuildId, uint32 BankTab , uint32 BankTabSlot , uint32 GUIDLow, uint32 Entry );
|
bool AddGBankItemToDB(uint32 GuildId, uint32 BankTab , uint32 BankTabSlot , uint32 GUIDLow, uint32 Entry );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void AddRank(const std::string& name,uint32 rights,uint32 money);
|
void AddRank(const std::string& name,uint32 rights,uint32 money);
|
||||||
|
|
||||||
uint32 Id;
|
uint32 m_Id;
|
||||||
std::string name;
|
std::string m_Name;
|
||||||
uint64 leaderGuid;
|
uint64 m_LeaderGuid;
|
||||||
std::string MOTD;
|
std::string MOTD;
|
||||||
std::string GINFO;
|
std::string GINFO;
|
||||||
uint32 CreatedYear;
|
uint32 m_CreatedYear;
|
||||||
uint32 CreatedMonth;
|
uint32 m_CreatedMonth;
|
||||||
uint32 CreatedDay;
|
uint32 m_CreatedDay;
|
||||||
|
|
||||||
uint32 EmblemStyle;
|
uint32 m_EmblemStyle;
|
||||||
uint32 EmblemColor;
|
uint32 m_EmblemColor;
|
||||||
uint32 BorderStyle;
|
uint32 m_BorderStyle;
|
||||||
uint32 BorderColor;
|
uint32 m_BorderColor;
|
||||||
uint32 BackgroundColor;
|
uint32 m_BackgroundColor;
|
||||||
|
|
||||||
RankList m_ranks;
|
RankList m_Ranks;
|
||||||
|
|
||||||
MemberList members;
|
MemberList members;
|
||||||
|
|
||||||
|
|
@ -458,20 +453,22 @@ class Guild
|
||||||
TabListMap m_TabListMap;
|
TabListMap m_TabListMap;
|
||||||
|
|
||||||
/** These are actually ordered lists. The first element is the oldest entry.*/
|
/** These are actually ordered lists. The first element is the oldest entry.*/
|
||||||
typedef std::list<GuildEventlogEntry> GuildEventlog;
|
typedef std::list<GuildEventLogEntry> GuildEventLog;
|
||||||
typedef std::list<GuildBankEvent> GuildBankEventLog;
|
typedef std::list<GuildBankEventLogEntry> GuildBankEventLog;
|
||||||
GuildEventlog m_GuildEventlog;
|
GuildEventLog m_GuildEventLog;
|
||||||
GuildBankEventLog m_GuildBankEventLog_Money;
|
GuildBankEventLog m_GuildBankEventLog_Money;
|
||||||
GuildBankEventLog m_GuildBankEventLog_Item[GUILD_BANK_MAX_TABS];
|
GuildBankEventLog m_GuildBankEventLog_Item[GUILD_BANK_MAX_TABS];
|
||||||
|
|
||||||
bool m_bankloaded;
|
uint32 m_GuildEventLogNextGuid;
|
||||||
bool m_eventlogloaded;
|
uint32 m_GuildBankEventLogNextGuid_Money;
|
||||||
uint32 m_onlinemembers;
|
uint32 m_GuildBankEventLogNextGuid_Item[GUILD_BANK_MAX_TABS];
|
||||||
uint64 guildbank_money;
|
|
||||||
uint8 purchased_tabs;
|
bool m_GuildBankLoaded;
|
||||||
|
bool m_EventLogLoaded;
|
||||||
|
uint32 m_OnlineMembers;
|
||||||
|
uint64 m_GuildBankMoney;
|
||||||
|
uint8 m_PurchasedTabs;
|
||||||
|
|
||||||
uint32 LogMaxGuid;
|
|
||||||
uint32 GuildEventlogMaxGuid;
|
|
||||||
private:
|
private:
|
||||||
// internal common parts for CanStore/StoreItem functions
|
// internal common parts for CanStore/StoreItem functions
|
||||||
void AppendDisplayGuildBankSlot( WorldPacket& data, GuildBankTab const *tab, int32 slot );
|
void AppendDisplayGuildBankSlot( WorldPacket& data, GuildBankTab const *tab, int32 slot );
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Guild *guild = new Guild;
|
Guild *guild = new Guild;
|
||||||
if(!guild->create(GetPlayer(),gname))
|
if(!guild->Create(GetPlayer(),gname))
|
||||||
{
|
{
|
||||||
delete guild;
|
delete guild;
|
||||||
return;
|
return;
|
||||||
|
|
@ -825,7 +825,7 @@ void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */)
|
||||||
if(!pGuild)
|
if(!pGuild)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pGuild->DisplayGuildEventlog(this);
|
pGuild->DisplayGuildEventLog(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****** GUILD BANK *******/
|
/****** GUILD BANK *******/
|
||||||
|
|
@ -1546,7 +1546,7 @@ void WorldSession::HandleGuildBankBuyTab( WorldPacket & recv_data )
|
||||||
if (pGuild->GetPurchasedTabs() >= GUILD_BANK_MAX_TABS)
|
if (pGuild->GetPurchasedTabs() >= GUILD_BANK_MAX_TABS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (TabId != pGuild->GetPurchasedTabs()) // purchased_tabs = 0 when buying Tab 0, that is why this check can be made
|
if (TabId != pGuild->GetPurchasedTabs()) // m_PurchasedTabs = 0 when buying Tab 0, that is why this check can be made
|
||||||
{
|
{
|
||||||
sLog.outError("Error: trying to buy a tab non contigous to owned ones");
|
sLog.outError("Error: trying to buy a tab non contigous to owned ones");
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -3210,7 +3210,7 @@ bool ChatHandler::HandleGuildCreateCommand(const char* args)
|
||||||
}
|
}
|
||||||
|
|
||||||
Guild *guild = new Guild;
|
Guild *guild = new Guild;
|
||||||
if (!guild->create (target,guildname))
|
if (!guild->Create (target,guildname))
|
||||||
{
|
{
|
||||||
delete guild;
|
delete guild;
|
||||||
SendSysMessage (LANG_GUILD_NOT_CREATED);
|
SendSysMessage (LANG_GUILD_NOT_CREATED);
|
||||||
|
|
|
||||||
|
|
@ -805,7 +805,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
|
||||||
if(type == 9) // create guild
|
if(type == 9) // create guild
|
||||||
{
|
{
|
||||||
Guild* guild = new Guild;
|
Guild* guild = new Guild;
|
||||||
if(!guild->create(_player, name))
|
if(!guild->Create(_player, name))
|
||||||
{
|
{
|
||||||
delete guild;
|
delete guild;
|
||||||
delete result;
|
delete result;
|
||||||
|
|
|
||||||
|
|
@ -4016,6 +4016,9 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
|
||||||
CharacterDatabase.PExecute("DELETE FROM character_achievement WHERE guid = '%u'",guid);
|
CharacterDatabase.PExecute("DELETE FROM character_achievement WHERE guid = '%u'",guid);
|
||||||
CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE guid = '%u'",guid);
|
CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE guid = '%u'",guid);
|
||||||
CharacterDatabase.PExecute("DELETE FROM character_equipmentsets WHERE guid = '%u'",guid);
|
CharacterDatabase.PExecute("DELETE FROM character_equipmentsets WHERE guid = '%u'",guid);
|
||||||
|
CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid1 = '%u'",guid);
|
||||||
|
CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid2 = '%u'",guid);
|
||||||
|
CharacterDatabase.PExecute("DELETE FROM guild_bank_eventlog WHERE PlayerGuid = '%u'",guid);
|
||||||
CharacterDatabase.CommitTransaction();
|
CharacterDatabase.CommitTransaction();
|
||||||
|
|
||||||
//loginDatabase.PExecute("UPDATE realmcharacters SET numchars = numchars - 1 WHERE acctid = %d AND realmid = %d", accountId, realmID);
|
//loginDatabase.PExecute("UPDATE realmcharacters SET numchars = numchars - 1 WHERE acctid = %d AND realmid = %d", accountId, realmID);
|
||||||
|
|
|
||||||
|
|
@ -2329,8 +2329,9 @@ enum PetDiet
|
||||||
// Max values for Guild & Guild Bank
|
// Max values for Guild & Guild Bank
|
||||||
#define GUILD_BANK_MAX_TABS 6
|
#define GUILD_BANK_MAX_TABS 6
|
||||||
#define GUILD_BANK_MAX_SLOTS 98
|
#define GUILD_BANK_MAX_SLOTS 98
|
||||||
#define GUILD_BANK_MAX_LOGS 24
|
#define GUILD_BANK_MAX_LOGS 25
|
||||||
#define GUILD_EVENTLOG_MAX_ENTRIES 100
|
#define GUILD_BANK_MONEY_LOGS_TAB 100
|
||||||
|
#define GUILD_EVENTLOG_MAX_RECORDS 100
|
||||||
#define GUILD_MAX_RANKS 10
|
#define GUILD_MAX_RANKS 10
|
||||||
|
|
||||||
enum AiReaction
|
enum AiReaction
|
||||||
|
|
|
||||||
|
|
@ -973,6 +973,13 @@ void World::LoadConfigSettings(bool reload)
|
||||||
|
|
||||||
m_configs[CONFIG_INSTANT_LOGOUT] = sConfig.GetIntDefault("InstantLogout", SEC_MODERATOR);
|
m_configs[CONFIG_INSTANT_LOGOUT] = sConfig.GetIntDefault("InstantLogout", SEC_MODERATOR);
|
||||||
|
|
||||||
|
m_configs[CONFIG_GUILD_EVENT_LOG_COUNT] = sConfig.GetIntDefault("Guild.EventLogRecordsCount", GUILD_EVENTLOG_MAX_RECORDS);
|
||||||
|
if (m_configs[CONFIG_GUILD_EVENT_LOG_COUNT] < GUILD_EVENTLOG_MAX_RECORDS)
|
||||||
|
m_configs[CONFIG_GUILD_EVENT_LOG_COUNT] = GUILD_EVENTLOG_MAX_RECORDS;
|
||||||
|
m_configs[CONFIG_GUILD_BANK_EVENT_LOG_COUNT] = sConfig.GetIntDefault("Guild.BankEventLogRecordsCount", GUILD_BANK_MAX_LOGS);
|
||||||
|
if (m_configs[CONFIG_GUILD_BANK_EVENT_LOG_COUNT] < GUILD_BANK_MAX_LOGS)
|
||||||
|
m_configs[CONFIG_GUILD_BANK_EVENT_LOG_COUNT] = GUILD_BANK_MAX_LOGS;
|
||||||
|
|
||||||
m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1);
|
m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1);
|
||||||
if(m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE)
|
if(m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,8 @@ enum WorldConfigs
|
||||||
CONFIG_ARENA_SEASON_IN_PROGRESS,
|
CONFIG_ARENA_SEASON_IN_PROGRESS,
|
||||||
CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET,
|
CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET,
|
||||||
CONFIG_CLIENTCACHE_VERSION,
|
CONFIG_CLIENTCACHE_VERSION,
|
||||||
|
CONFIG_GUILD_EVENT_LOG_COUNT,
|
||||||
|
CONFIG_GUILD_BANK_EVENT_LOG_COUNT,
|
||||||
CONFIG_VALUE_COUNT
|
CONFIG_VALUE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -537,6 +537,18 @@ LogColors = ""
|
||||||
# Default: 7
|
# Default: 7
|
||||||
# -1 (show all available quests marks)
|
# -1 (show all available quests marks)
|
||||||
#
|
#
|
||||||
|
# Guild.EventLogRecordsCount
|
||||||
|
# Count of guild event log records stored in guild_eventlog table
|
||||||
|
# Increase to store more guild events in table, minimum is 100
|
||||||
|
# You can set it to very high value to prevent oldest guild events to be rewritten by latest guild events - but it can slow down performance
|
||||||
|
# Default: 100
|
||||||
|
#
|
||||||
|
# Guild.BankEventLogRecordsCount
|
||||||
|
# Count of guild_bank event log records stored in guild_bank_eventlog table
|
||||||
|
# Increase to store more guild_bank events in table - minimum is 25 (GUILD_BANK_MAX_LOGS) for each guild_bank tab
|
||||||
|
# Useful when you don't want old log events to be overwritten by new, but increasing can slow down performance
|
||||||
|
# Default: 25
|
||||||
|
#
|
||||||
# MaxPrimaryTradeSkill
|
# MaxPrimaryTradeSkill
|
||||||
# Max count that player can learn the primary trade skill.
|
# Max count that player can learn the primary trade skill.
|
||||||
# Default: 2
|
# Default: 2
|
||||||
|
|
@ -624,6 +636,8 @@ Instance.ResetTimeHour = 4
|
||||||
Instance.UnloadDelay = 1800000
|
Instance.UnloadDelay = 1800000
|
||||||
Quests.LowLevelHideDiff = 4
|
Quests.LowLevelHideDiff = 4
|
||||||
Quests.HighLevelHideDiff = 7
|
Quests.HighLevelHideDiff = 7
|
||||||
|
Guild.EventLogRecordsCount = 100
|
||||||
|
Guild.BankEventLogRecordsCount = 25
|
||||||
MaxPrimaryTradeSkill = 2
|
MaxPrimaryTradeSkill = 2
|
||||||
MinPetitionSigns = 9
|
MinPetitionSigns = 9
|
||||||
MaxGroupXPDistance = 74
|
MaxGroupXPDistance = 74
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8401"
|
#define REVISION_NR "8402"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue