JO

[Resolvido] [PEDIDO] PASSIVE E ATTACK

Por joshua8822, 30 de set. de 2015 em Resolvidos

pachirisu
passive
resolvido
14
3k
joshua8822J
30 de setembro de 2015 às 13:00

Oi gente, hoje venho pedir que uma pessoa pode fazer e um ataque. (Se for muito difícil, eu poderia pagar)

1° Ion Deluge: Este ataque produz um tamanho de quadra de ataque; Confusion ou Psychic e deixado em um estado para atacar Pokemon. Que o Estado faz é que converte todos os ataques em tipo elétrico em x tempo.

2° Volt Absorb: Isso funciona passivo quando recebem um ataque elétrico e recupera vida depende da força do ataque.

Obrigado, espero sua resposta.
Eles podem responder por mensagem privada ou aqui.

 

Editado Setembro 30 por joshua8822

30 de setembro de 2015 às 13:20

o Ion Deluge ele só causa dano e deixa com status negativo correto?

joshua8822J
30 de setembro de 2015 às 13:21

Deixa em status. Nao faze dano

zipter98Z
30 de setembro de 2015 às 19:56

Base usada?

Diga-me se entendi corretamente a primeira spell: o pokémon causará um dano em área que aplicará um debuff onde todos os afetados terão os golpes convertidos para o tipo elétrico. É isso mesmo?

Sobre a passiva, o dano elétrico será anulado? A quantia curada é em porcentagem ou uma fórmula mesmo?

joshua8822J
01 de outubro de 2015 às 15:54

Base usada?

Diga-me se entendi corretamente a primeira spell: o pokémon causará um dano em área que aplicará um debuff onde todos os afetados terão os golpes convertidos para o tipo elétrico. É isso mesmo?

Sobre a passiva, o dano elétrico será anulado? A quantia curada é em porcentagem ou uma fórmula mesmo?

Base = PDA

 

Sim aplicara debuff, e sera convertidos para tipo elétrico. Sim.

Sim, o dano elétrico será anulado e um 5 - 15% heal.

 

 

@UP

Editado Outubro 1 por joshua8822

zipter98Z
01 de outubro de 2015 às 22:19
Melhor resposta

pokemon moves.lua (data/lib):

 

 

elseif spell == "Ion Deluge" then
    local config = {
        spell_area = ionDelugeArea,         --Área da spell (dano AOE + debuff).
        effect = xxx,                       --Efeito.
        debuff_time = xxx                   --Duração do debuff (em segundos).
    }
    
    local positions = getPosfromArea(cid, config.spell_area)
    if #positions < 1 then return true end
    
    local function doSendDebuffEffect(cid, times)
        if not isCreature(cid) or times <= 0 then return true end
        
        doSendMagicEffect(getThingPos(cid), config.effect)
        addEvent(doSendDebuffEffect, 1000, cid, times - 1)
    end
    
    for i = 1, #positions do
        local pid = getTopCreature(positions[i]).uid
        
        if isCreature(pid) and canAttackOther(cid, pid) == "Can" then
            setPlayerStorageValue(pid, 2919, os.time() + config.debuff_time)
            doSendDebuffEffect(pid, config.debuff_time)
        end
    end
    doDanoWithProtect(cid, ELECTRICDAMAGE, getThingPos(cid), config.spell_area, min, max, config.effect)

 

 

 

areas.lua:

ionDelugeArea = {
    {0, 0, 1, 1, 1, 0, 0},
    {0, 1, 1, 1, 1, 1, 0},
    {1, 1, 1, 1, 1, 1, 1},
    {1, 1, 1, 2, 1, 1, 1},
    {1, 1, 1, 1, 1, 1, 1},
    {0, 1, 1, 1, 1, 1, 0},
    {0, 0, 1, 1, 1, 0, 0}
}
exp2.0.lua (data/creaturescripts/scripts):
Abaixo de:
local damageCombat = combat
Coloque:
if getPlayerStorageValue(attacker, 2919) > os.time() then
    damageCombat = ELECTRICDAMAGE
end
No mesmo arquivo, abaixo de:
if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then
    valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk")                           
elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then
    valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2))
end
Coloque:

local Volt_Absorb = {
    passive_owners = {"Jolteon", "Shiny Jolteon", "Lanturn"},    --Pokémons com a passiva Volt Absorb.
    heal = {
        min_percent = xxx,                                        --Porcentagem mínima do dano curada.
        max_percent = xxx,                                        --Porcentagem máxima do dano curada.
    }
}
 
if isInArray(Volt_Absorb.passive_owners, getCreatureName(cid)) and damageCombat == ELECTRICDAMAGE then
    local amount = math.floor(valor * math.random(Volt_Absorb.heal.min_percent, Volt_Absorb.heal.max_percent) / 100)
    valor = 0
    
    doSendAnimatedText(getThingPos(cid), "+"..amount, 65)
    doCreatureAddHealth(cid, amount)
end

Editado Outubro 3 por zipter98

joshua8822J
02 de outubro de 2015 às 16:51

pokemon moves.lua (data/lib):

 

 

elseif spell == "Ion Deluge" then
    local config = {
        spell_area = selfArea2,             --Área da spell (dano AOE + debuff).
        effect = xxx,                       --Efeito.
        debuff_time = xxx                   --Duração do debuff (em segundos).
    }
    
    local positions = getPosfromArea(config.spell_area)
    if #positions < 1 then return true end
    
    local function doSendDebuffEffect(cid, times)
        if not isCreature(cid) or times <= 0 then return true end
        
        doSendMagicEffect(getThingPos(cid), config.effect)
        addEvent(doSendDebuffEffect, 1000, cid, times - 1)
    end
    
    for i = 1, #positions do
        local pid = getTopCreature(positions[i]).uid
        
        if isCreature(pid) and canAttackOther(cid, pid) == "Can" then
            setPlayerStorageValue(pid, 2919, os.time() + config.debuff_time)
            doSendDebuffEffect(pid, config.debuff_time)
        end
    end
    doDanoWithProtect(cid, ELECTRICDAMAGE, getThingPos(cid), config.spell_area, min, max, config.effect)

 

 

 

