diff options
-rw-r--r-- | src/bindings/interface/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/bindings/interface/ScriptMgr.cpp | 112 | ||||
-rw-r--r-- | src/bindings/interface/ScriptMgr.h | 14 |
3 files changed, 127 insertions, 0 deletions
diff --git a/src/bindings/interface/CMakeLists.txt b/src/bindings/interface/CMakeLists.txt index 4cffc6446fd..47159df79cc 100644 --- a/src/bindings/interface/CMakeLists.txt +++ b/src/bindings/interface/CMakeLists.txt @@ -9,6 +9,7 @@ SET(trinityinterface_LIB_SRCS Scripts/sc_default.cpp Scripts/sc_defines.cpp Scripts/sc_defines.h + Scripts/on_events.cpp ) add_library(trinityinterface SHARED ${trinityinterface_LIB_SRCS}) diff --git a/src/bindings/interface/ScriptMgr.cpp b/src/bindings/interface/ScriptMgr.cpp index 154d612678d..52e0b912a1e 100644 --- a/src/bindings/interface/ScriptMgr.cpp +++ b/src/bindings/interface/ScriptMgr.cpp @@ -84,6 +84,118 @@ void Script::RegisterSelf() //*** Functions to be Exported *** TRINITY_DLL_EXPORT +void OnLogin(Player *pPlayer) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnLogin) return; + tmpscript->pOnLogin(pPlayer); +} + +TRINITY_DLL_EXPORT +void OnLogout(Player *pPlayer) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnLogout) return; + tmpscript->pOnLogout(pPlayer); +} + +TRINITY_DLL_EXPORT +void OnPVPKill(Player *killer, Player *killed) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnPVPKill) return; + tmpscript->pOnPVPKill(killer, killed); +} + +TRINITY_DLL_EXPORT +bool OnSpellCast (Unit *pUnitTarget, Item *pItemTarget, GameObject *pGoTarget, uint32 i, SpellEntry const *spell) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnSpellCast) return true; + return tmpscript->pOnSpellCast(pUnitTarget,pItemTarget,pGoTarget,i,spell); +} + +TRINITY_DLL_EXPORT +uint32 OnGetXP(Player *pPlayer, uint32 amount) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnGetXP) return amount; + return tmpscript->pOnGetXP(pPlayer,amount); +} + +TRINITY_DLL_EXPORT +uint32 OnGetMoney(Player *pPlayer, int32 amount) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnGetMoney) return amount; + return tmpscript->pOnGetMoney(pPlayer,amount); +} + +TRINITY_DLL_EXPORT +bool OnPlayerChat(Player *pPlayer, const char *text) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnPlayerChat) return true; + return tmpscript->pOnPlayerChat(pPlayer,text); +} + +TRINITY_DLL_EXPORT +void OnServerStartup() +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnServerStartup) return; + tmpscript->pOnServerStartup(); +} + +TRINITY_DLL_EXPORT +void OnServerShutdown() +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnServerShutdown) return; + tmpscript->pOnServerShutdown(); +} + +TRINITY_DLL_EXPORT +void OnAreaChange(Player *pPlayer, AreaTableEntry const *pArea) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnAreaChange) return; + tmpscript->pOnAreaChange(pPlayer, pArea); +} + +TRINITY_DLL_EXPORT +bool OnItemClick (Player *pPlayer, Item *pItem) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnItemClick) return true; + return tmpscript->pOnItemClick(pPlayer,pItem); +} + +TRINITY_DLL_EXPORT +bool OnItemOpen (Player *pPlayer, Item *pItem) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnItemOpen) return true; + return tmpscript->pOnItemOpen(pPlayer,pItem); +} + +TRINITY_DLL_EXPORT +bool OnGoClick (Player *pPlayer, GameObject *pGameObject) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnGoClick) return true; + return tmpscript->pOnGoClick(pPlayer,pGameObject); +} + +TRINITY_DLL_EXPORT +void OnCreatureKill (Player *pPlayer, Creature *pCreature) +{ + Script *tmpscript = m_scripts[GetScriptId("scripted_on_events")]; + if (!tmpscript || !tmpscript->pOnCreatureKill) return; + tmpscript->pOnCreatureKill(pPlayer,pCreature); +} + +TRINITY_DLL_EXPORT char const* ScriptsVersion() { return "Default Trinity scripting library"; diff --git a/src/bindings/interface/ScriptMgr.h b/src/bindings/interface/ScriptMgr.h index 9b3c59d17ca..4bcaaa7ad5a 100644 --- a/src/bindings/interface/ScriptMgr.h +++ b/src/bindings/interface/ScriptMgr.h @@ -49,6 +49,20 @@ struct Script std::string Name; //Methods to be scripted + void (*pOnLogin )(Player*); + void (*pOnLogout )(Player*); + void (*pOnPVPKill )(Player*, Player*); + bool (*pOnSpellCast )(Unit*, Item*, GameObject*, uint32, SpellEntry const*); + uint32 (*pOnGetXP )(Player*, uint32); + int32 (*pOnGetMoney )(Player*, int32); + bool (*pOnPlayerChat )(Player*, const char*); + void (*pOnServerStartup )(); + void (*pOnServerShutdown )(); + void (*pOnAreaChange )(Player*, AreaTableEntry const*); + bool (*pOnItemClick )(Player*, Item*); + bool (*pOnItemOpen )(Player*, Item*); + bool (*pOnGoClick )(Player*, GameObject*); + void (*pOnCreatureKill )(Player*, Creature*); bool (*pGossipHello )(Player*, Creature*); bool (*pQuestAccept )(Player*, Creature*, Quest const* ); bool (*pGossipSelect )(Player*, Creature*, uint32 , uint32 ); |