aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
authorazazel <none@none>2010-10-17 19:54:13 +0600
committerazazel <none@none>2010-10-17 19:54:13 +0600
commitc0faed2251dff3814fe60e1a8ba86a046e48f707 (patch)
tree068f2ab41c2d32bbdeddd2e5c722dc6239cdd073 /src/server/game/Scripting
parentf5911917b4ea1e97b0f22876dc8f35bbfa9833c9 (diff)
Core/Guilds: guild code was completely refactored and rewritten.
* OOP desing and implementation; * all the queries are moved to prepared statements; * guild loading is optimized; * all the possible interaction with guild's data is done inside the guild class; * added more hooks to GuildScript class; WARNING: Make sure you backup your characters database before applying this change (just in case). Known problems with guilds: * when new member is added to the guild, MOTD is not displayed for him in guild tab of social window; * if you add item with random property to guild bank visual representation of item below it becomes wrong (it displays wrong stack number); * packets order differs from official: currently guild bank packet traffic is twice as more than on offy. --HG-- branch : trunk
Diffstat (limited to 'src/server/game/Scripting')
-rwxr-xr-xsrc/server/game/Scripting/ScriptMgr.cpp42
-rwxr-xr-xsrc/server/game/Scripting/ScriptMgr.h26
2 files changed, 58 insertions, 10 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 562e6aa6f7d..9fcf084ca06 100755
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -1076,6 +1076,7 @@ bool ScriptMgr::OnCriteriaCheck(AchievementCriteriaData const* data, Player* sou
return tmpscript->OnCheck(source, target);
}
+// Player
void ScriptMgr::OnPVPKill(Player *killer, Player *killed)
{
FOREACH_SCRIPT(PlayerScript)->OnPVPKill(killer, killed);
@@ -1196,7 +1197,8 @@ void ScriptMgr::OnPlayerDelete(uint64 guid)
FOREACH_SCRIPT(PlayerScript)->OnDelete(guid);
}
-void ScriptMgr::OnGuildAddMember(Guild *guild, Player *player, uint32& plRank)
+// Guild
+void ScriptMgr::OnGuildAddMember(Guild *guild, Player *player, uint8& plRank)
{
FOREACH_SCRIPT(GuildScript)->OnAddMember(guild, player, plRank);
}
@@ -1206,14 +1208,19 @@ void ScriptMgr::OnGuildRemoveMember(Guild *guild, Player *player, bool isDisband
FOREACH_SCRIPT(GuildScript)->OnRemoveMember(guild, player, isDisbanding, isKicked);
}
-void ScriptMgr::OnGuildMOTDChanged(Guild *guild, std::string newMotd)
+void ScriptMgr::OnGuildMOTDChanged(Guild *guild, const std::string& newMotd)
{
FOREACH_SCRIPT(GuildScript)->OnMOTDChanged(guild, newMotd);
}
-void ScriptMgr::OnGuildInfoChanged(Guild *guild, std::string newGInfo)
+void ScriptMgr::OnGuildInfoChanged(Guild *guild, const std::string& newInfo)
{
- FOREACH_SCRIPT(GuildScript)->OnGInfoChanged(guild, newGInfo);
+ FOREACH_SCRIPT(GuildScript)->OnInfoChanged(guild, newInfo);
+}
+
+void ScriptMgr::OnGuildCreate(Guild *guild, Player* leader, const std::string& name)
+{
+ FOREACH_SCRIPT(GuildScript)->OnCreate(guild, leader, name);
}
void ScriptMgr::OnGuildDisband(Guild *guild)
@@ -1221,6 +1228,33 @@ void ScriptMgr::OnGuildDisband(Guild *guild)
FOREACH_SCRIPT(GuildScript)->OnDisband(guild);
}
+void ScriptMgr::OnGuildMemberWitdrawMoney(Guild* guild, Player* player, uint32 &amount, bool isRepair)
+{
+ FOREACH_SCRIPT(GuildScript)->OnMemberWitdrawMoney(guild, player, amount, isRepair);
+}
+
+void ScriptMgr::OnGuildMemberDepositMoney(Guild* guild, Player* player, uint32 &amount)
+{
+ FOREACH_SCRIPT(GuildScript)->OnMemberDepositMoney(guild, player, amount);
+}
+
+void ScriptMgr::OnGuildItemMove(Guild* guild, Player* player, Item* pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId,
+ bool isDestBank, uint8 destContainer, uint8 destSlotId)
+{
+ FOREACH_SCRIPT(GuildScript)->OnItemMove(guild, player, pItem, isSrcBank, srcContainer, srcSlotId, isDestBank, destContainer, destSlotId);
+}
+
+void ScriptMgr::OnGuildEvent(Guild* guild, uint8 eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank)
+{
+ FOREACH_SCRIPT(GuildScript)->OnEvent(guild, eventType, playerGuid1, playerGuid2, newRank);
+}
+
+void ScriptMgr::OnGuildBankEvent(Guild* guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId)
+{
+ FOREACH_SCRIPT(GuildScript)->OnBankEvent(guild, eventType, tabId, playerGuid, itemOrMoney, itemStackCount, destTabId);
+}
+
+// Group
void ScriptMgr::OnGroupAddMember(Group* group, uint64 guid)
{
ASSERT(group);
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index 2847e55a687..eb20e28f0cc 100755
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -725,11 +725,18 @@ class GuildScript : public ScriptObject
bool IsDatabaseBound() const { return false; }
- virtual void OnAddMember(Guild* /*guild*/, Player* /*player*/, uint32& /*plRank*/) { }
+ virtual void OnAddMember(Guild* /*guild*/, Player* /*player*/, uint8& /*plRank*/) { }
virtual void OnRemoveMember(Guild* /*guild*/, Player* /*player*/, bool /*isDisbanding*/, bool /*isKicked*/) { }
- virtual void OnMOTDChanged(Guild* /*guild*/, std::string /*newMotd*/) { }
- virtual void OnGInfoChanged(Guild* /*guild*/, std::string /*newGInfo*/) { }
+ virtual void OnMOTDChanged(Guild* /*guild*/, const std::string& /*newMotd*/) { }
+ virtual void OnInfoChanged(Guild* /*guild*/, const std::string& /*newInfo*/) { }
+ virtual void OnCreate(Guild* /*guild*/, Player* /*leader*/, const std::string& /*name*/) { }
virtual void OnDisband(Guild* /*guild*/) { }
+ virtual void OnMemberWitdrawMoney(Guild* /*guild*/, Player* /*player*/, uint32& /*amount*/, bool /*isRepair*/) { }
+ virtual void OnMemberDepositMoney(Guild* /*guild*/, Player* /*player*/, uint32& /*amount*/) { }
+ virtual void OnItemMove(Guild* /*guild*/, Player* /*player*/, Item* /*pItem*/, bool /*isSrcBank*/, uint8 /*srcContainer*/, uint8 /*srcSlotId*/,
+ bool /*isDestBank*/, uint8 /*destContainer*/, uint8 /*destSlotId*/) { }
+ virtual void OnEvent(Guild* /*guild*/, uint8 /*eventType*/, uint32 /*playerGuid1*/, uint32 /*playerGuid2*/, uint8 /*newRank*/) { }
+ virtual void OnBankEvent(Guild* /*guild*/, uint8 /*eventType*/, uint8 /*tabId*/, uint32 /*playerGuid*/, uint32 /*itemOrMoney*/, uint16 /*itemStackCount*/, uint8 /*destTabId*/) { }
};
class GroupScript : public ScriptObject
@@ -943,11 +950,18 @@ class ScriptMgr
void OnPlayerDelete(uint64 guid);
public: /* GuildScript */
- void OnGuildAddMember(Guild *guild, Player *player, uint32& plRank);
+ void OnGuildAddMember(Guild *guild, Player *player, uint8& plRank);
void OnGuildRemoveMember(Guild *guild, Player *player, bool isDisbanding, bool isKicked);
- void OnGuildMOTDChanged(Guild *guild, std::string newMotd);
- void OnGuildInfoChanged(Guild *guild, std::string newGInfo);
+ void OnGuildMOTDChanged(Guild *guild, const std::string& newMotd);
+ void OnGuildInfoChanged(Guild *guild, const std::string& newInfo);
+ void OnGuildCreate(Guild *guild, Player* leader, const std::string& name);
void OnGuildDisband(Guild *guild);
+ void OnGuildMemberWitdrawMoney(Guild* guild, Player* player, uint32 &amount, bool isRepair);
+ void OnGuildMemberDepositMoney(Guild* guild, Player* player, uint32 &amount);
+ void OnGuildItemMove(Guild* guild, Player* player, Item* pItem, bool isSrcBank, uint8 srcContainer, uint8 srcSlotId,
+ bool isDestBank, uint8 destContainer, uint8 destSlotId);
+ void OnGuildEvent(Guild* guild, uint8 eventType, uint32 playerGuid1, uint32 playerGuid2, uint8 newRank);
+ void OnGuildBankEvent(Guild* guild, uint8 eventType, uint8 tabId, uint32 playerGuid, uint32 itemOrMoney, uint16 itemStackCount, uint8 destTabId);
public: /* GroupScript */
void OnGroupAddMember(Group* group, uint64 guid);