Ir para conteúdo
  • Cadastre-se

(Resolvido)Summon


Ir para solução Resolvido por Frenesy,

Posts Recomendados

Queria um Script que não me deixe atacar meu Summon - igual aos do PokeTibia.

No entanto, eu queria também que minhas magias de área não atingisse ele.

 

No Aguardo!

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites

Queria um Script que não me deixe atacar meu Summon

Posso te ajudar com essa parte.

ownsummon.lua (data/creaturescripts/scripts):

function onAttack(cid, target)
    if isSummon(target) and getCreatureMaster(target) == cid then
        return doPlayerSendCancel(cid, 'You cannot attack your own summon.') and false
    end
    
    return true
end

Tag - creaturescripts.xml (data/creaturescripts):

<event type="attack" name="OwnSummon" script="ownsummon.lua"/>

 

Registre o creature event em login.lua (data/creaturescripts/scripts):

registerCreatureEvent(cid, "OwnSummon")

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Não testei, mas usando "onStatsChange" vai servir para os 2. Nem magia nem ataque funciona nele.

 

@OBS: Voce precisa registrar esse evento no seu "summon", em vez de onLogin.

registerCreatureEvent(cid, "OwnSummon")

 

function onStatsChange(cid, attacker, type, combat, value)
    if type == STATSCHANGE_HEALTHLOSS then
        if isSummon(cid) and getCreatureMaster(cid) == attacker then
            return false
        end
    end
    return true
end

Tony Araújo  ;D 

 

Link para o post
Compartilhar em outros sites

@Orochi Elf
Bem pensado. Nesse caso, o summon não teria sua saúde alterada, porém o player ainda iria conseguir tê-lo como target.
Legal, bom para treinar à distância ;]

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Obrigado a todos.

Irei testar assim que chegar em casa.

 

#Edit[1]

@Orochi Elf

Desculpe, mas qual seria mesmo a tag para se adicionar seu script no creaturescript?

 

@Suicide

O Seu ficou ótimo. No entanto, quando uso magia de área acaba matando o Summon. E isso não pode ocorrer.

 

#Edit[2]

@Orochi Elf

O Seu Script está fechando meu servidor. Assim que eu ataco, o OT para de funcionar.


Pessoal, qual é a tag para se usar esse script?

function onStatsChange(cid, attacker, type, combat, value)
    if type == STATSCHANGE_HEALTHLOSS then
        if isSummon(cid) and getCreatureMaster(cid) == attacker then
            return false
        end
    end
    return true
end

Não estou conseguindo instalar.

Editado por Frenesy (veja o histórico de edições)

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites

@Suicide O Seu ficou ótimo. No entanto, quando uso magia de área acaba matando o Summon. E isso não pode ocorrer.

Certo. Fica mais simples com o creature event combat.

ownsummon.lua (data/creaturescripts/scripts):

function onCombat(cid, target)
    if isSummon(target) and getCreatureMaster(target) == cid then return false end
    return true
end

Tag - creaturescripts.xml (data/creaturescripts):

<event type="combat" name="OwnSummon" script="ownsummon.lua"/>

Registre o creature event em login.lua (data/creaturescripts/scripts):

registerCreatureEvent(cid, "OwnSummon")

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites
  • Solução

Meu Brother @Suicide, eu consegui fazer um aqui. Usei como base o seu Script e o do @Orochi Elf. juntei os dois e deu no que deu.  ;D

Pra quem quiser, vou disponibilizar logo abaixo. Valeu realmente pela ajuda.

REP+ :accept: pra quem deu atenção ao meu problema.

function onTarget(cid, target)
if(attacker and isMonster(target) and isSummon(attacker) and (type == STATSCHANGE_HEALTHLOSS)) then
return false
end
return true
end


function onStatsChange(cid, attacker, type, combat, value)
if(attacker and isMonster(target) and isSummon(attacker) and (type == STATSCHANGE_HEALTHLOSS)) then
if combat ~= COMBAT_HEALING then
return false
end 
end
return true
end


function onCast(cid, target)
if(attacker and isMonster(target) and isSummon(attacker) and (type == STATSCHANGE_HEALTHLOSS)) then
if combat ~= COMBAT_HEALING then
return false
end 
end
return true
end

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites

@Frenesy
Sem problemas.
Se preferir usar só o do callback onCombat que postei, não terá necessidade de outros creature events (dá pra ter o summon como target, mas não é possível atacá-lo e ele não recebe quaisquer danos). Abraços.

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo