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::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 LuaCreature::OnLootTaken(Player* pPlayer, ItemPrototype* pItemPrototype) { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[CREATURE_EVENT_ON_LOOT_TAKEN]); push_creature(_unit); push_int(CREATURE_EVENT_ON_LOOT_TAKEN); push_player(pPlayer); push_int(pItemPrototype->ItemId); lua_engine::ExecuteLuaFunction(4); 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 }
void LuaCreature::OnEmote(Player* pPlayer, EmoteType Emote) { NULL_BINDING_CHECK lua_engine::BeginLuaFunctionCall(m_binding->refs[CREATURE_EVENT_ON_EMOTE]); push_creature(_unit); push_int(CREATURE_EVENT_ON_EMOTE); push_player(pPlayer); push_int((int)Emote); lua_engine::ExecuteLuaFunction(4); RELEASE_LOCK }
int Game_Manager::recycle_player(int gate_cid, int player_cid) { Server_Manager::recycle_player(gate_cid, player_cid); int cid = GET_CID(gate_cid, player_cid); Game_Player *player = dynamic_cast<Game_Player*>(find_cid_player(cid)); if (!player) { return -1; } player_cid_map_.erase(cid); player_role_id_map_.erase(player->role_id()); player_account_map_.erase(player->account()); player->reset(); push_player(player); return 0; }
bool parse_opt_n(t_parse_argv *argv) { t_sub value; int32_t player_id; if (!ft_argv_arg(&argv->args, &value) || value.length == 0) PARSE_ARGV_ERR("-n: Require a value"); else if (ft_subto_int(value, &player_id) != value.length) PARSE_ARGV_ERR("-n: Invalid value: %ts", value); else if (next_player_id(&argv->vm_loader, player_id) != player_id) PARSE_ARGV_ERR("-n: Player id already used: %d", player_id); else if (!ft_argv_arg(&argv->args, &value)) PARSE_ARGV_ERR("Missing file name for player %d", player_id); else return (push_player(argv, player_id, value)); return (false); }