Ir para conteúdo
  • Cadastre-se

[AJUDA] Summon que explode


Posts Recomendados

Estou querendo fazer um summon que explode quando morre. Só estou conseguindo fazer monstro explodir e summon não aparece nada. Ja mudei para if isSummon(cid) mas nada.

 

local explosion = createConditionObject(CONDITION_FIRE)
setConditionParam(explosion, CONDITION_PARAM_DELAYED, 1)
local damageTable = {
    {4, -3}, -- Quantidade / dano
    {9, -2},
    {20, -1}
}
for i = 1, #damageTable do
    local t = damageTable[i]
addDamageCondition(explosion, t[1], 1000, t[2]) -- tempo
end


local arr = {
{1, 1, 1},
{1, 3, 1},
{1, 1, 1}
}


local area = createCombatArea(arr)

function onDeath(cid)
if isMonster(cid) then
doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 5)
doAreaCombatCondition(cid, getThingPos(cid), area, explosion, 255) 
doSendMagicEffect(getThingPos(cid), 2)
end
return true
end

 

Link para o post
Compartilhar em outros sites
  • Sub-Admin
local explosion = createConditionObject(CONDITION_FIRE)
setConditionParam(explosion, CONDITION_PARAM_DELAYED, 1)

local damageTable = {
    {4, -3}, -- Quantidade / dano
    {9, -2},
    {20, -1}
}

for i = 1, #damageTable do
    local t = damageTable[i]
    addDamageCondition(explosion, t[1], 1000, t[2]) -- tempo
end

local arr = {
    {1, 1, 1},
    {1, 3, 1},
    {1, 1, 1}
}

local area = createCombatArea(arr)

function onDeath(cid, corpse, killer)
    if isMonster(cid) then
        doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 5)
        doAreaCombatCondition(cid, getThingPos(cid), area, explosion, 255)
        doSendMagicEffect(getThingPos(cid), CONST_ME_EXPLOSIONAREA) -- Alterado para efeito de explosão
    end
    return true
end

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros sites
2 horas atrás, L3K0T disse:

local explosion = createConditionObject(CONDITION_FIRE)
setConditionParam(explosion, CONDITION_PARAM_DELAYED, 1)

local damageTable = {
    {4, -3}, -- Quantidade / dano
    {9, -2},
    {20, -1}
}

for i = 1, #damageTable do
    local t = damageTable[i]
    addDamageCondition(explosion, t[1], 1000, t[2]) -- tempo
end

local arr = {
    {1, 1, 1},
    {1, 3, 1},
    {1, 1, 1}
}

local area = createCombatArea(arr)

function onDeath(cid, corpse, killer)
    if isMonster(cid) then
        doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 5)
        doAreaCombatCondition(cid, getThingPos(cid), area, explosion, 255)
        doSendMagicEffect(getThingPos(cid), CONST_ME_EXPLOSIONAREA) -- Alterado para efeito de explosão
    end
    return true
end

 

Obrigado pela resposta. Mas ainda nada. O monstro barrel aparece efeito e explode, mas quando ele é summon não ta explodindo. Imagino que teria que trocar if isMonster para algo que identifique summon

Link para o post
Compartilhar em outros sites
  • Sub-Admin
local explosion = createConditionObject(CONDITION_FIRE)
setConditionParam(explosion, CONDITION_PARAM_DELAYED, 1)

local damageTable = {
    {4, -3}, -- Quantidade / dano
    {9, -2},
    {20, -1}
}

for i = 1, #damageTable do
    local t = damageTable[i]
    addDamageCondition(explosion, t[1], 1000, t[2]) -- tempo
end

local arr = {
    {1, 1, 1},
    {1, 3, 1},
    {1, 1, 1}
}

local area = createCombatArea(arr)

function onDeath(cid, corpse, killer)
    if isCreature(cid) then
        if isSummon(cid) or isMonster(cid) then
            doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 5)
            doAreaCombatCondition(cid, getThingPos(cid), area, explosion, 255)
            doSendMagicEffect(getThingPos(cid), CONST_ME_EXPLOSIONAREA)
        end
    end
    return true
end

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros sites
17 horas atrás, L3K0T disse:

local explosion = createConditionObject(CONDITION_FIRE)
setConditionParam(explosion, CONDITION_PARAM_DELAYED, 1)

local damageTable = {
    {4, -3}, -- Quantidade / dano
    {9, -2},
    {20, -1}
}

for i = 1, #damageTable do
    local t = damageTable[i]
    addDamageCondition(explosion, t[1], 1000, t[2]) -- tempo
end

local arr = {
    {1, 1, 1},
    {1, 3, 1},
    {1, 1, 1}
}

local area = createCombatArea(arr)

function onDeath(cid, corpse, killer)
    if isCreature(cid) then
        if isSummon(cid) or isMonster(cid) then
            doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 5)
            doAreaCombatCondition(cid, getThingPos(cid), area, explosion, 255)
            doSendMagicEffect(getThingPos(cid), CONST_ME_EXPLOSIONAREA)
        end
    end
    return true
end

 

 




Puts pior que não adiantou. Quando summono ele morre e não aparece nada, e como monstro normal ele chega a explodir, mas não causa dano. Não consigo imaginar o que possa ser.

