Jump to content
Close
louco3626

Scripting Erro System Mega Evolução

Recommended Posts

.Qual servidor ou website você utiliza como base? 

Nao sei se é possivel porem estou tentando coloca no ZR

Qual o motivo deste tópico? 

Adicionei tudo direitinho eu clico a Stone some e tudo, porem não aparece a evolução e da esse erro.

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

[12/09/2019 18:58:25] [Error - Action Interface] 
[12/09/2019 18:58:25] datapack/actions/scripts/goback.lua:onUse
[12/09/2019 18:58:25] Description: 
[12/09/2019 18:58:25] (luaGetCreatureName) Creature not found

[12/09/2019 18:58:25] [Error - Action Interface] 
[12/09/2019 18:58:25] datapack/actions/scripts/goback.lua:onUse
[12/09/2019 18:58:25] Description: 
[12/09/2019 18:58:25] datapack/lib/cooldown bar.lua:93: attempt to index a boolean value
[12/09/2019 18:58:25] stack traceback:
[12/09/2019 18:58:25]     datapack/lib/cooldown bar.lua:93: in function 'doUpdateMoves'
[12/09/2019 18:58:25]     datapack/lib/some functions.lua:895: in function 'doReturnPokemon'
[12/09/2019 18:58:25]     datapack/actions/scripts/goback.lua:64: in function <datapack/actions/scripts/goback.lua:10>

 

Você tem o código disponível? Se tiver publique-o aqui: 

Troque o código da função getNewMoveTable(table, n) por este:

function getNewMoveTable(table, n)
    if table == nil then
        return false
    end
    local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9, table.move10, table.move11, table.move12}
    local returnValue = moves
    if n then
        returnValue = moves[n]
    end
    return returnValue
end
No código da função doUpdateMoves(cid), troque o segundo:
table.insert(ret, "n/n,")
por:
local mEvolve
if not getCreatureName(summon):find("Mega") and getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone") then
    if not isInArray(ret, "Mega Evolution,") then
        table.insert(ret, "Mega Evolution,")
        mEvolve = true
    end
end
if not mEvolve then
    table.insert(ret, "n/n,")
end
Depois, em pokemon moves.lua:
Troque:
min = getSpecialAttack(cid) * table.f * 0.1   --alterado v1.6
por:
min = getSpecialAttack(cid) * (table and table.f or 0) * 0.1   --alterado v1.6
Código da spell:
elseif spell == "Mega Evolution" then
    local effect = xxx                          --Efeito de mega evolução.
    if isSummon(cid) then
        local pid = getCreatureMaster(cid)
        if isPlayer(pid) then
            local ball = getPlayerSlotItem(pid, 8).uid
            if ball > 0 then
                local attr = getItemAttribute(ball, "megaStone")
                if attr and megaEvolutions[attr] then
                    local oldPosition, oldLookdir = getThingPos(cid), getCreatureLookDir(cid)
                    doItemSetAttribute(ball, "poke", megaEvolutions[attr][2])
                    doSendMagicEffect(getThingPos(cid), effect)
                    doRemoveCreature(cid)
                    doSummonMonster(pid, megaEvolutions[attr][2])
                    local newPoke = getCreatureSummons(pid)[1]
                    doTeleportThing(newPoke, oldPosition, false)
                    doCreatureSetLookDir(newPoke, oldLookdir)
                    adjustStatus(newPoke, ball, true, false)
                    if useKpdoDlls then
                        addEvent(doUpdateMoves, 5, pid)
                    end
                end
            end
        end
    end
