Pesquisar na Comunidade
Mostrando resultados para as tags ''onopencontainer''.
Encontrado 1 registro
-
Eae galera xtibiaanna! Desenvolvi o evento OpenContainer para sair da configs do actions afinal e necessario especificar o id do item e isto limita muito, Vá em creatureevents.cpp e procure else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; e coloque isto embaixo : else if(tmpStr == "opencontainer") m_type = CREATURE_EVENT_OPENCONTAINER; Continuando procure: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; E coloque seguidamente: case CREATURE_EVENT_OPENCONTAINER: return "onOpenContainer"; Continuado creatureevents.cpp procure: case CREATURE_EVENT_KILL: return "cid, target, lastHit"; E coloque embaixo: case CREATURE_EVENT_OPENCONTAINER: return "cid, item"; EMBAIXO DA FUNÇÃO uint32_t CreatureEvent::executeOutfit(Creature* creature, const Outfit_t& old, const Outfit_t& current) Coloque: uint32_t CreatureEvent::executeOpenContainer(Player* player, Container* container) { //onOpenContainer(cid, container) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; env->streamThing(scriptstream, "item", container, env->addThing(container)); scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); LuaScriptInterface::pushThing(L, container, env->addThing(container)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeThink] Call stack overflow." << std::endl; return 0; } } Agora em creatureevents.h procure: uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Embaixo coloque: uint32_t executeOpenContainer(Player* player, Container* container); Procure em creatureevents.h: CREATURE_EVENT_DEATH, Coloque embaixo: CREATURE_EVENT_OPENCONTAINER, Vá em action.cpp e procure: if(Container* container = item->getContainer()) { if(container->getCorpseOwner() && !player->canOpenCorpse(container->getCorpseOwner()) && g_config.getBool(ConfigManager::CHECK_CORPSE_OWNER)) return RET_YOUARENOTTHEOWNER; Coloque emabaixo: bool deny = false; CreatureEventList talkEvents = player->getCreatureEvents(CREATURE_EVENT_OPENCONTAINER); for(CreatureEventList::iterator it = talkEvents.begin(); it != talkEvents.end(); ++it) { if(!(*it)->executeOpenContainer(player, container)) { deny = true; } }
- 7 respostas
-
- onopencontainer
- opencontainer
- (e 3 mais)