Link para o post
Compartilhar em outros sites
  • Sub-Admin
local damageTable = {
    {4, -3}, -- Quantidade / dano
    {9, -2},
    {20, -1}
}

local function createExplosion()
    local explosion = createConditionObject(CONDITION_FIRE)
    setConditionParam(explosion, CONDITION_PARAM_DELAYED, 1)

    for i = 1, #damageTable do
        local t = damageTable[i]
        addDamageCondition(explosion, t[1], 1000, t[2]) -- tempo
    end

    return explosion
end

local function explodeCreature(creature)
    if isCreature(creature) then
        local explosion = createExplosion()
        local area = createCombatArea({{1, 1, 1}})
        doAreaCombatHealth(creature, 1, getThingPos(creature), area, -1, -30, 5)
        doAreaCombatCondition(creature, getThingPos(creature), area, explosion, 255)
        doSendMagicEffect(getThingPos(creature), CONST_ME_EXPLOSIONAREA)
    end
end

function onDeath(creature, corpse, killer)
    if isSummon(creature) or isMonster(creature) then
        addEvent(explodeCreature, 1, creature)
    end
    return true
end

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros sites

eu tenho esse:

 .. Só que tem um problema, o summon explode antes de chegar no alvo :(

 

 

--Created with SuperVego--
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 214)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 39)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -88.5, 5, -88.5, 5)
 
arr = {
{1, 1, 1},
{1, 3, 1},
{1, 1, 1},
}
 
local area = createCombatArea(arr)
setCombatArea(combat, area)
 
function onCastSpell(cid, var)
    doCreatureAddHealth(cid, -(getCreatureMaxHealth(cid) / 100) * 100)
    return doCombat(cid, combat, var)
end

 

Link para o post
Compartilhar em outros sites

Valeu pessoal. Mas ainda não ta funcionando, o summon morre e não acontece nadinha. Talvez eu crie uma magia que crie um objeto, e depois de alguns segundos exploda. 

Link para o post
Compartilhar em outros sites
11 horas atrás, Anderson Sacani disse:

Nunca vai funcionar. Observem: A função se chama onDeath, e como sabemos, os summons não morrem, mas desaparecem, ou seja, são removidos.
Para corrigir isto, somente em C++, ou então pensar em outra solução.

Caramba mano! Essa eu não sabia. Vou pensar em algo aqui. Muito obrigado por esclarecer.

É impossível um monstro dar dano em outro? Esse meu summon seria imovel e não da dano. A unica coisa é que quando ele morre ele explodiria. Poderia fazer o player criar um monstro normal. Ia dar dano no player junto, mas não sei se é possivel dar dano em monstros dessa forma. 

Link para o post
Compartilhar em outros sites

se não me engano tem uma função que você registra o creature event no summon pro onDeath funcionar... como você tá invocando o summon? por script ou magia?

 

 

facebook.com/PokeJota

Link para o post
Compartilhar em outros sites
16 minutos atrás, eskylo disse:

se não me engano tem uma função que você registra o creature event no summon pro onDeath funcionar... como você tá invocando o summon? por script ou magia?

É por magia. Poisé to tentando pensar algo que faça isso!

Link para o post
Compartilhar em outros sites
local damageTable = {
    {4, -3},
    {9, -2},
    {20, -1}
}

local function createExplosion()
    local explosion = createConditionObject(CONDITION_FIRE)
    setConditionParam(explosion, CONDITION_PARAM_DELAYED, 1)

    for i = 1, #damageTable do
        local t = damageTable[i]
        addDamageCondition(explosion, t[1], 1000, t[2]) -- tempo
    end

    return explosion
end

local function explodeCreature(creature)
    if isCreature(creature) then
        local explosion = createExplosion()
        local area = createCombatArea({{1, 1, 1}})
        doAreaCombatHealth(creature, 1, getThingPos(creature), area, -1, -30, 5)
        doAreaCombatCondition(creature, getThingPos(creature), area, explosion, 255)
        doSendMagicEffect(getThingPos(creature), CONST_ME_EXPLOSIONAREA)
    end
end

function onDeath(creature, corpse, killer)
    if isSummon(creature) or isMonster(creature) then
        addEvent(explodeCreature, 1, creature)
    end
    return true
end

 

Link para o post
Compartilhar em outros sites

Quer tirar a prova real se irá funcionar ou não?

Ta aqui:

 

function onDeath(creature, corpse, killer)
    local creatureName = getCreatureName(creature)

    print(creatureName .. " died.")
    
    if isSummon(creature) then
        print(creatureName .. " is a summon.")
    else
        print(creatureName .. " is not a summon.")
    end

    return true
end

 

Sempre faça depuração de um código quando há dúvidas. Registra esse script no summon e vai perceber que nenhum print aparecerá, porque ele não morre.

Editado por Anderson Sacani (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Poise... Pessoal estou pensando em alterar então. Fazer uma magia que cria um objeto e explode depois de 3 segundos. Vai ter que ser assim até achar outra solução. 

Link para o post
Compartilhar em outros sites

cara se o summon fosse sumonado atraves de uma talkaction, vc poderia usar 

 

registerCreatureEvent(summon, 'evento')

daí o onDeath funcionaria

 

 

facebook.com/PokeJota

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