void LuaGossip::OnHello(Object* pObject, Player* Plr) { GET_LOCK; if(pObject->GetTypeId() == TYPEID_UNIT) { if(m_unit_gossip_binding == NULL) { RELEASE_LOCK; return; } lua_engine::BeginLuaFunctionCall(m_unit_gossip_binding->refs[GOSSIP_EVENT_ON_TALK]); push_creature(TO_CREATURE(pObject)); push_int(GOSSIP_EVENT_ON_TALK); push_player(Plr); lua_engine::ExecuteLuaFunction(3); } else if(pObject->GetTypeId() == TYPEID_ITEM) { if(m_item_gossip_binding == NULL) { RELEASE_LOCK; return; } lua_engine::BeginLuaFunctionCall(m_item_gossip_binding->refs[GOSSIP_EVENT_ON_TALK]); push_item(TO_ITEM(pObject)); push_int(GOSSIP_EVENT_ON_TALK); push_player(Plr); lua_engine::ExecuteLuaFunction(3); } else if(pObject->GetTypeId() == TYPEID_GAMEOBJECT) { if(m_go_gossip_binding == NULL) { RELEASE_LOCK; return; } lua_engine::BeginLuaFunctionCall(m_go_gossip_binding->refs[GOSSIP_EVENT_ON_TALK]); push_go(TO_GAMEOBJECT(pObject)); push_int(GOSSIP_EVENT_ON_TALK); push_player(Plr); lua_engine::ExecuteLuaFunction(3); } RELEASE_LOCK }
void LuaGameObject::AIUpdate() { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[GAMEOBJECT_EVENT_AIUPDATE]); push_go(_gameobject); lua_engine::ExecuteLuaFunction(1); RELEASE_LOCK }
void LuaInstance::OnGameObjectPushToWorld(GameObject* pGameObject) { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[INSTANCE_EVENT_ON_GO_PUSH]); push_int(m_instanceId); push_go(pGameObject); lua_engine::ExecuteLuaFunction(2); RELEASE_LOCK }
void LuaGameObject::OnDespawn() { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[GAMEOBJECT_EVENT_ON_DESPAWN]); push_go(_gameobject); lua_engine::ExecuteLuaFunction(1); RELEASE_LOCK }
void LuaInstance::OnGameObjectActivate(GameObject* pGameObject, Player* pPlayer) { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[INSTANCE_EVENT_ON_GO_ACTIVATE]); push_int(m_instanceId); push_go(pGameObject); push_unit(pPlayer); lua_engine::ExecuteLuaFunction(3); RELEASE_LOCK }
void LuaGameObject::OnActivate(Player* pPlayer) { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[GAMEOBJECT_EVENT_ON_USE]); push_go(_gameobject); push_int(GAMEOBJECT_EVENT_ON_USE); push_player(pPlayer); lua_engine::ExecuteLuaFunction(3); RELEASE_LOCK }
void LuaGameObject::OnLootTaken(Player* pLooter, ItemPrototype* pItemInfo) { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[GAMEOBJECT_EVENT_ON_LOOT_TAKEN]); push_go(_gameobject); push_int(GAMEOBJECT_EVENT_ON_LOOT_TAKEN); push_player(pLooter); push_int(pItemInfo->ItemId); lua_engine::ExecuteLuaFunction(4); RELEASE_LOCK }
void LuaGossip::OnSelectOption(Object* pObject, Player* Plr, uint32 Id, const char* EnteredCode) { GET_LOCK; if(pObject->GetTypeId() == TYPEID_UNIT) { if(m_unit_gossip_binding == NULL) { RELEASE_LOCK; return; } lua_engine::BeginLuaFunctionCall(m_unit_gossip_binding->refs[GOSSIP_EVENT_ON_SELECT_OPTION]); push_creature(TO_CREATURE(pObject)); push_int(GOSSIP_EVENT_ON_SELECT_OPTION); push_player(Plr); push_int(Id); push_str(EnteredCode); lua_engine::ExecuteLuaFunction(5); } else if(pObject->GetTypeId() == TYPEID_ITEM) { if(m_item_gossip_binding == NULL) { RELEASE_LOCK; return; } lua_engine::BeginLuaFunctionCall(m_item_gossip_binding->refs[GOSSIP_EVENT_ON_SELECT_OPTION]); push_item(TO_ITEM(pObject)); push_int(GOSSIP_EVENT_ON_SELECT_OPTION); push_player(Plr); push_int(Id); push_str(EnteredCode); lua_engine::ExecuteLuaFunction(5); } else if(pObject->GetTypeId() == TYPEID_GAMEOBJECT) { if(m_go_gossip_binding == NULL) { RELEASE_LOCK; return; } lua_engine::BeginLuaFunctionCall(m_go_gossip_binding->refs[GOSSIP_EVENT_ON_SELECT_OPTION]); push_go(TO_GAMEOBJECT(pObject)); push_int(GOSSIP_EVENT_ON_SELECT_OPTION); push_player(Plr); push_int(Id); push_str(EnteredCode); lua_engine::ExecuteLuaFunction(5); } RELEASE_LOCK }