exp2.0.lua (data/creaturescripts/scripts):
Abaixo de:
local damageCombat = combat
Coloque:
if getPlayerStorageValue(attacker, 2919) > os.time() then
    damageCombat = ELECTRICDAMAGE
end
No mesmo arquivo, abaixo de:
if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then
    valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk")                           
elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then
    valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2))
end
Coloque:

local Volt_Absorb = {
    passive_owners = {"Jolteon", "Shiny Jolteon", "Lanturn"},    --Pokémons com a passiva Volt Absorb.
    heal = {
        min_percent = xxx,                                        --Porcentagem mínima do dano curada.
        max_percent = xxx,                                        --Porcentagem máxima do dano curada.
    }
}
 
if isInArray(Volt_Absorb.passive_owners, getCreatureName(cid)) and damageCombat == ELECTRICDAMAGE then
    local amount = math.floor(valor * math.random(Volt_Absorb.min_percent, Volt_Absorb.max_percent) / 100)
    valor = 0
    
    doSendAnimatedText(getThingPos(cid), "+"..amount, 65)
    doCreatureAddHealth(cid, amount)
end

 

 

Obrigado :D

 

 

MudrockM
02 de outubro de 2015 às 17:13

Tópico movido para dúvidas / pedidos resolvidos.

02 de outubro de 2015 às 17:39

zipter,

Ion Deluge:

[02/10/2015 17:39:28] [Error - TalkAction Interface] 
[02/10/2015 17:39:28] data/talkactions/scripts/move1.lua:onSay
[02/10/2015 17:39:28] Description: 
[02/10/2015 17:39:28] data/lib/032-position.lua:158: bad argument #1 to 'getn' (table expected, got nil)
[02/10/2015 17:39:28] stack traceback:
[02/10/2015 17:39:28] 	[C]: in function 'getn'
[02/10/2015 17:39:28] 	data/lib/032-position.lua:158: in function 'getPosfromArea'
[02/10/2015 17:39:28] 	data/lib/pokemon moves.lua:3081: in function 'docastspell'
[02/10/2015 17:39:28] 	data/talkactions/scripts/move1.lua:293: in function <data/talkactions/scripts/move1.lua:20> 

Volt Absorb:

[02/10/2015 17:33:45] [Error - CreatureScript Interface] 
[02/10/2015 17:33:45] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
[02/10/2015 17:33:45] Description: 
[02/10/2015 17:33:45] data/creaturescripts/scripts/exp2.0.lua:519: bad argument #1 to 'random' (number expected, got nil)
[02/10/2015 17:33:45] stack traceback:
[02/10/2015 17:33:45] 	[C]: in function 'random'
[02/10/2015 17:33:45] 	data/creaturescripts/scripts/exp2.0.lua:519: in function <data/creaturescripts/scripts/exp2.0.lua:65>

[02/10/2015 17:33:48] [Error - CreatureScript Interface] 
[02/10/2015 17:33:48] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
[02/10/2015 17:33:48] Description: 
[02/10/2015 17:33:48] data/creaturescripts/scripts/exp2.0.lua:519: bad argument #1 to 'random' (number expected, got nil)
[02/10/2015 17:33:48] stack traceback:
[02/10/2015 17:33:48] 	[C]: in function 'random'
[02/10/2015 17:33:48] 	data/creaturescripts/scripts/exp2.0.lua:519: in function <data/creaturescripts/scripts/exp2.0.lua:65>
[02/10/2015 17:33:48] 	[C]: in function 'doTargetCombatHealth'
[02/10/2015 17:33:48] 	data/lib/newStatusSyst.lua:1018: in function 'doMoveDano2'
[02/10/2015 17:33:48] 	data/lib/newStatusSyst.lua:942: in function 'doMoveInArea2'
[02/10/2015 17:33:48] 	data/lib/pokemon moves.lua:6842: in function 'docastspell'
[02/10/2015 17:33:48] 	data/creaturescripts/scripts/exp2.0.lua:966: in function <data/creaturescripts/scripts/exp2.0.lua:65>

Editado Outubro 2 por AdminGabriel

zipter98Z
03 de outubro de 2015 às 11:05

Spells corrigidas.

03 de outubro de 2015 às 11:38

Ion Deluge ainda com erro:

[03/10/2015 11:34:10] [Error - TalkAction Interface] 
[03/10/2015 11:34:11] data/talkactions/scripts/move1.lua:onSay
[03/10/2015 11:34:11] Description: 
[03/10/2015 11:34:11] data/lib/032-position.lua:158: bad argument #1 to 'getn' (table expected, got number)
[03/10/2015 11:34:11] stack traceback:
[03/10/2015 11:34:11] 	[C]: in function 'getn'
[03/10/2015 11:34:11] 	data/lib/032-position.lua:158: in function 'getPosfromArea'
[03/10/2015 11:34:11] 	data/lib/pokemon moves.lua:3081: in function 'docastspell'
[03/10/2015 11:34:11] 	data/talkactions/scripts/move1.lua:293: in function <data/talkactions/scripts/move1.lua:20>
zipter98Z
03 de outubro de 2015 às 11:57

Ah, sim. O problema estava na área. Comentário atualizado com as correções.

03 de outubro de 2015 às 12:18

Corrigido

2 anos depois...
FrenviusF
29 de novembro de 2017 às 14:21
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.