RO
programação

Monstro não acertar hit em outro monstro (selvagem)

Por roriscrave, 21 de jul. de 2015 em Resolvidos

13
1.4k
21 de julho de 2015 às 14:38

Por exemplo: se um dragon usar magia de area, ele vai matar um scarab, caso o scarab esteja proximo.

Eu quero modificar nas sources para que quando o dragon usar magia de area, ele nao acerte o scarab, nao acerte NENHUM outro monstro, se for selvagem. Só deve acertar summons de jogadores.

 

Vlw,

26 de julho de 2015 às 19:25

up


ngm?

nociamN
26 de julho de 2015 às 19:31

se tem arquivo exp.lua ?

AlayenA
26 de julho de 2015 às 20:01

Sem saber que servidor você usa fica muito, muito difícil adivinhar uma resposta.

27 de julho de 2015 às 20:59

é tibia normal, so quero colocar para que um monstro selvagem NUNCA acerte outro monstro selvagem.

por exemplo: dragon ao usar magia de area nao vai acertar um SCORPION, e etc

nociamN
27 de julho de 2015 às 21:44

Então cara se tiver um arquivo exp.lua coloca uma checagem nos otserve de pokemon tem essa tag no exp

 

if ehMonstro(cid) and ehMonstro(attacker) and not isSummon(cid) and not isSummon(attacker) then
return false
end

 

 

27 de julho de 2015 às 22:41

nao tem esse arquivo nao

MUNlZM
27 de julho de 2015 às 23:50

Cria então ué

01 de agosto de 2015 às 23:49

não funcionou

zipter98Z
02 de agosto de 2015 às 00:20


function onStatsChange(cid, attacker, type, combat, value)

if isMonster(attacker) and isMonster(cid) then

return false

end

return true

end

Entretanto, você terá que registrar o evento no arquivo .XML de todos os monstros.

Ou, caso não queira realizar a cansativa tarefa acima, você pode tentar:

Nas sources do servidor, monster.cpp:

Abaixo de:

if(isSummon())

isMasterInRange = canSee(getMaster()->getPosition());

coloque:

std::string event = "NOME_DO_EVENT0";             //Nome do evento configurado em creaturescripts.xml.

creature->registerCreatureEvent(event);

Editado Agosto 2 por zipter98

03 de agosto de 2015 às 10:55
function onStatsChange(cid, attacker, type, combat, value)
    if isMonster(attacker) and isMonster(cid) then
        return false
    end
    return true
end
Entretanto, você terá que registrar o evento no arquivo .XML de todos os monstros.
Ou, caso não queira realizar a cansativa tarefa acima, você pode tentar:
Nas sources do servidor, monster.cpp:
Abaixo de:
if(isSummon())
    isMasterInRange = canSee(getMaster()->getPosition());
coloque:
std::string event = "NOME_DO_EVENT0";             //Nome do evento configurado em creaturescripts.xml.
creature->registerCreatureEvent(event);

 

 

tentei aqui mas a source não compila quando adiciona isso ai abaixo do que vc mandou

zipter98Z
03 de agosto de 2015 às 14:13

Nesse caso, teste o código configurando o evento manualmente.

1 mês depois...
LumusL
21 de setembro de 2015 às 16:42

Tópico Movido
Este tópico foi movido de "OTServSuporte OTServSuporte Programação"
para "OTServSuporte OTServSuporte ProgramaçãoPedidos e dúvidas resolvidos - Programação".