Depois, em configuration.lua:
megaEvolutions = {
    --[itemid] = {"poke_name", "mega_evolution"},
    [11638] = {"Charizard", "Mega Charizard X"},
    [11639] = {"Charizard", "Mega Charizard Y"},
}
Agora, em data/actions/scripts, código da mega stone:
function onUse(cid, item)
    local mEvolution, ball = megaEvolutions[item.itemid], getPlayerSlotItem(cid, 8).uid
    if not mEvolution then
        return doPlayerSendCancel(cid, "Sorry, this isn't a mega stone.")
    elseif ball < 1 then
        return doPlayerSendCancel(cid, "Put a pokeball in the pokeball slot.")
    elseif #getCreatureSummons(cid) > 0 then
        return doPlayerSendCancel(cid, "Return your pokemon.")
    elseif getItemAttribute(ball, "poke") ~= mEvolution[1] then
        return doPlayerSendCancel(cid, "Put a pokeball with a(n) "..mEvolution[1].." in the pokeball slot.")
    elseif getItemAttribute(ball, "megaStone") then
        return doPlayerSendCancel(cid, "Your pokemon is already holding a mega stone.")
    end
    doItemSetAttribute(ball, "megaStone", item.itemid)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Now your "..getItemAttribute(ball, "poke").." is holding a(n) "..getItemNameById(item.itemid)..".")
    doRemoveItem(item.uid)
    return true
end
Depois, em goback.lua:
Abaixo de:
if not pokes[pokemon] then
    return true
end
coloque:
    if pokemon:find("Mega") then
        local normalPoke = megaEvolutions[getItemAttribute(item.uid, "megaStone")][1]
        if normalPoke then
            doItemSetAttribute(item.uid, "poke", normalPoke)
            pokemon = normalPoke
        end
    end
Depois, em data/creaturescripts/scripts, look.lua:
Abaixo de:
local boost = getItemAttribute(thing.uid, "boost") or 0
coloque:
local extraInfo, megaStone = "", getItemAttribute(thing.uid, "megaStone")
if megaStone then
    extraInfo = getItemNameById(megaStone)   
    if pokename:find("Mega") then
        pokename = megaEvolutions[megaStone][1]
    end
end
Depois, acima do primeiro:
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))
coloque:
if extraInfo ~= "" then
    table.insert(str, "\nIt's holding a(n) "..extraInfo..".")
end
Já em data/talkactions/scripts, move1.lua:
Abaixo de:
function doAlertReady(cid, id, movename, n, cd)
coloque:
if movename == "Mega Evolution" then return true end
Troque:
    if not move then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
        return true
    end
por:
if not move then
        local isMega = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "megaStone")
        if not isMega or name:find("Mega") then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
            return true
        end
        local moveTable, index = getNewMoveTable(movestable[name]), 0
        for i = 1, 12 do
            if not moveTable[i] then
                index = i
                break
            end
        end
        if tonumber(it) ~= index then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
            return true
        end
        local needCds = true                   --Coloque false se o pokémon puder mega evoluir mesmo com spells em cooldown.
        if needCds then
            for i = 1, 12 do
                if getCD(getPlayerSlotItem(cid, 8).uid, "move"..i) > 0 then
                    return doPlayerSendCancel(cid, "To mega evolve, all the spells of your pokemon need to be ready.")
                end
            end
        end
        move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"}
    end
E troque:
doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY)
por:
local spellMessage = msgs[math.random(#msgs)]..""..move.name.."!"
if move.name == "Mega Evolution" then
    spellMessage = "Mega Evolve!"
end
doCreatureSay(cid, getPokeName(mypoke)..", "..spellMessage, TALKTYPE_SAY)
Se quiser que o "Mega" não apareça no nome do pokémon, vá em data/lib, level system.lua:
Acima de:
if getItemAttribute(item, "nick") then
    nick = getItemAttribute(item, "nick")
end
coloque:
    if nick:find("Mega") then
        nick = nick:match("Mega (.*)")
        if not pokes[nick] then
            nick = nick:explode(" ")[1]
        end
    end

Caso queiram que cada mega evolução tenha um clan específico:

Em move1.lua, acima de:

move = {name = "Mega Evolution", level = 0, cd = 0, dist = 1, target = 0, f = 0, t = "?"}

coloque:

local megaEvoClans = {
    --[mega_stone_id] = "clan_name",
    [91912] = "Volcanic",
    [91913] = "Seavell",
    --etc,
}
if megaEvoClans[isMega] then
    if getPlayerClanName(cid) ~= megaEvoClans[isMega] then
        return doPlayerSendCancel(cid, "You can't mega evolve this pokemon.")
    end
end
Bem, é isso aí. Acho que não esqueci de nada.
Até mais.

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...