Ir para conteúdo
  • 0

[Resolvido] ajuda com magia unown e air vortex


clebao666

Pergunta

eu preciso de uma ajuda pra cria 3 magias sao a (unown help , unown rush , air vortex do shiny fearow da pxg)

as magias do unow so achei um server que tem posso fazer um video delas ou entao se puder entra no ot do cara e me add que mostro as magias como devem ser feitas.

server www.pokedg.com (meu char > Clebao) desde ja agradeço

 

quero essas magias pra por no meu server tbm mais o dono conseguiu com um cara que nao deixa repassa-las.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Ajudaria se você postasse um vídeo demonstrando as spells, juntamente de uma explicação detalhada.

vo faze o video aq agora e posto ja

Ajudaria se você postasse um vídeo demonstrando as spells, juntamente de uma explicação detalhada.

fiz o video pra vc ver e coloquei no youtube.

http://youtu.be/yffu7VtCsrU

Link para o comentário
Compartilhar em outros sites

  • 0

Reparei que na PxG este Air Vortex, além de impedir com que o pokémon usuário se mova ou use outras spells, aplica um efeito de silence. Você quer da mesma maneira? Se sim, todos os pokémons pegos pelo movimento teriam este debuff aplicado?

Também reparei que, quando o Shiny Fearow usa esta magia, há efeitos de "redemoinho" em volta dele. Saberia dizer se isto é parte da outfit ou efeitos individuais?

Já no Unown Help, estes Unowns possuem tempo de duração? E este ataque usado por eles que você mencionou, como funciona?

No Unown Rush, reparei que o efeito do dano em área é lançado algumas vezes. Neste caso, cada "lance" aplica dano ou este é aplicado apenas uma vez? E estou enganado, ou ao final da execução do movimento o Unown Legion fica com o buff do Barrier? Você gostaria disso também na spell (apesar de eu achar absurdamente estranho lol)?

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

 

Zipter

Também reparei que, quando o Shiny Fearow usa esta magia, há efeitos de "redemoinho" em volta dele. Saberia dizer se isto é parte da outfit ou efeitos individuais?

Os efeitos em volta são individuais. A outfit dele é apenas o Fearow soltando o redemoinho na frente dele.

 

 

#Off

E outra Zipter, teria como me ajudar?

http://www.xtibia.com/forum/topic/234629-morph/#entry1655317

Editado por FlamesAdmin
Link para o comentário
Compartilhar em outros sites

  • 0

Reparei que na PxG este Air Vortex, além de impedir com que o pokémon usuário se mova ou use outras spells, aplica um efeito de silence. Você quer da mesma maneira? Se sim, todos os pokémons pegos pelo movimento teriam este debuff aplicado?

Também reparei que, quando o Shiny Fearow usa esta magia, há efeitos de "redemoinho" em volta dele. Saberia dizer se isto é parte da outfit ou efeitos individuais?

Já no Unown Help, estes Unowns possuem tempo de duração? E este ataque usado por eles que você mencionou, como funciona?

No Unown Rush, reparei que o efeito do dano em área é lançado algumas vezes. Neste caso, cada "lance" aplica dano ou este é aplicado apenas uma vez? E estou enganado, ou ao final da execução do movimento o Unown Legion fica com o buff do Barrier? Você gostaria disso também na spell (apesar de eu achar absurdamente estranho lol)?

man do jeito que vc conseguir fazela ta otimoo pode por o dano em todas as ocasioes que vc descreveu sim sem problemas.depois editamos as forças e ja era . poxa se vc conseguir agradeço dmaisssssss.

Os efeitos em volta são individuais. A outfit dele é apenas o Fearow soltando o redemoinho na frente dele.

 

 

#Off

E outra Zipter, teria como me ajudar?

http://www.xtibia.com/forum/topic/234629-morph/#entry1655317

ae man vi que no seu projeto ae tem a magia air vortex se puder me passar ela agradeço dmaissss. to empacado aq com meu projetinho quando coloco um poke novo o icone some logo que o player reloga e volta ser uma pokeball. se souber e puder ajuda tbm fico muito agradecido. vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Oq eu tenho é esse, nao é igual do pxg, ele só solta o efeito do Fearow e os redemoinho em volta.

