Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''onsetopponent''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Encontrar resultados em...

Encontrar resultados que contenham...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Sou

Encontrado 1 registro

  1. Ola galera xtibanaana. O creatureevent onsetopponent acontence quando uma criatura seta outra como opponent para ir prosseguir como target. Vá em creatureevent.cpp e procure: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; Adicione embaixo: else if(tmpStr == "opponent") m_type = CREATURE_EVENT_OPPONENT; Procure: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; Coloque embaixo: case CREATURE_EVENT_OPPONENT: return "onSetOpponent"; Continuado procure: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; Coloque abaixo: case CREATURE_EVENT_OPPONENT: return "cid, monster"; Adicione a função: uint32_t CreatureEvent::executeSetOpponent(Creature* creature, Creature* target) { //onSetOpponent(cid, monster) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; 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", creature->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executePrepareDeath] Call stack overflow." << std::endl; return 0; } } Vá em creatureevent.h e procure: CREATURE_EVENT_PREPAREDEATH, Adicione embaixo: CREATURE_EVENT_OPPONENT Procure: uint32_t executeAttack(Creature* creature, Creature* target); Coloque embaixo: uint32_t executeSetOpponent(Creature* creature, Creature* target); Vá em monster.cpp e procure a função: bool Monster::isOpponent(const Creature* creature) Substitua por essa: bool Monster::isOpponent(const Creature* creature) { bool opponent = true; CreatureEventList attackEvents = getCreatureEvents(CREATURE_EVENT_OPPONENT); Creature* target = g_game.getCreatureByID(creature->getID()); for(CreatureEventList::iterator it = attackEvents.begin(); it != attackEvents.end(); ++it) { if(!(*it)->executeSetOpponent(target, this)) opponent = false; } if (!opponent) { return false; } return (isSummon() && getMaster()->getPlayer() && creature != getMaster()) || ((creature->getPlayer() && !creature->getPlayer()->hasFlag(PlayerFlag_IgnoredByMonsters)) || (creature->getMaster() && creature->getMaster()->getPlayer())); } Exemplo: function onSetOpponent(cid, target) local blockedpass = {"Fire Devil", "Demon", "Lord Dragon"} if table.find(blockedpass, getCreatureName(target)) then return true end return true end
×
×
  • Criar Novo...