elseif spell == "Air Vortex" then

local function hurricane(cid)
		if not isCreature(cid) then return true end
		if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
		if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
		   doMoveInArea2(cid, 42, bombWee1, FLYINGDAMAGE, min, max, spell)
	end

doSetCreatureOutfit(cid, {lookType = 1603}, 10000)

setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 17*600, cid, 3644587, -1)    	
for i = 1, 17 do
    addEvent(hurricane, i*600, cid)                                --alterado v1.4
end
Link para o comentário
Compartilhar em outros sites

  • 0

OK, já terminei o Air Vortex. No entanto, irei testá-lo amanhã, já que estou ocupado no momento.

Logo após os testes, escreverei o código das spells restantes.

Link para o comentário
Compartilhar em outros sites

  • 0

Em pokemon moves.lua:

elseif spell == "Air Vortex" then
    local config = {
        outfit = xxx,              --Outfit.
        time = {xxx, xxx},           --{Duração da spell, intervalo entre cada "tick" de dano (em milésimos de segundos)},
        storage = 93828,
        effects = {
            pullEffects = {
                distance = xxx,     --Distance effect do efeito de puxar pokémons.
                effect = xxx,       --Efeito de tornado.
            },
            damageEffect = xxx,     --Efeito do redemoinho que aplica dano.
        },
    }
    local time = os.time() + config.time[1]
    function Pull(cid, ret)
        local pos = getPosfromArea(cid, pullArea)
        if pos and #pos > 0 then
            for i = 1, #pos do
                local c = getTopCreature(pos[i]).uid
                if c > 0 then
                    if ehMonstro(c) then
                        doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                        doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                    elseif isSummon(c) then
                        local master = getCreatureMaster(c)
                        if isSummon(cid) then
                            if getPlayerStorageValue(master, 52480) >= 1 and getPlayerStorageValue(master, 52481) >= 0 then
                                local masterCid = getCreatureMaster(cid)
                                if isDuelingAgainst(masterCid, master) then
                                    doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                                    doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                                end
                            end
                        else
                            doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                            doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                        end
                    end
                end
            end
        end
    end
    function doSendTornado(cid, pos)
        if not isCreature(cid) then return true end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        doSendDistanceShoot(getThingPos(cid), pos, config.effects.pullEffects.distance)
        doSendMagicEffect(pos, config.effects.pullEffects.effect)
    end
    function vortexDamage(cid)
        if not isCreature(cid) then
            return true
        elseif time - os.time() < 0 then
            return true
        end
        doDanoWithProtect(cid, FLYINGDAMAGE, getThingPos(cid), damageArea, min, max, config.effects.damageEffect)
        addEvent(vortexDamage, config.time[2], cid)
    end
    local ret = {id = 0, cd = config.time[1], check = 0, cond = {"Silence", "Paralyze"}}
    for b = 1, 3 do
        for a = 1, 20 do
            local pos = {x = getThingPos(cid).x + math.random(-4, 4), y = getThingPos(cid).y + math.random(-3, 3), z = getThingPos(cid).z}
            addEvent(doSendTornado, a * 75, cid, pos)
        end
    end
    Pull(cid, ret)
    vortexDamage(cid)
    doCreatureSetNoMove(cid, true)
    doChangeSpeed(cid, -getCreatureSpeed(cid))
    doSetCreatureOutfit(cid, {lookType = config.outfit}, config.time[1] * 1000)
    setPlayerStorageValue(cid, config.storage, time)
    addEvent(function()
        if isCreature(cid) then
            doCreatureSetNoMove(cid, false)
            doRegainSpeed(cid)
        end
    end, config.time[1] * 1000)
Em areas.lua:
damageArea = createCombatArea{     --Área do dano da spell + redemoinhos.
    {1, 1, 1}, 
    {1, 2, 1}, 
    {1, 1, 1}, 
}
pullArea = {                       --Área onde os pokémons serão puxados.
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, 
    {0, 1, 1, 1, 1, 3, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
}
Em newStatusSyst.lua:
Troque todos os:
if ret and ret.cond then
    ret.id = pid
    ret.check = getPlayerStorageValue(pid, conds[ret.cond])
    doCondition2(ret)
end
por:
if ret and ret.cond then
    if type(ret.cond) == "table" then
        for i = 1, #ret.cond do
            ret.id = pid
            ret.check = getPlayerStorageValue(pid, conds[ret.cond[i]])
            doCondition2(ret)
        end
    else
        ret.id = pid
        ret.check = getPlayerStorageValue(pid, conds[ret.cond])
        doCondition2(ret)
    end
end
Depois, troque:
if ret.cond and ret.cond == "Miss" then
    doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Silence" then
    doSilence2(ret.id, ret.cd, ret.eff, ret.check)
elseif ret.cond and ret.cond == "Slow" then
    doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Confusion" then
    doConfusion2(ret.id, ret.cd, ret.check)
elseif ret.cond and ret.cond == "Burn" then
    doBurn2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Poison" then
    doPoison2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Fear" then
    doFear2(ret.id, ret.cd, ret.check, ret.skill)
elseif ret.cond and ret.cond == "Stun" then
    doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Paralyze" then
    doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Sleep" then
    doSleep2(ret.id, ret.cd, ret.check, ret.first)
elseif ret.cond and ret.cond == "Leech" then
    doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
end
por:
   if type(ret.cond) == "table" then
        for i = 1, #ret.cond do
            if ret.cond[i] and ret.cond[i] == "Miss" then
                doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
            elseif ret.cond[i] and ret.cond[i] == "Silence" then
                doSilence2(ret.id, ret.cd, ret.eff, ret.check)
            elseif ret.cond[i] and ret.cond[i] == "Slow" then
                doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Confusion" then
                doConfusion2(ret.id, ret.cd, ret.check)
            elseif ret.cond[i] and ret.cond[i] == "Burn" then
                doBurn2(ret.id, ret.cd, ret.check, ret.damage)
            elseif ret.cond[i] and ret.cond[i] == "Poison" then
                doPoison2(ret.id, ret.cd, ret.check, ret.damage)
            elseif ret.cond[i] and ret.cond[i] == "Fear" then
                doFear2(ret.id, ret.cd, ret.check, ret.skill)
            elseif ret.cond[i] and ret.cond[i] == "Stun" then
                doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
            elseif ret.cond[i] and ret.cond[i] == "Paralyze" then
                doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Sleep" then
                doSleep2(ret.id, ret.cd, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Leech" then
                doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
            end
        end
    else
        if ret.cond and ret.cond == "Miss" then
            doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
        elseif ret.cond and ret.cond == "Silence" then
            doSilence2(ret.id, ret.cd, ret.eff, ret.check)
        elseif ret.cond and ret.cond == "Slow" then
            doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Confusion" then
            doConfusion2(ret.id, ret.cd, ret.check)
        elseif ret.cond and ret.cond == "Burn" then
            doBurn2(ret.id, ret.cd, ret.check, ret.damage)
        elseif ret.cond and ret.cond == "Poison" then
            doPoison2(ret.id, ret.cd, ret.check, ret.damage)
        elseif ret.cond and ret.cond == "Fear" then
            doFear2(ret.id, ret.cd, ret.check, ret.skill)
        elseif ret.cond and ret.cond == "Stun" then
            doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
        elseif ret.cond and ret.cond == "Paralyze" then
            doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Sleep" then
            doSleep2(ret.id, ret.cd, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Leech" then
            doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
        end
    end
Depois, em data/talkactions/scripts, move1.lua:
Abaixo de:
if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode fazer isso agora.")
    return 0
else
    newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
coloque:
if getPlayerStorageValue(mypoke, 93828) > os.time() then
    return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.")
end

Outra hora escrevo o código do Unown Help e Unown Rush (vou sair daqui a pouco).

Perguntas: Há uma quantia mínima de Unowns para usar o Unown Rush? O dano de tal spell aumenta de acordo com o número de Unowns summonados? Seria bem legal isso (ex.: cada Unown aumenta o dano da spell em 5%).

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

:0

 

Não disponibilizo esses sistemas pq Gabriel Sales fez exclusivamente para meu server, se foçe algum sistema feito aqui no xtibia, seria compartilhado.

Editado por Taiger
Link para o comentário
Compartilhar em outros sites

  • 0

Zipter, quando eu adiciono a parte Miss, Silence, Slow etc, da esse erro:

[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
Link para o comentário
Compartilhar em outros sites

  • 0

cara tu e dmaisssssssss. segunda vo testa e ja tem resp so por tentar ajudar .vlw ae mesmo dmais se conseguir fazer a do unow agradeço muito. ja que no mundo do tibia nao tem algo exclusivo nem a pxg tem porq fica guardando pra si. oq eu tive aq passo pra quem precisar e ajudo a qquer um no que precisar. vlw ae man. muito obrigado pela script.

Em pokemon moves.lua:

elseif spell == "Air Vortex" then
    local config = {
        outfit = xxx,              --Outfit.
        time = {xxx, xxx},           --{Duração da spell, intervalo entre cada "tick" de dano (em milésimos de segundos)},
        storage = 93828,
        effects = {
            pullEffects = {
                distance = xxx,     --Distance effect do efeito de puxar pokémons.
                effect = xxx,       --Efeito de tornado.
            },
            damageEffect = xxx,     --Efeito do redemoinho que aplica dano.
        },
    }
    local time = os.time() + config.time[1]
    function Pull(cid, ret)
        local pos = getPosfromArea(cid, pullArea)
        if pos and #pos > 0 then
            for i = 1, #pos do
                local c = getTopCreature(pos[i]).uid
                if c > 0 then
                    if ehMonstro(c) then
                        doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                        doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                    elseif isSummon(c) then
                        local master = getCreatureMaster(c)
                        if isSummon(cid) then
                            if getPlayerStorageValue(master, 52480) >= 1 and getPlayerStorageValue(master, 52481) >= 0 then
                                local masterCid = getCreatureMaster(cid)
                                if isDuelingAgainst(masterCid, master) then
                                    doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                                    doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                                end
                            end
                        else
                            doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                            doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                        end
                    end
                end
            end
        end
    end
    function doSendTornado(cid, pos)
        if not isCreature(cid) then return true end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        doSendDistanceShoot(getThingPos(cid), pos, config.effects.pullEffects.distance)
        doSendMagicEffect(pos, config.effects.pullEffects.effect)
    end
    function vortexDamage(cid)
        if not isCreature(cid) then
            return true
        elseif time - os.time() < 0 then
            return true
        end
        doDanoWithProtect(cid, FLYINGDAMAGE, getThingPos(cid), damageArea, min, max, config.effects.damageEffect)
        addEvent(vortexDamage, config.time[2], cid)
    end
    local ret = {id = 0, cd = config.time[1], check = 0, cond = {"Silence", "Paralyze"}}
    for b = 1, 3 do
        for a = 1, 20 do
            local pos = {x = getThingPos(cid).x + math.random(-4, 4), y = getThingPos(cid).y + math.random(-3, 3), z = getThingPos(cid).z}
            addEvent(doSendTornado, a * 75, cid, pos)
        end
    end
    Pull(cid, ret)
    vortexDamage(cid)
    doCreatureSetNoMove(cid, true)
    doChangeSpeed(cid, -getCreatureSpeed(cid))
    doSetCreatureOutfit(cid, {lookType = config.outfit}, config.time[1] * 1000)
    setPlayerStorageValue(cid, config.storage, time)
    addEvent(function()
        if isCreature(cid) then
            doCreatureSetNoMove(cid, false)
            doRegainSpeed(cid)
        end
    end, config.time[1] * 1000)
Em areas.lua:
damageArea = createCombatArea{     --Área do dano da spell + redemoinhos.
    {1, 1, 1}, 
    {1, 2, 1}, 
    {1, 1, 1}, 
}
pullArea = {                       --Área onde os pokémons serão puxados.
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, 
    {0, 1, 1, 1, 1, 3, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
}
Em newStatusSyst.lua:
Troque todos os:
if ret and ret.cond then
    ret.id = pid
    ret.check = getPlayerStorageValue(pid, conds[ret.cond])
    doCondition2(ret)
end
por:
if ret and ret.cond then
    if type(ret.cond) == "table" then
        for i = 1, #ret.cond do
            ret.id = pid
            ret.check = getPlayerStorageValue(pid, conds[ret.cond[i]])
            doCondition2(ret)
        end
    else
        ret.id = pid
        ret.check = getPlayerStorageValue(pid, conds[ret.cond])
        doCondition2(ret)
    end
end
Depois, troque:
if ret.cond and ret.cond == "Miss" then
    doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Silence" then
    doSilence2(ret.id, ret.cd, ret.eff, ret.check)
elseif ret.cond and ret.cond == "Slow" then
    doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Confusion" then
    doConfusion2(ret.id, ret.cd, ret.check)
elseif ret.cond and ret.cond == "Burn" then
    doBurn2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Poison" then
    doPoison2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Fear" then
    doFear2(ret.id, ret.cd, ret.check, ret.skill)
elseif ret.cond and ret.cond == "Stun" then
    doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Paralyze" then
    doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Sleep" then
    doSleep2(ret.id, ret.cd, ret.check, ret.first)
elseif ret.cond and ret.cond == "Leech" then
    doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
end
por:
   if type(ret.cond) == "table" then
        for i = 1, #ret.cond do
            if ret.cond[i] and ret.cond[i] == "Miss" then
                doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
            elseif ret.cond[i] and ret.cond[i] == "Silence" then
                doSilence2(ret.id, ret.cd, ret.eff, ret.check)
            elseif ret.cond[i] and ret.cond[i] == "Slow" then
                doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Confusion" then
                doConfusion2(ret.id, ret.cd, ret.check)
            elseif ret.cond[i] and ret.cond[i] == "Burn" then
                doBurn2(ret.id, ret.cd, ret.check, ret.damage)
            elseif ret.cond[i] and ret.cond[i] == "Poison" then
                doPoison2(ret.id, ret.cd, ret.check, ret.damage)
            elseif ret.cond[i] and ret.cond[i] == "Fear" then
                doFear2(ret.id, ret.cd, ret.check, ret.skill)
            elseif ret.cond[i] and ret.cond[i] == "Stun" then
                doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
            elseif ret.cond[i] and ret.cond[i] == "Paralyze" then
                doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Sleep" then
                doSleep2(ret.id, ret.cd, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Leech" then
                doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
            end
        end
    else
        if ret.cond and ret.cond == "Miss" then
            doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
        elseif ret.cond and ret.cond == "Silence" then
            doSilence2(ret.id, ret.cd, ret.eff, ret.check)
        elseif ret.cond and ret.cond == "Slow" then
            doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Confusion" then
            doConfusion2(ret.id, ret.cd, ret.check)
        elseif ret.cond and ret.cond == "Burn" then
            doBurn2(ret.id, ret.cd, ret.check, ret.damage)
        elseif ret.cond and ret.cond == "Poison" then
            doPoison2(ret.id, ret.cd, ret.check, ret.damage)
        elseif ret.cond and ret.cond == "Fear" then
            doFear2(ret.id, ret.cd, ret.check, ret.skill)
        elseif ret.cond and ret.cond == "Stun" then
            doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
        elseif ret.cond and ret.cond == "Paralyze" then
            doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Sleep" then
            doSleep2(ret.id, ret.cd, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Leech" then
            doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
        end
    end
Depois, em data/talkactions/scripts, move1.lua:
Abaixo de:
if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode fazer isso agora.")
    return 0
else
    newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
coloque:
if getPlayerStorageValue(mypoke, 93828) > os.time() then
    return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.")
end

Outra hora escrevo o código do Unown Help e Unown Rush (vou sair daqui a pouco).

Perguntas: Há uma quantia mínima de Unowns para usar o Unown Rush? O dano de tal spell aumenta de acordo com o número de Unowns summonados? Seria bem legal isso (ex.: cada Unown aumenta o dano da spell em 5%).

 


a sua ideia de usala mesmo sem os unows todos e massa. e so por um limite de unows que pode invocar no max uns 7 mesmo de resto as suas ideis sao massa pode fazer como quiser man que ja te agradeço dmais por isso vlw.

Em pokemon moves.lua:

elseif spell == "Air Vortex" then
    local config = {
        outfit = xxx,              --Outfit.
        time = {xxx, xxx},           --{Duração da spell, intervalo entre cada "tick" de dano (em milésimos de segundos)},
        storage = 93828,
        effects = {
            pullEffects = {
                distance = xxx,     --Distance effect do efeito de puxar pokémons.
                effect = xxx,       --Efeito de tornado.
            },
            damageEffect = xxx,     --Efeito do redemoinho que aplica dano.
        },
    }
    local time = os.time() + config.time[1]
    function Pull(cid, ret)
        local pos = getPosfromArea(cid, pullArea)
        if pos and #pos > 0 then
            for i = 1, #pos do
                local c = getTopCreature(pos[i]).uid
                if c > 0 then
                    if ehMonstro(c) then
                        doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                        doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                    elseif isSummon(c) then
                        local master = getCreatureMaster(c)
                        if isSummon(cid) then
                            if getPlayerStorageValue(master, 52480) >= 1 and getPlayerStorageValue(master, 52481) >= 0 then
                                local masterCid = getCreatureMaster(cid)
                                if isDuelingAgainst(masterCid, master) then
                                    doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                                    doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                                end
                            end
                        else
                            doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid)))
                            doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell)
                        end
                    end
                end
            end
        end
    end
    function doSendTornado(cid, pos)
        if not isCreature(cid) then return true end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        doSendDistanceShoot(getThingPos(cid), pos, config.effects.pullEffects.distance)
        doSendMagicEffect(pos, config.effects.pullEffects.effect)
    end
    function vortexDamage(cid)
        if not isCreature(cid) then
            return true
        elseif time - os.time() < 0 then
            return true
        end
        doDanoWithProtect(cid, FLYINGDAMAGE, getThingPos(cid), damageArea, min, max, config.effects.damageEffect)
        addEvent(vortexDamage, config.time[2], cid)
    end
    local ret = {id = 0, cd = config.time[1], check = 0, cond = {"Silence", "Paralyze"}}
    for b = 1, 3 do
        for a = 1, 20 do
            local pos = {x = getThingPos(cid).x + math.random(-4, 4), y = getThingPos(cid).y + math.random(-3, 3), z = getThingPos(cid).z}
            addEvent(doSendTornado, a * 75, cid, pos)
        end
    end
    Pull(cid, ret)
    vortexDamage(cid)
    doCreatureSetNoMove(cid, true)
    doChangeSpeed(cid, -getCreatureSpeed(cid))
    doSetCreatureOutfit(cid, {lookType = config.outfit}, config.time[1] * 1000)
    setPlayerStorageValue(cid, config.storage, time)
    addEvent(function()
        if isCreature(cid) then
            doCreatureSetNoMove(cid, false)
            doRegainSpeed(cid)
        end
    end, config.time[1] * 1000)
Em areas.lua:
damageArea = createCombatArea{     --Área do dano da spell + redemoinhos.
    {1, 1, 1}, 
    {1, 2, 1}, 
    {1, 1, 1}, 
}
pullArea = {                       --Área onde os pokémons serão puxados.
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, 
    {0, 1, 1, 1, 1, 3, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
}
Em newStatusSyst.lua:
Troque todos os:
if ret and ret.cond then
    ret.id = pid
    ret.check = getPlayerStorageValue(pid, conds[ret.cond])
    doCondition2(ret)
end
por:
if ret and ret.cond then
    if type(ret.cond) == "table" then
        for i = 1, #ret.cond do
            ret.id = pid
            ret.check = getPlayerStorageValue(pid, conds[ret.cond[i]])
            doCondition2(ret)
        end
    else
        ret.id = pid
        ret.check = getPlayerStorageValue(pid, conds[ret.cond])
        doCondition2(ret)
    end
end
Depois, troque:
if ret.cond and ret.cond == "Miss" then
    doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Silence" then
    doSilence2(ret.id, ret.cd, ret.eff, ret.check)
elseif ret.cond and ret.cond == "Slow" then
    doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Confusion" then
    doConfusion2(ret.id, ret.cd, ret.check)
elseif ret.cond and ret.cond == "Burn" then
    doBurn2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Poison" then
    doPoison2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Fear" then
    doFear2(ret.id, ret.cd, ret.check, ret.skill)
elseif ret.cond and ret.cond == "Stun" then
    doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Paralyze" then
    doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Sleep" then
    doSleep2(ret.id, ret.cd, ret.check, ret.first)
elseif ret.cond and ret.cond == "Leech" then
    doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
end
por:
   if type(ret.cond) == "table" then
        for i = 1, #ret.cond do
            if ret.cond[i] and ret.cond[i] == "Miss" then
                doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
            elseif ret.cond[i] and ret.cond[i] == "Silence" then
                doSilence2(ret.id, ret.cd, ret.eff, ret.check)
            elseif ret.cond[i] and ret.cond[i] == "Slow" then
                doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Confusion" then
                doConfusion2(ret.id, ret.cd, ret.check)
            elseif ret.cond[i] and ret.cond[i] == "Burn" then
                doBurn2(ret.id, ret.cd, ret.check, ret.damage)
            elseif ret.cond[i] and ret.cond[i] == "Poison" then
                doPoison2(ret.id, ret.cd, ret.check, ret.damage)
            elseif ret.cond[i] and ret.cond[i] == "Fear" then
                doFear2(ret.id, ret.cd, ret.check, ret.skill)
            elseif ret.cond[i] and ret.cond[i] == "Stun" then
                doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
            elseif ret.cond[i] and ret.cond[i] == "Paralyze" then
                doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Sleep" then
                doSleep2(ret.id, ret.cd, ret.check, ret.first)
            elseif ret.cond[i] and ret.cond[i] == "Leech" then
                doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
            end
        end
    else
        if ret.cond and ret.cond == "Miss" then
            doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
        elseif ret.cond and ret.cond == "Silence" then
            doSilence2(ret.id, ret.cd, ret.eff, ret.check)
        elseif ret.cond and ret.cond == "Slow" then
            doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Confusion" then
            doConfusion2(ret.id, ret.cd, ret.check)
        elseif ret.cond and ret.cond == "Burn" then
            doBurn2(ret.id, ret.cd, ret.check, ret.damage)
        elseif ret.cond and ret.cond == "Poison" then
            doPoison2(ret.id, ret.cd, ret.check, ret.damage)
        elseif ret.cond and ret.cond == "Fear" then
            doFear2(ret.id, ret.cd, ret.check, ret.skill)
        elseif ret.cond and ret.cond == "Stun" then
            doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
        elseif ret.cond and ret.cond == "Paralyze" then
            doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Sleep" then
            doSleep2(ret.id, ret.cd, ret.check, ret.first)
        elseif ret.cond and ret.cond == "Leech" then
            doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
        end
    end
Depois, em data/talkactions/scripts, move1.lua:
Abaixo de:
if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode fazer isso agora.")
    return 0
else
    newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
coloque:
if getPlayerStorageValue(mypoke, 93828) > os.time() then
    return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.")
end

Outra hora escrevo o código do Unown Help e Unown Rush (vou sair daqui a pouco).

Perguntas: Há uma quantia mínima de Unowns para usar o Unown Rush? O dano de tal spell aumenta de acordo com o número de Unowns summonados? Seria bem legal isso (ex.: cada Unown aumenta o dano da spell em 5%).

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...